Change the StackGuard runtime function to take no arguments.
For some reason the StackGuard runtime function took a dummy argument that it always ignored. Change it to take no arguments. Review URL: http://codereview.chromium.org/3838003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
00e23b719d
commit
f2789a903b
@ -2297,13 +2297,7 @@ Runtime::FunctionId TranscendentalCacheStub::RuntimeFunction() {
|
|||||||
|
|
||||||
|
|
||||||
void StackCheckStub::Generate(MacroAssembler* masm) {
|
void StackCheckStub::Generate(MacroAssembler* masm) {
|
||||||
// Do tail-call to runtime routine. Runtime routines expect at least one
|
__ TailCallRuntime(Runtime::kStackGuard, 0, 1);
|
||||||
// argument, so give it a Smi.
|
|
||||||
__ mov(r0, Operand(Smi::FromInt(0)));
|
|
||||||
__ push(r0);
|
|
||||||
__ TailCallRuntime(Runtime::kStackGuard, 1, 1);
|
|
||||||
|
|
||||||
__ Ret();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2964,16 +2964,7 @@ void CompareStub::BranchIfNonSymbol(MacroAssembler* masm,
|
|||||||
|
|
||||||
|
|
||||||
void StackCheckStub::Generate(MacroAssembler* masm) {
|
void StackCheckStub::Generate(MacroAssembler* masm) {
|
||||||
// Because builtins always remove the receiver from the stack, we
|
__ TailCallRuntime(Runtime::kStackGuard, 0, 1);
|
||||||
// have to fake one to avoid underflowing the stack. The receiver
|
|
||||||
// must be inserted below the return address on the stack so we
|
|
||||||
// temporarily store that in a register.
|
|
||||||
__ pop(eax);
|
|
||||||
__ push(Immediate(Smi::FromInt(0)));
|
|
||||||
__ push(eax);
|
|
||||||
|
|
||||||
// Do tail-call to runtime routine.
|
|
||||||
__ TailCallRuntime(Runtime::kStackGuard, 1, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6703,7 +6703,7 @@ static Object* Runtime_StackOverflow(Arguments args) {
|
|||||||
|
|
||||||
|
|
||||||
static Object* Runtime_StackGuard(Arguments args) {
|
static Object* Runtime_StackGuard(Arguments args) {
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 0);
|
||||||
|
|
||||||
// First check if this is a real stack overflow.
|
// First check if this is a real stack overflow.
|
||||||
if (StackGuard::IsStackOverflow()) {
|
if (StackGuard::IsStackOverflow()) {
|
||||||
|
@ -267,7 +267,7 @@ namespace internal {
|
|||||||
F(Throw, 1, 1) \
|
F(Throw, 1, 1) \
|
||||||
F(ReThrow, 1, 1) \
|
F(ReThrow, 1, 1) \
|
||||||
F(ThrowReferenceError, 1, 1) \
|
F(ThrowReferenceError, 1, 1) \
|
||||||
F(StackGuard, 1, 1) \
|
F(StackGuard, 0, 1) \
|
||||||
F(PromoteScheduledException, 0, 1) \
|
F(PromoteScheduledException, 0, 1) \
|
||||||
\
|
\
|
||||||
/* Contexts */ \
|
/* Contexts */ \
|
||||||
|
@ -2394,16 +2394,7 @@ void CompareStub::BranchIfNonSymbol(MacroAssembler* masm,
|
|||||||
|
|
||||||
|
|
||||||
void StackCheckStub::Generate(MacroAssembler* masm) {
|
void StackCheckStub::Generate(MacroAssembler* masm) {
|
||||||
// Because builtins always remove the receiver from the stack, we
|
__ TailCallRuntime(Runtime::kStackGuard, 0, 1);
|
||||||
// have to fake one to avoid underflowing the stack. The receiver
|
|
||||||
// must be inserted below the return address on the stack so we
|
|
||||||
// temporarily store that in a register.
|
|
||||||
__ pop(rax);
|
|
||||||
__ Push(Smi::FromInt(0));
|
|
||||||
__ push(rax);
|
|
||||||
|
|
||||||
// Do tail-call to runtime routine.
|
|
||||||
__ TailCallRuntime(Runtime::kStackGuard, 1, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user