On 2011/04/21 16:19:12, Sven wrote:
http://codereview.chromium.org/6879081/diff/1024/src/arm/code-stubs-arm.cc
File src/arm/code-stubs-arm.cc (right):
http://codereview.chromium.org/6879081/diff/1024/src/arm/code-stubs-arm.cc#newcode1988
src/arm/code-stubs-arm.cc:1988: __ bind(&slow_allocate_heapnumber);
Hmmm, this seems to crash mjsunit/bit-not.js with the following message:
---------------------------------------------------
#
# Fatal error in /home/svenpanne/v8/src/frames.cc, line 429
# CHECK(kind == Code::FUNCTION || kind == Code::OPTIMIZED_FUNCTION) failed
#
Attempt to print stack while printing stack (double fault)
If you are lucky you may find a partial stack dump on stdout.
---------------------------------------------------
It seems that I've violated some implicit global assumption, but I've got
no
clue what it is. Hints appreciated...
When you make a call you need to either return before the next GC or you
need to
set up a frame so that the GC can traverse the stack. There is support in
the
macro assembler for setting up the frame. If you already set up a frame
then
you can often get away with a tail call which reuses the frame. If you call
something that both does the allocation and calculates the unary operation
then
you can do a tail call. I think that is what the state transition call
does.
It also transitions the stub call site state which you don't want in this
case.
http://codereview.chromium.org/6879081/
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev