Revert r8753.
It caused a regressions in compile time in the optimizing compiler. I'm reverting until the reason for this is identified and fixed. TBR=whesse@chromium.org Review URL: http://codereview.chromium.org/7453024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
eef3e8739e
commit
6637fa2835
@ -481,6 +481,7 @@ void HValue::RegisterUse(int index, HValue* new_value) {
|
|||||||
|
|
||||||
void HValue::AddNewRange(Range* r) {
|
void HValue::AddNewRange(Range* r) {
|
||||||
if (!HasRange()) ComputeInitialRange();
|
if (!HasRange()) ComputeInitialRange();
|
||||||
|
if (!HasRange()) range_ = new Range();
|
||||||
ASSERT(HasRange());
|
ASSERT(HasRange());
|
||||||
r->StackUpon(range_);
|
r->StackUpon(range_);
|
||||||
range_ = r;
|
range_ = r;
|
||||||
@ -861,22 +862,27 @@ void HInstanceOf::PrintDataTo(StringStream* stream) {
|
|||||||
|
|
||||||
|
|
||||||
Range* HValue::InferRange() {
|
Range* HValue::InferRange() {
|
||||||
if (representation().IsInteger32()) {
|
if (representation().IsTagged()) {
|
||||||
// Untagged integer32 cannot be -0.
|
// Tagged values are always in int32 range when converted to integer,
|
||||||
return new Range ();
|
// but they can contain -0.
|
||||||
} else {
|
|
||||||
// Tagged values, untagged doubles, and values with unknown representation
|
|
||||||
// can contain -0.
|
|
||||||
Range* result = new Range();
|
Range* result = new Range();
|
||||||
result->set_can_be_minus_zero(true);
|
result->set_can_be_minus_zero(true);
|
||||||
return result;
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Range* HConstant::InferRange() {
|
Range* HConstant::InferRange() {
|
||||||
if (has_int32_value_) {
|
if (has_int32_value_) {
|
||||||
return new Range(int32_value_, int32_value_);
|
Range* result = new Range(int32_value_, int32_value_);
|
||||||
|
result->set_can_be_minus_zero(false);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
return HValue::InferRange();
|
return HValue::InferRange();
|
||||||
}
|
}
|
||||||
@ -885,7 +891,8 @@ Range* HConstant::InferRange() {
|
|||||||
Range* HPhi::InferRange() {
|
Range* HPhi::InferRange() {
|
||||||
if (representation().IsInteger32()) {
|
if (representation().IsInteger32()) {
|
||||||
if (block()->IsLoopHeader()) {
|
if (block()->IsLoopHeader()) {
|
||||||
return new Range();
|
Range* range = new Range(kMinInt, kMaxInt);
|
||||||
|
return range;
|
||||||
} else {
|
} else {
|
||||||
Range* range = OperandAt(0)->range()->Copy();
|
Range* range = OperandAt(0)->range()->Copy();
|
||||||
for (int i = 1; i < OperandCount(); ++i) {
|
for (int i = 1; i < OperandCount(); ++i) {
|
||||||
|
Loading…
Reference in New Issue
Block a user