Index: src/arm/simulator-arm.cc |
diff --git a/src/arm/simulator-arm.cc b/src/arm/simulator-arm.cc |
index c1e6fc1f4db743a152e0952b8ae16ea55a98fa41..cfc5e355af4a564eeb9d86ebfd94e044a501fb55 100644 |
--- a/src/arm/simulator-arm.cc |
+++ b/src/arm/simulator-arm.cc |
@@ -1706,12 +1706,11 @@ void Simulator::HandleVList(Instruction* instr) { |
// 64-bit value. With the code below we assume that all runtime calls return |
// 64 bits of result. If they don't, the r1 result register contains a bogus |
// value, which is fine because it is caller-saved. |
-typedef int64_t (*SimulatorRuntimeCall)(int32_t arg0, |
- int32_t arg1, |
- int32_t arg2, |
- int32_t arg3, |
- int32_t arg4, |
- int32_t arg5); |
+typedef int64_t (*SimulatorRuntimeCall)(int32_t arg0, int32_t arg1, |
+ int32_t arg2, int32_t arg3, |
+ int32_t arg4, int32_t arg5, |
+ int32_t arg6, int32_t arg7, |
+ int32_t arg8); |
typedef ObjectTriple (*SimulatorRuntimeTripleCall)(int32_t arg0, int32_t arg1, |
int32_t arg2, int32_t arg3, |
@@ -1752,6 +1751,11 @@ void Simulator::SoftwareInterrupt(Instruction* instr) { |
int32_t* stack_pointer = reinterpret_cast<int32_t*>(get_register(sp)); |
int32_t arg4 = stack_pointer[0]; |
int32_t arg5 = stack_pointer[1]; |
+ int32_t arg6 = stack_pointer[2]; |
+ int32_t arg7 = stack_pointer[3]; |
+ int32_t arg8 = stack_pointer[4]; |
+ STATIC_ASSERT(kMaxCParameters == 9); |
+ |
bool fp_call = |
(redirection->type() == ExternalReference::BUILTIN_FP_FP_CALL) || |
(redirection->type() == ExternalReference::BUILTIN_COMPARE_CALL) || |
@@ -1939,16 +1943,17 @@ void Simulator::SoftwareInterrupt(Instruction* instr) { |
if (::v8::internal::FLAG_trace_sim || !stack_aligned) { |
PrintF( |
"Call to host function at %p " |
- "args %08x, %08x, %08x, %08x, %08x, %08x", |
+ "args %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x, %08x", |
static_cast<void*>(FUNCTION_ADDR(target)), arg0, arg1, arg2, arg3, |
- arg4, arg5); |
+ arg4, arg5, arg6, arg7, arg8); |
if (!stack_aligned) { |
PrintF(" with unaligned stack %08x\n", get_register(sp)); |
} |
PrintF("\n"); |
} |
CHECK(stack_aligned); |
- int64_t result = target(arg0, arg1, arg2, arg3, arg4, arg5); |
+ int64_t result = |
+ target(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); |
int32_t lo_res = static_cast<int32_t>(result); |
int32_t hi_res = static_cast<int32_t>(result >> 32); |
if (::v8::internal::FLAG_trace_sim) { |