| Index: src/hydrogen.cc
|
| ===================================================================
|
| --- src/hydrogen.cc (revision 9208)
|
| +++ src/hydrogen.cc (working copy)
|
| @@ -1649,18 +1649,20 @@
|
| int non_tagged_count = double_count + int32_count;
|
|
|
| // If a non-loop phi has tagged uses, don't convert it to untagged.
|
| - if (value->IsPhi() && !value->block()->IsLoopHeader()) {
|
| - if (tagged_count > 0) return Representation::None();
|
| + if (value->IsPhi() && !value->block()->IsLoopHeader() && tagged_count > 0) {
|
| + return Representation::None();
|
| }
|
|
|
| - if (non_tagged_count >= tagged_count) {
|
| - if (int32_count > 0) {
|
| - if (!value->IsPhi() || value->IsConvertibleToInteger()) {
|
| - return Representation::Integer32();
|
| - }
|
| - }
|
| - if (double_count > 0) return Representation::Double();
|
| + // Prefer unboxing over boxing, the latter is more expensive.
|
| + if (tagged_count > non_tagged_count) Representation::None();
|
| +
|
| + // Prefer Integer32 over Double, if possible.
|
| + if (int32_count > 0 && value->IsConvertibleToInteger()) {
|
| + return Representation::Integer32();
|
| }
|
| +
|
| + if (double_count > 0) return Representation::Double();
|
| +
|
| return Representation::None();
|
| }
|
|
|
|
|