Index: src/ia32/virtual-frame-ia32.cc |
=================================================================== |
--- src/ia32/virtual-frame-ia32.cc (revision 2231) |
+++ src/ia32/virtual-frame-ia32.cc (working copy) |
@@ -189,7 +189,7 @@ |
backing_element = elements_[element.index()]; |
} |
Result fresh = cgen()->allocator()->Allocate(); |
- ASSERT(fresh.is_valid()); |
+ ASSERT(fresh.is_valid()); // A register was spilled if all were in use. |
elements_[i] = |
FrameElement::RegisterElement(fresh.reg(), |
FrameElement::NOT_SYNCED); |
@@ -218,14 +218,13 @@ |
} |
} |
} |
- // No need to set the copied flag---there are no copies of |
- // copies or constants so the original was not copied. |
+ // No need to set the copied flag---there are no copies. |
elements_[i].set_static_type(element.static_type()); |
} else { |
- // Clear the copy flag of non-constant, non-copy elements above |
- // the high water mark. They cannot be copied because copes are |
- // always higher than their backing store and copies are not |
- // allowed above the water mark. |
+ // Clear the copy flag of non-constant, non-copy elements. |
+ // They cannot be copied because copies are not allowed. |
+ // The copy flag is not relied on before the end of this loop, |
+ // including when registers are spilled. |
elements_[i].clear_copied(); |
} |
} |