| Index: src/interpreter/interpreter.cc
|
| diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
|
| index ea31df3e493ff13ff8d878cd81b496ee587ed64d..635844b6b3d6422753fd7f4f7db41416aa38d4d4 100644
|
| --- a/src/interpreter/interpreter.cc
|
| +++ b/src/interpreter/interpreter.cc
|
| @@ -1003,8 +1003,8 @@
|
| {
|
| Variable var_type_feedback(assembler, MachineRepresentation::kWord32);
|
| Label lhs_is_not_smi(assembler), lhs_is_not_number(assembler),
|
| - lhs_is_not_oddball(assembler), lhs_is_not_string(assembler),
|
| - gather_rhs_type(assembler), update_feedback(assembler);
|
| + lhs_is_not_string(assembler), gather_rhs_type(assembler),
|
| + update_feedback(assembler);
|
|
|
| __ GotoUnless(__ TaggedIsSmi(lhs), &lhs_is_not_smi);
|
|
|
| @@ -1025,31 +1025,19 @@
|
| __ Bind(&lhs_is_not_number);
|
| {
|
| Node* lhs_instance_type = __ LoadInstanceType(lhs);
|
| - Node* lhs_is_oddball =
|
| - __ Word32Equal(lhs_instance_type, __ Int32Constant(ODDBALL_TYPE));
|
| - __ GotoUnless(lhs_is_oddball, &lhs_is_not_oddball);
|
| -
|
| - var_type_feedback.Bind(
|
| - __ Int32Constant(CompareOperationFeedback::kNumberOrOddball));
|
| + Node* lhs_type =
|
| + __ Select(__ IsStringInstanceType(lhs_instance_type),
|
| + __ Int32Constant(CompareOperationFeedback::kString),
|
| + __ Int32Constant(CompareOperationFeedback::kAny));
|
| +
|
| + var_type_feedback.Bind(lhs_type);
|
| __ Goto(&gather_rhs_type);
|
| -
|
| - __ Bind(&lhs_is_not_oddball);
|
| - {
|
| - Node* lhs_type =
|
| - __ Select(__ IsStringInstanceType(lhs_instance_type),
|
| - __ Int32Constant(CompareOperationFeedback::kString),
|
| - __ Int32Constant(CompareOperationFeedback::kAny));
|
| -
|
| - var_type_feedback.Bind(lhs_type);
|
| - __ Goto(&gather_rhs_type);
|
| - }
|
| }
|
| }
|
|
|
| __ Bind(&gather_rhs_type);
|
| {
|
| - Label rhs_is_not_smi(assembler), rhs_is_not_number(assembler),
|
| - rhs_is_not_oddball(assembler);
|
| + Label rhs_is_not_smi(assembler), rhs_is_not_number(assembler);
|
|
|
| __ GotoUnless(__ TaggedIsSmi(rhs), &rhs_is_not_smi);
|
|
|
| @@ -1072,24 +1060,13 @@
|
| __ Bind(&rhs_is_not_number);
|
| {
|
| Node* rhs_instance_type = __ LoadInstanceType(rhs);
|
| - Node* rhs_is_oddball =
|
| - __ Word32Equal(rhs_instance_type, __ Int32Constant(ODDBALL_TYPE));
|
| - __ GotoUnless(rhs_is_oddball, &rhs_is_not_oddball);
|
| -
|
| + Node* rhs_type =
|
| + __ Select(__ IsStringInstanceType(rhs_instance_type),
|
| + __ Int32Constant(CompareOperationFeedback::kString),
|
| + __ Int32Constant(CompareOperationFeedback::kAny));
|
| var_type_feedback.Bind(
|
| - __ Int32Constant(CompareOperationFeedback::kNumberOrOddball));
|
| - __ Goto(&do_compare);
|
| -
|
| - __ Bind(&rhs_is_not_oddball);
|
| - {
|
| - Node* rhs_type =
|
| - __ Select(__ IsStringInstanceType(rhs_instance_type),
|
| - __ Int32Constant(CompareOperationFeedback::kString),
|
| - __ Int32Constant(CompareOperationFeedback::kAny));
|
| - var_type_feedback.Bind(
|
| - __ Word32Or(var_type_feedback.value(), rhs_type));
|
| - __ Goto(&update_feedback);
|
| - }
|
| + __ Word32Or(var_type_feedback.value(), rhs_type));
|
| + __ Goto(&update_feedback);
|
| }
|
| }
|
| }
|
|
|