| Index: src/arm/code-stubs-arm.cc
|
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
|
| index 8f8094fd79c514969773f018083aded311be63ea..711337a2cd4f3a9d8d48269dacc93aaffaba726b 100644
|
| --- a/src/arm/code-stubs-arm.cc
|
| +++ b/src/arm/code-stubs-arm.cc
|
| @@ -1026,7 +1026,6 @@ void NumberToStringStub::GenerateLookupNumberStringCache(MacroAssembler* masm,
|
| Register scratch1,
|
| Register scratch2,
|
| Register scratch3,
|
| - bool object_is_smi,
|
| Label* not_found) {
|
| // Use of registers. Register result is used as a temporary.
|
| Register number_string_cache = result;
|
| @@ -1049,40 +1048,38 @@ void NumberToStringStub::GenerateLookupNumberStringCache(MacroAssembler* masm,
|
| Isolate* isolate = masm->isolate();
|
| Label is_smi;
|
| Label load_result_from_cache;
|
| - if (!object_is_smi) {
|
| - __ JumpIfSmi(object, &is_smi);
|
| - __ CheckMap(object,
|
| - scratch1,
|
| - Heap::kHeapNumberMapRootIndex,
|
| - not_found,
|
| - DONT_DO_SMI_CHECK);
|
| + __ JumpIfSmi(object, &is_smi);
|
| + __ CheckMap(object,
|
| + scratch1,
|
| + Heap::kHeapNumberMapRootIndex,
|
| + not_found,
|
| + DONT_DO_SMI_CHECK);
|
|
|
| - STATIC_ASSERT(8 == kDoubleSize);
|
| - __ add(scratch1,
|
| - object,
|
| - Operand(HeapNumber::kValueOffset - kHeapObjectTag));
|
| - __ ldm(ia, scratch1, scratch1.bit() | scratch2.bit());
|
| - __ eor(scratch1, scratch1, Operand(scratch2));
|
| - __ and_(scratch1, scratch1, Operand(mask));
|
| -
|
| - // Calculate address of entry in string cache: each entry consists
|
| - // of two pointer sized fields.
|
| - __ add(scratch1,
|
| - number_string_cache,
|
| - Operand(scratch1, LSL, kPointerSizeLog2 + 1));
|
| -
|
| - Register probe = mask;
|
| - __ ldr(probe,
|
| - FieldMemOperand(scratch1, FixedArray::kHeaderSize));
|
| - __ JumpIfSmi(probe, not_found);
|
| - __ sub(scratch2, object, Operand(kHeapObjectTag));
|
| - __ vldr(d0, scratch2, HeapNumber::kValueOffset);
|
| - __ sub(probe, probe, Operand(kHeapObjectTag));
|
| - __ vldr(d1, probe, HeapNumber::kValueOffset);
|
| - __ VFPCompareAndSetFlags(d0, d1);
|
| - __ b(ne, not_found); // The cache did not contain this value.
|
| - __ b(&load_result_from_cache);
|
| - }
|
| + STATIC_ASSERT(8 == kDoubleSize);
|
| + __ add(scratch1,
|
| + object,
|
| + Operand(HeapNumber::kValueOffset - kHeapObjectTag));
|
| + __ ldm(ia, scratch1, scratch1.bit() | scratch2.bit());
|
| + __ eor(scratch1, scratch1, Operand(scratch2));
|
| + __ and_(scratch1, scratch1, Operand(mask));
|
| +
|
| + // Calculate address of entry in string cache: each entry consists
|
| + // of two pointer sized fields.
|
| + __ add(scratch1,
|
| + number_string_cache,
|
| + Operand(scratch1, LSL, kPointerSizeLog2 + 1));
|
| +
|
| + Register probe = mask;
|
| + __ ldr(probe,
|
| + FieldMemOperand(scratch1, FixedArray::kHeaderSize));
|
| + __ JumpIfSmi(probe, not_found);
|
| + __ sub(scratch2, object, Operand(kHeapObjectTag));
|
| + __ vldr(d0, scratch2, HeapNumber::kValueOffset);
|
| + __ sub(probe, probe, Operand(kHeapObjectTag));
|
| + __ vldr(d1, probe, HeapNumber::kValueOffset);
|
| + __ VFPCompareAndSetFlags(d0, d1);
|
| + __ b(ne, not_found); // The cache did not contain this value.
|
| + __ b(&load_result_from_cache);
|
|
|
| __ bind(&is_smi);
|
| Register scratch = scratch1;
|
| @@ -1094,7 +1091,6 @@ void NumberToStringStub::GenerateLookupNumberStringCache(MacroAssembler* masm,
|
| Operand(scratch, LSL, kPointerSizeLog2 + 1));
|
|
|
| // Check if the entry is the smi we are looking for.
|
| - Register probe = mask;
|
| __ ldr(probe, FieldMemOperand(scratch, FixedArray::kHeaderSize));
|
| __ cmp(object, probe);
|
| __ b(ne, not_found);
|
| @@ -1116,7 +1112,7 @@ void NumberToStringStub::Generate(MacroAssembler* masm) {
|
| __ ldr(r1, MemOperand(sp, 0));
|
|
|
| // Generate code to lookup number in the number string cache.
|
| - GenerateLookupNumberStringCache(masm, r1, r0, r2, r3, r4, false, &runtime);
|
| + GenerateLookupNumberStringCache(masm, r1, r0, r2, r3, r4, &runtime);
|
| __ add(sp, sp, Operand(1 * kPointerSize));
|
| __ Ret();
|
|
|
| @@ -5864,7 +5860,6 @@ void StringAddStub::GenerateConvertArgument(MacroAssembler* masm,
|
| scratch2,
|
| scratch3,
|
| scratch4,
|
| - false,
|
| ¬_cached);
|
| __ mov(arg, scratch1);
|
| __ str(arg, MemOperand(sp, stack_offset));
|
|
|