| Index: src/crankshaft/x87/lithium-x87.cc
|
| diff --git a/src/crankshaft/x87/lithium-x87.cc b/src/crankshaft/x87/lithium-x87.cc
|
| index 642f68b1833b17cde7e1f39ae075074037a1385e..c030639f77af3b31787ef554fc11142fa9d1ba78 100644
|
| --- a/src/crankshaft/x87/lithium-x87.cc
|
| +++ b/src/crankshaft/x87/lithium-x87.cc
|
| @@ -915,18 +915,20 @@ LInstruction* LChunkBuilder::DoBranch(HBranch* instr) {
|
| HValue* value = instr->value();
|
| Representation r = value->representation();
|
| HType type = value->type();
|
| - ToBooleanICStub::Types expected = instr->expected_input_types();
|
| - if (expected.IsEmpty()) expected = ToBooleanICStub::Types::Generic();
|
| + ToBooleanHints expected = instr->expected_input_types();
|
| + if (expected == ToBooleanHint::kNone) expected = ToBooleanHint::kAny;
|
|
|
| bool easy_case = !r.IsTagged() || type.IsBoolean() || type.IsSmi() ||
|
| type.IsJSArray() || type.IsHeapNumber() || type.IsString();
|
| - LOperand* temp = !easy_case && expected.NeedsMap() ? TempRegister() : NULL;
|
| + LOperand* temp = !easy_case && (expected & ToBooleanHint::kNeedsMap)
|
| + ? TempRegister()
|
| + : NULL;
|
| LInstruction* branch =
|
| temp != NULL ? new (zone()) LBranch(UseRegister(value), temp)
|
| : new (zone()) LBranch(UseRegisterAtStart(value), temp);
|
| - if (!easy_case &&
|
| - ((!expected.Contains(ToBooleanICStub::SMI) && expected.NeedsMap()) ||
|
| - !expected.IsGeneric())) {
|
| + if (!easy_case && ((!(expected & ToBooleanHint::kSmallInteger) &&
|
| + (expected & ToBooleanHint::kNeedsMap)) ||
|
| + expected != ToBooleanHint::kAny)) {
|
| branch = AssignEnvironment(branch);
|
| }
|
| return branch;
|
|
|