The issue with Forget is the serious one. I think using "Drop" is all it takes to make it work.
http://codereview.chromium.org/16567/diff/209/217 File src/codegen-ia32.cc (right): http://codereview.chromium.org/16567/diff/209/217#newcode1651 Line 1651: result.Unuse(); Since the reference to eax is live in the next basic block, it should be passed to Jump or Bind. http://codereview.chromium.org/16567/diff/209/217#newcode1660 Line 1660: frame_->EmitPush(eax); // Materialize result on the stack. EmitPush assumes the frame is spilled. This should be a plain Push of the result. http://codereview.chromium.org/16567/diff/209/214 File src/virtual-frame-ia32.cc (right): http://codereview.chromium.org/16567/diff/209/214#newcode637 Line 637: Forget(height()); As discussed offline, Forget as it currently stands probably isn't the right thing here. It assumes that it is forgetting things below the actual stack pointer, and it doesn't adjust the stack pointer itself but assumes someone else has or will. http://codereview.chromium.org/16567/diff/209/215 File src/virtual-frame-ia32.h (right): http://codereview.chromium.org/16567/diff/209/215#newcode242 Line 242: // This avoid generating unnecessary merge code when jumping to the avoids http://codereview.chromium.org/16567 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
