| Index: src/arm/codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/codegen-arm.cc (revision 2053)
|
| +++ src/arm/codegen-arm.cc (working copy)
|
| @@ -4383,7 +4383,6 @@
|
| Label* not_smi,
|
| const Builtins::JavaScript& builtin,
|
| Token::Value operation,
|
| - int swi_number,
|
| OverwriteMode mode) {
|
| Label slow;
|
| __ bind(&slow);
|
| @@ -4431,23 +4430,17 @@
|
| __ ldr(r1, FieldMemOperand(r1, HeapNumber::kValueOffset + kPointerSize));
|
| // Call C routine that may not cause GC or other trouble.
|
| __ mov(r5, Operand(ExternalReference::double_fp_operation(operation)));
|
| -#if !defined(__arm__)
|
| - // Notify the simulator that we are calling an add routine in C.
|
| - __ swi(swi_number);
|
| -#else
|
| - // Actually call the add routine written in C.
|
| __ Call(r5);
|
| -#endif
|
| // Store answer in the overwritable heap number.
|
| __ pop(r4);
|
| -#if !defined(__ARM_EABI__) && defined(__arm__)
|
| +#if !defined(__ARM_EABI__)
|
| // Double returned in fp coprocessor register 0 and 1, encoded as register
|
| // cr8. Offsets must be divisible by 4 for coprocessor so we need to
|
| // substract the tag from r4.
|
| __ sub(r5, r4, Operand(kHeapObjectTag));
|
| __ stc(p1, cr8, MemOperand(r5, HeapNumber::kValueOffset));
|
| #else
|
| - // Double returned in fp coprocessor register 0 and 1.
|
| + // Double returned in registers 0 and 1.
|
| __ str(r0, FieldMemOperand(r4, HeapNumber::kValueOffset));
|
| __ str(r1, FieldMemOperand(r4, HeapNumber::kValueOffset + kPointerSize));
|
| #endif
|
| @@ -4482,7 +4475,6 @@
|
| ¬_smi,
|
| Builtins::ADD,
|
| Token::ADD,
|
| - assembler::arm::simulator_fp_add,
|
| mode_);
|
| break;
|
| }
|
| @@ -4502,7 +4494,6 @@
|
| ¬_smi,
|
| Builtins::SUB,
|
| Token::SUB,
|
| - assembler::arm::simulator_fp_sub,
|
| mode_);
|
| break;
|
| }
|
| @@ -4531,7 +4522,6 @@
|
| ¬_smi,
|
| Builtins::MUL,
|
| Token::MUL,
|
| - assembler::arm::simulator_fp_mul,
|
| mode_);
|
| break;
|
| }
|
| @@ -4792,7 +4782,8 @@
|
|
|
| if (do_gc) {
|
| // Passing r0.
|
| - __ Call(FUNCTION_ADDR(Runtime::PerformGC), RelocInfo::RUNTIME_ENTRY);
|
| + ExternalReference gc_reference = ExternalReference::perform_gc_function();
|
| + __ Call(gc_reference.address(), RelocInfo::RUNTIME_ENTRY);
|
| }
|
|
|
| ExternalReference scope_depth =
|
| @@ -4818,12 +4809,7 @@
|
| // sequence that it is not moving ever.
|
| __ add(lr, pc, Operand(4)); // compute return address: (pc + 8) + 4
|
| __ push(lr);
|
| -#if !defined(__arm__)
|
| - // Notify the simulator of the transition to C code.
|
| - __ swi(assembler::arm::call_rt_r5);
|
| -#else /* !defined(__arm__) */
|
| __ Jump(r5);
|
| -#endif /* !defined(__arm__) */
|
|
|
| if (always_allocate) {
|
| // It's okay to clobber r2 and r3 here. Don't mess with r0 and r1
|
|
|