| Index: src/code-stub-assembler.cc
|
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
| index 20a06824389a58d9459622270c7516e3310ef518..94a61c38dd7bf10948dd3467379cde91035a7785 100644
|
| --- a/src/code-stub-assembler.cc
|
| +++ b/src/code-stub-assembler.cc
|
| @@ -158,11 +158,9 @@ Node* CodeStubAssembler::StaleRegisterConstant() {
|
| Node* CodeStubAssembler::IntPtrOrSmiConstant(int value, ParameterMode mode) {
|
| if (mode == SMI_PARAMETERS) {
|
| return SmiConstant(Smi::FromInt(value));
|
| - } else if (mode == INTPTR_PARAMETERS) {
|
| - return IntPtrConstant(value);
|
| } else {
|
| - DCHECK_EQ(INTEGER_PARAMETERS, mode);
|
| - return Int32Constant(value);
|
| + DCHECK_EQ(INTPTR_PARAMETERS, mode);
|
| + return IntPtrConstant(value);
|
| }
|
| }
|
|
|
| @@ -1864,15 +1862,13 @@ Node* CodeStubAssembler::AllocateRegExpResult(Node* context, Node* length,
|
| Node* const zero = IntPtrConstant(0);
|
| Node* const length_intptr = SmiUntag(length);
|
| const ElementsKind elements_kind = FAST_ELEMENTS;
|
| - const ParameterMode parameter_mode = INTPTR_PARAMETERS;
|
|
|
| - Node* const elements =
|
| - AllocateFixedArray(elements_kind, length_intptr, parameter_mode);
|
| + Node* const elements = AllocateFixedArray(elements_kind, length_intptr);
|
| StoreObjectField(result, JSArray::kElementsOffset, elements);
|
|
|
| // Fill in the elements with undefined.
|
| FillFixedArrayWithValue(elements_kind, elements, zero, length_intptr,
|
| - Heap::kUndefinedValueRootIndex, parameter_mode);
|
| + Heap::kUndefinedValueRootIndex);
|
|
|
| return result;
|
| }
|
| @@ -3165,12 +3161,13 @@ Node* CodeStubAssembler::StringFromCharCode(Node* code) {
|
| {
|
| // Load the isolate wide single character string cache.
|
| Node* cache = LoadRoot(Heap::kSingleCharacterStringCacheRootIndex);
|
| + Node* code_index = ChangeUint32ToWord(code);
|
|
|
| // Check if we have an entry for the {code} in the single character string
|
| // cache already.
|
| Label if_entryisundefined(this, Label::kDeferred),
|
| if_entryisnotundefined(this);
|
| - Node* entry = LoadFixedArrayElement(cache, code);
|
| + Node* entry = LoadFixedArrayElement(cache, code_index);
|
| Branch(WordEqual(entry, UndefinedConstant()), &if_entryisundefined,
|
| &if_entryisnotundefined);
|
|
|
| @@ -3181,7 +3178,7 @@ Node* CodeStubAssembler::StringFromCharCode(Node* code) {
|
| StoreNoWriteBarrier(
|
| MachineRepresentation::kWord8, result,
|
| IntPtrConstant(SeqOneByteString::kHeaderSize - kHeapObjectTag), code);
|
| - StoreFixedArrayElement(cache, code, result);
|
| + StoreFixedArrayElement(cache, code_index, result);
|
| var_result.Bind(result);
|
| Goto(&if_done);
|
| }
|
| @@ -3774,8 +3771,7 @@ Node* CodeStubAssembler::NumberToString(Node* context, Node* argument) {
|
| Node* index = WordAnd(hash, SmiUntag(BitcastWordToTagged(mask)));
|
|
|
| // Cache entry's key must be a heap number
|
| - Node* number_key =
|
| - LoadFixedArrayElement(number_string_cache, index, 0, INTPTR_PARAMETERS);
|
| + Node* number_key = LoadFixedArrayElement(number_string_cache, index);
|
| GotoIf(TaggedIsSmi(number_key), &runtime);
|
| map = LoadMap(number_key);
|
| GotoUnless(IsHeapNumberMap(map), &runtime);
|
| @@ -3790,8 +3786,7 @@ Node* CodeStubAssembler::NumberToString(Node* context, Node* argument) {
|
|
|
| // Heap number match, return value fro cache entry.
|
| IncrementCounter(isolate()->counters()->number_to_string_native(), 1);
|
| - result.Bind(LoadFixedArrayElement(number_string_cache, index, kPointerSize,
|
| - INTPTR_PARAMETERS));
|
| + result.Bind(LoadFixedArrayElement(number_string_cache, index, kPointerSize));
|
| Goto(&done);
|
|
|
| Bind(&runtime);
|
| @@ -4429,8 +4424,7 @@ void CodeStubAssembler::NameDictionaryLookup(Node* dictionary,
|
| Node* index = EntryToIndex<Dictionary>(entry);
|
| var_name_index->Bind(index);
|
|
|
| - Node* current =
|
| - LoadFixedArrayElement(dictionary, index, 0, INTPTR_PARAMETERS);
|
| + Node* current = LoadFixedArrayElement(dictionary, index);
|
| GotoIf(WordEqual(current, unique_name), if_found);
|
|
|
| // See Dictionary::NextProbe().
|
| @@ -4459,8 +4453,7 @@ void CodeStubAssembler::NameDictionaryLookup(Node* dictionary,
|
| Node* index = EntryToIndex<Dictionary>(entry);
|
| var_name_index->Bind(index);
|
|
|
| - Node* current =
|
| - LoadFixedArrayElement(dictionary, index, 0, INTPTR_PARAMETERS);
|
| + Node* current = LoadFixedArrayElement(dictionary, index);
|
| GotoIf(WordEqual(current, undefined), if_not_found);
|
| if (mode == kFindExisting) {
|
| GotoIf(WordEqual(current, unique_name), if_found);
|
| @@ -4538,8 +4531,7 @@ void CodeStubAssembler::NumberDictionaryLookup(Node* dictionary,
|
| Node* entry = var_entry->value();
|
|
|
| Node* index = EntryToIndex<Dictionary>(entry);
|
| - Node* current =
|
| - LoadFixedArrayElement(dictionary, index, 0, INTPTR_PARAMETERS);
|
| + Node* current = LoadFixedArrayElement(dictionary, index);
|
| GotoIf(WordEqual(current, undefined), if_not_found);
|
| Label next_probe(this);
|
| {
|
| @@ -4597,13 +4589,12 @@ void CodeStubAssembler::InsertEntry<NameDictionary>(Node* dictionary,
|
| Node* index,
|
| Node* enum_index) {
|
| // Store name and value.
|
| - StoreFixedArrayElement(dictionary, index, name, UPDATE_WRITE_BARRIER, 0,
|
| - INTPTR_PARAMETERS);
|
| + StoreFixedArrayElement(dictionary, index, name);
|
| const int kNameToValueOffset =
|
| (NameDictionary::kEntryValueIndex - NameDictionary::kEntryKeyIndex) *
|
| kPointerSize;
|
| StoreFixedArrayElement(dictionary, index, value, UPDATE_WRITE_BARRIER,
|
| - kNameToValueOffset, INTPTR_PARAMETERS);
|
| + kNameToValueOffset);
|
|
|
| // Prepare details of the new property.
|
| Variable var_details(this, MachineRepresentation::kTaggedSigned);
|
| @@ -4631,8 +4622,7 @@ void CodeStubAssembler::InsertEntry<NameDictionary>(Node* dictionary,
|
| (NameDictionary::kEntryDetailsIndex - NameDictionary::kEntryKeyIndex) *
|
| kPointerSize;
|
| StoreFixedArrayElement(dictionary, index, var_details.value(),
|
| - SKIP_WRITE_BARRIER, kNameToDetailsOffset,
|
| - INTPTR_PARAMETERS);
|
| + SKIP_WRITE_BARRIER, kNameToDetailsOffset);
|
| }
|
|
|
| template <>
|
| @@ -4694,16 +4684,15 @@ void CodeStubAssembler::DescriptorLookupLinear(Node* unique_name,
|
| Node* factor = IntPtrConstant(DescriptorArray::kDescriptorSize);
|
| Node* last_exclusive = IntPtrAdd(first_inclusive, IntPtrMul(nof, factor));
|
|
|
| - BuildFastLoop(MachineType::PointerRepresentation(), last_exclusive,
|
| - first_inclusive,
|
| - [this, descriptors, unique_name, if_found,
|
| - var_name_index](Node* name_index) {
|
| - Node* candidate_name = LoadFixedArrayElement(
|
| - descriptors, name_index, 0, INTPTR_PARAMETERS);
|
| - var_name_index->Bind(name_index);
|
| - GotoIf(WordEqual(candidate_name, unique_name), if_found);
|
| - },
|
| - -DescriptorArray::kDescriptorSize, IndexAdvanceMode::kPre);
|
| + BuildFastLoop(
|
| + MachineType::PointerRepresentation(), last_exclusive, first_inclusive,
|
| + [this, descriptors, unique_name, if_found,
|
| + var_name_index](Node* name_index) {
|
| + Node* candidate_name = LoadFixedArrayElement(descriptors, name_index);
|
| + var_name_index->Bind(name_index);
|
| + GotoIf(WordEqual(candidate_name, unique_name), if_found);
|
| + },
|
| + -DescriptorArray::kDescriptorSize, IndexAdvanceMode::kPre);
|
| Goto(if_not_found);
|
| }
|
|
|
| @@ -4817,8 +4806,8 @@ void CodeStubAssembler::LoadPropertyFromFastObject(Node* object, Node* map,
|
| (DescriptorArray::kDescriptorValue - DescriptorArray::kDescriptorKey) *
|
| kPointerSize;
|
|
|
| - Node* details = LoadAndUntagToWord32FixedArrayElement(
|
| - descriptors, name_index, name_to_details_offset, INTPTR_PARAMETERS);
|
| + Node* details = LoadAndUntagToWord32FixedArrayElement(descriptors, name_index,
|
| + name_to_details_offset);
|
| var_details->Bind(details);
|
|
|
| Node* location = DecodeWord32<PropertyDetails::LocationField>(details);
|
| @@ -4874,8 +4863,7 @@ void CodeStubAssembler::LoadPropertyFromFastObject(Node* object, Node* map,
|
| Comment("if_backing_store");
|
| Node* properties = LoadProperties(object);
|
| field_index = IntPtrSub(field_index, inobject_properties);
|
| - Node* value =
|
| - LoadFixedArrayElement(properties, field_index, 0, INTPTR_PARAMETERS);
|
| + Node* value = LoadFixedArrayElement(properties, field_index);
|
|
|
| Label if_double(this), if_tagged(this);
|
| Branch(Word32NotEqual(representation,
|
| @@ -4902,8 +4890,8 @@ void CodeStubAssembler::LoadPropertyFromFastObject(Node* object, Node* map,
|
| }
|
| Bind(&if_in_descriptor);
|
| {
|
| - Node* value = LoadFixedArrayElement(
|
| - descriptors, name_index, name_to_value_offset, INTPTR_PARAMETERS);
|
| + Node* value =
|
| + LoadFixedArrayElement(descriptors, name_index, name_to_value_offset);
|
| var_value->Bind(value);
|
| Goto(&done);
|
| }
|
| @@ -4925,12 +4913,12 @@ void CodeStubAssembler::LoadPropertyFromNameDictionary(Node* dictionary,
|
| (NameDictionary::kEntryValueIndex - NameDictionary::kEntryKeyIndex) *
|
| kPointerSize;
|
|
|
| - Node* details = LoadAndUntagToWord32FixedArrayElement(
|
| - dictionary, name_index, name_to_details_offset, INTPTR_PARAMETERS);
|
| + Node* details = LoadAndUntagToWord32FixedArrayElement(dictionary, name_index,
|
| + name_to_details_offset);
|
|
|
| var_details->Bind(details);
|
| - var_value->Bind(LoadFixedArrayElement(
|
| - dictionary, name_index, name_to_value_offset, INTPTR_PARAMETERS));
|
| + var_value->Bind(
|
| + LoadFixedArrayElement(dictionary, name_index, name_to_value_offset));
|
|
|
| Comment("] LoadPropertyFromNameDictionary");
|
| }
|
| @@ -4947,8 +4935,8 @@ void CodeStubAssembler::LoadPropertyFromGlobalDictionary(Node* dictionary,
|
| (GlobalDictionary::kEntryValueIndex - GlobalDictionary::kEntryKeyIndex) *
|
| kPointerSize;
|
|
|
| - Node* property_cell = LoadFixedArrayElement(
|
| - dictionary, name_index, name_to_value_offset, INTPTR_PARAMETERS);
|
| + Node* property_cell =
|
| + LoadFixedArrayElement(dictionary, name_index, name_to_value_offset);
|
|
|
| Node* value = LoadObjectField(property_cell, PropertyCell::kValueOffset);
|
| GotoIf(WordEqual(value, TheHoleConstant()), if_deleted);
|
| @@ -5110,8 +5098,7 @@ void CodeStubAssembler::TryLookupElement(Node* object, Node* map,
|
|
|
| GotoUnless(UintPtrLessThan(intptr_index, length), &if_oob);
|
|
|
| - Node* element =
|
| - LoadFixedArrayElement(elements, intptr_index, 0, INTPTR_PARAMETERS);
|
| + Node* element = LoadFixedArrayElement(elements, intptr_index);
|
| Node* the_hole = TheHoleConstant();
|
| Branch(WordEqual(element, the_hole), if_not_found, if_found);
|
| }
|
| @@ -5430,10 +5417,6 @@ Node* CodeStubAssembler::ElementOffsetFromIndex(Node* index_node,
|
| constant_index = ToSmiConstant(index_node, smi_index);
|
| if (constant_index) index = smi_index->value();
|
| index_node = BitcastTaggedToWord(index_node);
|
| - } else if (mode == INTEGER_PARAMETERS) {
|
| - int32_t temp = 0;
|
| - constant_index = ToInt32Constant(index_node, temp);
|
| - index = static_cast<intptr_t>(temp);
|
| } else {
|
| DCHECK(mode == INTPTR_PARAMETERS);
|
| constant_index = ToIntPtrConstant(index_node, index);
|
| @@ -5441,9 +5424,6 @@ Node* CodeStubAssembler::ElementOffsetFromIndex(Node* index_node,
|
| if (constant_index) {
|
| return IntPtrConstant(base_size + element_size * index);
|
| }
|
| - if (Is64() && mode == INTEGER_PARAMETERS) {
|
| - index_node = ChangeInt32ToInt64(index_node);
|
| - }
|
|
|
| Node* shifted_index =
|
| (element_size_shift == 0)
|
| @@ -5469,11 +5449,11 @@ void CodeStubAssembler::UpdateFeedback(Node* feedback,
|
| // our new feedback in place.
|
| // TODO(interpreter): Consider passing the feedback as Smi already to avoid
|
| // the tagging completely.
|
| - Node* previous_feedback = LoadFixedArrayElement(type_feedback_vector, slot_id,
|
| - 0, INTPTR_PARAMETERS);
|
| + Node* previous_feedback =
|
| + LoadFixedArrayElement(type_feedback_vector, slot_id);
|
| Node* combined_feedback = SmiOr(previous_feedback, SmiFromWord32(feedback));
|
| StoreFixedArrayElement(type_feedback_vector, slot_id, combined_feedback,
|
| - SKIP_WRITE_BARRIER, 0, INTPTR_PARAMETERS);
|
| + SKIP_WRITE_BARRIER);
|
| }
|
|
|
| Node* CodeStubAssembler::LoadReceiverMap(Node* receiver) {
|
| @@ -5665,8 +5645,8 @@ Node* CodeStubAssembler::EmitKeyedSloppyArguments(Node* receiver, Node* key,
|
|
|
| GotoIf(UintPtrGreaterThanOrEqual(key, adjusted_length), &if_unmapped);
|
|
|
| - Node* mapped_index = LoadFixedArrayElement(
|
| - elements, IntPtrAdd(key, intptr_two), 0, INTPTR_PARAMETERS);
|
| + Node* mapped_index =
|
| + LoadFixedArrayElement(elements, IntPtrAdd(key, intptr_two));
|
| Branch(WordEqual(mapped_index, TheHoleConstant()), &if_unmapped, &if_mapped);
|
|
|
| Bind(&if_mapped);
|
| @@ -5680,13 +5660,11 @@ Node* CodeStubAssembler::EmitKeyedSloppyArguments(Node* receiver, Node* key,
|
| DCHECK_EQ(Context::SlotOffset(0) + kHeapObjectTag,
|
| FixedArray::OffsetOfElementAt(0));
|
| if (is_load) {
|
| - Node* result = LoadFixedArrayElement(the_context, mapped_index, 0,
|
| - INTPTR_PARAMETERS);
|
| + Node* result = LoadFixedArrayElement(the_context, mapped_index);
|
| CSA_ASSERT(this, WordNotEqual(result, TheHoleConstant()));
|
| var_result.Bind(result);
|
| } else {
|
| - StoreFixedArrayElement(the_context, mapped_index, value,
|
| - UPDATE_WRITE_BARRIER, 0, INTPTR_PARAMETERS);
|
| + StoreFixedArrayElement(the_context, mapped_index, value);
|
| }
|
| Goto(&end);
|
| }
|
| @@ -5703,13 +5681,11 @@ Node* CodeStubAssembler::EmitKeyedSloppyArguments(Node* receiver, Node* key,
|
|
|
| // The key falls into unmapped range.
|
| if (is_load) {
|
| - Node* result =
|
| - LoadFixedArrayElement(backing_store, key, 0, INTPTR_PARAMETERS);
|
| + Node* result = LoadFixedArrayElement(backing_store, key);
|
| GotoIf(WordEqual(result, TheHoleConstant()), bailout);
|
| var_result.Bind(result);
|
| } else {
|
| - StoreFixedArrayElement(backing_store, key, value, UPDATE_WRITE_BARRIER, 0,
|
| - INTPTR_PARAMETERS);
|
| + StoreFixedArrayElement(backing_store, key, value);
|
| }
|
| Goto(&end);
|
| }
|
| @@ -8124,9 +8100,8 @@ Node* CodeStubAssembler::CreateArrayIterator(Node* array, Node* array_map,
|
|
|
| Bind(&allocate_iterator);
|
| {
|
| - Node* map =
|
| - LoadFixedArrayElement(LoadNativeContext(context), var_map_index.value(),
|
| - 0, INTPTR_PARAMETERS);
|
| + Node* map = LoadFixedArrayElement(LoadNativeContext(context),
|
| + var_map_index.value());
|
| var_result.Bind(AllocateJSArrayIterator(array, var_array_map.value(), map));
|
| Goto(&return_result);
|
| }
|
|
|