| 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)");
|
| }
|
|
|
|
|
|
|