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 |