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 #if V8_TARGET_ARCH_S390 | 5 #if V8_TARGET_ARCH_S390 |
6 | 6 |
7 #include "src/ast/compile-time-value.h" | 7 #include "src/ast/compile-time-value.h" |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/builtins/builtins-constructor.h" | 9 #include "src/builtins/builtins-constructor.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1590 __ lr(ip, scratch2); // 32 bit load | 1590 __ lr(ip, scratch2); // 32 bit load |
1591 __ sra(ip, Operand(31)); | 1591 __ sra(ip, Operand(31)); |
1592 __ cr_z(ip, scratch1); // 32 bit compare | 1592 __ cr_z(ip, scratch1); // 32 bit compare |
1593 __ bne(&stub_call); | 1593 __ bne(&stub_call); |
1594 #else | 1594 #else |
1595 __ SmiUntag(ip, right); | 1595 __ SmiUntag(ip, right); |
1596 __ LoadRR(scratch2, left); // load into low order of reg pair | 1596 __ LoadRR(scratch2, left); // load into low order of reg pair |
1597 __ mr_z(scratch1, ip); // R4:R5 = R5 * ip | 1597 __ mr_z(scratch1, ip); // R4:R5 = R5 * ip |
1598 // Check for overflowing the smi range - no overflow if higher 33 bits | 1598 // Check for overflowing the smi range - no overflow if higher 33 bits |
1599 // of the result are identical. | 1599 // of the result are identical. |
1600 __ TestIfInt32(scratch1, scratch2, ip); | 1600 __ lr(ip, scratch2); // 32 bit load |
| 1601 __ sra(ip, Operand(31)); |
| 1602 __ cr_z(ip, scratch1); // 32 bit compare |
1601 __ bne(&stub_call); | 1603 __ bne(&stub_call); |
1602 #endif | 1604 #endif |
1603 // Go slow on zero result to handle -0. | 1605 // Go slow on zero result to handle -0. |
1604 __ chi(scratch2, Operand::Zero()); | 1606 __ chi(scratch2, Operand::Zero()); |
1605 __ beq(&mul_zero, Label::kNear); | 1607 __ beq(&mul_zero, Label::kNear); |
1606 #if V8_TARGET_ARCH_S390X | 1608 #if V8_TARGET_ARCH_S390X |
1607 __ SmiTag(right, scratch2); | 1609 __ SmiTag(right, scratch2); |
1608 #else | 1610 #else |
1609 __ LoadRR(right, scratch2); | 1611 __ LoadRR(right, scratch2); |
1610 #endif | 1612 #endif |
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2724 USE(kOSRBranchInstruction); | 2726 USE(kOSRBranchInstruction); |
2725 DCHECK(kOSRBranchInstruction == br_instr); | 2727 DCHECK(kOSRBranchInstruction == br_instr); |
2726 | 2728 |
2727 DCHECK(interrupt_address == | 2729 DCHECK(interrupt_address == |
2728 isolate->builtins()->OnStackReplacement()->entry()); | 2730 isolate->builtins()->OnStackReplacement()->entry()); |
2729 return ON_STACK_REPLACEMENT; | 2731 return ON_STACK_REPLACEMENT; |
2730 } | 2732 } |
2731 } // namespace internal | 2733 } // namespace internal |
2732 } // namespace v8 | 2734 } // namespace v8 |
2733 #endif // V8_TARGET_ARCH_S390 | 2735 #endif // V8_TARGET_ARCH_S390 |
OLD | NEW |