diff --git a/src/builtins/builtins-object-gen.cc b/src/builtins/builtins-object-gen.cc index 546375c78162..8a91682687e9 100644 --- a/src/builtins/builtins-object-gen.cc +++ b/src/builtins/builtins-object-gen.cc @@ -771,11 +771,15 @@ TF_BUILTIN(ObjectPrototypeToString, ObjectBuiltinsAssembler) { // as the exception is observable. Node* receiver_is_array = CallRuntime(Runtime::kArrayIsArray, context, receiver); - Node* builtin_tag = SelectTaggedConstant( - IsTrue(receiver_is_array), LoadRoot(Heap::kArray_stringRootIndex), - SelectTaggedConstant(IsCallableMap(receiver_map), - LoadRoot(Heap::kFunction_stringRootIndex), - LoadRoot(Heap::kObject_stringRootIndex))); + TNode builtin_tag = Select( + IsTrue(receiver_is_array), + [=] { return CAST(LoadRoot(Heap::kArray_stringRootIndex)); }, + [=] { + return Select( + IsCallableMap(receiver_map), + [=] { return CAST(LoadRoot(Heap::kFunction_stringRootIndex)); }, + [=] { return CAST(LoadRoot(Heap::kObject_stringRootIndex)); }); + }); // Lookup the @@toStringTag property on the {receiver}. VARIABLE(var_tag, MachineRepresentation::kTagged, diff --git a/src/builtins/builtins-string-gen.cc b/src/builtins/builtins-string-gen.cc index e50702b9ab62..debfe818a6f5 100644 --- a/src/builtins/builtins-string-gen.cc +++ b/src/builtins/builtins-string-gen.cc @@ -1943,7 +1943,7 @@ TNode StringBuiltinsAssembler::ToSmiBetweenZeroAnd( { TNode const zero = SmiConstant(0); var_result = - SelectTaggedConstant(SmiLessThan(value_smi, zero), zero, limit); + SelectConstant(SmiLessThan(value_smi, zero), zero, limit); Goto(&out); } } @@ -1956,8 +1956,8 @@ TNode StringBuiltinsAssembler::ToSmiBetweenZeroAnd( TNode const float_zero = Float64Constant(0.); TNode const smi_zero = SmiConstant(0); TNode const value_float = LoadHeapNumberValue(value_int_hn); - var_result = SelectTaggedConstant(Float64LessThan(value_float, float_zero), - smi_zero, limit); + var_result = SelectConstant(Float64LessThan(value_float, float_zero), + smi_zero, limit); Goto(&out); } diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc index 03066bc9ad47..2677825132de 100644 --- a/src/code-stub-assembler.cc +++ b/src/code-stub-assembler.cc @@ -561,11 +561,11 @@ TNode CodeStubAssembler::SmiToFloat64(SloppyTNode value) { } TNode CodeStubAssembler::SmiMax(SloppyTNode a, SloppyTNode b) { - return SelectTaggedConstant(SmiLessThan(a, b), b, a); + return SelectConstant(SmiLessThan(a, b), b, a); } TNode CodeStubAssembler::SmiMin(SloppyTNode a, SloppyTNode b) { - return SelectTaggedConstant(SmiLessThan(a, b), a, b); + return SelectConstant(SmiLessThan(a, b), a, b); } TNode CodeStubAssembler::NumberMax(SloppyTNode a, @@ -1397,9 +1397,11 @@ TNode CodeStubAssembler::TaggedDoesntHaveInstanceType( TNode CodeStubAssembler::LoadFastProperties( SloppyTNode object) { CSA_SLOW_ASSERT(this, Word32Not(IsDictionaryMap(LoadMap(object)))); - Node* properties = LoadObjectField(object, JSObject::kPropertiesOrHashOffset); - return SelectTaggedConstant( - TaggedIsSmi(properties), EmptyFixedArrayConstant(), properties); + TNode properties = + LoadObjectField(object, JSObject::kPropertiesOrHashOffset); + return Select(TaggedIsSmi(properties), + [=] { return EmptyFixedArrayConstant(); }, + [=] { return CAST(properties); }); } TNode CodeStubAssembler::LoadSlowProperties( @@ -1407,9 +1409,9 @@ TNode CodeStubAssembler::LoadSlowProperties( CSA_SLOW_ASSERT(this, IsDictionaryMap(LoadMap(object))); TNode properties = LoadObjectField(object, JSObject::kPropertiesOrHashOffset); - return SelectTaggedConstant(TaggedIsSmi(properties), - EmptyPropertyDictionaryConstant(), - CAST(properties)); + return Select(TaggedIsSmi(properties), + [=] { return EmptyPropertyDictionaryConstant(); }, + [=] { return CAST(properties); }); } TNode CodeStubAssembler::LoadElements( diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h index af349f3bd824..2258b945741a 100644 --- a/src/code-stub-assembler.h +++ b/src/code-stub-assembler.h @@ -279,7 +279,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { } #define SMI_COMPARISON_OP(SmiOpName, IntPtrOpName) \ - Node* SmiOpName(Node* a, Node* b) { \ + TNode SmiOpName(Node* a, Node* b) { \ return IntPtrOpName(BitcastTaggedToWord(a), BitcastTaggedToWord(b)); \ } SMI_COMPARISON_OP(SmiEqual, WordEqual) @@ -376,13 +376,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { TNode SelectIntPtrConstant(SloppyTNode condition, int true_value, int false_value); TNode SelectBooleanConstant(SloppyTNode condition); - template - TNode SelectTaggedConstant(SloppyTNode condition, - TNode true_value, - SloppyTNode false_value) { - static_assert(std::is_base_of::value, "not a tagged type"); - return SelectConstant(condition, true_value, false_value); - } TNode SelectSmiConstant(SloppyTNode condition, Smi* true_value, Smi* false_value); TNode SelectSmiConstant(SloppyTNode condition, int true_value,