OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 <sstream> | 5 #include <sstream> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/arm64/lithium-codegen-arm64.h" | 9 #include "src/arm64/lithium-codegen-arm64.h" |
10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
(...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1581 | 1581 |
1582 LInstruction* LChunkBuilder::DoInstanceOfKnownGlobal( | 1582 LInstruction* LChunkBuilder::DoInstanceOfKnownGlobal( |
1583 HInstanceOfKnownGlobal* instr) { | 1583 HInstanceOfKnownGlobal* instr) { |
1584 LInstanceOfKnownGlobal* result = new(zone()) LInstanceOfKnownGlobal( | 1584 LInstanceOfKnownGlobal* result = new(zone()) LInstanceOfKnownGlobal( |
1585 UseFixed(instr->context(), cp), | 1585 UseFixed(instr->context(), cp), |
1586 UseFixed(instr->left(), InstanceofStub::left())); | 1586 UseFixed(instr->left(), InstanceofStub::left())); |
1587 return MarkAsCall(DefineFixed(result, x0), instr); | 1587 return MarkAsCall(DefineFixed(result, x0), instr); |
1588 } | 1588 } |
1589 | 1589 |
1590 | 1590 |
1591 LInstruction* LChunkBuilder::DoTailCallThroughMegamorphicCache( | |
1592 HTailCallThroughMegamorphicCache* instr) { | |
1593 LOperand* context = UseFixed(instr->context(), cp); | |
1594 LOperand* receiver_register = | |
1595 UseFixed(instr->receiver(), LoadDescriptor::ReceiverRegister()); | |
1596 LOperand* name_register = | |
1597 UseFixed(instr->name(), LoadDescriptor::NameRegister()); | |
1598 | |
1599 // Not marked as call. It can't deoptimize, and it never returns. | |
1600 return new (zone()) LTailCallThroughMegamorphicCache( | |
1601 context, receiver_register, name_register); | |
1602 } | |
1603 | |
1604 | |
1605 LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { | 1591 LInstruction* LChunkBuilder::DoInvokeFunction(HInvokeFunction* instr) { |
1606 LOperand* context = UseFixed(instr->context(), cp); | 1592 LOperand* context = UseFixed(instr->context(), cp); |
1607 // The function is required (by MacroAssembler::InvokeFunction) to be in x1. | 1593 // The function is required (by MacroAssembler::InvokeFunction) to be in x1. |
1608 LOperand* function = UseFixed(instr->function(), x1); | 1594 LOperand* function = UseFixed(instr->function(), x1); |
1609 LInvokeFunction* result = new(zone()) LInvokeFunction(context, function); | 1595 LInvokeFunction* result = new(zone()) LInvokeFunction(context, function); |
1610 return MarkAsCall(DefineFixed(result, x0), instr, CANNOT_DEOPTIMIZE_EAGERLY); | 1596 return MarkAsCall(DefineFixed(result, x0), instr, CANNOT_DEOPTIMIZE_EAGERLY); |
1611 } | 1597 } |
1612 | 1598 |
1613 | 1599 |
1614 LInstruction* LChunkBuilder::DoIsConstructCallAndBranch( | 1600 LInstruction* LChunkBuilder::DoIsConstructCallAndBranch( |
(...skipping 1157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2772 HAllocateBlockContext* instr) { | 2758 HAllocateBlockContext* instr) { |
2773 LOperand* context = UseFixed(instr->context(), cp); | 2759 LOperand* context = UseFixed(instr->context(), cp); |
2774 LOperand* function = UseRegisterAtStart(instr->function()); | 2760 LOperand* function = UseRegisterAtStart(instr->function()); |
2775 LAllocateBlockContext* result = | 2761 LAllocateBlockContext* result = |
2776 new(zone()) LAllocateBlockContext(context, function); | 2762 new(zone()) LAllocateBlockContext(context, function); |
2777 return MarkAsCall(DefineFixed(result, cp), instr); | 2763 return MarkAsCall(DefineFixed(result, cp), instr); |
2778 } | 2764 } |
2779 | 2765 |
2780 | 2766 |
2781 } } // namespace v8::internal | 2767 } } // namespace v8::internal |
OLD | NEW |