Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 3946) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -377,6 +377,23 @@ |
int num_arguments, |
int result_size); |
+ // Before calling a C-function from generated code, align arguments on stack. |
+ // After aligning the frame, arguments must be stored in esp[0], esp[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); |
+ |
void PushHandleScope(Register scratch); |
// Pops a handle scope using the specified scratch register and |