Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 762ac0ea06ad8b71bbdae6100d34e747ace343af..a5647679ac3080c7f25003d692596fd2f249ffe9 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -1350,15 +1350,14 @@ HValue* HGraphBuilder::BuildCheckForCapacityGrow(HValue* object, |
new_length->ClearFlag(HValue::kCanOverflow); |
Add<HStoreNamedField>(object, HObjectAccess::ForArrayLength(kind), |
- 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(); |
@@ -1436,8 +1435,7 @@ void HGraphBuilder::BuildTransitionElementsKind(HValue* object, |
if_builder.End(); |
} |
- Add<HStoreNamedField>(object, HObjectAccess::ForMap(), map, |
- INITIALIZING_STORE); |
+ Add<HStoreNamedField>(object, HObjectAccess::ForMap(), map); |
} |
@@ -1607,35 +1605,32 @@ HValue* HGraphBuilder::BuildRegExpConstructResult(HValue* length, |
HObjectAccess::ForContextSlot(Context::REGEXP_RESULT_MAP_INDEX))); |
Add<HStoreNamedField>( |
result, HObjectAccess::ForJSArrayOffset(JSArray::kPropertiesOffset), |
- Add<HConstant>(isolate()->factory()->empty_fixed_array()), |
- INITIALIZING_STORE); |
+ Add<HConstant>(isolate()->factory()->empty_fixed_array())); |
Add<HStoreNamedField>( |
result, HObjectAccess::ForJSArrayOffset(JSArray::kElementsOffset), |
- elements, INITIALIZING_STORE); |
+ elements); |
Add<HStoreNamedField>( |
- result, HObjectAccess::ForJSArrayOffset(JSArray::kLengthOffset), |
- length, INITIALIZING_STORE); |
+ result, HObjectAccess::ForJSArrayOffset(JSArray::kLengthOffset), length); |
// Initialize the additional fields. |
Add<HStoreNamedField>( |
result, HObjectAccess::ForJSArrayOffset(JSRegExpResult::kIndexOffset), |
- index, INITIALIZING_STORE); |
+ index); |
Add<HStoreNamedField>( |
result, HObjectAccess::ForJSArrayOffset(JSRegExpResult::kInputOffset), |
- input, INITIALIZING_STORE); |
+ input); |
// Initialize the elements header. |
AddStoreMapConstantNoWriteBarrier(elements, |
isolate()->factory()->fixed_array_map()); |
- Add<HStoreNamedField>(elements, HObjectAccess::ForFixedArrayLength(), |
- length, INITIALIZING_STORE); |
+ Add<HStoreNamedField>(elements, HObjectAccess::ForFixedArrayLength(), length); |
// Initialize the elements contents with undefined. |
LoopBuilder loop(this, context(), LoopBuilder::kPostIncrement); |
index = loop.BeginBody(graph()->GetConstant0(), length, Token::LT); |
{ |
Add<HStoreKeyed>(elements, index, graph()->GetConstantUndefined(), |
- FAST_ELEMENTS, INITIALIZING_STORE); |
+ FAST_ELEMENTS); |
} |
loop.EndBody(); |
@@ -1898,14 +1893,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()); |
@@ -2054,10 +2045,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); |
@@ -2359,7 +2348,7 @@ void HGraphBuilder::BuildInitializeElementsHeader(HValue* elements, |
AddStoreMapConstant(elements, map); |
Add<HStoreNamedField>(elements, HObjectAccess::ForFixedArrayLength(), |
- capacity, INITIALIZING_STORE); |
+ capacity); |
} |
@@ -2382,16 +2371,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( |
@@ -2405,8 +2393,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; |
} |
@@ -2498,7 +2485,7 @@ HValue* HGraphBuilder::BuildGrowElementsCapacity(HValue* object, |
length, new_capacity); |
Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
- new_elements, INITIALIZING_STORE); |
+ new_elements); |
return new_elements; |
} |
@@ -2539,15 +2526,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(); |
} |
@@ -2593,16 +2579,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); |
} |
@@ -2641,8 +2624,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)); |
} |
} |
@@ -2665,15 +2647,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. |
@@ -2684,8 +2665,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); |
} |
} |
@@ -2755,8 +2735,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), |
@@ -2769,8 +2750,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(); |
} |
@@ -2785,7 +2765,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::ForObservableJSObjectOffset( |
GlobalObject::kNativeContextOffset); |
return Add<HLoadNamedField>( |
global_object, static_cast<HValue*>(NULL), access); |
@@ -2799,7 +2779,8 @@ HInstruction* HGraphBuilder::BuildGetNativeContext() { |
HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
return Add<HLoadNamedField>( |
global_object, static_cast<HValue*>(NULL), |
- HObjectAccess::ForJSObjectOffset(GlobalObject::kNativeContextOffset)); |
+ HObjectAccess::ForObservableJSObjectOffset( |
+ GlobalObject::kNativeContextOffset)); |
} |
@@ -2990,7 +2971,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)); |
} |
@@ -2998,12 +2979,12 @@ 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::ForObservableJSObjectOffset( |
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::ForObservableJSObjectOffset( |
+ JSBuiltinsObject::OffsetOfFunctionWithId(builtin)); |
return Add<HLoadNamedField>( |
builtins, static_cast<HValue*>(NULL), function_access); |
} |
@@ -5322,8 +5303,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; |
} |
@@ -5404,10 +5384,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>( |
@@ -8338,7 +8318,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); |
} |
} |
@@ -8447,29 +8427,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); |
} |
} |
} |
@@ -8553,31 +8536,30 @@ void HGraphBuilder::BuildArrayBufferViewInitialization( |
offset < ViewClass::kSizeWithInternalFields; |
offset += kPointerSize) { |
Add<HStoreNamedField>(obj, |
- HObjectAccess::ForJSObjectOffset(offset), |
- graph()->GetConstant0(), INITIALIZING_STORE); |
+ HObjectAccess::ForObservableJSObjectOffset(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); |
} |
@@ -8667,7 +8649,7 @@ void HOptimizedGraphBuilder::VisitTypedArrayInitialize( |
Add<HStoreNamedField>(obj, |
HObjectAccess::ForJSTypedArrayLength(), |
- length, INITIALIZING_STORE); |
+ length); |
HValue* elements = |
Add<HAllocate>( |
@@ -8678,7 +8660,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), |
@@ -8696,14 +8680,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) { |
@@ -9915,7 +9899,7 @@ HInstruction* HOptimizedGraphBuilder::BuildFastLiteral( |
HConstant* empty_fixed_array = Add<HConstant>( |
isolate()->factory()->empty_fixed_array()); |
Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
- empty_fixed_array, INITIALIZING_STORE); |
+ empty_fixed_array); |
} |
object_elements = Add<HAllocate>(object_elements_size, HType::JSObject(), |
pretenure_flag, FIXED_DOUBLE_ARRAY_TYPE, site_context->current()); |
@@ -9954,7 +9938,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 = |
@@ -9965,7 +9949,7 @@ void HOptimizedGraphBuilder::BuildEmitObjectHeader( |
ASSERT(boilerplate_array->length()->IsSmi()); |
Add<HStoreNamedField>(object, HObjectAccess::ForArrayLength( |
- boilerplate_array->GetElementsKind()), length, INITIALIZING_STORE); |
+ boilerplate_array->GetElementsKind()), length); |
} |
} |
@@ -9981,7 +9965,7 @@ void HOptimizedGraphBuilder::BuildInitElementsInObjectHeader( |
object_elements = Add<HConstant>(elements_field); |
} |
Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
- object_elements, INITIALIZING_STORE); |
+ object_elements); |
} |
@@ -9990,9 +9974,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++) { |
@@ -10009,7 +9993,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); |
@@ -10017,7 +10001,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; |
@@ -10035,7 +10019,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(); |
@@ -10043,8 +10027,7 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
value_instruction = Add<HConstant>(value); |
} |
- Add<HStoreNamedField>(object, access, value_instruction, |
- INITIALIZING_STORE); |
+ Add<HStoreNamedField>(object, access, value_instruction); |
} |
} |
@@ -10054,9 +10037,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); |
} |
} |
@@ -10096,8 +10079,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); |
} |
} |
@@ -10120,15 +10102,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); |
} |
} |
} |
@@ -10446,7 +10426,8 @@ void HOptimizedGraphBuilder::GenerateValueOf(CallRuntime* call) { |
// Return the actual value. |
Push(Add<HLoadNamedField>( |
object, objectisvalue, |
- HObjectAccess::ForJSObjectOffset(JSValue::kValueOffset))); |
+ HObjectAccess::ForObservableJSObjectOffset( |
+ JSValue::kValueOffset))); |
Add<HSimulate>(call->id(), FIXED_SIMULATE); |
} |
if_objectisvalue.Else(); |
@@ -10516,9 +10497,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::ForObservableJSObjectOffset(JSValue::kValueOffset), |
+ value); |
Add<HSimulate>(call->id(), FIXED_SIMULATE); |
} |
if_objectisvalue.Else(); |