| Index: src/ia32/macro-assembler-ia32.h
|
| diff --git a/src/ia32/macro-assembler-ia32.h b/src/ia32/macro-assembler-ia32.h
|
| index 4b72fd385587f9684e2156d45a129e172e061191..e585c605bb5270d6388edfa789a5d57ebacfd380 100644
|
| --- a/src/ia32/macro-assembler-ia32.h
|
| +++ b/src/ia32/macro-assembler-ia32.h
|
| @@ -44,6 +44,8 @@ enum PointersToHereCheck {
|
|
|
| enum RegisterValueType { REGISTER_VALUE_IS_SMI, REGISTER_VALUE_IS_INT32 };
|
|
|
| +enum class ReturnAddressState { kOnStack, kNotOnStack };
|
| +
|
| #ifdef DEBUG
|
| bool AreAliased(Register reg1, Register reg2, Register reg3 = no_reg,
|
| Register reg4 = no_reg, Register reg5 = no_reg,
|
| @@ -323,6 +325,16 @@ class MacroAssembler: public Assembler {
|
| // ---------------------------------------------------------------------------
|
| // JavaScript invokes
|
|
|
| + // Removes current frame and its arguments from the stack preserving
|
| + // the arguments and a return address pushed to the stack for the next call.
|
| + // |ra_state| defines whether return address is already pushed to stack or
|
| + // not. Both |callee_args_count| and |caller_args_count_reg| do not include
|
| + // receiver. |callee_args_count| is not modified, |caller_args_count_reg|
|
| + // is trashed.
|
| + void PrepareForTailCall(const ParameterCount& callee_args_count,
|
| + Register caller_args_count_reg, Register scratch0,
|
| + Register scratch1, ReturnAddressState ra_state);
|
| +
|
| // Invoke the JavaScript function code by either calling or jumping.
|
|
|
| void InvokeFunctionCode(Register function, Register new_target,
|
| @@ -777,12 +789,6 @@ class MacroAssembler: public Assembler {
|
| void Popcnt(Register dst, Register src) { Popcnt(dst, Operand(src)); }
|
| void Popcnt(Register dst, const Operand& src);
|
|
|
| - // Emit call to the code we are currently generating.
|
| - void CallSelf() {
|
| - Handle<Code> self(reinterpret_cast<Code**>(CodeObject().location()));
|
| - call(self, RelocInfo::CODE_TARGET);
|
| - }
|
| -
|
| // Move if the registers are not identical.
|
| void Move(Register target, Register source);
|
|
|
|
|