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