LGTM On Sat, Dec 13, 2008 at 9:56 AM, <[email protected]> wrote:
> Reviewers: William Hesse, > > Description: > Experimental: fix a pair of bugs in the frame's sync state. In two > cases we could erroneously mark elements as synced, causing them to be > lost if we hit a spill. > > > Please review this at http://codereview.chromium.org/14105 > > SVN Base: http://v8.googlecode.com/svn/branches/experimental/toiger/ > > Affected files: > M src/virtual-frame-ia32.cc > > > Index: src/virtual-frame-ia32.cc > =================================================================== > --- src/virtual-frame-ia32.cc (revision 970) > +++ src/virtual-frame-ia32.cc (working copy) > @@ -475,6 +475,12 @@ > } else { > // Source is constant. > __ Set(target.reg(), Immediate(source.handle())); > + if (target.is_synced()) { > + if (i > stack_pointer_) { > + SyncRange(stack_pointer_ + 1, i); > + } > + SyncElementAt(i); > + } > } > Use(target.reg()); > elements_[i] = target; > @@ -624,12 +630,13 @@ > > cgen_->allocator()->Unuse(temp); > } else { > - // For constants and registers, add a copy of the element to the > - // top of the frame. > + // For constants and registers, add an (unsynced) copy of the element > to > + // the top of the frame. > ASSERT(element.is_register() || element.is_constant()); > if (element.is_register()) { > Use(element.reg()); > } > + element.clear_sync(); > elements_.Add(element); > } > } > > > -- We can IMAGINE what is not --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
