| Index: src/interpreter/interpreter.cc
|
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
|
| index 2284eef10efe903bf68d5419407ea96be1284110..f50ffdfbc20c1c8d94153d828bac0de1cb55e0b6 100644
|
| --- a/src/interpreter/interpreter.cc
|
| +++ b/src/interpreter/interpreter.cc
|
| @@ -33,24 +33,30 @@ void Interpreter::Initialize() {
|
| Zone zone;
|
| HandleScope scope(isolate_);
|
|
|
| + if (FLAG_ignition_count_handler_dispatches) {
|
| + memset(handlers_dispatch_counters_, 0, sizeof(handlers_dispatch_counters_));
|
| + }
|
| +
|
| // Generate bytecode handlers for all bytecodes and scales.
|
| for (OperandScale operand_scale = OperandScale::kSingle;
|
| operand_scale <= OperandScale::kMaxValid;
|
| operand_scale = Bytecodes::NextOperandScale(operand_scale)) {
|
| -#define GENERATE_CODE(Name, ...) \
|
| - { \
|
| - if (BytecodeHasHandler(Bytecode::k##Name, operand_scale)) { \
|
| - InterpreterAssembler assembler(isolate_, &zone, Bytecode::k##Name, \
|
| - operand_scale); \
|
| - Do##Name(&assembler); \
|
| - Handle<Code> code = assembler.GenerateCode(); \
|
| - size_t index = GetDispatchTableIndex(Bytecode::k##Name, operand_scale); \
|
| - dispatch_table_[index] = *code; \
|
| - TraceCodegen(code); \
|
| - LOG_CODE_EVENT(isolate_, \
|
| - CodeCreateEvent(Logger::BYTECODE_HANDLER_TAG, \
|
| - AbstractCode::cast(*code), #Name)); \
|
| - } \
|
| +#define GENERATE_CODE(Name, ...) \
|
| + { \
|
| + if (BytecodeHasHandler(Bytecode::k##Name, operand_scale)) { \
|
| + InterpreterAssembler assembler(isolate_, &zone, Bytecode::k##Name, \
|
| + operand_scale); \
|
| + Do##Name(&assembler); \
|
| + Handle<Code> code = assembler.GenerateCode(); \
|
| + size_t index = GetDispatchTableIndex(Bytecode::k##Name, operand_scale); \
|
| + dispatch_table_[index] = *code; \
|
| + TraceCodegen(code); \
|
| + LOG_CODE_EVENT( \
|
| + isolate_, \
|
| + CodeCreateEvent( \
|
| + Logger::BYTECODE_HANDLER_TAG, AbstractCode::cast(*code), \
|
| + Bytecodes::ToString(Bytecode::k##Name, operand_scale).c_str())); \
|
| + } \
|
| }
|
| BYTECODE_LIST(GENERATE_CODE)
|
| #undef GENERATE_CODE
|
| @@ -153,7 +159,8 @@ bool Interpreter::MakeBytecode(CompilationInfo* info) {
|
| }
|
|
|
| bool Interpreter::IsDispatchTableInitialized() {
|
| - if (FLAG_trace_ignition || FLAG_trace_ignition_codegen) {
|
| + if (FLAG_trace_ignition || FLAG_trace_ignition_codegen ||
|
| + FLAG_ignition_count_handler_dispatches) {
|
| // Regenerate table to add bytecode tracing operations
|
| // or to print the assembly code generated by TurboFan.
|
| return false;
|
|
|