| Index: src/arm/macro-assembler-arm.h
|
| diff --git a/src/arm/macro-assembler-arm.h b/src/arm/macro-assembler-arm.h
|
| index e2b1db807f87bb27556a02eda19a87d2dc37012c..87a0fdccb96804f15125f3bddfc03b9795b7c5a1 100644
|
| --- a/src/arm/macro-assembler-arm.h
|
| +++ b/src/arm/macro-assembler-arm.h
|
| @@ -284,13 +284,13 @@ 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);
|
| + // Expect the number of values, pushed prior to the exit frame, to
|
| + // remove in a register (or no_reg, if there is nothing to remove).
|
| + void LeaveExitFrame(bool save_doubles, Register argument_count);
|
|
|
| // Get the actual activation frame alignment for target environment.
|
| static int ActivationFrameAlignment();
|
| @@ -364,6 +364,13 @@ class MacroAssembler: public Assembler {
|
| // Must preserve the result register.
|
| void PopTryHandler();
|
|
|
| + // Passes thrown value (in r0) to the handler of top of the try handler chain.
|
| + void Throw(Register value);
|
| +
|
| + // Propagates an uncatchable exception to the top of the current JS stack's
|
| + // handler chain.
|
| + void ThrowUncatchable(UncatchableExceptionType type, Register value);
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Inline caching support
|
|
|
| @@ -611,6 +618,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);
|
| @@ -629,6 +642,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,
|
| @@ -652,9 +671,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,
|
|
|