[Interpreter] Ensure we save the BytecodeArray register properly in InterpreterEntryTrampoline builtin.
Ensure that we save the BytecodeArray register in the InterpreterEntryTrampoline before calling out to the kStackGuard runtime function. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1426863005 Cr-Commit-Position: refs/heads/master@{#31650}
This commit is contained in:
parent
ce84bb2d3d
commit
76d730b9b2
@ -917,7 +917,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
__ LoadRoot(ip, Heap::kStackLimitRootIndex);
|
||||
__ cmp(sp, Operand(ip));
|
||||
__ b(hs, &ok);
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -942,7 +942,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Label ok;
|
||||
__ CompareRoot(jssp, Heap::kStackLimitRootIndex);
|
||||
__ B(hs, &ok);
|
||||
__ Push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ Pop(kInterpreterBytecodeArrayRegister);
|
||||
__ Bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -654,7 +654,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
ExternalReference::address_of_stack_limit(masm->isolate());
|
||||
__ cmp(esp, Operand::StaticVariable(stack_limit));
|
||||
__ j(above_equal, &ok);
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -917,7 +917,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Label ok;
|
||||
__ LoadRoot(at, Heap::kStackLimitRootIndex);
|
||||
__ Branch(&ok, hs, sp, Operand(at));
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -913,7 +913,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Label ok;
|
||||
__ LoadRoot(at, Heap::kStackLimitRootIndex);
|
||||
__ Branch(&ok, hs, sp, Operand(at));
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -915,7 +915,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
__ LoadRoot(r0, Heap::kStackLimitRootIndex);
|
||||
__ cmp(sp, r0);
|
||||
__ bge(&ok);
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -722,7 +722,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
Label ok;
|
||||
__ CompareRoot(rsp, Heap::kStackLimitRootIndex);
|
||||
__ j(above_equal, &ok, Label::kNear);
|
||||
__ Push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ Pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
@ -654,7 +654,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
||||
ExternalReference::address_of_stack_limit(masm->isolate());
|
||||
__ cmp(esp, Operand::StaticVariable(stack_limit));
|
||||
__ j(above_equal, &ok);
|
||||
__ push(kInterpreterBytecodeArrayRegister);
|
||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
||||
__ pop(kInterpreterBytecodeArrayRegister);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user