Index: src/arm/macro-assembler-arm.h |
=================================================================== |
--- src/arm/macro-assembler-arm.h (revision 4372) |
+++ src/arm/macro-assembler-arm.h (working copy) |
@@ -373,6 +373,24 @@ |
int num_arguments, |
int result_size); |
+ // Before calling a C-function from generated code, align arguments on stack. |
+ // After aligning the frame, non-register arguments must be stored in |
+ // sp[0], sp[4], etc., not pushed. The argument count assumes all arguments |
+ // are word sized. |
+ // Some compilers/platforms require the stack to be aligned when calling |
+ // C++ code. |
+ // Needs a scratch register to do some arithmetic. This register will be |
+ // trashed. |
+ void PrepareCallCFunction(int num_arguments, Register scratch); |
+ |
+ // Calls a C function and cleans up the space for arguments allocated |
+ // by PrepareCallCFunction. The called function is not allowed to trigger a |
+ // garbage collection, since that might move the code and invalidate the |
+ // return address (unless this is somehow accounted for by the called |
+ // function). |
+ void CallCFunction(ExternalReference function, int num_arguments); |
+ void CallCFunction(Register function, int num_arguments); |
+ |
// Jump to a runtime routine. |
void JumpToExternalReference(const ExternalReference& builtin); |