Commit 452d8a3a authored by Sigurd Schneider's avatar Sigurd Schneider Committed by Commit Bot

[ia32] Change descriptor of frame dropper trampoline

This changes the interface descriptor for the frame dropper trampoline
to not use the kRootRegister (ebx) anymore.

Change-Id: I15df6af57f70d8aeea6c97298b437ad96af19cd4
Bug: v8:6666
Reviewed-on: https://chromium-review.googlesource.com/1193242
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55484}
parent c3baf49f
......@@ -28,19 +28,19 @@ void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
// Frame is being dropped:
// - Drop to the target frame specified by ebx.
// - Drop to the target frame specified by eax.
// - Look up current function on the frame.
// - Leave the frame.
// - Restart the frame by calling the function.
__ mov(ebp, ebx);
__ mov(ebp, eax);
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
__ leave();
__ mov(ebx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
__ mov(eax, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
__ movzx_w(
ebx, FieldOperand(ebx, SharedFunctionInfo::kFormalParameterCountOffset));
eax, FieldOperand(eax, SharedFunctionInfo::kFormalParameterCountOffset));
ParameterCount dummy(ebx);
ParameterCount dummy(eax);
__ InvokeFunction(edi, dummy, dummy, JUMP_FUNCTION);
}
......
......@@ -266,7 +266,7 @@ void ResumeGeneratorDescriptor::InitializePlatformSpecific(
void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
Register registers[] = {
ebx, // loaded new FP
eax, // loaded new FP
};
data->InitializePlatformSpecific(arraysize(registers), registers);
}
......
......@@ -410,8 +410,8 @@ 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, StaticVariable(restart_fp));
test(ebx, ebx);
mov(eax, StaticVariable(restart_fp));
test(eax, eax);
j(not_zero, BUILTIN_CODE(isolate(), FrameDropperTrampoline),
RelocInfo::CODE_TARGET);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment