[es6] Don't disable ES6 tail call elimination when Debugger is on.
BUG=v8:4698 LOG=N Review URL: https://codereview.chromium.org/1819073003 Cr-Commit-Position: refs/heads/master@{#34986}
This commit is contained in:
parent
9d3e055212
commit
a7ac81f41a
@ -1933,15 +1933,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ mov(scratch1, Operand(debug_is_active));
|
||||
__ ldrb(scratch1, MemOperand(scratch1));
|
||||
__ cmp(scratch1, Operand(0));
|
||||
__ b(ne, &done);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -1985,7 +1976,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1977,15 +1977,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ Mov(scratch1, Operand(debug_is_active));
|
||||
__ Ldrb(scratch1, MemOperand(scratch1));
|
||||
__ Cmp(scratch1, Operand(0));
|
||||
__ B(ne, &done);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -2026,7 +2017,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1886,14 +1886,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ movzx_b(scratch1, Operand::StaticVariable(debug_is_active));
|
||||
__ cmp(scratch1, Immediate(0));
|
||||
__ j(not_equal, &done, Label::kNear);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -1934,7 +1926,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3, ReturnAddressState::kOnStack, 0);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1960,14 +1960,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ li(at, Operand(debug_is_active));
|
||||
__ lb(scratch1, MemOperand(at));
|
||||
__ Branch(&done, ne, scratch1, Operand(zero_reg));
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -2011,7 +2003,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1956,14 +1956,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ li(at, Operand(debug_is_active));
|
||||
__ lb(scratch1, MemOperand(at));
|
||||
__ Branch(&done, ne, scratch1, Operand(zero_reg));
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -2006,7 +1998,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1966,15 +1966,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ mov(scratch1, Operand(debug_is_active));
|
||||
__ lbz(scratch1, MemOperand(scratch1));
|
||||
__ cmpi(scratch1, Operand::Zero());
|
||||
__ bne(&done);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -2022,7 +2013,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1927,15 +1927,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ mov(scratch1, Operand(debug_is_active));
|
||||
__ LoadlB(scratch1, MemOperand(scratch1));
|
||||
__ CmpP(scratch1, Operand::Zero());
|
||||
__ bne(&done);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -1982,7 +1973,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -2052,14 +2052,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ Move(kScratchRegister, debug_is_active);
|
||||
__ cmpb(Operand(kScratchRegister, 0), Immediate(0));
|
||||
__ j(not_equal, &done);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -2099,7 +2091,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3, ReturnAddressState::kOnStack);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -1912,14 +1912,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
DCHECK(!AreAliased(args_reg, scratch1, scratch2, scratch3));
|
||||
Comment cmnt(masm, "[ PrepareForTailCall");
|
||||
|
||||
// Prepare for tail call only if the debugger is not active.
|
||||
Label done;
|
||||
ExternalReference debug_is_active =
|
||||
ExternalReference::debug_is_active_address(masm->isolate());
|
||||
__ movzx_b(scratch1, Operand::StaticVariable(debug_is_active));
|
||||
__ cmp(scratch1, Immediate(0));
|
||||
__ j(not_equal, &done, Label::kNear);
|
||||
|
||||
// Drop possible interpreter handler/stub frame.
|
||||
{
|
||||
Label no_interpreter_frame;
|
||||
@ -1960,7 +1952,6 @@ void PrepareForTailCall(MacroAssembler* masm, Register args_reg,
|
||||
ParameterCount callee_args_count(args_reg);
|
||||
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
|
||||
scratch3, ReturnAddressState::kOnStack, 0);
|
||||
__ bind(&done);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user