Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1855)

Unified Diff: src/hydrogen-instructions.cc

Issue 148883002: Synchronize with r15594. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/hydrogen-instructions.cc
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
index ea32f9609710d9f615671ce2f065cca0b7377c73..53f395344148c0c40996b134c71134b15405a61e 100644
--- a/src/hydrogen-instructions.cc
+++ b/src/hydrogen-instructions.cc
@@ -1696,14 +1696,6 @@ void HCheckFunction::PrintDataTo(StringStream* stream) {
}
-HValue* HCheckFunction::Canonicalize() {
- return (value()->IsConstant() &&
- HConstant::cast(value())->UniqueValueIdsMatch(target_unique_id_))
- ? NULL
- : this;
-}
-
-
const char* HCheckInstanceType::GetCheckName() {
switch (check_) {
case IS_SPEC_OBJECT: return "object";
@@ -1751,9 +1743,10 @@ Range* HValue::InferRange(Zone* zone) {
result = new(zone) Range(Smi::kMinValue, Smi::kMaxValue);
result->set_can_be_minus_zero(false);
} else {
- // Untagged integer32 cannot be -0, all other representations can.
result = new(zone) Range();
- result->set_can_be_minus_zero(!representation().IsInteger32());
+ result->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32));
+ // TODO(jkummerow): The range cannot be minus zero when the upper type
+ // bound is Integer32.
}
return result;
}
@@ -1771,7 +1764,8 @@ Range* HChange::InferRange(Zone* zone) {
Range* result = (input_range != NULL)
? input_range->Copy(zone)
: HValue::InferRange(zone);
- if (to().IsInteger32()) result->set_can_be_minus_zero(false);
+ result->set_can_be_minus_zero(!to().IsSmiOrInteger32() ||
+ !CheckFlag(kAllUsesTruncatingToInt32));
return result;
}
@@ -1816,9 +1810,8 @@ Range* HAdd::InferRange(Zone* zone) {
CheckFlag(kAllUsesTruncatingToInt32)) {
ClearFlag(kCanOverflow);
}
- if (!CheckFlag(kAllUsesTruncatingToInt32)) {
- res->set_can_be_minus_zero(a->CanBeMinusZero() && b->CanBeMinusZero());
- }
+ res->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32) &&
+ a->CanBeMinusZero() && b->CanBeMinusZero());
return res;
} else {
return HValue::InferRange(zone);
@@ -1835,9 +1828,8 @@ Range* HSub::InferRange(Zone* zone) {
CheckFlag(kAllUsesTruncatingToInt32)) {
ClearFlag(kCanOverflow);
}
- if (!CheckFlag(kAllUsesTruncatingToInt32)) {
- res->set_can_be_minus_zero(a->CanBeMinusZero() && b->CanBeZero());
- }
+ res->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32) &&
+ a->CanBeMinusZero() && b->CanBeZero());
return res;
} else {
return HValue::InferRange(zone);
@@ -1856,11 +1848,9 @@ Range* HMul::InferRange(Zone* zone) {
// precise and therefore not the same as converting to Double and back.
ClearFlag(kCanOverflow);
}
- if (!CheckFlag(kAllUsesTruncatingToInt32)) {
- bool m0 = (a->CanBeZero() && b->CanBeNegative()) ||
- (a->CanBeNegative() && b->CanBeZero());
- res->set_can_be_minus_zero(m0);
- }
+ res->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32) &&
+ ((a->CanBeZero() && b->CanBeNegative()) ||
+ (a->CanBeNegative() && b->CanBeZero())));
return res;
} else {
return HValue::InferRange(zone);
@@ -1873,16 +1863,9 @@ Range* HDiv::InferRange(Zone* zone) {
Range* a = left()->range();
Range* b = right()->range();
Range* result = new(zone) Range();
- if (!CheckFlag(kAllUsesTruncatingToInt32)) {
- if (a->CanBeMinusZero()) {
- result->set_can_be_minus_zero(true);
- }
-
- if (a->CanBeZero() && b->CanBeNegative()) {
- result->set_can_be_minus_zero(true);
- }
- }
-
+ result->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32) &&
+ (a->CanBeMinusZero() ||
+ (a->CanBeZero() && b->CanBeNegative())));
if (!a->Includes(kMinInt) || !b->Includes(-1)) {
ClearFlag(HValue::kCanOverflow);
}
@@ -1912,9 +1895,8 @@ Range* HMod::InferRange(Zone* zone) {
Range* result = new(zone) Range(left_can_be_negative ? -positive_bound : 0,
a->CanBePositive() ? positive_bound : 0);
- if (left_can_be_negative && !CheckFlag(kAllUsesTruncatingToInt32)) {
- result->set_can_be_minus_zero(true);
- }
+ result->set_can_be_minus_zero(!CheckFlag(kAllUsesTruncatingToInt32) &&
+ left_can_be_negative);
if (!a->Includes(kMinInt) || !b->Includes(-1)) {
ClearFlag(HValue::kCanOverflow);
@@ -2464,7 +2446,9 @@ Range* HBitwise::InferRange(Zone* zone) {
? static_cast<int32_t>(-limit) : 0;
return new(zone) Range(min, static_cast<int32_t>(limit - 1));
}
- return HValue::InferRange(zone);
+ Range* result = HValue::InferRange(zone);
+ result->set_can_be_minus_zero(false);
+ return result;
}
const int32_t kDefaultMask = static_cast<int32_t>(0xffffffff);
int32_t left_mask = (left()->range() != NULL)
@@ -2476,9 +2460,11 @@ Range* HBitwise::InferRange(Zone* zone) {
int32_t result_mask = (op() == Token::BIT_AND)
? left_mask & right_mask
: left_mask | right_mask;
- return (result_mask >= 0)
- ? new(zone) Range(0, result_mask)
- : HValue::InferRange(zone);
+ if (result_mask >= 0) return new(zone) Range(0, result_mask);
+
+ Range* result = HValue::InferRange(zone);
+ result->set_can_be_minus_zero(false);
+ return result;
}
@@ -2490,7 +2476,6 @@ Range* HSar::InferRange(Zone* zone) {
? left()->range()->Copy(zone)
: new(zone) Range();
result->Sar(c->Integer32Value());
- result->set_can_be_minus_zero(false);
return result;
}
}
@@ -2515,7 +2500,6 @@ Range* HShr::InferRange(Zone* zone) {
? left()->range()->Copy(zone)
: new(zone) Range();
result->Sar(c->Integer32Value());
- result->set_can_be_minus_zero(false);
return result;
}
}
@@ -2532,7 +2516,6 @@ Range* HShl::InferRange(Zone* zone) {
? left()->range()->Copy(zone)
: new(zone) Range();
result->Shl(c->Integer32Value());
- result->set_can_be_minus_zero(false);
return result;
}
}
@@ -3145,11 +3128,6 @@ HType HInstanceOf::CalculateInferredType() {
}
-HType HDeleteProperty::CalculateInferredType() {
- return HType::Boolean();
-}
-
-
HType HInstanceOfKnownGlobal::CalculateInferredType() {
return HType::Boolean();
}
@@ -3666,13 +3644,6 @@ HInstruction* HShr::New(
#undef H_CONSTANT_DOUBLE
-void HIn::PrintDataTo(StringStream* stream) {
- key()->PrintNameTo(stream);
- stream->Add(" ");
- object()->PrintNameTo(stream);
-}
-
-
void HBitwise::PrintDataTo(StringStream* stream) {
stream->Add(Token::Name(op_));
stream->Add(" ");
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698