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 "src/crankshaft/arm64/lithium-arm64.h" | 5 #include "src/crankshaft/arm64/lithium-arm64.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" | 9 #include "src/crankshaft/arm64/lithium-codegen-arm64.h" |
10 #include "src/crankshaft/hydrogen-osr.h" | 10 #include "src/crankshaft/hydrogen-osr.h" |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
834 } else if (instr->representation().IsDouble()) { | 834 } else if (instr->representation().IsDouble()) { |
835 return DoArithmeticD(Token::ADD, instr); | 835 return DoArithmeticD(Token::ADD, instr); |
836 } else { | 836 } else { |
837 DCHECK(instr->representation().IsTagged()); | 837 DCHECK(instr->representation().IsTagged()); |
838 return DoArithmeticT(Token::ADD, instr); | 838 return DoArithmeticT(Token::ADD, instr); |
839 } | 839 } |
840 } | 840 } |
841 | 841 |
842 | 842 |
843 LInstruction* LChunkBuilder::DoAllocate(HAllocate* instr) { | 843 LInstruction* LChunkBuilder::DoAllocate(HAllocate* instr) { |
844 info()->MarkAsDeferredCalling(); | |
845 LOperand* context = UseAny(instr->context()); | |
846 LOperand* size = UseRegisterOrConstant(instr->size()); | 844 LOperand* size = UseRegisterOrConstant(instr->size()); |
847 LOperand* temp1 = TempRegister(); | 845 LOperand* temp1 = TempRegister(); |
848 LOperand* temp2 = TempRegister(); | 846 LOperand* temp2 = TempRegister(); |
849 LOperand* temp3 = instr->MustPrefillWithFiller() ? TempRegister() : NULL; | 847 if (instr->IsAllocationFolded()) { |
850 LAllocate* result = new(zone()) LAllocate(context, size, temp1, temp2, temp3); | 848 LFastAllocate* result = new (zone()) LFastAllocate(size, temp1, temp2); |
851 return AssignPointerMap(DefineAsRegister(result)); | 849 return DefineAsRegister(result); |
| 850 } else { |
| 851 info()->MarkAsDeferredCalling(); |
| 852 LOperand* context = UseAny(instr->context()); |
| 853 LOperand* temp3 = instr->MustPrefillWithFiller() ? TempRegister() : NULL; |
| 854 LAllocate* result = |
| 855 new (zone()) LAllocate(context, size, temp1, temp2, temp3); |
| 856 return AssignPointerMap(DefineAsRegister(result)); |
| 857 } |
852 } | 858 } |
853 | 859 |
854 | 860 |
855 LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) { | 861 LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) { |
856 LOperand* function = UseFixed(instr->function(), x1); | 862 LOperand* function = UseFixed(instr->function(), x1); |
857 LOperand* receiver = UseFixed(instr->receiver(), x0); | 863 LOperand* receiver = UseFixed(instr->receiver(), x0); |
858 LOperand* length = UseFixed(instr->length(), x2); | 864 LOperand* length = UseFixed(instr->length(), x2); |
859 LOperand* elements = UseFixed(instr->elements(), x3); | 865 LOperand* elements = UseFixed(instr->elements(), x3); |
860 LApplyArguments* result = new(zone()) LApplyArguments(function, | 866 LApplyArguments* result = new(zone()) LApplyArguments(function, |
861 receiver, | 867 receiver, |
(...skipping 1753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2615 | 2621 |
2616 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { | 2622 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { |
2617 LOperand* receiver = UseRegister(instr->receiver()); | 2623 LOperand* receiver = UseRegister(instr->receiver()); |
2618 LOperand* function = UseRegister(instr->function()); | 2624 LOperand* function = UseRegister(instr->function()); |
2619 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); | 2625 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); |
2620 return AssignEnvironment(DefineAsRegister(result)); | 2626 return AssignEnvironment(DefineAsRegister(result)); |
2621 } | 2627 } |
2622 | 2628 |
2623 } // namespace internal | 2629 } // namespace internal |
2624 } // namespace v8 | 2630 } // namespace v8 |
OLD | NEW |