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 2444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2455 } else { | 2455 } else { |
2456 LOperand* input = UseRegisterAtStart(instr->value()); | 2456 LOperand* input = UseRegisterAtStart(instr->value()); |
2457 LInstruction* result = DefineAsRegister(new(zone()) LMathAbs(input)); | 2457 LInstruction* result = DefineAsRegister(new(zone()) LMathAbs(input)); |
2458 if (!r.IsDouble()) result = AssignEnvironment(result); | 2458 if (!r.IsDouble()) result = AssignEnvironment(result); |
2459 return result; | 2459 return result; |
2460 } | 2460 } |
2461 } | 2461 } |
2462 case kMathExp: { | 2462 case kMathExp: { |
2463 DCHECK(instr->representation().IsDouble()); | 2463 DCHECK(instr->representation().IsDouble()); |
2464 DCHECK(instr->value()->representation().IsDouble()); | 2464 DCHECK(instr->value()->representation().IsDouble()); |
2465 LOperand* input = UseRegister(instr->value()); | 2465 LOperand* input = UseFixedDouble(instr->value(), d0); |
2466 LOperand* double_temp1 = TempDoubleRegister(); | 2466 LMathExp* result = new (zone()) LMathExp(input); |
2467 LOperand* temp1 = TempRegister(); | 2467 return MarkAsCall(DefineFixedDouble(result, d0), instr); |
2468 LOperand* temp2 = TempRegister(); | |
2469 LOperand* temp3 = TempRegister(); | |
2470 LMathExp* result = new(zone()) LMathExp(input, double_temp1, | |
2471 temp1, temp2, temp3); | |
2472 return DefineAsRegister(result); | |
2473 } | 2468 } |
2474 case kMathFloor: { | 2469 case kMathFloor: { |
2475 DCHECK(instr->value()->representation().IsDouble()); | 2470 DCHECK(instr->value()->representation().IsDouble()); |
2476 LOperand* input = UseRegisterAtStart(instr->value()); | 2471 LOperand* input = UseRegisterAtStart(instr->value()); |
2477 if (instr->representation().IsInteger32()) { | 2472 if (instr->representation().IsInteger32()) { |
2478 LMathFloorI* result = new(zone()) LMathFloorI(input); | 2473 LMathFloorI* result = new(zone()) LMathFloorI(input); |
2479 return AssignEnvironment(AssignPointerMap(DefineAsRegister(result))); | 2474 return AssignEnvironment(AssignPointerMap(DefineAsRegister(result))); |
2480 } else { | 2475 } else { |
2481 DCHECK(instr->representation().IsDouble()); | 2476 DCHECK(instr->representation().IsDouble()); |
2482 LMathFloorD* result = new(zone()) LMathFloorD(input); | 2477 LMathFloorD* result = new(zone()) LMathFloorD(input); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2593 | 2588 |
2594 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { | 2589 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { |
2595 LOperand* receiver = UseRegister(instr->receiver()); | 2590 LOperand* receiver = UseRegister(instr->receiver()); |
2596 LOperand* function = UseRegister(instr->function()); | 2591 LOperand* function = UseRegister(instr->function()); |
2597 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); | 2592 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); |
2598 return AssignEnvironment(DefineAsRegister(result)); | 2593 return AssignEnvironment(DefineAsRegister(result)); |
2599 } | 2594 } |
2600 | 2595 |
2601 } // namespace internal | 2596 } // namespace internal |
2602 } // namespace v8 | 2597 } // namespace v8 |
OLD | NEW |