// 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_BYTECODE_GENERATOR_H_ #define V8_INTERPRETER_BYTECODE_GENERATOR_H_ #include "src/ast/ast.h" #include "src/interpreter/bytecode-array-builder.h" #include "src/interpreter/bytecode-label.h" #include "src/interpreter/bytecode-register.h" #include "src/interpreter/bytecodes.h" #include "src/objects/feedback-vector.h" #include "src/objects/function-kind.h" namespace v8 { namespace internal { class AstNodeSourceRanges; class AstStringConstants; class BytecodeArray; class UnoptimizedCompilationInfo; enum class SourceRangeKind; namespace interpreter { class TopLevelDeclarationsBuilder; class LoopBuilder; class BlockCoverageBuilder; class BytecodeJumpTable; class BytecodeGenerator final : public AstVisitor { public: explicit BytecodeGenerator( Zone* zone, UnoptimizedCompilationInfo* info, const AstStringConstants* ast_string_constants, std::vector* eager_inner_literals); void GenerateBytecode(uintptr_t stack_limit); template Handle FinalizeBytecode(IsolateT* isolate, Handle