// 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. #include "src/interpreter/interpreter.h" #include #include #include "builtins-generated/bytecodes-builtins-list.h" #include "src/ast/prettyprinter.h" #include "src/ast/scopes.h" #include "src/codegen/compiler.h" #include "src/codegen/unoptimized-compilation-info.h" #include "src/execution/local-isolate.h" #include "src/heap/parked-scope.h" #include "src/init/bootstrapper.h" #include "src/init/setup-isolate.h" #include "src/interpreter/bytecode-generator.h" #include "src/interpreter/bytecodes.h" #include "src/logging/runtime-call-stats-scope.h" #include "src/objects/objects-inl.h" #include "src/objects/shared-function-info.h" #include "src/objects/slots.h" #include "src/objects/visitors.h" #include "src/parsing/parse-info.h" #include "src/snapshot/snapshot.h" #include "src/utils/ostreams.h" namespace v8 { namespace internal { namespace interpreter { class InterpreterCompilationJob final : public UnoptimizedCompilationJob { public: InterpreterCompilationJob(ParseInfo* parse_info, FunctionLiteral* literal, AccountingAllocator* allocator, std::vector* eager_inner_literals, LocalIsolate* local_isolate); InterpreterCompilationJob(const InterpreterCompilationJob&) = delete; InterpreterCompilationJob& operator=(const InterpreterCompilationJob&) = delete; protected: Status ExecuteJobImpl() final; Status FinalizeJobImpl(Handle shared_info, Isolate* isolate) final; Status FinalizeJobImpl(Handle shared_info, LocalIsolate* isolate) final; private: BytecodeGenerator* generator() { return &generator_; } template void CheckAndPrintBytecodeMismatch(IsolateT* isolate, Handle