Index: src/interpreter/interpreter.h |
diff --git a/src/interpreter/interpreter.h b/src/interpreter/interpreter.h |
index 6075df835f30d6d7f4332d07fcbe0cd8c5ba2d75..1a3143b02d8f5af69af1497e855932a63eb76885 100644 |
--- a/src/interpreter/interpreter.h |
+++ b/src/interpreter/interpreter.h |
@@ -32,17 +32,19 @@ class Interpreter { |
explicit Interpreter(Isolate* isolate); |
virtual ~Interpreter() {} |
- // Creates an uninitialized interpreter handler table, where each handler |
- // points to the Illegal builtin. |
- static Handle<FixedArray> CreateUninitializedInterpreterTable( |
- Isolate* isolate); |
- |
- // Initializes the interpreter. |
+ // Initializes the interpreter dispatch table. |
void Initialize(); |
// Generate bytecode for |info|. |
static bool MakeBytecode(CompilationInfo* info); |
+ // GC support. |
+ void IterateDispatchTable(ObjectVisitor* v); |
+ |
+ Address dispatch_table_address() { |
+ return reinterpret_cast<Address>(&dispatch_table_[0]); |
+ } |
+ |
private: |
// Bytecode handler generator functions. |
#define DECLARE_BYTECODE_HANDLER_GENERATOR(Name, ...) \ |
@@ -115,9 +117,12 @@ class Interpreter { |
void DoStoreLookupSlot(LanguageMode language_mode, |
compiler::InterpreterAssembler* assembler); |
- bool IsInterpreterTableInitialized(Handle<FixedArray> handler_table); |
+ bool IsDispatchTableInitialized(); |
+ |
+ static const int kDispatchTableSize = static_cast<int>(Bytecode::kLast) + 1; |
Isolate* isolate_; |
+ Object* dispatch_table_[kDispatchTableSize]; |
DISALLOW_COPY_AND_ASSIGN(Interpreter); |
}; |