Chromium Code Reviews| Index: src/hydrogen.cc |
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
| index 3c7bf5064b1683c2c8609a52ff6057d5eadda29d..fbe17e0e0d2062d08050535fdc92ace549e71db9 100644 |
| --- a/src/hydrogen.cc |
| +++ b/src/hydrogen.cc |
| @@ -1199,7 +1199,7 @@ void HGraphBuilder::AddIncrementCounter(StatsCounter* counter) { |
| HValue* new_value = AddUncasted<HAdd>(old_value, graph()->GetConstant1()); |
| new_value->ClearFlag(HValue::kCanOverflow); // Ignore counter overflow |
| Add<HStoreNamedField>(reference, HObjectAccess::ForCounter(), |
|
Toon Verwaest
2014/02/03 18:08:28
join lines
Igor Sheludko
2014/02/03 19:17:58
Done.
|
| - new_value, STORE_TO_INITIALIZED_ENTRY); |
| + new_value); |
| } |
| } |
| @@ -1337,15 +1337,14 @@ HValue* HGraphBuilder::BuildCheckForCapacityGrow(HValue* object, |
| new_length->ClearFlag(HValue::kCanOverflow); |
| Add<HStoreNamedField>(object, HObjectAccess::ForArrayLength(kind), |
|
Toon Verwaest
2014/02/03 18:08:28
join lines
Igor Sheludko
2014/02/03 19:17:58
It will be too long line.
|
| - new_length, INITIALIZING_STORE); |
| + new_length); |
| } |
| if (is_store && kind == FAST_SMI_ELEMENTS) { |
| HValue* checked_elements = environment()->Top(); |
| // Write zero to ensure that the new element is initialized with some smi. |
| - Add<HStoreKeyed>(checked_elements, key, graph()->GetConstant0(), kind, |
| - INITIALIZING_STORE); |
| + Add<HStoreKeyed>(checked_elements, key, graph()->GetConstant0(), kind); |
| } |
| length_checker.Else(); |
| @@ -1423,8 +1422,7 @@ void HGraphBuilder::BuildTransitionElementsKind(HValue* object, |
| if_builder.End(); |
| } |
| - Add<HStoreNamedField>(object, HObjectAccess::ForMap(), map, |
| - INITIALIZING_STORE); |
| + Add<HStoreNamedField>(object, HObjectAccess::ForMap(), map); |
| } |
| @@ -1885,14 +1883,10 @@ HValue* HGraphBuilder::BuildCreateConsString( |
| // Initialize the cons string fields. |
| Add<HStoreNamedField>(result, HObjectAccess::ForStringHashField(), |
| - Add<HConstant>(String::kEmptyHashField), |
| - INITIALIZING_STORE); |
| - Add<HStoreNamedField>(result, HObjectAccess::ForStringLength(), length, |
| - INITIALIZING_STORE); |
| - Add<HStoreNamedField>(result, HObjectAccess::ForConsStringFirst(), left, |
| - INITIALIZING_STORE); |
| - Add<HStoreNamedField>(result, HObjectAccess::ForConsStringSecond(), right, |
| - INITIALIZING_STORE); |
| + Add<HConstant>(String::kEmptyHashField)); |
| + Add<HStoreNamedField>(result, HObjectAccess::ForStringLength(), length); |
| + Add<HStoreNamedField>(result, HObjectAccess::ForConsStringFirst(), left); |
| + Add<HStoreNamedField>(result, HObjectAccess::ForConsStringSecond(), right); |
| // Count the native string addition. |
| AddIncrementCounter(isolate()->counters()->string_add_native()); |
| @@ -2041,10 +2035,8 @@ HValue* HGraphBuilder::BuildUncheckedStringAdd( |
| // Initialize the string fields. |
| Add<HStoreNamedField>(result, HObjectAccess::ForStringHashField(), |
| - Add<HConstant>(String::kEmptyHashField), |
| - INITIALIZING_STORE); |
| - Add<HStoreNamedField>(result, HObjectAccess::ForStringLength(), length, |
| - INITIALIZING_STORE); |
| + Add<HConstant>(String::kEmptyHashField)); |
| + Add<HStoreNamedField>(result, HObjectAccess::ForStringLength(), length); |
| // Copy characters to the result string. |
| IfBuilder if_twobyte(this); |
| @@ -2346,7 +2338,7 @@ void HGraphBuilder::BuildInitializeElementsHeader(HValue* elements, |
| AddStoreMapConstant(elements, map); |
| Add<HStoreNamedField>(elements, HObjectAccess::ForFixedArrayLength(), |
|
Toon Verwaest
2014/02/03 18:08:28
join lines
Igor Sheludko
2014/02/03 19:17:58
Too long line.
|
| - capacity, INITIALIZING_STORE); |
| + capacity); |
| } |
| @@ -2369,16 +2361,15 @@ HInnerAllocatedObject* HGraphBuilder::BuildJSArrayHeader(HValue* array, |
| HValue* allocation_site_payload, |
| HValue* length_field) { |
| - Add<HStoreNamedField>(array, HObjectAccess::ForMap(), array_map, |
| - INITIALIZING_STORE); |
| + Add<HStoreNamedField>(array, HObjectAccess::ForMap(), array_map); |
| HConstant* empty_fixed_array = |
| Add<HConstant>(isolate()->factory()->empty_fixed_array()); |
| HObjectAccess access = HObjectAccess::ForPropertiesPointer(); |
| - Add<HStoreNamedField>(array, access, empty_fixed_array, INITIALIZING_STORE); |
| + Add<HStoreNamedField>(array, access, empty_fixed_array); |
| Add<HStoreNamedField>(array, HObjectAccess::ForArrayLength(elements_kind), |
| - length_field, INITIALIZING_STORE); |
| + length_field); |
| if (mode == TRACK_ALLOCATION_SITE) { |
| BuildCreateAllocationMemento( |
| @@ -2392,8 +2383,7 @@ HInnerAllocatedObject* HGraphBuilder::BuildJSArrayHeader(HValue* array, |
| HInnerAllocatedObject* elements = Add<HInnerAllocatedObject>( |
| array, Add<HConstant>(elements_location)); |
| - Add<HStoreNamedField>(array, HObjectAccess::ForElementsPointer(), elements, |
| - INITIALIZING_STORE); |
| + Add<HStoreNamedField>(array, HObjectAccess::ForElementsPointer(), elements); |
| return elements; |
| } |
| @@ -2485,7 +2475,7 @@ HValue* HGraphBuilder::BuildGrowElementsCapacity(HValue* object, |
| length, new_capacity); |
| Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
|
Toon Verwaest
2014/02/03 18:08:28
join lines
Igor Sheludko
2014/02/03 19:17:58
Too long line.
|
| - new_elements, INITIALIZING_STORE); |
| + new_elements); |
| return new_elements; |
| } |
| @@ -2526,15 +2516,14 @@ void HGraphBuilder::BuildFillElementsWithHole(HValue* elements, |
| if (initial_capacity >= 0) { |
| for (int i = 0; i < initial_capacity; i++) { |
| HInstruction* key = Add<HConstant>(i); |
| - Add<HStoreKeyed>(elements, key, hole, elements_kind, |
| - PREINITIALIZING_STORE); |
| + Add<HStoreKeyed>(elements, key, hole, elements_kind); |
| } |
| } else { |
| LoopBuilder builder(this, context(), LoopBuilder::kPostIncrement); |
| HValue* key = builder.BeginBody(from, to, Token::LT); |
| - Add<HStoreKeyed>(elements, key, hole, elements_kind, PREINITIALIZING_STORE); |
| + Add<HStoreKeyed>(elements, key, hole, elements_kind); |
| builder.EndBody(); |
| } |
| @@ -2580,16 +2569,13 @@ void HGraphBuilder::BuildCopyElements(HValue* from_elements, |
| HConstant* hole_constant = IsFastDoubleElementsKind(to_elements_kind) |
| ? Add<HConstant>(FixedDoubleArray::hole_nan_as_double()) |
| : graph()->GetConstantHole(); |
| - Add<HStoreKeyed>(to_elements, key, hole_constant, kind, |
| - PREINITIALIZING_STORE); |
| + Add<HStoreKeyed>(to_elements, key, hole_constant, kind); |
| if_hole.Else(); |
| - HStoreKeyed* store = Add<HStoreKeyed>(to_elements, key, element, kind, |
| - INITIALIZING_STORE); |
| + HStoreKeyed* store = Add<HStoreKeyed>(to_elements, key, element, kind); |
| store->SetFlag(HValue::kAllowUndefinedAsNaN); |
| if_hole.End(); |
| } else { |
| - HStoreKeyed* store = Add<HStoreKeyed>(to_elements, key, element, kind, |
| - INITIALIZING_STORE); |
| + HStoreKeyed* store = Add<HStoreKeyed>(to_elements, key, element, kind); |
| store->SetFlag(HValue::kAllowUndefinedAsNaN); |
| } |
| @@ -2628,8 +2614,7 @@ HValue* HGraphBuilder::BuildCloneShallowArray(HValue* boilerplate, |
| HObjectAccess access = HObjectAccess::ForJSArrayOffset(i); |
| Add<HStoreNamedField>( |
| object, access, Add<HLoadNamedField>( |
| - boilerplate, static_cast<HValue*>(NULL), access), |
| - INITIALIZING_STORE); |
| + boilerplate, static_cast<HValue*>(NULL), access)); |
| } |
| } |
| @@ -2652,15 +2637,14 @@ HValue* HGraphBuilder::BuildCloneShallowArray(HValue* boilerplate, |
| NOT_TENURED, FIXED_ARRAY_TYPE); |
| } |
| Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
| - object_elements, INITIALIZING_STORE); |
| + object_elements); |
| // Copy the elements array header. |
| for (int i = 0; i < FixedArrayBase::kHeaderSize; i += kPointerSize) { |
| HObjectAccess access = HObjectAccess::ForFixedArrayHeader(i); |
| Add<HStoreNamedField>( |
| object_elements, access, Add<HLoadNamedField>( |
| - boilerplate_elements, static_cast<HValue*>(NULL), access), |
| - INITIALIZING_STORE); |
| + boilerplate_elements, static_cast<HValue*>(NULL), access)); |
| } |
| // Copy the elements array contents. |
| @@ -2671,8 +2655,7 @@ HValue* HGraphBuilder::BuildCloneShallowArray(HValue* boilerplate, |
| HValue* key_constant = Add<HConstant>(i); |
| HInstruction* value = Add<HLoadKeyed>(boilerplate_elements, key_constant, |
| static_cast<HValue*>(NULL), kind); |
| - Add<HStoreKeyed>(object_elements, key_constant, value, kind, |
| - INITIALIZING_STORE); |
| + Add<HStoreKeyed>(object_elements, key_constant, value, kind); |
| } |
| } |
| @@ -2742,8 +2725,9 @@ void HGraphBuilder::BuildCreateAllocationMemento( |
| AddStoreMapConstant( |
| allocation_memento, isolate()->factory()->allocation_memento_map()); |
| Add<HStoreNamedField>( |
| - allocation_memento, HObjectAccess::ForAllocationMementoSite(), |
| - allocation_site, INITIALIZING_STORE); |
| + allocation_memento, |
| + HObjectAccess::ForAllocationMementoSite(), |
| + allocation_site); |
| if (FLAG_allocation_site_pretenuring) { |
| HValue* memento_create_count = Add<HLoadNamedField>( |
| allocation_site, static_cast<HValue*>(NULL), |
| @@ -2756,8 +2740,7 @@ void HGraphBuilder::BuildCreateAllocationMemento( |
| memento_create_count->ClearFlag(HValue::kCanOverflow); |
| HStoreNamedField* store = Add<HStoreNamedField>( |
| allocation_site, HObjectAccess::ForAllocationSiteOffset( |
| - AllocationSite::kPretenureCreateCountOffset), memento_create_count, |
| - INITIALIZING_STORE); |
| + AllocationSite::kPretenureCreateCountOffset), memento_create_count); |
| // No write barrier needed to store a smi. |
| store->SkipWriteBarrier(); |
| } |
| @@ -2772,7 +2755,7 @@ HInstruction* HGraphBuilder::BuildGetNativeContext(HValue* closure) { |
| HInstruction* global_object = Add<HLoadNamedField>( |
| context, static_cast<HValue*>(NULL), |
| HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
| - HObjectAccess access = HObjectAccess::ForJSObjectOffset( |
| + HObjectAccess access = HObjectAccess::ForObservableJSObjectPropertyAt( |
| GlobalObject::kNativeContextOffset); |
| return Add<HLoadNamedField>( |
| global_object, static_cast<HValue*>(NULL), access); |
| @@ -2786,7 +2769,8 @@ HInstruction* HGraphBuilder::BuildGetNativeContext() { |
| HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
| return Add<HLoadNamedField>( |
| global_object, static_cast<HValue*>(NULL), |
| - HObjectAccess::ForJSObjectOffset(GlobalObject::kNativeContextOffset)); |
| + HObjectAccess::ForObservableJSObjectPropertyAt( |
| + GlobalObject::kNativeContextOffset)); |
| } |
| @@ -2977,7 +2961,7 @@ HValue* HGraphBuilder::JSArrayBuilder::AllocateArray(HValue* size_in_bytes, |
| HStoreNamedField* HGraphBuilder::AddStoreMapConstant(HValue *object, |
| Handle<Map> map) { |
| return Add<HStoreNamedField>(object, HObjectAccess::ForMap(), |
| - Add<HConstant>(map), INITIALIZING_STORE); |
| + Add<HConstant>(map)); |
| } |
| @@ -2985,12 +2969,13 @@ HValue* HGraphBuilder::AddLoadJSBuiltin(Builtins::JavaScript builtin) { |
| HValue* global_object = Add<HLoadNamedField>( |
| context(), static_cast<HValue*>(NULL), |
| HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
| - HObjectAccess access = HObjectAccess::ForJSObjectOffset( |
| + HObjectAccess access = HObjectAccess::ForObservableJSObjectPropertyAt( |
| GlobalObject::kBuiltinsOffset); |
| HValue* builtins = Add<HLoadNamedField>( |
| global_object, static_cast<HValue*>(NULL), access); |
| - HObjectAccess function_access = HObjectAccess::ForJSObjectOffset( |
| - JSBuiltinsObject::OffsetOfFunctionWithId(builtin)); |
| + HObjectAccess function_access = |
| + HObjectAccess::ForObservableJSObjectPropertyAt( |
| + JSBuiltinsObject::OffsetOfFunctionWithId(builtin)); |
| return Add<HLoadNamedField>( |
| builtins, static_cast<HValue*>(NULL), function_access); |
| } |
| @@ -5309,8 +5294,7 @@ void HOptimizedGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) { |
| case FAST_DOUBLE_ELEMENTS: |
| case FAST_HOLEY_DOUBLE_ELEMENTS: { |
| HStoreKeyed* instr = Add<HStoreKeyed>(elements, key, value, |
| - boilerplate_elements_kind, |
| - INITIALIZING_STORE); |
| + boilerplate_elements_kind); |
| instr->SetUninitialized(uninitialized); |
| break; |
| } |
| @@ -5391,10 +5375,10 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField( |
| HEAP_NUMBER_TYPE); |
| AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map()); |
| Add<HStoreNamedField>(heap_number, HObjectAccess::ForHeapNumberValue(), |
| - value, INITIALIZING_STORE); |
| + value); |
| instr = New<HStoreNamedField>(checked_object->ActualValue(), |
| heap_number_access, |
| - heap_number, INITIALIZING_STORE); |
| + heap_number); |
| } else { |
| // Already holds a HeapNumber; load the box and write its value field. |
| HInstruction* heap_number = Add<HLoadNamedField>( |
| @@ -5402,7 +5386,7 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField( |
| heap_number->set_type(HType::HeapNumber()); |
| instr = New<HStoreNamedField>(heap_number, |
| HObjectAccess::ForHeapNumberValue(), |
| - value, STORE_TO_INITIALIZED_ENTRY); |
| + value); |
| } |
| } else { |
| // This is a normal store. |
| @@ -8035,13 +8019,15 @@ HValue* HOptimizedGraphBuilder::ImplicitReceiverFor(HValue* function, |
| if (shared->is_classic_mode() && !shared->native()) { |
| HValue* context = Add<HLoadNamedField>( |
| function, static_cast<HValue*>(NULL), |
| - HObjectAccess::ForJSObjectOffset(JSFunction::kContextOffset)); |
| + HObjectAccess::ForMapAndOffset(handle(target->map()), |
| + JSFunction::kContextOffset)); |
| HValue* global_object = Add<HLoadNamedField>( |
| context, static_cast<HValue*>(NULL), |
| HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
| return Add<HLoadNamedField>( |
| global_object, static_cast<HValue*>(NULL), |
| - HObjectAccess::ForJSObjectOffset( |
| + HObjectAccess::ForMapAndOffset( |
| + handle(target->context()->global_object()->map()), |
| GlobalObject::kGlobalReceiverOffset)); |
| } |
| return graph()->GetConstantUndefined(); |
| @@ -8322,7 +8308,7 @@ void HOptimizedGraphBuilder::BuildInlinedCallNewArray(CallNew* expr) { |
| for (int i = 0; i < argument_count; i++) { |
| HValue* value = environment()->ExpressionStackAt(argument_count - i - 1); |
| HValue* constant_i = Add<HConstant>(i); |
| - Add<HStoreKeyed>(elements, constant_i, value, kind, INITIALIZING_STORE); |
| + Add<HStoreKeyed>(elements, constant_i, value, kind); |
| } |
| } |
| @@ -8431,29 +8417,32 @@ void HOptimizedGraphBuilder::VisitCallNew(CallNew* expr) { |
| HValue* constructor_value = Add<HConstant>(constructor); |
| HValue* initial_map_value = |
| Add<HLoadNamedField>(constructor_value, static_cast<HValue*>(NULL), |
| - HObjectAccess::ForJSObjectOffset( |
| + HObjectAccess::ForMapAndOffset( |
| + handle(constructor->map()), |
| JSFunction::kPrototypeOrInitialMapOffset)); |
| // Initialize map and fields of the newly allocated object. |
| { NoObservableSideEffectsScope no_effects(this); |
| ASSERT(initial_map->instance_type() == JS_OBJECT_TYPE); |
| Add<HStoreNamedField>(receiver, |
| - HObjectAccess::ForJSObjectOffset(JSObject::kMapOffset), |
| - initial_map_value, INITIALIZING_STORE); |
| + HObjectAccess::ForMapAndOffset(initial_map, JSObject::kMapOffset), |
| + initial_map_value); |
| HValue* empty_fixed_array = Add<HConstant>(factory->empty_fixed_array()); |
| Add<HStoreNamedField>(receiver, |
| - HObjectAccess::ForJSObjectOffset(JSObject::kPropertiesOffset), |
| - empty_fixed_array, INITIALIZING_STORE); |
| + HObjectAccess::ForMapAndOffset(initial_map, |
| + JSObject::kPropertiesOffset), |
| + empty_fixed_array); |
| Add<HStoreNamedField>(receiver, |
| - HObjectAccess::ForJSObjectOffset(JSObject::kElementsOffset), |
| - empty_fixed_array, INITIALIZING_STORE); |
| + HObjectAccess::ForMapAndOffset(initial_map, |
| + JSObject::kElementsOffset), |
| + empty_fixed_array); |
| if (initial_map->inobject_properties() != 0) { |
| HConstant* undefined = graph()->GetConstantUndefined(); |
| for (int i = 0; i < initial_map->inobject_properties(); i++) { |
| - int property_offset = JSObject::kHeaderSize + i * kPointerSize; |
| + int property_offset = initial_map->GetInObjectPropertyOffset(i); |
| Add<HStoreNamedField>(receiver, |
| - HObjectAccess::ForJSObjectOffset(property_offset), |
| - undefined, PREINITIALIZING_STORE); |
| + HObjectAccess::ForMapAndOffset(initial_map, property_offset), |
| + undefined); |
| } |
| } |
| } |
| @@ -8537,31 +8526,30 @@ void HGraphBuilder::BuildArrayBufferViewInitialization( |
| offset < ViewClass::kSizeWithInternalFields; |
| offset += kPointerSize) { |
| Add<HStoreNamedField>(obj, |
| - HObjectAccess::ForJSObjectOffset(offset), |
| - graph()->GetConstant0(), INITIALIZING_STORE); |
| + HObjectAccess::ForObservableJSObjectPropertyAt(offset), |
| + graph()->GetConstant0()); |
| } |
| Add<HStoreNamedField>( |
| obj, |
| - HObjectAccess::ForJSArrayBufferViewBuffer(), buffer, INITIALIZING_STORE); |
| + HObjectAccess::ForJSArrayBufferViewBuffer(), buffer); |
| Add<HStoreNamedField>( |
| obj, |
| HObjectAccess::ForJSArrayBufferViewByteOffset(), |
| - byte_offset, INITIALIZING_STORE); |
| + byte_offset); |
| Add<HStoreNamedField>( |
| obj, |
| HObjectAccess::ForJSArrayBufferViewByteLength(), |
| - byte_length, INITIALIZING_STORE); |
| + byte_length); |
| HObjectAccess weak_first_view_access = |
| HObjectAccess::ForJSArrayBufferWeakFirstView(); |
| Add<HStoreNamedField>(obj, |
| HObjectAccess::ForJSArrayBufferViewWeakNext(), |
| Add<HLoadNamedField>(buffer, static_cast<HValue*>(NULL), |
| - weak_first_view_access), |
| - INITIALIZING_STORE); |
| + weak_first_view_access)); |
| Add<HStoreNamedField>( |
| - buffer, weak_first_view_access, obj, INITIALIZING_STORE); |
| + buffer, weak_first_view_access, obj); |
| } |
| @@ -8651,7 +8639,7 @@ void HOptimizedGraphBuilder::VisitTypedArrayInitialize( |
| Add<HStoreNamedField>(obj, |
| HObjectAccess::ForJSTypedArrayLength(), |
| - length, INITIALIZING_STORE); |
| + length); |
| HValue* elements = |
| Add<HAllocate>( |
| @@ -8662,7 +8650,9 @@ void HOptimizedGraphBuilder::VisitTypedArrayInitialize( |
| Handle<Map> external_array_map( |
| isolate()->heap()->MapForExternalArrayType(array_type)); |
| - AddStoreMapConstant(elements, external_array_map); |
| + Add<HStoreNamedField>(elements, |
| + HObjectAccess::ForMap(), |
| + Add<HConstant>(external_array_map)); |
| HValue* backing_store = Add<HLoadNamedField>( |
| buffer, static_cast<HValue*>(NULL), |
| @@ -8680,14 +8670,14 @@ void HOptimizedGraphBuilder::VisitTypedArrayInitialize( |
| typed_array_start = external_pointer; |
| } |
| + Add<HStoreNamedField>(elements, |
| + HObjectAccess::ForExternalArrayExternalPointer(), |
| + typed_array_start); |
| + Add<HStoreNamedField>(elements, |
| + HObjectAccess::ForFixedArrayLength(), |
| + length); |
| Add<HStoreNamedField>( |
| - elements, HObjectAccess::ForExternalArrayExternalPointer(), |
| - typed_array_start, INITIALIZING_STORE); |
| - Add<HStoreNamedField>( |
| - elements, HObjectAccess::ForFixedArrayLength(), length, |
| - INITIALIZING_STORE); |
| - Add<HStoreNamedField>( |
| - obj, HObjectAccess::ForElementsPointer(), elements, INITIALIZING_STORE); |
| + obj, HObjectAccess::ForElementsPointer(), elements); |
| } |
| if (!is_zero_byte_offset) { |
| @@ -9927,7 +9917,7 @@ void HOptimizedGraphBuilder::BuildEmitObjectHeader( |
| ASSERT(*properties_field == isolate()->heap()->empty_fixed_array()); |
| HInstruction* properties = Add<HConstant>(properties_field); |
| HObjectAccess access = HObjectAccess::ForPropertiesPointer(); |
| - Add<HStoreNamedField>(object, access, properties, INITIALIZING_STORE); |
| + Add<HStoreNamedField>(object, access, properties); |
| if (boilerplate_object->IsJSArray()) { |
| Handle<JSArray> boilerplate_array = |
| @@ -9938,7 +9928,7 @@ void HOptimizedGraphBuilder::BuildEmitObjectHeader( |
| ASSERT(boilerplate_array->length()->IsSmi()); |
| Add<HStoreNamedField>(object, HObjectAccess::ForArrayLength( |
| - boilerplate_array->GetElementsKind()), length, INITIALIZING_STORE); |
| + boilerplate_array->GetElementsKind()), length); |
| } |
| } |
| @@ -9954,7 +9944,7 @@ void HOptimizedGraphBuilder::BuildInitElementsInObjectHeader( |
| object_elements = Add<HConstant>(elements_field); |
| } |
| Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
| - object_elements, INITIALIZING_STORE); |
| + object_elements); |
| } |
| @@ -9963,9 +9953,9 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| HInstruction* object, |
| AllocationSiteUsageContext* site_context, |
| PretenureFlag pretenure_flag) { |
| - Handle<DescriptorArray> descriptors( |
| - boilerplate_object->map()->instance_descriptors()); |
| - int limit = boilerplate_object->map()->NumberOfOwnDescriptors(); |
| + Handle<Map> boilerplate_map(boilerplate_object->map()); |
| + Handle<DescriptorArray> descriptors(boilerplate_map->instance_descriptors()); |
| + int limit = boilerplate_map->NumberOfOwnDescriptors(); |
| int copied_fields = 0; |
| for (int i = 0; i < limit; i++) { |
| @@ -9982,7 +9972,7 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| // The access for the store depends on the type of the boilerplate. |
| HObjectAccess access = boilerplate_object->IsJSArray() ? |
| HObjectAccess::ForJSArrayOffset(property_offset) : |
| - HObjectAccess::ForJSObjectOffset(property_offset); |
| + HObjectAccess::ForMapAndOffset(boilerplate_map, property_offset); |
| if (value->IsJSObject()) { |
| Handle<JSObject> value_object = Handle<JSObject>::cast(value); |
| @@ -9990,7 +9980,7 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| HInstruction* result = |
| BuildFastLiteral(value_object, site_context); |
| site_context->ExitScope(current_site, value_object); |
| - Add<HStoreNamedField>(object, access, result, INITIALIZING_STORE); |
| + Add<HStoreNamedField>(object, access, result); |
| } else { |
| Representation representation = details.representation(); |
| HInstruction* value_instruction; |
| @@ -10008,7 +9998,7 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| AddStoreMapConstant(double_box, |
| isolate()->factory()->heap_number_map()); |
| Add<HStoreNamedField>(double_box, HObjectAccess::ForHeapNumberValue(), |
| - Add<HConstant>(value), INITIALIZING_STORE); |
| + Add<HConstant>(value)); |
| value_instruction = double_box; |
| } else if (representation.IsSmi() && value->IsUninitialized()) { |
| value_instruction = graph()->GetConstant0(); |
| @@ -10016,8 +10006,7 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| value_instruction = Add<HConstant>(value); |
| } |
| - Add<HStoreNamedField>(object, access, value_instruction, |
| - INITIALIZING_STORE); |
| + Add<HStoreNamedField>(object, access, value_instruction); |
| } |
| } |
| @@ -10027,9 +10016,9 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
| for (int i = copied_fields; i < inobject_properties; i++) { |
| ASSERT(boilerplate_object->IsJSObject()); |
| int property_offset = boilerplate_object->GetInObjectPropertyOffset(i); |
| - HObjectAccess access = HObjectAccess::ForJSObjectOffset(property_offset); |
| - Add<HStoreNamedField>(object, access, value_instruction, |
| - PREINITIALIZING_STORE); |
| + HObjectAccess access = |
| + HObjectAccess::ForMapAndOffset(boilerplate_map, property_offset); |
| + Add<HStoreNamedField>(object, access, value_instruction); |
| } |
| } |
| @@ -10069,8 +10058,7 @@ void HOptimizedGraphBuilder::BuildEmitFixedDoubleArray( |
| static_cast<HValue*>(NULL), kind, |
| ALLOW_RETURN_HOLE); |
| HInstruction* store = Add<HStoreKeyed>(object_elements, key_constant, |
| - value_instruction, kind, |
| - INITIALIZING_STORE); |
| + value_instruction, kind); |
| store->SetFlag(HValue::kAllowUndefinedAsNaN); |
| } |
| } |
| @@ -10093,15 +10081,13 @@ void HOptimizedGraphBuilder::BuildEmitFixedArray( |
| HInstruction* result = |
| BuildFastLiteral(value_object, site_context); |
| site_context->ExitScope(current_site, value_object); |
| - Add<HStoreKeyed>(object_elements, key_constant, result, kind, |
| - INITIALIZING_STORE); |
| + Add<HStoreKeyed>(object_elements, key_constant, result, kind); |
| } else { |
| HInstruction* value_instruction = |
| Add<HLoadKeyed>(boilerplate_elements, key_constant, |
| static_cast<HValue*>(NULL), kind, |
| ALLOW_RETURN_HOLE); |
| - Add<HStoreKeyed>(object_elements, key_constant, value_instruction, kind, |
| - INITIALIZING_STORE); |
| + Add<HStoreKeyed>(object_elements, key_constant, value_instruction, kind); |
| } |
| } |
| } |
| @@ -10419,7 +10405,8 @@ void HOptimizedGraphBuilder::GenerateValueOf(CallRuntime* call) { |
| // Return the actual value. |
| Push(Add<HLoadNamedField>( |
| object, objectisvalue, |
| - HObjectAccess::ForJSObjectOffset(JSValue::kValueOffset))); |
| + HObjectAccess::ForObservableJSObjectPropertyAt( |
| + JSValue::kValueOffset))); |
| Add<HSimulate>(call->id(), FIXED_SIMULATE); |
| } |
| if_objectisvalue.Else(); |
| @@ -10489,9 +10476,9 @@ void HOptimizedGraphBuilder::GenerateSetValueOf(CallRuntime* call) { |
| if_objectisvalue.Then(); |
| { |
| // Create in-object property store to kValueOffset. |
| - Add<HStoreNamedField>( |
| - object, HObjectAccess::ForJSObjectOffset(JSValue::kValueOffset), |
| - value, INITIALIZING_STORE); |
| + Add<HStoreNamedField>(object, |
| + HObjectAccess::ForObservableJSObjectPropertyAt(JSValue::kValueOffset), |
| + value); |
| Add<HSimulate>(call->id(), FIXED_SIMULATE); |
| } |
| if_objectisvalue.Else(); |