Reviewers: William Hesse, Kasper Lund,

Message:
Kasper & Bill, can you take a look at this?

Two caveats:

(1) Much of the complication is involved in correctly implementing
VirtualFrame::MakeMergable, which is all going away shortly.  It will be
replaced with a function to calculate a target frame based on a set of
incoming frames, and that makes the frame mergable in one-pass if
needed.

(2) There is a potential issue that I don't think arises in practice.
Spilling or syncing a virtual frame element (which is used by merging,
make mergable, and calling functions) can require (no more than) one
free register to perform memory-to-memory moves.  Obviously, we need to
either ensure that this is always the case or detect when it isn't and
fall back on something (spilling an arbitrary register to use, for
instance).

Description:
Experimental: allow the virtual frame to explicitly indicate sharing
of memory (as well as register) elements.

A new type of frame element is introduced, which is a copy of a memory
or register element.  As a simple first implementation, sets of copies
are backed by their lowest frame element.  This requires adjusting the
backing store when moving elements up and down in the frame.

Copied elements have copy-on-write semantics---modifying the backing
frame element requires finding the appropriate new backing element and
updating all copies in the set.


Please review this at http://codereview.chromium.org/19755

SVN Base: http://v8.googlecode.com/svn/branches/experimental/toiger/

Affected files:
   M     src/disassembler.cc
   M     src/virtual-frame-ia32.h
   M     src/virtual-frame-ia32.cc



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to