|
@@ -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;
|