Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 084901783e2ddba1c002483ac23115445bc62a0d..7404a62d5c0805214b84129a521de9c9b97d065f 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -681,6 +681,16 @@ 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 restart_fp = |
+ ExternalReference::debug_restart_fp_address(isolate()); |
+ mov(ebx, Operand::StaticVariable(restart_fp)); |
+ test(ebx, ebx); |
+ j(not_zero, isolate()->builtins()->FrameDropperTrampoline(), |
+ RelocInfo::CODE_TARGET); |
+} |
+ |
void MacroAssembler::Cvtsi2sd(XMMRegister dst, const Operand& src) { |
xorps(dst, dst); |
cvtsi2sd(dst, src); |
@@ -1916,6 +1926,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected, |
DCHECK(actual.reg().is(eax)); |
DCHECK(expected.reg().is(ebx)); |
} else { |
+ definitely_matches = true; |
Move(eax, actual.reg()); |
} |
} |