Reviewers: Rico,
Description:
Fix non-simulated ARM calling of RegExp code.
Please review this at http://codereview.chromium.org/6526043/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge/build-ia32
Affected files:
M src/arm/simulator-arm.h
Index: src/arm/simulator-arm.h
diff --git a/src/arm/simulator-arm.h b/src/arm/simulator-arm.h
index
09fb19b20bf708f7e7668c52ced9c10440d658c8..d12962f8076fefdd02f72ef5943cba6ea5b10122
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))
+typedef int (*arm_regexp_matcher)(String*, int, const byte*, const byte*,
+ void*, int*, Address, int);
+
+
// Call the generated regexp code directly. The entry function pointer
should
-// expect seven int/pointer sized arguments and return an int.
+// expect seven int/pointer sized arguments and return an int ...
+// except that on ARM, we take an extra dummy parameter to make rooom for
+// the return address added by the ExitFrame.
#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))
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev