Index: src/hydrogen-instructions.cc |
=================================================================== |
--- src/hydrogen-instructions.cc (revision 9445) |
+++ src/hydrogen-instructions.cc (working copy) |
@@ -1464,7 +1464,7 @@ |
} |
-bool HLoadKeyedFastElement::RequiresHoleCheck() const { |
+bool HLoadKeyedFastElement::RequiresHoleCheck() { |
for (HUseIterator it(uses()); !it.Done(); it.Advance()) { |
HValue* use = it.value(); |
if (!use->IsChange()) return true; |
@@ -1481,11 +1481,6 @@ |
} |
-bool HLoadKeyedFastDoubleElement::RequiresHoleCheck() const { |
- return true; |
-} |
- |
- |
void HLoadKeyedGeneric::PrintDataTo(StringStream* stream) { |
object()->PrintNameTo(stream); |
stream->Add("["); |
@@ -1639,10 +1634,21 @@ |
void HLoadGlobalCell::PrintDataTo(StringStream* stream) { |
stream->Add("[%p]", *cell()); |
- if (check_hole_value()) stream->Add(" (deleteable/read-only)"); |
+ if (!details_.IsDontDelete()) stream->Add(" (deleteable)"); |
+ if (details_.IsReadOnly()) stream->Add(" (read-only)"); |
} |
+bool HLoadGlobalCell::RequiresHoleCheck() { |
+ if (details_.IsDontDelete() && !details_.IsReadOnly()) return false; |
+ for (HUseIterator it(uses()); !it.Done(); it.Advance()) { |
+ HValue* use = it.value(); |
+ if (!use->IsChange()) return true; |
+ } |
+ return false; |
+} |
+ |
+ |
void HLoadGlobalGeneric::PrintDataTo(StringStream* stream) { |
stream->Add("%o ", *name()); |
} |
@@ -1651,6 +1657,8 @@ |
void HStoreGlobalCell::PrintDataTo(StringStream* stream) { |
stream->Add("[%p] = ", *cell()); |
value()->PrintNameTo(stream); |
+ if (!details_.IsDontDelete()) stream->Add(" (deleteable)"); |
+ if (details_.IsReadOnly()) stream->Add(" (read-only)"); |
} |