Index: src/arm/simulator-arm.h |
diff --git a/src/arm/simulator-arm.h b/src/arm/simulator-arm.h |
index 09fb19b20bf708f7e7668c52ced9c10440d658c8..bdf1f8a10663cc29444c15e0dac453a048f7ab17 100644 |
--- a/src/arm/simulator-arm.h |
+++ b/src/arm/simulator-arm.h |
@@ -48,10 +48,16 @@ namespace internal { |
#define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \ |
(entry(p0, p1, p2, p3, p4)) |
-// Call the generated regexp code directly. The entry function pointer should |
-// expect seven int/pointer sized arguments and return an int. |
+typedef int (*arm_regexp_matcher)(String*, int, const byte*, const byte*, |
+ void*, int*, Address, int); |
+ |
+ |
+// 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 argument is a dummy that reserves the space used for |
+// the return address added by the ExitFrame in native calls. |
#define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \ |
- (entry(p0, p1, p2, p3, NULL, p4, p5, p6)) |
+ (FUNCTION_CAST<arm_regexp_matcher>(entry)(p0, p1, p2, p3, NULL, p4, p5, p6)) |
#define TRY_CATCH_FROM_ADDRESS(try_catch_address) \ |
(reinterpret_cast<TryCatch*>(try_catch_address)) |
@@ -362,8 +368,7 @@ class Simulator { |
FUNCTION_ADDR(entry), 5, p0, p1, p2, p3, p4)) |
#define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \ |
- Simulator::current()->Call( \ |
- FUNCTION_ADDR(entry), 8, p0, p1, p2, p3, NULL, p4, p5, p6) |
+ Simulator::current()->Call(entry, 8, p0, p1, p2, p3, NULL, p4, p5, p6) |
#define TRY_CATCH_FROM_ADDRESS(try_catch_address) \ |
try_catch_address == \ |