| 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 <fstream> | 7 #include <fstream> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "src/ast/prettyprinter.h" | 10 #include "src/ast/prettyprinter.h" |
| (...skipping 2708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2719 ExternalReference::debug_last_step_action_address(isolate_)); | 2719 ExternalReference::debug_last_step_action_address(isolate_)); |
| 2720 Node* step_action = __ Load(MachineType::Int8(), step_action_address); | 2720 Node* step_action = __ Load(MachineType::Int8(), step_action_address); |
| 2721 STATIC_ASSERT(StepIn > StepNext); | 2721 STATIC_ASSERT(StepIn > StepNext); |
| 2722 STATIC_ASSERT(StepFrame > StepNext); | 2722 STATIC_ASSERT(StepFrame > StepNext); |
| 2723 STATIC_ASSERT(LastStepAction == StepFrame); | 2723 STATIC_ASSERT(LastStepAction == StepFrame); |
| 2724 Node* step_next = __ Int32Constant(StepNext); | 2724 Node* step_next = __ Int32Constant(StepNext); |
| 2725 __ Branch(__ Int32LessThanOrEqual(step_next, step_action), &if_stepping, &ok); | 2725 __ Branch(__ Int32LessThanOrEqual(step_next, step_action), &if_stepping, &ok); |
| 2726 __ Bind(&ok); | 2726 __ Bind(&ok); |
| 2727 | 2727 |
| 2728 Node* array = | 2728 Node* array = |
| 2729 __ LoadObjectField(generator, JSGeneratorObject::kOperandStackOffset); | 2729 __ LoadObjectField(generator, JSGeneratorObject::kRegisterFileOffset); |
| 2730 Node* context = __ GetContext(); | 2730 Node* context = __ GetContext(); |
| 2731 Node* state = __ GetAccumulator(); | 2731 Node* state = __ GetAccumulator(); |
| 2732 | 2732 |
| 2733 __ ExportRegisterFile(array); | 2733 __ ExportRegisterFile(array); |
| 2734 __ StoreObjectField(generator, JSGeneratorObject::kContextOffset, context); | 2734 __ StoreObjectField(generator, JSGeneratorObject::kContextOffset, context); |
| 2735 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, state); | 2735 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, state); |
| 2736 | 2736 |
| 2737 Node* offset = __ SmiTag(__ BytecodeOffset()); | 2737 Node* offset = __ SmiTag(__ BytecodeOffset()); |
| 2738 __ StoreObjectField(generator, JSGeneratorObject::kInputOrDebugPosOffset, | 2738 __ StoreObjectField(generator, JSGeneratorObject::kInputOrDebugPosOffset, |
| 2739 offset); | 2739 offset); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2751 // ResumeGenerator <generator> | 2751 // ResumeGenerator <generator> |
| 2752 // | 2752 // |
| 2753 // Imports the register file stored in the generator. Also loads the | 2753 // Imports the register file stored in the generator. Also loads the |
| 2754 // generator's state and stores it in the accumulator, before overwriting it | 2754 // generator's state and stores it in the accumulator, before overwriting it |
| 2755 // with kGeneratorExecuting. | 2755 // with kGeneratorExecuting. |
| 2756 void Interpreter::DoResumeGenerator(InterpreterAssembler* assembler) { | 2756 void Interpreter::DoResumeGenerator(InterpreterAssembler* assembler) { |
| 2757 Node* generator_reg = __ BytecodeOperandReg(0); | 2757 Node* generator_reg = __ BytecodeOperandReg(0); |
| 2758 Node* generator = __ LoadRegister(generator_reg); | 2758 Node* generator = __ LoadRegister(generator_reg); |
| 2759 | 2759 |
| 2760 __ ImportRegisterFile( | 2760 __ ImportRegisterFile( |
| 2761 __ LoadObjectField(generator, JSGeneratorObject::kOperandStackOffset)); | 2761 __ LoadObjectField(generator, JSGeneratorObject::kRegisterFileOffset)); |
| 2762 | 2762 |
| 2763 Node* old_state = | 2763 Node* old_state = |
| 2764 __ LoadObjectField(generator, JSGeneratorObject::kContinuationOffset); | 2764 __ LoadObjectField(generator, JSGeneratorObject::kContinuationOffset); |
| 2765 Node* new_state = __ Int32Constant(JSGeneratorObject::kGeneratorExecuting); | 2765 Node* new_state = __ Int32Constant(JSGeneratorObject::kGeneratorExecuting); |
| 2766 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, | 2766 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, |
| 2767 __ SmiTag(new_state)); | 2767 __ SmiTag(new_state)); |
| 2768 __ SetAccumulator(old_state); | 2768 __ SetAccumulator(old_state); |
| 2769 | 2769 |
| 2770 __ Dispatch(); | 2770 __ Dispatch(); |
| 2771 } | 2771 } |
| 2772 | 2772 |
| 2773 } // namespace interpreter | 2773 } // namespace interpreter |
| 2774 } // namespace internal | 2774 } // namespace internal |
| 2775 } // namespace v8 | 2775 } // namespace v8 |
| OLD | NEW |