| 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 2353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2364 __ Dispatch(); | 2364 __ Dispatch(); |
| 2365 | 2365 |
| 2366 __ Bind(&stack_check_interrupt); | 2366 __ Bind(&stack_check_interrupt); |
| 2367 { | 2367 { |
| 2368 Node* context = __ GetContext(); | 2368 Node* context = __ GetContext(); |
| 2369 __ CallRuntime(Runtime::kStackGuard, context); | 2369 __ CallRuntime(Runtime::kStackGuard, context); |
| 2370 __ Dispatch(); | 2370 __ Dispatch(); |
| 2371 } | 2371 } |
| 2372 } | 2372 } |
| 2373 | 2373 |
| 2374 // SetPendingMessage |
| 2375 // |
| 2376 // Sets the pending message to the value in the accumulator, and returns the |
| 2377 // previous pending message in the accumulator. |
| 2378 void Interpreter::DoSetPendingMessage(InterpreterAssembler* assembler) { |
| 2379 Node* pending_message = __ ExternalConstant( |
| 2380 ExternalReference::address_of_pending_message_obj(isolate_)); |
| 2381 Node* previous_message = |
| 2382 __ Load(MachineType::TaggedPointer(), pending_message); |
| 2383 Node* new_message = __ GetAccumulator(); |
| 2384 __ StoreNoWriteBarrier(MachineRepresentation::kTaggedPointer, pending_message, |
| 2385 new_message); |
| 2386 __ SetAccumulator(previous_message); |
| 2387 __ Dispatch(); |
| 2388 } |
| 2389 |
| 2374 // Throw | 2390 // Throw |
| 2375 // | 2391 // |
| 2376 // Throws the exception in the accumulator. | 2392 // Throws the exception in the accumulator. |
| 2377 void Interpreter::DoThrow(InterpreterAssembler* assembler) { | 2393 void Interpreter::DoThrow(InterpreterAssembler* assembler) { |
| 2378 Node* exception = __ GetAccumulator(); | 2394 Node* exception = __ GetAccumulator(); |
| 2379 Node* context = __ GetContext(); | 2395 Node* context = __ GetContext(); |
| 2380 __ CallRuntime(Runtime::kThrow, context, exception); | 2396 __ CallRuntime(Runtime::kThrow, context, exception); |
| 2381 // We shouldn't ever return from a throw. | 2397 // We shouldn't ever return from a throw. |
| 2382 __ Abort(kUnexpectedReturnFromThrow); | 2398 __ Abort(kUnexpectedReturnFromThrow); |
| 2383 } | 2399 } |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2683 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, | 2699 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, |
| 2684 __ SmiTag(new_state)); | 2700 __ SmiTag(new_state)); |
| 2685 __ SetAccumulator(old_state); | 2701 __ SetAccumulator(old_state); |
| 2686 | 2702 |
| 2687 __ Dispatch(); | 2703 __ Dispatch(); |
| 2688 } | 2704 } |
| 2689 | 2705 |
| 2690 } // namespace interpreter | 2706 } // namespace interpreter |
| 2691 } // namespace internal | 2707 } // namespace internal |
| 2692 } // namespace v8 | 2708 } // namespace v8 |
| OLD | NEW |