Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 5816) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -460,11 +460,23 @@ |
int num_arguments, |
int result_size); |
+ // Tail call of a runtime routine (jump). Try to generate the code if |
+ // necessary. Do not perform a GC but instead return a retry after GC failure. |
+ MUST_USE_RESULT MaybeObject* TryTailCallExternalReference( |
+ const ExternalReference& ext, int num_arguments, int result_size); |
+ |
// Convenience function: tail call a runtime routine (jump). |
void TailCallRuntime(Runtime::FunctionId fid, |
int num_arguments, |
int result_size); |
+ // Convenience function: tail call a runtime routine (jump). Try to generate |
+ // the code if necessary. Do not perform a GC but instead return a retry after |
+ // GC failure. |
+ MUST_USE_RESULT MaybeObject* TryTailCallRuntime(Runtime::FunctionId fid, |
+ 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. |
@@ -485,18 +497,21 @@ |
// Prepares stack to put arguments (aligns and so on). Reserves |
// space for return value if needed (assumes the return value is a handle). |
// Uses callee-saved esi to restore stack state after call. Arguments must be |
- // stored in ApiParameterOperand(0), ApiParameterOperand(1) etc. |
+ // stored in ApiParameterOperand(0), ApiParameterOperand(1) etc. Saves |
+ // context (esi). |
void PrepareCallApiFunction(int stack_space, int argc); |
// Calls an API function. Allocates HandleScope, extracts |
// returned value from handle and propagates exceptions. |
- // Clobbers ebx, esi, edi and caller-save registers. |
- void CallApiFunctionAndReturn(ApiFunction* function, int argc); |
+ // Clobbers ebx, edi and caller-save registers. Restores context. |
+ MaybeObject* TryCallApiFunctionAndReturn(ApiFunction* function, int argc); |
// Jump to a runtime routine. |
void JumpToExternalReference(const ExternalReference& ext); |
+ MaybeObject* TryJumpToExternalReference(const ExternalReference& ext); |
+ |
// --------------------------------------------------------------------------- |
// Utilities |