Index: src/interpreter/interpreter.h |
diff --git a/src/interpreter/interpreter.h b/src/interpreter/interpreter.h |
index ea50faa02d882c91bee2cdd2912a2cd6e7486db7..524268e8b8472d22df3adfd43b3668baf055a330 100644 |
--- a/src/interpreter/interpreter.h |
+++ b/src/interpreter/interpreter.h |
@@ -53,6 +53,12 @@ class Interpreter { |
return reinterpret_cast<Address>(&dispatch_table_[0]); |
} |
+ uintptr_t* dispatch_counters() { return handlers_dispatch_counters_.get(); } |
+ |
+ // Returns true if a handler is generated for a bytecode at a given |
+ // operand scale. |
+ static bool BytecodeHasHandler(Bytecode bytecode, OperandScale operand_scale); |
+ |
private: |
// Bytecode handler generator functions. |
#define DECLARE_BYTECODE_HANDLER_GENERATOR(Name, ...) \ |
@@ -138,9 +144,12 @@ class Interpreter { |
static const int kNumberOfWideVariants = 3; |
static const int kDispatchTableSize = kNumberOfWideVariants * (kMaxUInt8 + 1); |
+ static const int kCountersTableRowSize = |
+ static_cast<int>(Bytecode::kLast) + 1; |
Isolate* isolate_; |
Code* dispatch_table_[kDispatchTableSize]; |
+ v8::base::SmartArrayPointer<uintptr_t> handlers_dispatch_counters_; |
DISALLOW_COPY_AND_ASSIGN(Interpreter); |
}; |