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

Reply via email to