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 |