1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:37:35 +00:00

LibJS: Implement the NewClass opcode

This commit is contained in:
Ali Mohammad Pur 2022-02-11 22:38:21 +03:30 committed by Linus Groh
parent 8b27917603
commit d7c207beb9
4 changed files with 23 additions and 4 deletions

View file

@ -13,6 +13,7 @@
#include <LibJS/Forward.h>
#include <LibJS/Heap/Cell.h>
#include <LibJS/Heap/Handle.h>
#include <LibJS/Runtime/VM.h>
#include <LibJS/Runtime/Value.h>
namespace JS::Bytecode {
@ -34,7 +35,7 @@ public:
ThrowCompletionOr<Value> run(Bytecode::Executable const& executable, Bytecode::BasicBlock const* entry_point = nullptr)
{
auto value_and_frame = run_and_return_frame(executable, entry_point);
return value_and_frame.value;
return move(value_and_frame.value);
}
struct ValueAndFrame {
@ -78,6 +79,8 @@ public:
};
static Bytecode::PassManager& optimization_pipeline(OptimizationLevel = OptimizationLevel::Default);
VM::InterpreterExecutionScope ast_interpreter_scope();
private:
RegisterWindow& registers() { return m_register_windows.last(); }
@ -93,6 +96,7 @@ private:
Executable const* m_current_executable { nullptr };
Vector<UnwindInfo> m_unwind_contexts;
Handle<Value> m_saved_exception;
OwnPtr<JS::Interpreter> m_ast_interpreter;
};
extern bool g_dump_bytecode;