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

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

Issue 18089: Experimental: for forward CFG edges, generate the code to merge to an... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/toiger/
Patch Set: Created 11 years, 11 months 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
Index: src/virtual-frame-ia32.cc
===================================================================
--- src/virtual-frame-ia32.cc (revision 1075)
+++ src/virtual-frame-ia32.cc (working copy)
@@ -309,16 +309,6 @@
void VirtualFrame::MakeMergable() {
Comment cmnt(masm_, "[ Make frame mergable");
- // We can call MakeMergable on a frame that is not the code generator's
- // current frame, which will leave the global register counts out of sync
- // with the frame. We simply save the current frame and restore it at the
- // end of this function. We should find a better way to deal with this.
- VirtualFrame* original_frame = cgen_->frame();
- RegisterFile non_frame_registers;
- non_frame_registers.Use(esi);
- non_frame_registers.Use(ebp);
- non_frame_registers.Use(esp);
- cgen_->SetFrame(this, &non_frame_registers);
William Hesse 2009/01/15 12:21:54 Can you put an assert in, that the frame is its cg
Kevin Millikin (Chromium) 2009/01/15 13:08:18 Done.
ASSERT(cgen_->HasValidEntryRegisters());
// Remove constants from the frame and ensure that no registers are
@@ -392,7 +382,6 @@
delete[] new_elements;
ASSERT(cgen_->HasValidEntryRegisters());
- cgen_->SetFrame(original_frame, &non_frame_registers);
}
@@ -426,6 +415,7 @@
ASSERT(!elements_[i].is_synced());
}
#endif
+ ASSERT(!cgen_->has_cc());
__ add(Operand(esp), Immediate(height_difference * kPointerSize));
stack_pointer_ = expected->stack_pointer_;
} else if (stack_pointer_ < expected->stack_pointer_) {
@@ -563,10 +553,11 @@
ASSERT(!elements_[j].is_memory());
}
#endif
- __ add(Operand(esp),
- Immediate((stack_pointer_ - i) * kPointerSize));
+ int difference = stack_pointer_ - i;
+ ASSERT(!cgen_->has_cc());
+ __ add(Operand(esp), Immediate(difference * kPointerSize));
stack_pointer_ = i;
- }
+ }
stack_pointer_--;
__ pop(target.reg());
}
@@ -938,6 +929,7 @@
if (num_virtual_elements < count) {
int num_dropped = count - num_virtual_elements;
stack_pointer_ -= num_dropped;
+ ASSERT(!cgen_->has_cc());
__ add(Operand(esp), Immediate(num_dropped * kPointerSize));
}
@@ -958,6 +950,7 @@
if (popped.is_constant()) {
if (pop_needed) {
stack_pointer_--;
+ ASSERT(!cgen_->has_cc());
__ add(Operand(esp), Immediate(kPointerSize));
}
return Result(popped.handle(), cgen_);
@@ -965,6 +958,7 @@
Unuse(popped.reg());
if (pop_needed) {
stack_pointer_--;
+ ASSERT(!cgen_->has_cc());
__ add(Operand(esp), Immediate(kPointerSize));
}
return Result(popped.reg(), cgen_);

Powered by Google App Engine
This is Rietveld 408576698