Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index b35ef3b07a12f80783258adca72b9e90fcf0a7cd..d620fa9c6c60da3c5887b5a4611d7bd59455941c 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -4081,7 +4081,6 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value) { |
} |
} |
- |
void MacroAssembler::DebugBreak() { |
Set(rax, 0); // No arguments. |
LoadAddress(rbx, |
@@ -4091,6 +4090,15 @@ void MacroAssembler::DebugBreak() { |
Call(ces.GetCode(), RelocInfo::DEBUGGER_STATEMENT); |
} |
+void MacroAssembler::MaybeDropFrames() { |
+ // Check whether we need to drop frames to restart a function on the stack. |
+ ExternalReference new_fp = ExternalReference::debug_new_fp_address(isolate()); |
+ Load(rbx, new_fp); |
+ testp(rbx, rbx); |
+ j(not_zero, isolate()->builtins()->FrameDropperTrampoline(), |
+ RelocInfo::CODE_TARGET); |
+} |
+ |
void MacroAssembler::PrepareForTailCall(const ParameterCount& callee_args_count, |
Register caller_args_count_reg, |
Register scratch0, Register scratch1, |
@@ -4290,6 +4298,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected, |
DCHECK(actual.reg().is(rax)); |
DCHECK(expected.reg().is(rbx)); |
} else { |
+ definitely_matches = true; |
Move(rax, actual.reg()); |
} |
} |