Chromium Code Reviews| Index: src/code-stubs.cc |
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
| index de18700d5ee7856c0b302fdb7ef516f99e088fda..3cf3ab579d246dad867f20bbbe66998219962832 100644 |
| --- a/src/code-stubs.cc |
| +++ b/src/code-stubs.cc |
| @@ -749,9 +749,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| // Check if the {rhs} is a String. |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler, Label::kDeferred); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->Branch(assembler->IsStringInstanceType(rhs_instance_type), |
| &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| @@ -767,9 +765,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| Label if_rhsisreceiver(assembler, Label::kDeferred), |
| if_rhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
|
jgruber
2016/10/04 13:35:54
This is an (oft-repeated) example of previously br
Igor Sheludko
2016/10/05 08:02:27
The old logic is also ok, it's just the order of a
jgruber
2016/10/05 08:39:38
Ah, right - that makes more sense.
|
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -801,9 +797,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| // Check if {lhs} is a String. |
| Label if_lhsisstring(assembler), if_lhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - lhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->Branch(assembler->IsStringInstanceType(lhs_instance_type), |
| &if_lhsisstring, &if_lhsisnotstring); |
| assembler->Bind(&if_lhsisstring); |
| @@ -845,9 +839,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| Label if_lhsisreceiver(assembler, Label::kDeferred), |
| if_lhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - lhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(lhs_instance_type), |
| &if_lhsisreceiver, &if_lhsisnotreceiver); |
| assembler->Bind(&if_lhsisreceiver); |
| @@ -877,9 +869,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| // Check if {rhs} is a String. |
| Label if_rhsisstring(assembler), if_rhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->Branch(assembler->IsStringInstanceType(rhs_instance_type), |
| &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| @@ -922,9 +912,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| Label if_rhsisreceiver(assembler, Label::kDeferred), |
| if_rhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -953,9 +941,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| Label if_lhsisreceiver(assembler, Label::kDeferred), |
| if_lhsisnotreceiver(assembler); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - lhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(lhs_instance_type), |
| &if_lhsisreceiver, &if_lhsisnotreceiver); |
| assembler->Bind(&if_lhsisreceiver); |
| @@ -973,9 +959,7 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler, |
| Label if_rhsisreceiver(assembler, Label::kDeferred), |
| if_rhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -2741,10 +2725,8 @@ void ToObjectStub::GenerateAssembly(CodeStubAssembler* assembler) const { |
| assembler->GotoIf(assembler->IsHeapNumberMap(map), &if_number); |
| Node* instance_type = assembler->LoadMapInstanceType(map); |
| - assembler->GotoIf( |
| - assembler->Int32GreaterThanOrEqual( |
| - instance_type, assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE)), |
| - &if_jsreceiver); |
| + assembler->GotoIf(assembler->IsJSReceiverInstanceType(instance_type), |
| + &if_jsreceiver); |
| Node* constructor_function_index = |
| assembler->LoadMapConstructorFunctionIndex(map); |
| @@ -2828,15 +2810,11 @@ compiler::Node* TypeofStub::Generate(CodeStubAssembler* assembler, |
| assembler->Int32Constant(0)), |
| &return_undefined); |
| - assembler->GotoIf( |
| - assembler->Int32GreaterThanOrEqual( |
| - instance_type, assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE)), |
| - &return_object); |
| + assembler->GotoIf(assembler->IsJSReceiverInstanceType(instance_type), |
| + &return_object); |
| - assembler->GotoIf( |
| - assembler->Int32LessThan(instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| - &return_string); |
| + assembler->GotoIf(assembler->IsStringInstanceType(instance_type), |
| + &return_string); |
| #define SIMD128_BRANCH(TYPE, Type, type, lane_count, lane_type) \ |
| Label return_##type(assembler); \ |
| @@ -3152,9 +3130,7 @@ compiler::Node* GenerateAbstractRelationalComparison( |
| // Check if {lhs} is a String. |
| Label if_lhsisstring(assembler), |
| if_lhsisnotstring(assembler, Label::kDeferred); |
| - assembler->Branch(assembler->Int32LessThan( |
| - lhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->Branch(assembler->IsStringInstanceType(lhs_instance_type), |
| &if_lhsisstring, &if_lhsisnotstring); |
| assembler->Bind(&if_lhsisstring); |
| @@ -3165,10 +3141,9 @@ compiler::Node* GenerateAbstractRelationalComparison( |
| // Check if {rhs} is also a String. |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler, Label::kDeferred); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, assembler->Int32Constant( |
| - FIRST_NONSTRING_TYPE)), |
| - &if_rhsisstring, &if_rhsisnotstring); |
| + assembler->Branch( |
| + assembler->IsStringInstanceType(rhs_instance_type), |
| + &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| { |
| @@ -3212,9 +3187,7 @@ compiler::Node* GenerateAbstractRelationalComparison( |
| Label if_rhsisreceiver(assembler, Label::kDeferred), |
| if_rhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -3246,9 +3219,7 @@ compiler::Node* GenerateAbstractRelationalComparison( |
| Label if_lhsisreceiver(assembler, Label::kDeferred), |
| if_lhsisnotreceiver(assembler, Label::kDeferred); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - lhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(lhs_instance_type), |
| &if_lhsisreceiver, &if_lhsisnotreceiver); |
| assembler->Bind(&if_lhsisreceiver); |
| @@ -3465,10 +3436,9 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| // Check if the {rhs} is a String. |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, assembler->Int32Constant( |
| - FIRST_NONSTRING_TYPE)), |
| - &if_rhsisstring, &if_rhsisnotstring); |
| + assembler->Branch( |
| + assembler->IsStringInstanceType(rhs_instance_type), |
| + &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| { |
| @@ -3500,9 +3470,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| Label if_rhsisreceiver(assembler, Label::kDeferred), |
| if_rhsisnotreceiver(assembler); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -3584,10 +3552,9 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| // Check if {rhs} is also a String. |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, assembler->Int32Constant( |
| - FIRST_NONSTRING_TYPE)), |
| - &if_rhsisstring, &if_rhsisnotstring); |
| + assembler->Branch( |
| + assembler->IsStringInstanceType(rhs_instance_type), |
| + &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| { |
| @@ -3636,9 +3603,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler); |
| assembler->Branch( |
| - assembler->Int32LessThan( |
| - rhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->IsStringInstanceType(rhs_instance_type), |
| &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| @@ -3656,9 +3621,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| if_rhsisnotreceiver(assembler); |
| STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -3746,9 +3709,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| Label if_rhsisreceiver(assembler), if_rhsisnotreceiver(assembler); |
| STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -3793,9 +3754,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| Label if_rhsisreceiver(assembler), if_rhsisnotreceiver(assembler); |
| STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -3823,9 +3782,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode, |
| Label if_rhsisreceiver(assembler), if_rhsisnotreceiver(assembler); |
| STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
| assembler->Branch( |
| - assembler->Int32LessThanOrEqual( |
| - assembler->Int32Constant(FIRST_JS_RECEIVER_TYPE), |
| - rhs_instance_type), |
| + assembler->IsJSReceiverInstanceType(rhs_instance_type), |
| &if_rhsisreceiver, &if_rhsisnotreceiver); |
| assembler->Bind(&if_rhsisreceiver); |
| @@ -4061,9 +4018,7 @@ compiler::Node* GenerateStrictEqual(CodeStubAssembler* assembler, |
| // Check if {lhs} is a String. |
| Label if_lhsisstring(assembler), if_lhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - lhs_instance_type, |
| - assembler->Int32Constant(FIRST_NONSTRING_TYPE)), |
| + assembler->Branch(assembler->IsStringInstanceType(lhs_instance_type), |
| &if_lhsisstring, &if_lhsisnotstring); |
| assembler->Bind(&if_lhsisstring); |
| @@ -4074,10 +4029,9 @@ compiler::Node* GenerateStrictEqual(CodeStubAssembler* assembler, |
| // Check if {rhs} is also a String. |
| Label if_rhsisstring(assembler, Label::kDeferred), |
| if_rhsisnotstring(assembler); |
| - assembler->Branch(assembler->Int32LessThan( |
| - rhs_instance_type, assembler->Int32Constant( |
| - FIRST_NONSTRING_TYPE)), |
| - &if_rhsisstring, &if_rhsisnotstring); |
| + assembler->Branch( |
| + assembler->IsStringInstanceType(rhs_instance_type), |
| + &if_rhsisstring, &if_rhsisnotstring); |
| assembler->Bind(&if_rhsisstring); |
| { |