Index: src/virtual-frame.cc |
=================================================================== |
--- src/virtual-frame.cc (revision 1949) |
+++ src/virtual-frame.cc (working copy) |
@@ -94,10 +94,10 @@ |
case FrameElement::REGISTER: |
// All copies are backed by memory or register locations. |
result.set_static_type(target.static_type()); |
- result.set_type(FrameElement::COPY); |
- result.clear_copied(); |
- result.clear_sync(); |
- result.set_index(index); |
+ result.type_ = FrameElement::COPY; |
+ result.copied_ = false; |
+ result.synced_ = false; |
+ result.data_.index_ = index; |
elements_[index].set_copied(); |
break; |
@@ -465,6 +465,23 @@ |
} |
+bool FrameElement::Equals(FrameElement other) { |
+ if (type_ != other.type_ || |
+ copied_ != other.copied_ || |
+ synced_ != other.synced_) return false; |
+ |
+ if (is_register()) { |
+ if (!reg().is(other.reg())) return false; |
+ } else if (is_constant()) { |
+ if (!handle().is_identical_to(other.handle())) return false; |
+ } else if (is_copy()) { |
+ if (index() != other.index()) return false; |
+ } |
+ |
+ return true; |
+} |
+ |
+ |
bool VirtualFrame::Equals(VirtualFrame* other) { |
#ifdef DEBUG |
// These are sanity checks in debug builds, but we do not need to |