Chromium Code Reviews| Index: src/interpreter/interpreter.cc |
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
| index 38150c515c7fd441e6cc0049a830ddf5d4a1a056..1d467e300fe3894a9590bac62d03a7ddca173d33 100644 |
| --- a/src/interpreter/interpreter.cc |
| +++ b/src/interpreter/interpreter.cc |
| @@ -4,6 +4,7 @@ |
| #include "src/interpreter/interpreter.h" |
| +#include "src/ast/prettyprinter.h" |
| #include "src/code-factory.h" |
| #include "src/compiler.h" |
| #include "src/compiler/interpreter-assembler.h" |
| @@ -60,6 +61,31 @@ void Interpreter::Initialize() { |
| bool Interpreter::MakeBytecode(CompilationInfo* info) { |
| + if (FLAG_print_bytecode || FLAG_print_source || FLAG_print_ast) { |
| + OFStream os(stdout); |
| + base::SmartArrayPointer<char> name = info->GetDebugName(); |
| + os << "[generating bytecode for function: " << info->GetDebugName().get() |
| + << "]" << std::endl |
| + << std::flush; |
| + } |
| + |
| +#ifdef DEBUG |
| + if (info->parse_info() && FLAG_print_source) { |
| + OFStream os(stdout); |
| + os << "--- Source from AST ---" << std::endl |
| + << PrettyPrinter(info->isolate()).PrintProgram(info->literal()) |
| + << std::endl |
| + << std::flush; |
| + } |
| + |
| + if (info->parse_info() && FLAG_print_ast) { |
| + OFStream os(stdout); |
| + os << "--- AST ---" << std::endl |
| + << AstPrinter(info->isolate()).PrintProgram(info->literal()) << std::endl |
| + << std::flush; |
| + } |
| +#endif // DEBUG |
| + |
| BytecodeGenerator generator(info->isolate(), info->zone()); |
| info->EnsureFeedbackVector(); |
| Handle<BytecodeArray> bytecodes = generator.MakeBytecode(info); |
| @@ -78,11 +104,14 @@ bool Interpreter::MakeBytecode(CompilationInfo* info) { |
| bool Interpreter::IsInterpreterTableInitialized( |
| Handle<FixedArray> handler_table) { |
| + if (FLAG_trace_ignition) { |
| + // Regenerate table to add bytecode tracing operations. |
|
Michael Starzinger
2016/01/28 12:07:06
Well played, well played, I like it! :)
rmcilroy
2016/01/28 16:39:51
Acknowledged.
|
| + return false; |
| + } |
| DCHECK(handler_table->length() == static_cast<int>(Bytecode::kLast) + 1); |
| return handler_table->get(0) != isolate_->heap()->undefined_value(); |
| } |
| - |
| // LdaZero |
| // |
| // Load literal '0' into the accumulator. |