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 2966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2977 Node* accumulator = __ GetAccumulator(); | 2977 Node* accumulator = __ GetAccumulator(); |
2978 __ Return(accumulator); | 2978 __ Return(accumulator); |
2979 } | 2979 } |
2980 | 2980 |
2981 // Debugger | 2981 // Debugger |
2982 // | 2982 // |
2983 // Call runtime to handle debugger statement. | 2983 // Call runtime to handle debugger statement. |
2984 void Interpreter::DoDebugger(InterpreterAssembler* assembler) { | 2984 void Interpreter::DoDebugger(InterpreterAssembler* assembler) { |
2985 Node* context = __ GetContext(); | 2985 Node* context = __ GetContext(); |
2986 __ CallRuntime(Runtime::kHandleDebuggerStatement, context); | 2986 __ CallRuntime(Runtime::kHandleDebuggerStatement, context); |
| 2987 __ MaybeDropFrames(context); |
2987 __ Dispatch(); | 2988 __ Dispatch(); |
2988 } | 2989 } |
2989 | 2990 |
2990 // DebugBreak | 2991 // DebugBreak |
2991 // | 2992 // |
2992 // Call runtime to handle a debug break. | 2993 // Call runtime to handle a debug break. |
2993 #define DEBUG_BREAK(Name, ...) \ | 2994 #define DEBUG_BREAK(Name, ...) \ |
2994 void Interpreter::Do##Name(InterpreterAssembler* assembler) { \ | 2995 void Interpreter::Do##Name(InterpreterAssembler* assembler) { \ |
2995 Node* context = __ GetContext(); \ | 2996 Node* context = __ GetContext(); \ |
2996 Node* accumulator = __ GetAccumulator(); \ | 2997 Node* accumulator = __ GetAccumulator(); \ |
2997 Node* original_handler = \ | 2998 Node* original_handler = \ |
2998 __ CallRuntime(Runtime::kDebugBreakOnBytecode, context, accumulator); \ | 2999 __ CallRuntime(Runtime::kDebugBreakOnBytecode, context, accumulator); \ |
| 3000 __ MaybeDropFrames(context); \ |
2999 __ DispatchToBytecodeHandler(original_handler); \ | 3001 __ DispatchToBytecodeHandler(original_handler); \ |
3000 } | 3002 } |
3001 DEBUG_BREAK_BYTECODE_LIST(DEBUG_BREAK); | 3003 DEBUG_BREAK_BYTECODE_LIST(DEBUG_BREAK); |
3002 #undef DEBUG_BREAK | 3004 #undef DEBUG_BREAK |
3003 | 3005 |
3004 void Interpreter::BuildForInPrepareResult(Node* output_register, | 3006 void Interpreter::BuildForInPrepareResult(Node* output_register, |
3005 Node* cache_type, Node* cache_array, | 3007 Node* cache_type, Node* cache_array, |
3006 Node* cache_length, | 3008 Node* cache_length, |
3007 InterpreterAssembler* assembler) { | 3009 InterpreterAssembler* assembler) { |
3008 __ StoreRegister(cache_type, output_register); | 3010 __ StoreRegister(cache_type, output_register); |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3259 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, | 3261 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, |
3260 __ SmiTag(new_state)); | 3262 __ SmiTag(new_state)); |
3261 __ SetAccumulator(old_state); | 3263 __ SetAccumulator(old_state); |
3262 | 3264 |
3263 __ Dispatch(); | 3265 __ Dispatch(); |
3264 } | 3266 } |
3265 | 3267 |
3266 } // namespace interpreter | 3268 } // namespace interpreter |
3267 } // namespace internal | 3269 } // namespace internal |
3268 } // namespace v8 | 3270 } // namespace v8 |
OLD | NEW |