[ia32,root] {Interpreter,}OnStackReplacement
OnStackReplacement itself was dead code. Bug: v8:6666 Change-Id: I72df335f23fb749e652899a170bb3dc800992ba7 Reviewed-on: https://chromium-review.googlesource.com/1232635 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#56039}
This commit is contained in:
parent
d2ca9b0b7d
commit
15b7c38969
@ -1302,15 +1302,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ ldr(r0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ ldr(r0, MemOperand(r0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ ldr(r0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ ldr(r0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ ldr(r0, MemOperand(r0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1327,11 +1322,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1354,14 +1347,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
}
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1452,15 +1452,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ Ldr(x0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ Ldr(x0, MemOperand(x0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ Ldr(x0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ Ldr(x0, MemOperand(x0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1476,11 +1471,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ Bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1501,14 +1494,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -155,8 +155,6 @@ namespace internal {
|
||||
ASM(ContinueToJavaScriptBuiltin) \
|
||||
ASM(ContinueToJavaScriptBuiltinWithResult) \
|
||||
\
|
||||
ASM(OnStackReplacement) \
|
||||
\
|
||||
/* API callback handling */ \
|
||||
API(HandleApiCall) \
|
||||
API(HandleApiCallAsFunction) \
|
||||
|
@ -2363,15 +2363,12 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
|
||||
}
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Assembler::SupportsRootRegisterScope supports_root_register(masm);
|
||||
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ mov(eax, Operand(ebp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ mov(eax, Operand(eax, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ mov(eax, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ mov(eax, Operand(ebp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ mov(eax, Operand(eax, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -2388,23 +2385,21 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ leave();
|
||||
}
|
||||
__ leave();
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
__ mov(ebx, Operand(eax, Code::kDeoptimizationDataOffset - kHeapObjectTag));
|
||||
__ mov(ecx, Operand(eax, Code::kDeoptimizationDataOffset - kHeapObjectTag));
|
||||
|
||||
// Load the OSR entrypoint offset from the deoptimization data.
|
||||
__ mov(ebx, Operand(ebx, FixedArray::OffsetOfElementAt(
|
||||
__ mov(ecx, Operand(ecx, FixedArray::OffsetOfElementAt(
|
||||
DeoptimizationData::kOsrPcOffsetIndex) -
|
||||
kHeapObjectTag));
|
||||
__ SmiUntag(ebx);
|
||||
__ SmiUntag(ecx);
|
||||
|
||||
// Compute the target address = code_obj + header_size + osr_offset
|
||||
__ lea(eax, Operand(eax, ebx, times_1, Code::kHeaderSize - kHeapObjectTag));
|
||||
__ lea(eax, Operand(eax, ecx, times_1, Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
// Overwrite the return address on the stack.
|
||||
__ mov(Operand(esp, 0), eax);
|
||||
@ -2413,14 +2408,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ ret(0);
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
|
||||
// The function index was put in edi by the jump table trampoline.
|
||||
// Convert to Smi for the runtime call.
|
||||
|
@ -1290,15 +1290,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Addu(sp, sp, Operand(1 * kPointerSize)); // Remove accumulator.
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ lw(a0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ lw(a0, MemOperand(a0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ lw(a0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ lw(a0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ lw(a0, MemOperand(a0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1310,11 +1305,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
// If the code object is null, just return to the caller.
|
||||
__ Ret(eq, v0, Operand(Smi::kZero));
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1336,14 +1329,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1287,15 +1287,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Daddu(sp, sp, Operand(1 * kPointerSize)); // Remove state.
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ Ld(a0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ Ld(a0, MemOperand(a0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ Ld(a0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ Ld(a0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ Ld(a0, MemOperand(a0, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1307,11 +1302,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
// If the code object is null, just return to the caller.
|
||||
__ Ret(eq, v0, Operand(Smi::kZero));
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1332,14 +1325,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1327,15 +1327,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ LoadP(r3, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ LoadP(r3, MemOperand(r3, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ LoadP(r3, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ LoadP(r3, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ LoadP(r3, MemOperand(r3, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1352,11 +1347,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1386,14 +1379,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
}
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1329,15 +1329,10 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ LoadP(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ LoadP(r2, MemOperand(r2, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ LoadP(r2, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ LoadP(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ LoadP(r2, MemOperand(r2, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -1354,11 +1349,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
}
|
||||
__ LeaveFrame(StackFrame::STUB);
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
// <deopt_data> = <code>[#deoptimization_data_offset]
|
||||
@ -1380,14 +1373,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
// static
|
||||
void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -2277,15 +2277,10 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
bool has_handler_frame) {
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
// Lookup the function in the JavaScript frame.
|
||||
if (has_handler_frame) {
|
||||
__ movp(rax, Operand(rbp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ movp(rax, Operand(rax, JavaScriptFrameConstants::kFunctionOffset));
|
||||
} else {
|
||||
__ movp(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
__ movp(rax, Operand(rbp, StandardFrameConstants::kCallerFPOffset));
|
||||
__ movp(rax, Operand(rax, JavaScriptFrameConstants::kFunctionOffset));
|
||||
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
@ -2302,11 +2297,9 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
|
||||
__ bind(&skip);
|
||||
|
||||
// Drop any potential handler frame that is be sitting on top of the actual
|
||||
// Drop the handler frame that is be sitting on top of the actual
|
||||
// JavaScript frame. This is the case then OSR is triggered from bytecode.
|
||||
if (has_handler_frame) {
|
||||
__ leave();
|
||||
}
|
||||
__ leave();
|
||||
|
||||
// Load deoptimization data from the code object.
|
||||
__ movp(rbx, Operand(rax, Code::kDeoptimizationDataOffset - kHeapObjectTag));
|
||||
@ -2326,14 +2319,6 @@ static void Generate_OnStackReplacementHelper(MacroAssembler* masm,
|
||||
__ ret(0);
|
||||
}
|
||||
|
||||
void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, false);
|
||||
}
|
||||
|
||||
void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
|
||||
Generate_OnStackReplacementHelper(masm, true);
|
||||
}
|
||||
|
||||
void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
|
||||
// The function index was pushed to the stack by the caller as int32.
|
||||
__ Pop(r11);
|
||||
|
Loading…
Reference in New Issue
Block a user