diff options
Diffstat (limited to 'deps/v8/src/interpreter/bytecode-generator.h')
-rw-r--r-- | deps/v8/src/interpreter/bytecode-generator.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/deps/v8/src/interpreter/bytecode-generator.h b/deps/v8/src/interpreter/bytecode-generator.h new file mode 100644 index 0000000000..5caf3f1813 --- /dev/null +++ b/deps/v8/src/interpreter/bytecode-generator.h @@ -0,0 +1,44 @@ +// 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.h" +#include "src/interpreter/bytecode-array-builder.h" +#include "src/interpreter/bytecodes.h" + +namespace v8 { +namespace internal { +namespace interpreter { + +class BytecodeGenerator : public AstVisitor { + public: + BytecodeGenerator(Isolate* isolate, Zone* zone); + virtual ~BytecodeGenerator(); + + Handle<BytecodeArray> MakeBytecode(CompilationInfo* info); + +#define DECLARE_VISIT(type) void Visit##type(type* node) override; + AST_NODE_LIST(DECLARE_VISIT) +#undef DECLARE_VISIT + + private: + DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); + + void VisitArithmeticExpression(BinaryOperation* binop); + + inline BytecodeArrayBuilder& builder() { return builder_; } + inline Scope* scope() const { return scope_; } + inline void set_scope(Scope* s) { scope_ = s; } + + BytecodeArrayBuilder builder_; + Scope* scope_; +}; + +} // namespace interpreter +} // namespace internal +} // namespace v8 + +#endif // V8_INTERPRETER_BYTECODE_GENERATOR_H_ |