Index: src/mips64/simulator-mips64.h |
diff --git a/src/mips64/simulator-mips64.h b/src/mips64/simulator-mips64.h |
index c0f526eb3b163dbbf7e5cd9f712d68a39aeef626..6c41ae111a3ede3659d6f362a280df1a3c3a5a44 100644 |
--- a/src/mips64/simulator-mips64.h |
+++ b/src/mips64/simulator-mips64.h |
@@ -29,6 +29,8 @@ |
// Call the generated regexp code directly. The code at the entry address |
// should act as a function matching the type arm_regexp_matcher. |
+// The fifth (or ninth) argument is a dummy that reserves the space used for |
+// the return address added by the ExitFrame in native calls. |
typedef int (*mips_regexp_matcher)(String* input, |
int64_t start_offset, |
const byte* input_start, |
@@ -37,12 +39,14 @@ |
int64_t output_size, |
Address stack_base, |
int64_t direct_call, |
+ void* return_address, |
Isolate* isolate); |
#define CALL_GENERATED_REGEXP_CODE(isolate, entry, p0, p1, p2, p3, p4, p5, p6, \ |
p7, p8) \ |
(FUNCTION_CAST<mips_regexp_matcher>(entry)(p0, p1, p2, p3, p4, p5, p6, p7, \ |
- p8)) |
+ NULL, p8)) |
+ |
// The stack limit beyond which we will throw stack overflow errors in |
// generated code. Because generated code on mips uses the C stack, we |
@@ -556,10 +560,13 @@ |
reinterpret_cast<int64_t*>(p1), reinterpret_cast<int64_t*>(p2), \ |
reinterpret_cast<int64_t*>(p3), reinterpret_cast<int64_t*>(p4))) |
+ |
#define CALL_GENERATED_REGEXP_CODE(isolate, entry, p0, p1, p2, p3, p4, p5, p6, \ |
p7, p8) \ |
- static_cast<int>(Simulator::current(isolate)->Call(entry, 9, p0, p1, p2, p3, \ |
- p4, p5, p6, p7, p8)) |
+ static_cast<int>(Simulator::current(isolate)->Call( \ |
+ entry, 10, p0, p1, p2, p3, p4, reinterpret_cast<int64_t*>(p5), p6, p7, \ |
+ NULL, p8)) |
+ |
// The simulator has its own stack. Thus it has a different stack limit from |
// the C-based native code. The JS-based limit normally points near the end of |