Chromium Code Reviews| Index: src/arm/code-stubs-arm.cc |
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
| index bfe6da0ef44ce71a30d7706df141796e7527a050..477e79df9549856a1956a9545d50ebc037c67b85 100644 |
| --- a/src/arm/code-stubs-arm.cc |
| +++ b/src/arm/code-stubs-arm.cc |
| @@ -1995,12 +1995,15 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
| Isolate* isolate = masm->isolate(); |
| int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY; |
| __ mov(r8, Operand(Smi::FromInt(marker))); |
|
Rodolph Perfetta
2013/11/27 20:09:41
if (FLAG_enable_ool_constant_pool)
rmcilroy
2013/11/28 11:32:26
Done.
|
| + __ mov(r7, Operand(Smi::FromInt(marker))); |
| __ mov(r6, Operand(Smi::FromInt(marker))); |
| __ mov(r5, |
| Operand(ExternalReference(Isolate::kCEntryFPAddress, isolate))); |
| __ ldr(r5, MemOperand(r5)); |
| __ mov(ip, Operand(-1)); // Push a bad frame pointer to fail if it is used. |
| - __ Push(ip, r8, r6, r5); |
| + __ stm(db_w, sp, r5.bit() | r6.bit() | r7.bit() | |
| + (FLAG_enable_ool_constant_pool ? r8.bit() : 0) | |
| + ip.bit()); |
| // Set up frame pointer for the frame to be pushed. |
| __ add(fp, sp, Operand(-EntryFrameConstants::kCallerFPOffset)); |
| @@ -2584,7 +2587,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { |
| const int kAliasedOffset = |
| Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX); |
| - __ ldr(r4, MemOperand(r8, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); |
| + __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); |
| __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); |
| __ cmp(r1, Operand::Zero()); |
| __ ldr(r4, MemOperand(r4, kNormalOffset), eq); |
| @@ -2635,7 +2638,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { |
| __ str(r6, FieldMemOperand(r4, FixedArray::kMapOffset)); |
| __ add(r6, r1, Operand(Smi::FromInt(2))); |
| __ str(r6, FieldMemOperand(r4, FixedArray::kLengthOffset)); |
| - __ str(r8, FieldMemOperand(r4, FixedArray::kHeaderSize + 0 * kPointerSize)); |
| + __ str(cp, FieldMemOperand(r4, FixedArray::kHeaderSize + 0 * kPointerSize)); |
| __ add(r6, r4, Operand(r1, LSL, 1)); |
| __ add(r6, r6, Operand(kParameterMapHeaderSize)); |
| __ str(r6, FieldMemOperand(r4, FixedArray::kHeaderSize + 1 * kPointerSize)); |
| @@ -3029,7 +3032,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| // For arguments 4 and 3 get string length, calculate start of string data and |
| // calculate the shift of the index (0 for ASCII and 1 for two byte). |
| - __ add(r8, subject, Operand(SeqString::kHeaderSize - kHeapObjectTag)); |
| + __ add(r7, subject, Operand(SeqString::kHeaderSize - kHeapObjectTag)); |
| __ eor(r3, r3, Operand(1)); |
| // Load the length from the original subject string from the previous stack |
| // frame. Therefore we have to use fp, which points exactly to two pointer |
| @@ -3040,12 +3043,12 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| // Argument 4, r3: End of string data |
| // Argument 3, r2: Start of string data |
| // Prepare start and end index of the input. |
| - __ add(r9, r8, Operand(r9, LSL, r3)); |
| + __ add(r9, r7, Operand(r9, LSL, r3)); |
| __ add(r2, r9, Operand(r1, LSL, r3)); |
| - __ ldr(r8, FieldMemOperand(subject, String::kLengthOffset)); |
| - __ SmiUntag(r8); |
| - __ add(r3, r9, Operand(r8, LSL, r3)); |
| + __ ldr(r7, FieldMemOperand(subject, String::kLengthOffset)); |
| + __ SmiUntag(r7); |
| + __ add(r3, r9, Operand(r7, LSL, r3)); |
| // Argument 2 (r1): Previous index. |
| // Already there |