Index: src/arm/macro-assembler-arm.h |
diff --git a/src/arm/macro-assembler-arm.h b/src/arm/macro-assembler-arm.h |
index 80986b1360fed1d8cd7f951eaa3b1d82e0ef46be..c9ffde89812da915f62bcc356e6f0a72e074beb6 100644 |
--- a/src/arm/macro-assembler-arm.h |
+++ b/src/arm/macro-assembler-arm.h |
@@ -287,10 +287,8 @@ class MacroAssembler: public Assembler { |
void LeaveConstructFrame() { LeaveFrame(StackFrame::CONSTRUCT); } |
// Enter exit frame. |
- // Expects the number of arguments in register r0 and |
- // the builtin function to call in register r1. Exits with argc in |
- // r4, argv in r6, and and the builtin function to call in r5. |
- void EnterExitFrame(bool save_doubles); |
+ // stack_space - extra stack space, used for alignment before call to C. |
+ void EnterExitFrame(bool save_doubles, int stack_space = 0); |
// Leave the current exit frame. Expects the return value in r0. |
void LeaveExitFrame(bool save_doubles); |
@@ -616,6 +614,12 @@ class MacroAssembler: public Assembler { |
// Call a code stub. |
void TailCallStub(CodeStub* stub, Condition cond = al); |
+ // Tail call a code stub (jump) and return the code object called. Try to |
+ // generate the code if necessary. Do not perform a GC but instead return |
+ // a retry after GC failure. |
+ MUST_USE_RESULT MaybeObject* TryTailCallStub(CodeStub* stub, |
+ Condition cond = al); |
+ |
// Call a runtime routine. |
void CallRuntime(Runtime::Function* f, int num_arguments); |
void CallRuntimeSaveDoubles(Runtime::FunctionId id); |
@@ -634,6 +638,12 @@ class MacroAssembler: public Assembler { |
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, |
@@ -657,9 +667,18 @@ class MacroAssembler: public Assembler { |
void CallCFunction(ExternalReference function, int num_arguments); |
void CallCFunction(Register function, int num_arguments); |
+ // Calls an API function. Allocates HandleScope, extracts returned value |
+ // from handle and propagates exceptions. Restores context. |
+ // stack_space - space to be unwound on exit (includes the call js |
+ // arguments space and the additional space allocated for the fast call). |
+ MaybeObject* TryCallApiFunctionAndReturn(ApiFunction* function, |
+ int stack_space); |
+ |
// Jump to a runtime routine. |
void JumpToExternalReference(const ExternalReference& builtin); |
+ MaybeObject* TryJumpToExternalReference(const ExternalReference& ext); |
+ |
// Invoke specified builtin JavaScript function. Adds an entry to |
// the unresolved list if the name does not resolve. |
void InvokeBuiltin(Builtins::JavaScript id, |