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

Reply via email to