Weird. Tests ran fine on my box. Investigating. yours, anton.
On Thu, Jan 27, 2011 at 9:22 PM, <[email protected]> wrote: > Revision: 6519 > Author: [email protected] > Date: Thu Jan 27 10:21:07 2011 > Log: Revert "Unification: introduce > ExternalReference::pending_exception_address()." > > This reverts r6518. > > [email protected] > > Review URL: http://codereview.chromium.org/6359015 > http://code.google.com/p/v8/source/detail?r=6519 > > Modified: > /branches/bleeding_edge/src/arm/code-stubs-arm.cc > /branches/bleeding_edge/src/assembler.cc > /branches/bleeding_edge/src/assembler.h > /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc > /branches/bleeding_edge/src/mips/codegen-mips.cc > /branches/bleeding_edge/src/top.h > /branches/bleeding_edge/src/x64/code-stubs-x64.cc > > ======================================= > --- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Jan 27 10:10:45 > 2011 > +++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Jan 27 10:21:07 > 2011 > @@ -3132,7 +3132,7 @@ > // Set pending exception and r0 to out of memory exception. > Failure* out_of_memory = Failure::OutOfMemoryException(); > __ mov(r0, Operand(reinterpret_cast<int32_t>(out_of_memory))); > - __ mov(r2, Operand(ExternalReference::pending_exception_address())); > + __ mov(r2, > Operand(ExternalReference(Top::k_pending_exception_address))); > __ str(r0, MemOperand(r2)); > } > > @@ -3262,7 +3262,7 @@ > // Retrieve the pending exception and clear the variable. > __ mov(ip, Operand(ExternalReference::the_hole_value_location())); > __ ldr(r3, MemOperand(ip)); > - __ mov(ip, Operand(ExternalReference::pending_exception_address())); > + __ mov(ip, Operand(ExternalReference(Top::k_pending_exception_address))); > __ ldr(r0, MemOperand(ip)); > __ str(r3, MemOperand(ip)); > > @@ -3395,7 +3395,7 @@ > // exception field in the JSEnv and return a failure sentinel. > // Coming in here the fp will be invalid because the PushTryHandler below > // sets it to 0 to signal the existence of the JSEntry frame. > - __ mov(ip, Operand(ExternalReference::pending_exception_address())); > + __ mov(ip, Operand(ExternalReference(Top::k_pending_exception_address))); > __ str(r0, MemOperand(ip)); > __ mov(r0, Operand(reinterpret_cast<int32_t>(Failure::Exception()))); > __ b(&exit); > @@ -3412,7 +3412,7 @@ > // Clear any pending exceptions. > __ mov(ip, Operand(ExternalReference::the_hole_value_location())); > __ ldr(r5, MemOperand(ip)); > - __ mov(ip, Operand(ExternalReference::pending_exception_address())); > + __ mov(ip, Operand(ExternalReference(Top::k_pending_exception_address))); > __ str(r5, MemOperand(ip)); > > // Invoke the function by calling through JS entry trampoline builtin. > @@ -4079,7 +4079,7 @@ > // TODO(592): Rerunning the RegExp to get the stack overflow exception. > __ mov(r0, Operand(ExternalReference::the_hole_value_location())); > __ ldr(r0, MemOperand(r0, 0)); > - __ mov(r1, Operand(ExternalReference::pending_exception_address())); > + __ mov(r1, Operand(ExternalReference(Top::k_pending_exception_address))); > __ ldr(r1, MemOperand(r1, 0)); > __ cmp(r0, r1); > __ b(eq, &runtime); > ======================================= > --- /branches/bleeding_edge/src/assembler.cc Thu Jan 27 10:10:45 2011 > +++ /branches/bleeding_edge/src/assembler.cc Thu Jan 27 10:21:07 2011 > @@ -711,11 +711,6 @@ > ExternalReference ExternalReference::handle_scope_limit_address() { > return ExternalReference(HandleScope::current_limit_address()); > } > - > - > -ExternalReference ExternalReference::pending_exception_address() { > - return ExternalReference(Top::pending_exception_address()); > -} > > > ExternalReference ExternalReference::scheduled_exception_address() { > ======================================= > --- /branches/bleeding_edge/src/assembler.h Thu Jan 27 10:10:45 2011 > +++ /branches/bleeding_edge/src/assembler.h Thu Jan 27 10:21:07 2011 > @@ -551,7 +551,6 @@ > static ExternalReference handle_scope_limit_address(); > static ExternalReference handle_scope_level_address(); > > - static ExternalReference pending_exception_address(); > static ExternalReference scheduled_exception_address(); > > // Static variables containing common double constants. > ======================================= > --- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Thu Jan 27 10:10:45 > 2011 > +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Thu Jan 27 10:21:07 > 2011 > @@ -3922,11 +3922,10 @@ > // stack overflow (on the backtrack stack) was detected in RegExp code but > // haven't created the exception yet. Handle that in the runtime system. > // TODO(592): Rerunning the RegExp to get the stack overflow exception. > - ExternalReference pending_exception_address = > - ExternalReference::pending_exception_address(); > + ExternalReference pending_exception(Top::k_pending_exception_address); > __ mov(eax, > > Operand::StaticVariable(ExternalReference::the_hole_value_location())); > - __ cmp(eax, Operand::StaticVariable(pending_exception_address)); > + __ cmp(eax, Operand::StaticVariable(pending_exception)); > __ j(equal, &runtime); > __ bind(&failure); > // For failure and exception return null. > @@ -4716,8 +4715,7 @@ > __ j(equal, throw_out_of_memory_exception); > > // Retrieve the pending exception and clear the variable. > - ExternalReference pending_exception_address = > - ExternalReference::pending_exception_address(); > + ExternalReference > pending_exception_address(Top::k_pending_exception_address); > __ mov(eax, Operand::StaticVariable(pending_exception_address)); > __ mov(edx, > > Operand::StaticVariable(ExternalReference::the_hole_value_location())); > @@ -4769,10 +4767,9 @@ > __ mov(Operand::StaticVariable(external_caught), eax); > > // Set pending exception and eax to out of memory exception. > - ExternalReference pending_exception_address = > - ExternalReference::pending_exception_address(); > + ExternalReference pending_exception(Top::k_pending_exception_address); > __ mov(eax, reinterpret_cast<int32_t>(Failure::OutOfMemoryException())); > - __ mov(Operand::StaticVariable(pending_exception_address), eax); > + __ mov(Operand::StaticVariable(pending_exception), eax); > } > > // Clear the context pointer. > @@ -4888,9 +4885,8 @@ > > // Caught exception: Store result (exception) in the pending > // exception field in the JSEnv and return a failure sentinel. > - ExternalReference pending_exception_address = > - ExternalReference::pending_exception_address(); > - __ mov(Operand::StaticVariable(pending_exception_address), eax); > + ExternalReference pending_exception(Top::k_pending_exception_address); > + __ mov(Operand::StaticVariable(pending_exception), eax); > __ mov(eax, reinterpret_cast<int32_t>(Failure::Exception())); > __ jmp(&exit); > > @@ -4901,7 +4897,7 @@ > // Clear any pending exceptions. > __ mov(edx, > > Operand::StaticVariable(ExternalReference::the_hole_value_location())); > - __ mov(Operand::StaticVariable(pending_exception_address), edx); > + __ mov(Operand::StaticVariable(pending_exception), edx); > > // Fake a receiver (NULL). > __ push(Immediate(0)); // receiver > ======================================= > --- /branches/bleeding_edge/src/mips/codegen-mips.cc Thu Jan 27 10:10:45 > 2011 > +++ /branches/bleeding_edge/src/mips/codegen-mips.cc Thu Jan 27 10:21:07 > 2011 > @@ -1178,7 +1178,7 @@ > __ LoadExternalReference(t0, > ExternalReference::the_hole_value_location()); > __ lw(a3, MemOperand(t0)); > __ LoadExternalReference(t0, > - ExternalReference::pending_exception_address()); > + ExternalReference(Top::k_pending_exception_address)); > __ lw(v0, MemOperand(t0)); > __ sw(a3, MemOperand(t0)); > > @@ -1311,7 +1311,7 @@ > // Coming in here the fp will be invalid because the PushTryHandler below > // sets it to 0 to signal the existence of the JSEntry frame. > __ LoadExternalReference(t0, > - ExternalReference::pending_exception_address()); > + ExternalReference(Top::k_pending_exception_address)); > __ sw(v0, MemOperand(t0)); // We come back from 'invoke'. result is in > v0. > __ li(v0, Operand(reinterpret_cast<int32_t>(Failure::Exception()))); > __ b(&exit); > @@ -1329,7 +1329,7 @@ > __ LoadExternalReference(t0, > ExternalReference::the_hole_value_location()); > __ lw(t1, MemOperand(t0)); > __ LoadExternalReference(t0, > - ExternalReference::pending_exception_address()); > + ExternalReference(Top::k_pending_exception_address)); > __ sw(t1, MemOperand(t0)); > > // Invoke the function by calling through JS entry trampoline builtin. > ======================================= > --- /branches/bleeding_edge/src/top.h Thu Jan 27 10:10:45 2011 > +++ /branches/bleeding_edge/src/top.h Thu Jan 27 10:21:07 2011 > @@ -142,6 +142,7 @@ > C(handler_address) \ > C(c_entry_fp_address) \ > C(context_address) \ > + C(pending_exception_address) \ > C(external_caught_exception_address) > > #ifdef ENABLE_LOGGING_AND_PROFILING > ======================================= > --- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Thu Jan 27 10:10:45 > 2011 > +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Thu Jan 27 10:21:07 > 2011 > @@ -2126,7 +2126,8 @@ > // stack overflow (on the backtrack stack) was detected in RegExp code but > // haven't created the exception yet. Handle that in the runtime system. > // TODO(592): Rerunning the RegExp to get the stack overflow exception. > - __ movq(kScratchRegister, > ExternalReference::pending_exception_address()); > + ExternalReference > pending_exception_address(Top::k_pending_exception_address); > + __ movq(kScratchRegister, pending_exception_address); > __ Cmp(kScratchRegister, Factory::the_hole_value()); > __ j(equal, &runtime); > __ bind(&failure); > @@ -2884,7 +2885,8 @@ > __ j(equal, throw_out_of_memory_exception); > > // Retrieve the pending exception and clear the variable. > - __ movq(kScratchRegister, > ExternalReference::pending_exception_address()); > + ExternalReference > pending_exception_address(Top::k_pending_exception_address); > + __ movq(kScratchRegister, pending_exception_address); > __ movq(rax, Operand(kScratchRegister, 0)); > __ movq(rdx, ExternalReference::the_hole_value_location()); > __ movq(rdx, Operand(rdx, 0)); > @@ -2934,8 +2936,9 @@ > __ store_rax(external_caught); > > // Set pending exception and rax to out of memory exception. > + ExternalReference pending_exception(Top::k_pending_exception_address); > __ movq(rax, Failure::OutOfMemoryException(), RelocInfo::NONE); > - __ store_rax(ExternalReference::pending_exception_address()); > + __ store_rax(pending_exception); > } > > // Clear the context pointer. > @@ -3088,7 +3091,8 @@ > > // Caught exception: Store result (exception) in the pending > // exception field in the JSEnv and return a failure sentinel. > - __ store_rax(ExternalReference::pending_exception_address()); > + ExternalReference pending_exception(Top::k_pending_exception_address); > + __ store_rax(pending_exception); > __ movq(rax, Failure::Exception(), RelocInfo::NONE); > __ jmp(&exit); > > @@ -3098,7 +3102,7 @@ > > // Clear any pending exceptions. > __ load_rax(ExternalReference::the_hole_value_location()); > - __ store_rax(ExternalReference::pending_exception_address()); > + __ store_rax(pending_exception); > > // Fake a receiver (NULL). > __ push(Immediate(0)); // receiver > > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
