// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_INTERPRETER_INTERPRETER_H_ #define V8_INTERPRETER_INTERPRETER_H_ #include // Clients of this interface shouldn't depend on lots of interpreter internals. // Do not include anything from src/interpreter other than // src/interpreter/bytecodes.h here! #include "src/base/macros.h" #include "src/builtins/builtins.h" #include "src/interpreter/bytecodes.h" namespace v8 { namespace internal { class AccountingAllocator; class BytecodeArray; class Callable; class UnoptimizedCompilationJob; class FunctionLiteral; class IgnitionStatisticsTester; class Isolate; class LocalIsolate; class ParseInfo; class RootVisitor; class SetupIsolateDelegate; template class ZoneVector; namespace interpreter { class InterpreterAssembler; class Interpreter { public: explicit Interpreter(Isolate* isolate); virtual ~Interpreter() = default; Interpreter(const Interpreter&) = delete; Interpreter& operator=(const Interpreter&) = delete; // Creates a compilation job which will generate bytecode for |literal|. // Additionally, if |eager_inner_literals| is not null, adds any eagerly // compilable inner FunctionLiterals to this list. static std::unique_ptr NewCompilationJob( ParseInfo* parse_info, FunctionLiteral* literal, Handle