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

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

Issue 113524: Remove code that adjusts synced and copied flags in MergeTo. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 7 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
« no previous file with comments | « src/frame-element.h ('k') | src/virtual-frame.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ia32/virtual-frame-ia32.cc
===================================================================
--- src/ia32/virtual-frame-ia32.cc (revision 1997)
+++ src/ia32/virtual-frame-ia32.cc (working copy)
@@ -187,16 +187,6 @@
ASSERT(mergable_elements <= elements_.length());
int start_index = elements_.length() - mergable_elements;
-
- // The is_copied flags on entry frame elements are expected to be
- // exact. Set them for the elements below the water mark.
- for (int i = 0; i < start_index; i++) {
- elements_[i].clear_copied();
- if (elements_[i].is_copy()) {
- elements_[elements_[i].index()].set_copied();
- }
- }
-
for (int i = start_index; i < elements_.length(); i++) {
FrameElement element = elements_[i];
@@ -272,23 +262,6 @@
MergeMoveRegistersToRegisters(expected);
MergeMoveMemoryToRegisters(expected);
- // Fix any sync flag problems from the bottom-up and make the copied
- // flags exact. This assumes that the backing store of copies is
- // always lower in the frame.
- for (int i = 0; i < elements_.length(); i++) {
- FrameElement source = elements_[i];
- FrameElement target = expected->elements_[i];
- if (source.is_synced() && !target.is_synced()) {
- elements_[i].clear_sync();
- } else if (!source.is_synced() && target.is_synced()) {
- SyncElementAt(i);
- }
- elements_[i].clear_copied();
- if (elements_[i].is_copy()) {
- elements_[elements_[i].index()].set_copied();
- }
- }
-
// Adjust the stack pointer downward if necessary.
if (stack_pointer_ > expected->stack_pointer_) {
int difference = stack_pointer_ - expected->stack_pointer_;
@@ -314,11 +287,9 @@
// of the index of the frame element esi is caching or kIllegalIndex
// if esi has not been disturbed.
int esi_caches = kIllegalIndex;
- // Loop downward from the stack pointer or the top of the frame if
- // the stack pointer is floating above the frame.
- int start = Min(static_cast<int>(stack_pointer_), elements_.length() - 1);
- for (int i = start; i >= 0; i--) {
+ for (int i = elements_.length() - 1; i >= 0; i--) {
FrameElement target = expected->elements_[i];
+ if (target.is_register()) continue; // Handle registers later.
if (target.is_memory()) {
FrameElement source = elements_[i];
switch (source.type()) {
@@ -368,8 +339,8 @@
}
break;
}
- elements_[i] = target;
}
+ elements_[i] = target;
}
if (esi_caches != kIllegalIndex) {
@@ -421,7 +392,8 @@
void VirtualFrame::MergeMoveMemoryToRegisters(VirtualFrame* expected) {
// Move memory, constants, and copies to registers. This is the
- // final step and is done from the bottom up so that the backing
+ // final step and since it is not done from the bottom up, but in
+ // register code order, we have special code to ensure that the backing
// elements of copies are in their correct locations when we
// encounter the copies.
for (int i = 0; i < kNumRegisters; i++) {
@@ -430,7 +402,7 @@
FrameElement source = elements_[index];
FrameElement target = expected->elements_[index];
Register target_reg = { i };
- ASSERT(expected->elements_[index].reg().is(target_reg));
+ ASSERT(target.reg().is(target_reg));
switch (source.type()) {
case FrameElement::INVALID: // Fall through.
UNREACHABLE();
« no previous file with comments | « src/frame-element.h ('k') | src/virtual-frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698