Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index e0750cdbe918f7d9ff350ed5e1304ff5e8e9a7aa..d294785092f02d0d786e00acb4b4578f92378209 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -234,61 +234,6 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
} |
-void WriteInt32ToHeapNumberStub::GenerateFixedRegStubsAheadOfTime( |
- Isolate* isolate) { |
- WriteInt32ToHeapNumberStub stub1(isolate, r1, r0, r2); |
- WriteInt32ToHeapNumberStub stub2(isolate, r2, r0, r3); |
- stub1.GetCode(); |
- stub2.GetCode(); |
-} |
- |
- |
-// See comment for class. |
-void WriteInt32ToHeapNumberStub::Generate(MacroAssembler* masm) { |
- Label max_negative_int; |
- // the_int_ has the answer which is a signed int32 but not a Smi. |
- // We test for the special value that has a different exponent. This test |
- // has the neat side effect of setting the flags according to the sign. |
- STATIC_ASSERT(HeapNumber::kSignMask == 0x80000000u); |
- __ cmp(the_int(), Operand(0x80000000u)); |
- __ b(eq, &max_negative_int); |
- // Set up the correct exponent in scratch_. All non-Smi int32s have the same. |
- // A non-Smi integer is 1.xxx * 2^30 so the exponent is 30 (biased). |
- uint32_t non_smi_exponent = |
- (HeapNumber::kExponentBias + 30) << HeapNumber::kExponentShift; |
- __ mov(scratch(), Operand(non_smi_exponent)); |
- // Set the sign bit in scratch_ if the value was negative. |
- __ orr(scratch(), scratch(), Operand(HeapNumber::kSignMask), LeaveCC, cs); |
- // Subtract from 0 if the value was negative. |
- __ rsb(the_int(), the_int(), Operand::Zero(), LeaveCC, cs); |
- // We should be masking the implict first digit of the mantissa away here, |
- // but it just ends up combining harmlessly with the last digit of the |
- // exponent that happens to be 1. The sign bit is 0 so we shift 10 to get |
- // the most significant 1 to hit the last bit of the 12 bit sign and exponent. |
- DCHECK(((1 << HeapNumber::kExponentShift) & non_smi_exponent) != 0); |
- const int shift_distance = HeapNumber::kNonMantissaBitsInTopWord - 2; |
- __ orr(scratch(), scratch(), Operand(the_int(), LSR, shift_distance)); |
- __ str(scratch(), |
- FieldMemOperand(the_heap_number(), HeapNumber::kExponentOffset)); |
- __ mov(scratch(), Operand(the_int(), LSL, 32 - shift_distance)); |
- __ str(scratch(), |
- FieldMemOperand(the_heap_number(), HeapNumber::kMantissaOffset)); |
- __ Ret(); |
- |
- __ bind(&max_negative_int); |
- // The max negative int32 is stored as a positive number in the mantissa of |
- // a double because it uses a sign bit instead of using two's complement. |
- // The actual mantissa bits stored are all 0 because the implicit most |
- // significant 1 bit is not stored. |
- non_smi_exponent += 1 << HeapNumber::kExponentShift; |
- __ mov(ip, Operand(HeapNumber::kSignMask | non_smi_exponent)); |
- __ str(ip, FieldMemOperand(the_heap_number(), HeapNumber::kExponentOffset)); |
- __ mov(ip, Operand::Zero()); |
- __ str(ip, FieldMemOperand(the_heap_number(), HeapNumber::kMantissaOffset)); |
- __ Ret(); |
-} |
- |
- |
// Handle the case where the lhs and rhs are the same object. |
// Equality is almost reflexive (everything but NaN), so this is a test |
// for "identity and not NaN". |
@@ -967,7 +912,6 @@ bool CEntryStub::NeedsImmovableCode() { |
void CodeStub::GenerateStubsAheadOfTime(Isolate* isolate) { |
CEntryStub::GenerateAheadOfTime(isolate); |
- WriteInt32ToHeapNumberStub::GenerateFixedRegStubsAheadOfTime(isolate); |
StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(isolate); |
StubFailureTrampolineStub::GenerateAheadOfTime(isolate); |
ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |