| Index: src/code-stub-assembler.cc
|
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
| index fc73d66c1b89945239913e51b0d3c68bf40f22b5..49ab829dcf6f70cb90ebef3989d2f8b19bc5f35b 100644
|
| --- a/src/code-stub-assembler.cc
|
| +++ b/src/code-stub-assembler.cc
|
| @@ -196,11 +196,10 @@ Node* CodeStubAssembler::Float64Round(Node* x) {
|
| Node* one = Float64Constant(1.0);
|
| Node* one_half = Float64Constant(0.5);
|
|
|
| - Variable var_x(this, MachineRepresentation::kFloat64);
|
| Label return_x(this);
|
|
|
| // Round up {x} towards Infinity.
|
| - var_x.Bind(Float64Ceil(x));
|
| + Variable var_x(this, MachineRepresentation::kFloat64, Float64Ceil(x));
|
|
|
| GotoIf(Float64LessThanOrEqual(Float64Sub(var_x.value(), one_half), x),
|
| &return_x);
|
| @@ -221,9 +220,8 @@ Node* CodeStubAssembler::Float64Ceil(Node* x) {
|
| Node* two_52 = Float64Constant(4503599627370496.0E0);
|
| Node* minus_two_52 = Float64Constant(-4503599627370496.0E0);
|
|
|
| - Variable var_x(this, MachineRepresentation::kFloat64);
|
| + Variable var_x(this, MachineRepresentation::kFloat64, x);
|
| Label return_x(this), return_minus_x(this);
|
| - var_x.Bind(x);
|
|
|
| // Check if {x} is greater than zero.
|
| Label if_xgreaterthanzero(this), if_xnotgreaterthanzero(this);
|
| @@ -274,9 +272,8 @@ Node* CodeStubAssembler::Float64Floor(Node* x) {
|
| Node* two_52 = Float64Constant(4503599627370496.0E0);
|
| Node* minus_two_52 = Float64Constant(-4503599627370496.0E0);
|
|
|
| - Variable var_x(this, MachineRepresentation::kFloat64);
|
| + Variable var_x(this, MachineRepresentation::kFloat64, x);
|
| Label return_x(this), return_minus_x(this);
|
| - var_x.Bind(x);
|
|
|
| // Check if {x} is greater than zero.
|
| Label if_xgreaterthanzero(this), if_xnotgreaterthanzero(this);
|
| @@ -358,9 +355,8 @@ Node* CodeStubAssembler::Float64Trunc(Node* x) {
|
| Node* two_52 = Float64Constant(4503599627370496.0E0);
|
| Node* minus_two_52 = Float64Constant(-4503599627370496.0E0);
|
|
|
| - Variable var_x(this, MachineRepresentation::kFloat64);
|
| + Variable var_x(this, MachineRepresentation::kFloat64, x);
|
| Label return_x(this), return_minus_x(this);
|
| - var_x.Bind(x);
|
|
|
| // Check if {x} is greater than 0.
|
| Label if_xgreaterthanzero(this), if_xnotgreaterthanzero(this);
|
| @@ -675,8 +671,7 @@ void CodeStubAssembler::BranchIfSimd128Equal(Node* lhs, Node* lhs_map,
|
| void CodeStubAssembler::BranchIfPrototypesHaveNoElements(
|
| Node* receiver_map, Label* definitely_no_elements,
|
| Label* possibly_elements) {
|
| - Variable var_map(this, MachineRepresentation::kTagged);
|
| - var_map.Bind(receiver_map);
|
| + Variable var_map(this, MachineRepresentation::kTagged, receiver_map);
|
| Label loop_body(this, &var_map);
|
| Node* empty_elements = LoadRoot(Heap::kEmptyFixedArrayRootIndex);
|
| Goto(&loop_body);
|
| @@ -811,8 +806,8 @@ Node* CodeStubAssembler::AllocateRawAligned(Node* size_in_bytes,
|
| Node* limit_address) {
|
| Node* top = Load(MachineType::Pointer(), top_address);
|
| Node* limit = Load(MachineType::Pointer(), limit_address);
|
| - Variable adjusted_size(this, MachineType::PointerRepresentation());
|
| - adjusted_size.Bind(size_in_bytes);
|
| + Variable adjusted_size(this, MachineType::PointerRepresentation(),
|
| + size_in_bytes);
|
| if (flags & kDoubleAlignment) {
|
| // TODO(epertoso): Simd128 alignment.
|
| Label aligned(this), not_aligned(this), merge(this, &adjusted_size);
|
| @@ -831,8 +826,9 @@ Node* CodeStubAssembler::AllocateRawAligned(Node* size_in_bytes,
|
| Bind(&merge);
|
| }
|
|
|
| - Variable address(this, MachineRepresentation::kTagged);
|
| - address.Bind(AllocateRawUnaligned(adjusted_size.value(), kNone, top, limit));
|
| + Variable address(
|
| + this, MachineRepresentation::kTagged,
|
| + AllocateRawUnaligned(adjusted_size.value(), kNone, top, limit));
|
|
|
| Label needs_filler(this), doesnt_need_filler(this),
|
| merge_address(this, &address);
|
| @@ -1176,8 +1172,8 @@ Node* CodeStubAssembler::LoadMapConstructorFunctionIndex(Node* map) {
|
|
|
| Node* CodeStubAssembler::LoadMapConstructor(Node* map) {
|
| CSA_SLOW_ASSERT(this, IsMap(map));
|
| - Variable result(this, MachineRepresentation::kTagged);
|
| - result.Bind(LoadObjectField(map, Map::kConstructorOrBackPointerOffset));
|
| + Variable result(this, MachineRepresentation::kTagged,
|
| + LoadObjectField(map, Map::kConstructorOrBackPointerOffset));
|
|
|
| Label done(this), loop(this, &result);
|
| Goto(&loop);
|
| @@ -1483,12 +1479,12 @@ Node* CodeStubAssembler::BuildAppendJSArray(ElementsKind kind, Node* context,
|
| Comment("BuildAppendJSArray: %s", ElementsKindToString(kind));
|
| Label pre_bailout(this);
|
| Label success(this);
|
| - Variable var_elements(this, MachineRepresentation::kTagged);
|
| Variable var_tagged_length(this, MachineRepresentation::kTagged);
|
| ParameterMode mode = OptimalParameterMode();
|
| - Variable var_length(this, OptimalParameterRepresentation());
|
| - var_length.Bind(TaggedToParameter(LoadJSArrayLength(array), mode));
|
| - var_elements.Bind(LoadElements(array));
|
| + Variable var_length(this, OptimalParameterRepresentation(),
|
| + TaggedToParameter(LoadJSArrayLength(array), mode));
|
| + Variable var_elements(this, MachineRepresentation::kTagged,
|
| + LoadElements(array));
|
| Node* capacity =
|
| TaggedToParameter(LoadFixedArrayBaseLength(var_elements.value()), mode);
|
|
|
| @@ -2196,9 +2192,9 @@ void CodeStubAssembler::CopyFixedArrayElements(
|
|
|
| Node* limit_offset = ElementOffsetFromIndex(
|
| IntPtrOrSmiConstant(0, mode), from_kind, mode, first_element_offset);
|
| - Variable var_from_offset(this, MachineType::PointerRepresentation());
|
| - var_from_offset.Bind(ElementOffsetFromIndex(element_count, from_kind, mode,
|
| - first_element_offset));
|
| + Variable var_from_offset(this, MachineType::PointerRepresentation(),
|
| + ElementOffsetFromIndex(element_count, from_kind,
|
| + mode, first_element_offset));
|
| // This second variable is used only when the element sizes of source and
|
| // destination arrays do not match.
|
| Variable var_to_offset(this, MachineType::PointerRepresentation());
|
| @@ -2323,9 +2319,9 @@ void CodeStubAssembler::CopyStringCharacters(Node* from_string, Node* to_string,
|
| int from_increment = 1 << ElementsKindToShiftSize(from_kind);
|
| int to_increment = 1 << ElementsKindToShiftSize(to_kind);
|
|
|
| - Variable current_to_offset(this, MachineType::PointerRepresentation());
|
| + Variable current_to_offset(this, MachineType::PointerRepresentation(),
|
| + to_offset);
|
| VariableList vars({¤t_to_offset}, zone());
|
| - current_to_offset.Bind(to_offset);
|
| int to_index_constant = 0, from_index_constant = 0;
|
| Smi* to_index_smi = nullptr;
|
| Smi* from_index_smi = nullptr;
|
| @@ -2534,10 +2530,9 @@ Node* CodeStubAssembler::TruncateTaggedToFloat64(Node* context, Node* value) {
|
|
|
| Node* CodeStubAssembler::TruncateTaggedToWord32(Node* context, Node* value) {
|
| // We might need to loop once due to ToNumber conversion.
|
| - Variable var_value(this, MachineRepresentation::kTagged),
|
| + Variable var_value(this, MachineRepresentation::kTagged, value),
|
| var_result(this, MachineRepresentation::kWord32);
|
| Label loop(this, &var_value), done_loop(this, &var_result);
|
| - var_value.Bind(value);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -2702,8 +2697,7 @@ Node* CodeStubAssembler::ChangeUint32ToTagged(Node* value) {
|
|
|
| Node* CodeStubAssembler::ToThisString(Node* context, Node* value,
|
| char const* method_name) {
|
| - Variable var_value(this, MachineRepresentation::kTagged);
|
| - var_value.Bind(value);
|
| + Variable var_value(this, MachineRepresentation::kTagged, value);
|
|
|
| // Check if the {value} is a Smi or a HeapObject.
|
| Label if_valueissmi(this, Label::kDeferred), if_valueisnotsmi(this),
|
| @@ -2784,10 +2778,9 @@ Node* CodeStubAssembler::ToThisValue(Node* context, Node* value,
|
| PrimitiveType primitive_type,
|
| char const* method_name) {
|
| // We might need to loop once due to JSValue unboxing.
|
| - Variable var_value(this, MachineRepresentation::kTagged);
|
| + Variable var_value(this, MachineRepresentation::kTagged, value);
|
| Label loop(this, &var_value), done_loop(this),
|
| done_throw(this, Label::kDeferred);
|
| - var_value.Bind(value);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -3025,13 +3018,11 @@ Node* CodeStubAssembler::StringCharCodeAt(Node* string, Node* index,
|
| index = ParameterToWord(index, parameter_mode);
|
|
|
| // We may need to loop in case of cons, thin, or sliced strings.
|
| - Variable var_index(this, MachineType::PointerRepresentation());
|
| + Variable var_index(this, MachineType::PointerRepresentation(), index);
|
| + Variable var_string(this, MachineRepresentation::kTagged, string);
|
| Variable var_result(this, MachineRepresentation::kWord32);
|
| - Variable var_string(this, MachineRepresentation::kTagged);
|
| Variable* loop_vars[] = {&var_index, &var_string};
|
| Label done_loop(this, &var_result), loop(this, 2, loop_vars);
|
| - var_string.Bind(string);
|
| - var_index.Bind(index);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -3328,16 +3319,15 @@ Node* CodeStubAssembler::SubString(Node* context, Node* string, Node* from,
|
| Label end(this);
|
| Label runtime(this);
|
|
|
| - Variable var_instance_type(this, MachineRepresentation::kWord32); // Int32.
|
| - Variable var_representation(this, MachineRepresentation::kWord32); // Int32.
|
| - Variable var_result(this, MachineRepresentation::kTagged); // String.
|
| - Variable var_from(this, MachineRepresentation::kTagged); // Smi.
|
| - Variable var_string(this, MachineRepresentation::kTagged); // String.
|
| + Node* const int_zero = Int32Constant(0);
|
|
|
| - var_instance_type.Bind(Int32Constant(0));
|
| - var_representation.Bind(Int32Constant(0));
|
| - var_string.Bind(string);
|
| - var_from.Bind(from);
|
| + // Int32 variables.
|
| + Variable var_instance_type(this, MachineRepresentation::kWord32, int_zero);
|
| + Variable var_representation(this, MachineRepresentation::kWord32, int_zero);
|
| +
|
| + Variable var_from(this, MachineRepresentation::kTagged, from); // Smi.
|
| + Variable var_string(this, MachineRepresentation::kTagged, string); // String.
|
| + Variable var_result(this, MachineRepresentation::kTagged); // String.
|
|
|
| // Make sure first argument is a string.
|
|
|
| @@ -3597,8 +3587,8 @@ void CodeStubAssembler::MaybeDerefIndirectStrings(Variable* var_left,
|
| Variable* var_right,
|
| Node* right_instance_type,
|
| Label* did_something) {
|
| - Variable var_did_something(this, MachineType::PointerRepresentation());
|
| - var_did_something.Bind(IntPtrConstant(0));
|
| + Variable var_did_something(this, MachineType::PointerRepresentation(),
|
| + IntPtrConstant(0));
|
| MaybeDerefIndirectString(var_left, left_instance_type, &var_did_something);
|
| MaybeDerefIndirectString(var_right, right_instance_type, &var_did_something);
|
|
|
| @@ -3636,13 +3626,11 @@ Node* CodeStubAssembler::StringAdd(Node* context, Node* left, Node* right,
|
| GotoIf(SmiAboveOrEqual(new_length, SmiConstant(String::kMaxLength)),
|
| &runtime);
|
|
|
| - Variable var_left(this, MachineRepresentation::kTagged);
|
| - Variable var_right(this, MachineRepresentation::kTagged);
|
| + Variable var_left(this, MachineRepresentation::kTagged, left);
|
| + Variable var_right(this, MachineRepresentation::kTagged, right);
|
| Variable* input_vars[2] = {&var_left, &var_right};
|
| Label non_cons(this, 2, input_vars);
|
| Label slow(this, Label::kDeferred);
|
| - var_left.Bind(left);
|
| - var_right.Bind(right);
|
| GotoIf(SmiLessThan(new_length, SmiConstant(ConsString::kMinLength)),
|
| &non_cons);
|
|
|
| @@ -3800,8 +3788,8 @@ Node* CodeStubAssembler::StringIndexOfChar(Node* context, Node* string,
|
|
|
| Node* CodeStubAssembler::StringFromCodePoint(Node* codepoint,
|
| UnicodeEncoding encoding) {
|
| - Variable var_result(this, MachineRepresentation::kTagged);
|
| - var_result.Bind(EmptyStringConstant());
|
| + Variable var_result(this, MachineRepresentation::kTagged,
|
| + EmptyStringConstant());
|
|
|
| Label if_isword16(this), if_isword32(this), return_result(this);
|
|
|
| @@ -4007,11 +3995,10 @@ Node* CodeStubAssembler::NonNumberToNumber(Node* context, Node* input) {
|
| CSA_ASSERT(this, Word32BinaryNot(IsHeapNumberMap(LoadMap(input))));
|
|
|
| // We might need to loop once here due to ToPrimitive conversions.
|
| - Variable var_input(this, MachineRepresentation::kTagged);
|
| + Variable var_input(this, MachineRepresentation::kTagged, input);
|
| Variable var_result(this, MachineRepresentation::kTagged);
|
| Label loop(this, &var_input);
|
| Label end(this);
|
| - var_input.Bind(input);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -4125,8 +4112,7 @@ Node* CodeStubAssembler::ToUint32(Node* context, Node* input) {
|
|
|
| Label out(this);
|
|
|
| - Variable var_result(this, MachineRepresentation::kTagged);
|
| - var_result.Bind(input);
|
| + Variable var_result(this, MachineRepresentation::kTagged, input);
|
|
|
| // Early exit for positive smis.
|
| {
|
| @@ -4288,9 +4274,8 @@ Node* CodeStubAssembler::JSReceiverToPrimitive(Node* context, Node* input) {
|
| Node* CodeStubAssembler::ToInteger(Node* context, Node* input,
|
| ToIntegerTruncationMode mode) {
|
| // We might need to loop once for ToNumber conversion.
|
| - Variable var_arg(this, MachineRepresentation::kTagged);
|
| + Variable var_arg(this, MachineRepresentation::kTagged, input);
|
| Label loop(this, &var_arg), out(this);
|
| - var_arg.Bind(input);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -4556,12 +4541,10 @@ void CodeStubAssembler::NameDictionaryLookup(Node* dictionary,
|
| Node* undefined = UndefinedConstant();
|
| Node* the_hole = mode == kFindExisting ? nullptr : TheHoleConstant();
|
|
|
| - Variable var_count(this, MachineType::PointerRepresentation());
|
| - Variable var_entry(this, MachineType::PointerRepresentation());
|
| + Variable var_count(this, MachineType::PointerRepresentation(), count);
|
| + Variable var_entry(this, MachineType::PointerRepresentation(), entry);
|
| Variable* loop_vars[] = {&var_count, &var_entry, var_name_index};
|
| Label loop(this, 3, loop_vars);
|
| - var_count.Bind(count);
|
| - var_entry.Bind(entry);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -4637,10 +4620,9 @@ void CodeStubAssembler::NumberDictionaryLookup(Node* dictionary,
|
| Node* undefined = UndefinedConstant();
|
| Node* the_hole = TheHoleConstant();
|
|
|
| - Variable var_count(this, MachineType::PointerRepresentation());
|
| + Variable var_count(this, MachineType::PointerRepresentation(), count);
|
| Variable* loop_vars[] = {&var_count, var_entry};
|
| Label loop(this, 2, loop_vars);
|
| - var_count.Bind(count);
|
| var_entry->Bind(entry);
|
| Goto(&loop);
|
| Bind(&loop);
|
| @@ -4714,13 +4696,13 @@ void CodeStubAssembler::InsertEntry<NameDictionary>(Node* dictionary,
|
| kNameToValueOffset);
|
|
|
| // Prepare details of the new property.
|
| - Variable var_details(this, MachineRepresentation::kTaggedSigned);
|
| const int kInitialIndex = 0;
|
| PropertyDetails d(kData, NONE, kInitialIndex, PropertyCellType::kNoCell);
|
| enum_index =
|
| SmiShl(enum_index, PropertyDetails::DictionaryStorageField::kShift);
|
| STATIC_ASSERT(kInitialIndex == 0);
|
| - var_details.Bind(SmiOr(SmiConstant(d.AsSmi()), enum_index));
|
| + Variable var_details(this, MachineRepresentation::kTaggedSigned,
|
| + SmiOr(SmiConstant(d.AsSmi()), enum_index));
|
|
|
| // Private names must be marked non-enumerable.
|
| Label not_private(this, &var_details);
|
| @@ -5073,8 +5055,7 @@ void CodeStubAssembler::LoadPropertyFromGlobalDictionary(Node* dictionary,
|
| Node* CodeStubAssembler::CallGetterIfAccessor(Node* value, Node* details,
|
| Node* context, Node* receiver,
|
| Label* if_bailout) {
|
| - Variable var_value(this, MachineRepresentation::kTagged);
|
| - var_value.Bind(value);
|
| + Variable var_value(this, MachineRepresentation::kTagged, value);
|
| Label done(this);
|
|
|
| Node* kind = DecodeWord32<PropertyDetails::KindField>(details);
|
| @@ -5304,16 +5285,14 @@ void CodeStubAssembler::TryPrototypeChainLookup(
|
|
|
| Bind(&if_iskeyunique);
|
| {
|
| - Variable var_holder(this, MachineRepresentation::kTagged);
|
| - Variable var_holder_map(this, MachineRepresentation::kTagged);
|
| - Variable var_holder_instance_type(this, MachineRepresentation::kWord32);
|
| + Variable var_holder(this, MachineRepresentation::kTagged, receiver);
|
| + Variable var_holder_map(this, MachineRepresentation::kTagged, map);
|
| + Variable var_holder_instance_type(this, MachineRepresentation::kWord32,
|
| + instance_type);
|
|
|
| Variable* merged_variables[] = {&var_holder, &var_holder_map,
|
| &var_holder_instance_type};
|
| Label loop(this, arraysize(merged_variables), merged_variables);
|
| - var_holder.Bind(receiver);
|
| - var_holder_map.Bind(map);
|
| - var_holder_instance_type.Bind(instance_type);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -5348,16 +5327,14 @@ void CodeStubAssembler::TryPrototypeChainLookup(
|
| }
|
| Bind(&if_keyisindex);
|
| {
|
| - Variable var_holder(this, MachineRepresentation::kTagged);
|
| - Variable var_holder_map(this, MachineRepresentation::kTagged);
|
| - Variable var_holder_instance_type(this, MachineRepresentation::kWord32);
|
| + Variable var_holder(this, MachineRepresentation::kTagged, receiver);
|
| + Variable var_holder_map(this, MachineRepresentation::kTagged, map);
|
| + Variable var_holder_instance_type(this, MachineRepresentation::kWord32,
|
| + instance_type);
|
|
|
| Variable* merged_variables[] = {&var_holder, &var_holder_map,
|
| &var_holder_instance_type};
|
| Label loop(this, arraysize(merged_variables), merged_variables);
|
| - var_holder.Bind(receiver);
|
| - var_holder_map.Bind(map);
|
| - var_holder_instance_type.Bind(instance_type);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -5440,9 +5417,9 @@ Node* CodeStubAssembler::OrdinaryHasInstance(Node* context, Node* callable,
|
| Node* callable_prototype =
|
| LoadObjectField(callable, JSFunction::kPrototypeOrInitialMapOffset);
|
| {
|
| - Variable var_callable_prototype(this, MachineRepresentation::kTagged);
|
| Label callable_prototype_valid(this);
|
| - var_callable_prototype.Bind(callable_prototype);
|
| + Variable var_callable_prototype(this, MachineRepresentation::kTagged,
|
| + callable_prototype);
|
|
|
| // Resolve the "prototype" if the {callable} has an initial map. Afterwards
|
| // the {callable_prototype} will be either the JSReceiver prototype object
|
| @@ -5466,8 +5443,7 @@ Node* CodeStubAssembler::OrdinaryHasInstance(Node* context, Node* callable,
|
| StoreRoot(Heap::kInstanceofCacheMapRootIndex, object_map);
|
|
|
| // Loop through the prototype chain looking for the {callable} prototype.
|
| - Variable var_object_map(this, MachineRepresentation::kTagged);
|
| - var_object_map.Bind(object_map);
|
| + Variable var_object_map(this, MachineRepresentation::kTagged, object_map);
|
| Label loop(this, &var_object_map);
|
| Goto(&loop);
|
| Bind(&loop);
|
| @@ -5780,8 +5756,7 @@ Node* CodeStubAssembler::Int32ToUint8Clamped(Node* int32_value) {
|
| Label done(this);
|
| Node* int32_zero = Int32Constant(0);
|
| Node* int32_255 = Int32Constant(255);
|
| - Variable var_value(this, MachineRepresentation::kWord32);
|
| - var_value.Bind(int32_value);
|
| + Variable var_value(this, MachineRepresentation::kWord32, int32_value);
|
| GotoIf(Uint32LessThanOrEqual(int32_value, int32_255), &done);
|
| var_value.Bind(int32_zero);
|
| GotoIf(Int32LessThan(int32_value, int32_zero), &done);
|
| @@ -5793,8 +5768,7 @@ Node* CodeStubAssembler::Int32ToUint8Clamped(Node* int32_value) {
|
|
|
| Node* CodeStubAssembler::Float64ToUint8Clamped(Node* float64_value) {
|
| Label done(this);
|
| - Variable var_value(this, MachineRepresentation::kWord32);
|
| - var_value.Bind(Int32Constant(0));
|
| + Variable var_value(this, MachineRepresentation::kWord32, Int32Constant(0));
|
| GotoIf(Float64LessThanOrEqual(float64_value, Float64Constant(0.0)), &done);
|
| var_value.Bind(Int32Constant(255));
|
| GotoIf(Float64LessThanOrEqual(Float64Constant(255.0), float64_value), &done);
|
| @@ -6024,10 +5998,9 @@ Node* CodeStubAssembler::CopyElementsOnWrite(Node* object, Node* elements,
|
| ElementsKind kind, Node* length,
|
| ParameterMode mode,
|
| Label* bailout) {
|
| - Variable new_elements_var(this, MachineRepresentation::kTagged);
|
| + Variable new_elements_var(this, MachineRepresentation::kTagged, elements);
|
| Label done(this);
|
|
|
| - new_elements_var.Bind(elements);
|
| GotoUnless(
|
| WordEqual(LoadMap(elements), LoadRoot(Heap::kFixedCOWArrayMapRootIndex)),
|
| &done);
|
| @@ -6156,11 +6129,10 @@ Node* CodeStubAssembler::EnumLength(Node* map) {
|
|
|
| void CodeStubAssembler::CheckEnumCache(Node* receiver, Label* use_cache,
|
| Label* use_runtime) {
|
| - Variable current_js_object(this, MachineRepresentation::kTagged);
|
| - current_js_object.Bind(receiver);
|
| + Variable current_js_object(this, MachineRepresentation::kTagged, receiver);
|
|
|
| - Variable current_map(this, MachineRepresentation::kTagged);
|
| - current_map.Bind(LoadMap(current_js_object.value()));
|
| + Variable current_map(this, MachineRepresentation::kTagged,
|
| + LoadMap(current_js_object.value()));
|
|
|
| // These variables are updated in the loop below.
|
| Variable* loop_vars[2] = {¤t_js_object, ¤t_map};
|
| @@ -6282,10 +6254,9 @@ void CodeStubAssembler::BuildFastLoop(
|
| const CodeStubAssembler::VariableList& vars,
|
| MachineRepresentation index_rep, Node* start_index, Node* end_index,
|
| const FastLoopBody& body, int increment, IndexAdvanceMode mode) {
|
| - Variable var(this, index_rep);
|
| + Variable var(this, index_rep, start_index);
|
| VariableList vars_copy(vars, zone());
|
| vars_copy.Add(&var, zone());
|
| - var.Bind(start_index);
|
| Label loop(this, vars_copy);
|
| Label after_loop(this);
|
| // Introduce an explicit second check of the termination condition before the
|
| @@ -6499,12 +6470,10 @@ Node* CodeStubAssembler::RelationalComparison(RelationalComparisonMode mode,
|
|
|
| // We might need to loop several times due to ToPrimitive and/or ToNumber
|
| // conversions.
|
| - Variable var_lhs(this, MachineRepresentation::kTagged),
|
| - var_rhs(this, MachineRepresentation::kTagged);
|
| + Variable var_lhs(this, MachineRepresentation::kTagged, lhs),
|
| + var_rhs(this, MachineRepresentation::kTagged, rhs);
|
| Variable* loop_vars[2] = {&var_lhs, &var_rhs};
|
| Label loop(this, 2, loop_vars);
|
| - var_lhs.Bind(lhs);
|
| - var_rhs.Bind(rhs);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
| @@ -6876,12 +6845,10 @@ Node* CodeStubAssembler::Equal(ResultMode mode, Node* lhs, Node* rhs,
|
|
|
| // We might need to loop several times due to ToPrimitive and/or ToNumber
|
| // conversions.
|
| - Variable var_lhs(this, MachineRepresentation::kTagged),
|
| - var_rhs(this, MachineRepresentation::kTagged);
|
| + Variable var_lhs(this, MachineRepresentation::kTagged, lhs),
|
| + var_rhs(this, MachineRepresentation::kTagged, rhs);
|
| Variable* loop_vars[2] = {&var_lhs, &var_rhs};
|
| Label loop(this, 2, loop_vars);
|
| - var_lhs.Bind(lhs);
|
| - var_rhs.Bind(rhs);
|
| Goto(&loop);
|
| Bind(&loop);
|
| {
|
|
|