| 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 == \
|
|
|