http://codereview.chromium.org/10993/diff/1/5 File src/codegen-ia32.cc (right):
http://codereview.chromium.org/10993/diff/1/5#newcode3112 Line 3112: frame_->SpillAll(); On 2008/12/03 07:04:40, iposva wrote: > Is there a single call to Load in this file that is not followed by a > frame_->SpillAll()? > You should probably move the mandatory (?) spilling code into the Load function > and explain the reason for it in a good fat comment. Actually there are two (but they are easy to miss). one is in VisitExpressionStatement where a value is discarded, which doesn't require a fully spilled frame and emits no code for virtual TOS elements; and the other is in VisitAssignment for the case of simple "=" assignments, where the RHS can safely be a register or constant which is simply compiled to a memory move for LHSs that are LOCAL or PARAMETER slots. The calls to SpillAll are annoying, but temporary---ultimately they will all go away (or be moved to more optimal places). I don't mind using the accessor, but I'm not sure what it's buying us either. http://codereview.chromium.org/10993/diff/1/5#newcode4185 Line 4185: frame->SpillAll(); On 2008/12/03 07:04:40, iposva wrote: > Could this SpillAll() be moved after the EmitPop(eax)? Then you could > potentially materialize the value for eax without having to go through memory > and then spill the remainder after EmitPop(). Eventually when this code is reworked. Right now the functions with "Emit" (ie, EmitPush and EmitPop) in their names will actually emit those specific machine instructions. They do not do any magic with virtual frame elements, so they require fully spilled frames. http://codereview.chromium.org/10993 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
