Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: src/virtual-frame-ia32.h

Issue 13246: Experimental: more code generator changes.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/toiger/
Patch Set: '' Created 12 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/jump-target-ia32.cc ('k') | src/virtual-frame-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/virtual-frame-ia32.h
===================================================================
--- src/virtual-frame-ia32.h (revision 949)
+++ src/virtual-frame-ia32.h (working copy)
@@ -51,7 +51,7 @@
~Result() {
// We have called Unuse() before Result goes out of scope.
- ASSERT(reg_.is(no_reg));
+ ASSERT(!is_register() || reg().is(no_reg));
}
void Unuse();
@@ -211,6 +211,13 @@
// location.
bool IsMergable();
+ // True if making the frame mergable via MakeMergable will generate code.
+ // This differs from !IsMergable() because there are some non-mergable
+ // frames that can be made mergable simply by changing internal state (eg,
+ // forgetting about constants that are synced to memory) without
+ // generating code.
+ bool RequiresMergeCode();
+
// Ensure that this frame is in a state where an arbitrary frame of the
// right size could be merged to it. May emit code.
void MakeMergable();
@@ -220,6 +227,18 @@
// the expected one.
void MergeTo(VirtualFrame* expected);
+ // Detach a frame from its code generator, perhaps temporarily. This
+ // tells the register allocator that it is free to use frame-internal
+ // registers. Used when the code generator's frame is switched from this
+ // one to NULL by an unconditional jump.
+ void DetachFromCodeGenerator();
+
+ // (Re)attach a frame to its code generator. This informs the register
+ // allocator that the frame-internal register references are active again.
+ // Used when a code generator's frame is switched from NULL to this one by
+ // binding a label.
+ void AttachToCodeGenerator();
+
// Emit code for the physical JS entry and exit frame sequences. After
// calling Enter, the virtual frame is ready for use; and after calling
// Exit it should not be used. Note that Enter does not allocate space in
« no previous file with comments | « src/jump-target-ia32.cc ('k') | src/virtual-frame-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698