Index: src/x64/macro-assembler-x64.h |
=================================================================== |
--- src/x64/macro-assembler-x64.h (revision 3730) |
+++ src/x64/macro-assembler-x64.h (working copy) |
@@ -162,7 +162,8 @@ |
// Conversions between tagged smi values and non-tagged integer values. |
// Tag an integer value. The result must be known to be a valid smi value. |
- // Only uses the low 32 bits of the src register. |
+ // Only uses the low 32 bits of the src register. Sets the N and Z flags |
+ // based on the value of the resulting integer. |
void Integer32ToSmi(Register dst, Register src); |
// Tag an integer value if possible, or jump the integer value cannot be |
@@ -644,7 +645,27 @@ |
// Jump to a runtime routine. |
void JumpToRuntime(const ExternalReference& ext, 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. |
+ // The number of slots reserved for arguments depends on platform. On Windows |
+ // stack slots are reserved for the arguments passed in registers. On other |
+ // platforms stack slots are only reserved for the arguments actually passed |
+ // on the stack. |
+ void PrepareCallCFunction(int num_arguments); |
+ // 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); |
+ |
+ // Calculate the number of stack slots to reserve for arguments when calling a |
+ // C function. |
+ int ArgumentStackSlotsForCFunctionCall(int num_arguments); |
+ |
// --------------------------------------------------------------------------- |
// Utilities |