| 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/compiler/interpreter-assembler.h" | 5 #include "src/compiler/interpreter-assembler.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 | 8 |
| 9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
| 10 #include "src/compiler/graph.h" | 10 #include "src/compiler/graph.h" |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 BytecodeArrayTaggedPointer(), | 550 BytecodeArrayTaggedPointer(), |
| 551 DispatchTableRawPointer(), | 551 DispatchTableRawPointer(), |
| 552 GetContext() }; | 552 GetContext() }; |
| 553 Node* tail_call = | 553 Node* tail_call = |
| 554 raw_assembler_->TailCallN(call_descriptor(), target_code_object, args); | 554 raw_assembler_->TailCallN(call_descriptor(), target_code_object, args); |
| 555 // This should always be the end node. | 555 // This should always be the end node. |
| 556 AddEndInput(tail_call); | 556 AddEndInput(tail_call); |
| 557 } | 557 } |
| 558 | 558 |
| 559 | 559 |
| 560 void InterpreterAssembler::Abort(BailoutReason bailout_reason) { |
| 561 Node* abort_id = SmiTag(Int32Constant(bailout_reason)); |
| 562 CallRuntime(Runtime::kAbort, abort_id); |
| 563 Return(); |
| 564 } |
| 565 |
| 566 |
| 560 void InterpreterAssembler::AbortIfWordNotEqual(Node* lhs, Node* rhs, | 567 void InterpreterAssembler::AbortIfWordNotEqual(Node* lhs, Node* rhs, |
| 561 BailoutReason bailout_reason) { | 568 BailoutReason bailout_reason) { |
| 562 RawMachineAssembler::Label match, no_match; | 569 RawMachineAssembler::Label match, no_match; |
| 563 Node* condition = raw_assembler_->WordEqual(lhs, rhs); | 570 Node* condition = raw_assembler_->WordEqual(lhs, rhs); |
| 564 raw_assembler_->Branch(condition, &match, &no_match); | 571 raw_assembler_->Branch(condition, &match, &no_match); |
| 565 raw_assembler_->Bind(&no_match); | 572 raw_assembler_->Bind(&no_match); |
| 566 Node* abort_id = SmiTag(Int32Constant(bailout_reason)); | 573 Abort(bailout_reason); |
| 567 CallRuntime(Runtime::kAbort, abort_id); | |
| 568 Return(); | |
| 569 raw_assembler_->Bind(&match); | 574 raw_assembler_->Bind(&match); |
| 570 } | 575 } |
| 571 | 576 |
| 572 | 577 |
| 573 void InterpreterAssembler::AddEndInput(Node* input) { | 578 void InterpreterAssembler::AddEndInput(Node* input) { |
| 574 DCHECK_NOT_NULL(input); | 579 DCHECK_NOT_NULL(input); |
| 575 end_nodes_.push_back(input); | 580 end_nodes_.push_back(input); |
| 576 } | 581 } |
| 577 | 582 |
| 578 | 583 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 return raw_assembler_->schedule(); | 620 return raw_assembler_->schedule(); |
| 616 } | 621 } |
| 617 | 622 |
| 618 | 623 |
| 619 Zone* InterpreterAssembler::zone() { return raw_assembler_->zone(); } | 624 Zone* InterpreterAssembler::zone() { return raw_assembler_->zone(); } |
| 620 | 625 |
| 621 | 626 |
| 622 } // namespace compiler | 627 } // namespace compiler |
| 623 } // namespace internal | 628 } // namespace internal |
| 624 } // namespace v8 | 629 } // namespace v8 |
| OLD | NEW |