| Index: src/hydrogen-instructions.cc
|
| ===================================================================
|
| --- src/hydrogen-instructions.cc (revision 9006)
|
| +++ src/hydrogen-instructions.cc (working copy)
|
| @@ -635,6 +635,13 @@
|
| }
|
|
|
|
|
| +void HBoundsCheck::PrintDataTo(StringStream* stream) {
|
| + index()->PrintNameTo(stream);
|
| + stream->Add(" ");
|
| + length()->PrintNameTo(stream);
|
| +}
|
| +
|
| +
|
| void HCallConstantFunction::PrintDataTo(StringStream* stream) {
|
| if (IsApplyFunction()) {
|
| stream->Add("optimized apply ");
|
| @@ -771,7 +778,7 @@
|
| void HTypeofIsAndBranch::PrintDataTo(StringStream* stream) {
|
| value()->PrintNameTo(stream);
|
| stream->Add(" == ");
|
| - stream->Add(type_literal_->ToAsciiVector());
|
| + stream->Add(type_literal_->GetFlatContent().ToAsciiVector());
|
| }
|
|
|
|
|
| @@ -862,19 +869,25 @@
|
|
|
|
|
| Range* HValue::InferRange() {
|
| - if (representation().IsTagged()) {
|
| - // Tagged values are always in int32 range when converted to integer,
|
| - // but they can contain -0.
|
| - Range* result = new Range();
|
| - result->set_can_be_minus_zero(true);
|
| - return result;
|
| - } else if (representation().IsNone()) {
|
| - return NULL;
|
| - } else {
|
| - // Untagged integer32 cannot be -0 and we don't compute ranges for
|
| - // untagged doubles.
|
| - return new Range();
|
| + // Untagged integer32 cannot be -0, all other representations can.
|
| + Range* result = new Range();
|
| + result->set_can_be_minus_zero(!representation().IsInteger32());
|
| + return result;
|
| +}
|
| +
|
| +
|
| +Range* HChange::InferRange() {
|
| + Range* input_range = value()->range();
|
| + if (from().IsInteger32() &&
|
| + to().IsTagged() &&
|
| + input_range != NULL && input_range->IsInSmiRange()) {
|
| + set_type(HType::Smi());
|
| }
|
| + Range* result = (input_range != NULL)
|
| + ? input_range->Copy()
|
| + : HValue::InferRange();
|
| + if (to().IsInteger32()) result->set_can_be_minus_zero(false);
|
| + return result;
|
| }
|
|
|
|
|
| @@ -1223,6 +1236,7 @@
|
| ? left()->range()->Copy()
|
| : new Range();
|
| result->Sar(c->Integer32Value());
|
| + result->set_can_be_minus_zero(false);
|
| return result;
|
| }
|
| }
|
| @@ -1246,6 +1260,7 @@
|
| ? left()->range()->Copy()
|
| : new Range();
|
| result->Sar(c->Integer32Value());
|
| + result->set_can_be_minus_zero(false);
|
| return result;
|
| }
|
| }
|
| @@ -1262,6 +1277,7 @@
|
| ? left()->range()->Copy()
|
| : new Range();
|
| result->Shl(c->Integer32Value());
|
| + result->set_can_be_minus_zero(false);
|
| return result;
|
| }
|
| }
|
| @@ -1309,7 +1325,7 @@
|
|
|
| HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
|
| HValue* object,
|
| - ZoneMapList* types,
|
| + SmallMapList* types,
|
| Handle<String> name)
|
| : types_(Min(types->length(), kMaxLoadPolymorphism)),
|
| name_(name),
|
| @@ -1373,6 +1389,20 @@
|
| }
|
|
|
|
|
| +void HLoadNamedFieldPolymorphic::PrintDataTo(StringStream* stream) {
|
| + object()->PrintNameTo(stream);
|
| + stream->Add(" .");
|
| + stream->Add(*String::cast(*name())->ToCString());
|
| +}
|
| +
|
| +
|
| +void HLoadNamedGeneric::PrintDataTo(StringStream* stream) {
|
| + object()->PrintNameTo(stream);
|
| + stream->Add(" .");
|
| + stream->Add(*String::cast(*name())->ToCString());
|
| +}
|
| +
|
| +
|
| void HLoadKeyedFastElement::PrintDataTo(StringStream* stream) {
|
| object()->PrintNameTo(stream);
|
| stream->Add("[");
|
|
|