Remove 'unanimous use observations' rule from Phi representation inference

Review URL: https://codereview.chromium.org/14840014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14536 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 984122a7
...@@ -3514,14 +3514,7 @@ void HPhi::SimplifyConstantInputs() { ...@@ -3514,14 +3514,7 @@ void HPhi::SimplifyConstantInputs() {
void HPhi::InferRepresentation(HInferRepresentation* h_infer) { void HPhi::InferRepresentation(HInferRepresentation* h_infer) {
ASSERT(CheckFlag(kFlexibleRepresentation)); ASSERT(CheckFlag(kFlexibleRepresentation));
// If there are non-Phi uses, and all of them have observed the same Representation new_rep = RepresentationFromInputs();
// representation, than that's what this Phi is going to use.
Representation new_rep = RepresentationObservedByAllNonPhiUses();
if (!new_rep.IsNone()) {
UpdateRepresentation(new_rep, h_infer, "unanimous use observations");
return;
}
new_rep = RepresentationFromInputs();
UpdateRepresentation(new_rep, h_infer, "inputs"); UpdateRepresentation(new_rep, h_infer, "inputs");
new_rep = RepresentationFromUses(); new_rep = RepresentationFromUses();
UpdateRepresentation(new_rep, h_infer, "uses"); UpdateRepresentation(new_rep, h_infer, "uses");
...@@ -3530,22 +3523,6 @@ void HPhi::InferRepresentation(HInferRepresentation* h_infer) { ...@@ -3530,22 +3523,6 @@ void HPhi::InferRepresentation(HInferRepresentation* h_infer) {
} }
Representation HPhi::RepresentationObservedByAllNonPhiUses() {
int non_phi_use_count = 0;
for (int i = Representation::kInteger32;
i < Representation::kNumRepresentations; ++i) {
non_phi_use_count += non_phi_uses_[i];
}
if (non_phi_use_count <= 1) return Representation::None();
for (int i = 0; i < Representation::kNumRepresentations; ++i) {
if (non_phi_uses_[i] == non_phi_use_count) {
return Representation::FromKind(static_cast<Representation::Kind>(i));
}
}
return Representation::None();
}
Representation HPhi::RepresentationFromInputs() { Representation HPhi::RepresentationFromInputs() {
bool double_occurred = false; bool double_occurred = false;
bool int32_occurred = false; bool int32_occurred = false;
......
...@@ -3013,7 +3013,6 @@ class HPhi: public HValue { ...@@ -3013,7 +3013,6 @@ class HPhi: public HValue {
virtual Range* InferRange(Zone* zone); virtual Range* InferRange(Zone* zone);
virtual void InferRepresentation(HInferRepresentation* h_infer); virtual void InferRepresentation(HInferRepresentation* h_infer);
Representation RepresentationObservedByAllNonPhiUses();
Representation RepresentationFromUseRequirements(); Representation RepresentationFromUseRequirements();
virtual Representation RequiredInputRepresentation(int index) { virtual Representation RequiredInputRepresentation(int index) {
return representation(); return representation();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment