| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index 3e06643f9a2cdf1188970e6c148d5b433ea6ff67..de18700d5ee7856c0b302fdb7ef516f99e088fda 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -731,9 +731,8 @@ compiler::Node* AddStub::Generate(CodeStubAssembler* assembler,
|
| // Check if the {rhs} is a HeapNumber.
|
| Label if_rhsisnumber(assembler),
|
| if_rhsisnotnumber(assembler, Label::kDeferred);
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| - assembler->Branch(assembler->WordEqual(rhs_map, number_map),
|
| - &if_rhsisnumber, &if_rhsisnotnumber);
|
| + assembler->Branch(assembler->IsHeapNumberMap(rhs_map), &if_rhsisnumber,
|
| + &if_rhsisnotnumber);
|
|
|
| assembler->Bind(&if_rhsisnumber);
|
| {
|
| @@ -1097,9 +1096,8 @@ compiler::Node* AddWithFeedbackStub::Generate(
|
| Node* rhs_map = assembler->LoadMap(rhs);
|
|
|
| // Check if the {rhs} is a HeapNumber.
|
| - assembler->GotoUnless(
|
| - assembler->WordEqual(rhs_map, assembler->HeapNumberMapConstant()),
|
| - &call_add_stub);
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map),
|
| + &call_add_stub);
|
|
|
| var_fadd_lhs.Bind(assembler->SmiToFloat64(lhs));
|
| var_fadd_rhs.Bind(assembler->LoadHeapNumberValue(rhs));
|
| @@ -1114,9 +1112,7 @@ compiler::Node* AddWithFeedbackStub::Generate(
|
|
|
| // Check if {lhs} is a HeapNumber.
|
| Label if_lhsisnumber(assembler), if_lhsisnotnumber(assembler);
|
| - assembler->GotoUnless(
|
| - assembler->WordEqual(lhs_map, assembler->HeapNumberMapConstant()),
|
| - &call_add_stub);
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(lhs_map), &call_add_stub);
|
|
|
| // Check if the {rhs} is Smi.
|
| Label if_rhsissmi(assembler), if_rhsisnotsmi(assembler);
|
| @@ -1135,8 +1131,7 @@ compiler::Node* AddWithFeedbackStub::Generate(
|
| Node* rhs_map = assembler->LoadMap(rhs);
|
|
|
| // Check if the {rhs} is a HeapNumber.
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| - assembler->GotoUnless(assembler->WordEqual(rhs_map, number_map),
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map),
|
| &call_add_stub);
|
|
|
| var_fadd_lhs.Bind(assembler->LoadHeapNumberValue(lhs));
|
| @@ -1243,9 +1238,8 @@ compiler::Node* SubtractStub::Generate(CodeStubAssembler* assembler,
|
| // Check if {rhs} is a HeapNumber.
|
| Label if_rhsisnumber(assembler),
|
| if_rhsisnotnumber(assembler, Label::kDeferred);
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| - assembler->Branch(assembler->WordEqual(rhs_map, number_map),
|
| - &if_rhsisnumber, &if_rhsisnotnumber);
|
| + assembler->Branch(assembler->IsHeapNumberMap(rhs_map), &if_rhsisnumber,
|
| + &if_rhsisnotnumber);
|
|
|
| assembler->Bind(&if_rhsisnumber);
|
| {
|
| @@ -1406,9 +1400,8 @@ compiler::Node* SubtractWithFeedbackStub::Generate(
|
| Node* rhs_map = assembler->LoadMap(rhs);
|
|
|
| // Check if {rhs} is a HeapNumber.
|
| - assembler->GotoUnless(
|
| - assembler->WordEqual(rhs_map, assembler->HeapNumberMapConstant()),
|
| - &call_subtract_stub);
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map),
|
| + &call_subtract_stub);
|
|
|
| // Perform a floating point subtraction.
|
| var_fsub_lhs.Bind(assembler->SmiToFloat64(lhs));
|
| @@ -1423,9 +1416,8 @@ compiler::Node* SubtractWithFeedbackStub::Generate(
|
| Node* lhs_map = assembler->LoadMap(lhs);
|
|
|
| // Check if the {lhs} is a HeapNumber.
|
| - assembler->GotoUnless(
|
| - assembler->WordEqual(lhs_map, assembler->HeapNumberMapConstant()),
|
| - &call_subtract_stub);
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(lhs_map),
|
| + &call_subtract_stub);
|
|
|
| // Check if the {rhs} is a Smi.
|
| Label if_rhsissmi(assembler), if_rhsisnotsmi(assembler);
|
| @@ -1445,9 +1437,8 @@ compiler::Node* SubtractWithFeedbackStub::Generate(
|
| Node* rhs_map = assembler->LoadMap(rhs);
|
|
|
| // Check if the {rhs} is a HeapNumber.
|
| - assembler->GotoUnless(
|
| - assembler->WordEqual(rhs_map, assembler->HeapNumberMapConstant()),
|
| - &call_subtract_stub);
|
| + assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map),
|
| + &call_subtract_stub);
|
|
|
| // Perform a floating point subtraction.
|
| var_fsub_lhs.Bind(assembler->LoadHeapNumberValue(lhs));
|
| @@ -2573,8 +2564,7 @@ compiler::Node* IncStub::Generate(CodeStubAssembler* assembler,
|
| Label if_valueisnumber(assembler),
|
| if_valuenotnumber(assembler, Label::kDeferred);
|
| Node* value_map = assembler->LoadMap(value);
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| - assembler->Branch(assembler->WordEqual(value_map, number_map),
|
| + assembler->Branch(assembler->IsHeapNumberMap(value_map),
|
| &if_valueisnumber, &if_valuenotnumber);
|
|
|
| assembler->Bind(&if_valueisnumber);
|
| @@ -2677,8 +2667,7 @@ compiler::Node* DecStub::Generate(CodeStubAssembler* assembler,
|
| Label if_valueisnumber(assembler),
|
| if_valuenotnumber(assembler, Label::kDeferred);
|
| Node* value_map = assembler->LoadMap(value);
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| - assembler->Branch(assembler->WordEqual(value_map, number_map),
|
| + assembler->Branch(assembler->IsHeapNumberMap(value_map),
|
| &if_valueisnumber, &if_valuenotnumber);
|
|
|
| assembler->Bind(&if_valueisnumber);
|
| @@ -2749,9 +2738,7 @@ void ToObjectStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| assembler->Bind(&if_notsmi);
|
| Node* map = assembler->LoadMap(object);
|
|
|
| - assembler->GotoIf(
|
| - assembler->WordEqual(map, assembler->HeapNumberMapConstant()),
|
| - &if_number);
|
| + assembler->GotoIf(assembler->IsHeapNumberMap(map), &if_number);
|
|
|
| Node* instance_type = assembler->LoadMapInstanceType(map);
|
| assembler->GotoIf(
|
| @@ -2819,9 +2806,7 @@ compiler::Node* TypeofStub::Generate(CodeStubAssembler* assembler,
|
|
|
| Node* map = assembler->LoadMap(value);
|
|
|
| - assembler->GotoIf(
|
| - assembler->WordEqual(map, assembler->HeapNumberMapConstant()),
|
| - &return_number);
|
| + assembler->GotoIf(assembler->IsHeapNumberMap(map), &return_number);
|
|
|
| Node* instance_type = assembler->LoadMapInstanceType(map);
|
|
|
| @@ -3048,11 +3033,10 @@ compiler::Node* GenerateAbstractRelationalComparison(
|
| Node* rhs_map = assembler->LoadMap(rhs);
|
|
|
| // Check if the {rhs} is a HeapNumber.
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| Label if_rhsisnumber(assembler),
|
| if_rhsisnotnumber(assembler, Label::kDeferred);
|
| - assembler->Branch(assembler->WordEqual(rhs_map, number_map),
|
| - &if_rhsisnumber, &if_rhsisnotnumber);
|
| + assembler->Branch(assembler->IsHeapNumberMap(rhs_map), &if_rhsisnumber,
|
| + &if_rhsisnotnumber);
|
|
|
| assembler->Bind(&if_rhsisnumber);
|
| {
|
| @@ -3358,10 +3342,9 @@ void GenerateEqual_Same(CodeStubAssembler* assembler, compiler::Node* value,
|
| Node* value_map = assembler->LoadMap(value);
|
|
|
| // Check if {value} (and therefore {rhs}) is a HeapNumber.
|
| - Node* number_map = assembler->HeapNumberMapConstant();
|
| Label if_valueisnumber(assembler), if_valueisnotnumber(assembler);
|
| - assembler->Branch(assembler->WordEqual(value_map, number_map),
|
| - &if_valueisnumber, &if_valueisnotnumber);
|
| + assembler->Branch(assembler->IsHeapNumberMap(value_map), &if_valueisnumber,
|
| + &if_valueisnotnumber);
|
|
|
| assembler->Bind(&if_valueisnumber);
|
| {
|
| @@ -3498,9 +3481,8 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode,
|
| assembler->Bind(&if_rhsisnotstring);
|
| {
|
| // Check if the {rhs} is a Boolean.
|
| - Node* boolean_map = assembler->BooleanMapConstant();
|
| Label if_rhsisboolean(assembler), if_rhsisnotboolean(assembler);
|
| - assembler->Branch(assembler->WordEqual(rhs_map, boolean_map),
|
| + assembler->Branch(assembler->IsBooleanMap(rhs_map),
|
| &if_rhsisboolean, &if_rhsisnotboolean);
|
|
|
| assembler->Bind(&if_rhsisboolean);
|
| @@ -3696,8 +3678,7 @@ compiler::Node* GenerateEqual(CodeStubAssembler* assembler, ResultMode mode,
|
| // Check if {rhs} is a Boolean.
|
| Label if_rhsisboolean(assembler),
|
| if_rhsisnotboolean(assembler);
|
| - Node* boolean_map = assembler->BooleanMapConstant();
|
| - assembler->Branch(assembler->WordEqual(rhs_map, boolean_map),
|
| + assembler->Branch(assembler->IsBooleanMap(rhs_map),
|
| &if_rhsisboolean, &if_rhsisnotboolean);
|
|
|
| assembler->Bind(&if_rhsisboolean);
|
| @@ -4302,9 +4283,7 @@ void StoreGlobalStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| // This is always valid for all states a cell can be in.
|
| assembler->GotoIf(assembler->WordNotEqual(cell_contents, value), &miss);
|
| } else {
|
| - assembler->GotoIf(
|
| - assembler->WordEqual(cell_contents, assembler->TheHoleConstant()),
|
| - &miss);
|
| + assembler->GotoIf(assembler->IsTheHole(cell_contents), &miss);
|
|
|
| // When dealing with constant types, the type may be allowed to change, as
|
| // long as optimized code remains valid.
|
| @@ -4526,8 +4505,7 @@ void ToLengthStub::GenerateAssembly(CodeStubAssembler* assembler) const {
|
| // Check if {len} is a HeapNumber.
|
| Label if_lenisheapnumber(assembler),
|
| if_lenisnotheapnumber(assembler, Label::kDeferred);
|
| - assembler->Branch(assembler->WordEqual(assembler->LoadMap(len),
|
| - assembler->HeapNumberMapConstant()),
|
| + assembler->Branch(assembler->IsHeapNumberMap(assembler->LoadMap(len)),
|
| &if_lenisheapnumber, &if_lenisnotheapnumber);
|
|
|
| assembler->Bind(&if_lenisheapnumber);
|
| @@ -4650,9 +4628,7 @@ compiler::Node* FastCloneShallowObjectStub::GenerateFastPath(
|
| literals_array, literals_index,
|
| LiteralsArray::kFirstLiteralIndex * kPointerSize,
|
| CodeStubAssembler::SMI_PARAMETERS);
|
| - Node* undefined = assembler->UndefinedConstant();
|
| - assembler->GotoIf(assembler->WordEqual(allocation_site, undefined),
|
| - call_runtime);
|
| + assembler->GotoIf(assembler->IsUndefined(allocation_site), call_runtime);
|
|
|
| // Calculate the object and allocation size based on the properties count.
|
| Node* object_size = assembler->IntPtrAdd(
|
| @@ -5291,15 +5267,13 @@ compiler::Node* FastCloneRegExpStub::Generate(CodeStubAssembler* assembler,
|
|
|
| Variable result(assembler, MachineRepresentation::kTagged);
|
|
|
| - Node* undefined = assembler->UndefinedConstant();
|
| Node* literals_array =
|
| assembler->LoadObjectField(closure, JSFunction::kLiteralsOffset);
|
| Node* boilerplate = assembler->LoadFixedArrayElement(
|
| literals_array, literal_index,
|
| LiteralsArray::kFirstLiteralIndex * kPointerSize,
|
| CodeStubAssembler::SMI_PARAMETERS);
|
| - assembler->GotoIf(assembler->WordEqual(boilerplate, undefined),
|
| - &call_runtime);
|
| + assembler->GotoIf(assembler->IsUndefined(boilerplate), &call_runtime);
|
|
|
| {
|
| int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kPointerSize;
|
| @@ -5404,9 +5378,7 @@ compiler::Node* FastCloneShallowArrayStub::Generate(
|
| LiteralsArray::kFirstLiteralIndex * kPointerSize,
|
| CodeStubAssembler::SMI_PARAMETERS);
|
|
|
| - Node* undefined = assembler->UndefinedConstant();
|
| - assembler->GotoIf(assembler->WordEqual(allocation_site, undefined),
|
| - call_runtime);
|
| + assembler->GotoIf(assembler->IsUndefined(allocation_site), call_runtime);
|
| allocation_site = assembler->LoadFixedArrayElement(
|
| literals_array, literal_index,
|
| LiteralsArray::kFirstLiteralIndex * kPointerSize,
|
| @@ -5424,21 +5396,15 @@ compiler::Node* FastCloneShallowArrayStub::Generate(
|
| assembler->GotoIf(assembler->SmiEqual(capacity, zero), &zero_capacity);
|
|
|
| Node* elements_map = assembler->LoadMap(boilerplate_elements);
|
| - assembler->GotoIf(
|
| - assembler->WordEqual(elements_map, assembler->FixedCowArrayMapConstant()),
|
| - &cow_elements);
|
| + assembler->GotoIf(assembler->IsFixedCOWArrayMap(elements_map), &cow_elements);
|
|
|
| - assembler->GotoIf(
|
| - assembler->WordEqual(elements_map, assembler->FixedArrayMapConstant()),
|
| - &fast_elements);
|
| + assembler->GotoIf(assembler->IsFixedArrayMap(elements_map), &fast_elements);
|
| {
|
| assembler->Comment("fast double elements path");
|
| if (FLAG_debug_code) {
|
| Label correct_elements_map(assembler), abort(assembler, Label::kDeferred);
|
| - assembler->BranchIf(
|
| - assembler->WordEqual(elements_map,
|
| - assembler->FixedDoubleArrayMapConstant()),
|
| - &correct_elements_map, &abort);
|
| + assembler->BranchIf(assembler->IsFixedDoubleArrayMap(elements_map),
|
| + &correct_elements_map, &abort);
|
|
|
| assembler->Bind(&abort);
|
| {
|
|
|