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
-~----------~----~----~----~------~----~------~--~---

Reply via email to