| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/interpreter/interpreter.h" | 5 #include "src/interpreter/interpreter.h" |
| 6 | 6 |
| 7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
| 8 #include "src/compiler.h" | 8 #include "src/compiler.h" |
| 9 #include "src/compiler/interpreter-assembler.h" | 9 #include "src/compiler/interpreter-assembler.h" |
| 10 #include "src/factory.h" | 10 #include "src/factory.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 Handle<Code> code = assembler.GenerateCode(); \ | 52 Handle<Code> code = assembler.GenerateCode(); \ |
| 53 handler_table->set(static_cast<int>(Bytecode::k##Name), *code); \ | 53 handler_table->set(static_cast<int>(Bytecode::k##Name), *code); \ |
| 54 } | 54 } |
| 55 BYTECODE_LIST(GENERATE_CODE) | 55 BYTECODE_LIST(GENERATE_CODE) |
| 56 #undef GENERATE_CODE | 56 #undef GENERATE_CODE |
| 57 } | 57 } |
| 58 } | 58 } |
| 59 | 59 |
| 60 | 60 |
| 61 bool Interpreter::MakeBytecode(CompilationInfo* info) { | 61 bool Interpreter::MakeBytecode(CompilationInfo* info) { |
| 62 Handle<SharedFunctionInfo> shared_info = info->shared_info(); | |
| 63 | |
| 64 BytecodeGenerator generator(info->isolate(), info->zone()); | 62 BytecodeGenerator generator(info->isolate(), info->zone()); |
| 65 info->EnsureFeedbackVector(); | 63 info->EnsureFeedbackVector(); |
| 66 Handle<BytecodeArray> bytecodes = generator.MakeBytecode(info); | 64 Handle<BytecodeArray> bytecodes = generator.MakeBytecode(info); |
| 67 if (FLAG_print_bytecode) { | 65 if (FLAG_print_bytecode) { |
| 68 bytecodes->Print(); | 66 bytecodes->Print(); |
| 69 } | 67 } |
| 70 | 68 |
| 71 DCHECK(shared_info->function_data()->IsUndefined()); | 69 info->SetBytecodeArray(bytecodes); |
| 72 if (!shared_info->function_data()->IsUndefined()) { | |
| 73 return false; | |
| 74 } | |
| 75 | |
| 76 shared_info->set_function_data(*bytecodes); | |
| 77 info->SetCode(info->isolate()->builtins()->InterpreterEntryTrampoline()); | 70 info->SetCode(info->isolate()->builtins()->InterpreterEntryTrampoline()); |
| 78 return true; | 71 return true; |
| 79 } | 72 } |
| 80 | 73 |
| 81 | 74 |
| 82 bool Interpreter::IsInterpreterTableInitialized( | 75 bool Interpreter::IsInterpreterTableInitialized( |
| 83 Handle<FixedArray> handler_table) { | 76 Handle<FixedArray> handler_table) { |
| 84 DCHECK(handler_table->length() == static_cast<int>(Bytecode::kLast) + 1); | 77 DCHECK(handler_table->length() == static_cast<int>(Bytecode::kLast) + 1); |
| 85 return handler_table->get(0) != isolate_->heap()->undefined_value(); | 78 return handler_table->get(0) != isolate_->heap()->undefined_value(); |
| 86 } | 79 } |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 // | 560 // |
| 568 // Return the value in the accumulator. | 561 // Return the value in the accumulator. |
| 569 void Interpreter::DoReturn(compiler::InterpreterAssembler* assembler) { | 562 void Interpreter::DoReturn(compiler::InterpreterAssembler* assembler) { |
| 570 __ Return(); | 563 __ Return(); |
| 571 } | 564 } |
| 572 | 565 |
| 573 | 566 |
| 574 } // namespace interpreter | 567 } // namespace interpreter |
| 575 } // namespace internal | 568 } // namespace internal |
| 576 } // namespace v8 | 569 } // namespace v8 |
| OLD | NEW |