| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index e1817ba8b46435a234050b6c4db2746a52075827..ef0a0e941aa1b4cc9e8b01f37c7d989061c20c28 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -2464,14 +2464,14 @@ AllocationResult Heap::AllocateMap(InstanceType instance_type,
|
| Map* map = Map::cast(result);
|
| map->set_instance_type(instance_type);
|
| map->set_prototype(null_value(), SKIP_WRITE_BARRIER);
|
| - map->set_constructor(null_value(), SKIP_WRITE_BARRIER);
|
| + map->set_constructor_or_backpointer(null_value(), SKIP_WRITE_BARRIER);
|
| map->set_instance_size(instance_size);
|
| map->set_inobject_properties(0);
|
| map->set_pre_allocated_property_fields(0);
|
| map->set_code_cache(empty_fixed_array(), SKIP_WRITE_BARRIER);
|
| map->set_dependent_code(DependentCode::cast(empty_fixed_array()),
|
| SKIP_WRITE_BARRIER);
|
| - map->init_back_pointer(undefined_value());
|
| + map->init_transitions(undefined_value());
|
| map->set_unused_property_fields(0);
|
| map->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| @@ -2605,7 +2605,7 @@ bool Heap::CreateInitialMaps() {
|
| // Fix the instance_descriptors for the existing maps.
|
| meta_map()->set_code_cache(empty_fixed_array());
|
| meta_map()->set_dependent_code(DependentCode::cast(empty_fixed_array()));
|
| - meta_map()->init_back_pointer(undefined_value());
|
| + meta_map()->init_transitions(undefined_value());
|
| meta_map()->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| meta_map()->set_layout_descriptor(LayoutDescriptor::FastPointerLayout());
|
| @@ -2614,7 +2614,7 @@ bool Heap::CreateInitialMaps() {
|
| fixed_array_map()->set_code_cache(empty_fixed_array());
|
| fixed_array_map()->set_dependent_code(
|
| DependentCode::cast(empty_fixed_array()));
|
| - fixed_array_map()->init_back_pointer(undefined_value());
|
| + fixed_array_map()->init_transitions(undefined_value());
|
| fixed_array_map()->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| fixed_array_map()->set_layout_descriptor(
|
| @@ -2623,7 +2623,7 @@ bool Heap::CreateInitialMaps() {
|
|
|
| undefined_map()->set_code_cache(empty_fixed_array());
|
| undefined_map()->set_dependent_code(DependentCode::cast(empty_fixed_array()));
|
| - undefined_map()->init_back_pointer(undefined_value());
|
| + undefined_map()->init_transitions(undefined_value());
|
| undefined_map()->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| undefined_map()->set_layout_descriptor(
|
| @@ -2632,7 +2632,7 @@ bool Heap::CreateInitialMaps() {
|
|
|
| null_map()->set_code_cache(empty_fixed_array());
|
| null_map()->set_dependent_code(DependentCode::cast(empty_fixed_array()));
|
| - null_map()->init_back_pointer(undefined_value());
|
| + null_map()->init_transitions(undefined_value());
|
| null_map()->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| null_map()->set_layout_descriptor(LayoutDescriptor::FastPointerLayout());
|
| @@ -2641,7 +2641,7 @@ bool Heap::CreateInitialMaps() {
|
| constant_pool_array_map()->set_code_cache(empty_fixed_array());
|
| constant_pool_array_map()->set_dependent_code(
|
| DependentCode::cast(empty_fixed_array()));
|
| - constant_pool_array_map()->init_back_pointer(undefined_value());
|
| + constant_pool_array_map()->init_transitions(undefined_value());
|
| constant_pool_array_map()->set_instance_descriptors(empty_descriptor_array());
|
| if (FLAG_unbox_double_fields) {
|
| constant_pool_array_map()->set_layout_descriptor(
|
| @@ -2650,19 +2650,19 @@ bool Heap::CreateInitialMaps() {
|
|
|
| // Fix prototype object for existing maps.
|
| meta_map()->set_prototype(null_value());
|
| - meta_map()->set_constructor(null_value());
|
| + meta_map()->set_constructor_or_backpointer(null_value());
|
|
|
| fixed_array_map()->set_prototype(null_value());
|
| - fixed_array_map()->set_constructor(null_value());
|
| + fixed_array_map()->set_constructor_or_backpointer(null_value());
|
|
|
| undefined_map()->set_prototype(null_value());
|
| - undefined_map()->set_constructor(null_value());
|
| + undefined_map()->set_constructor_or_backpointer(null_value());
|
|
|
| null_map()->set_prototype(null_value());
|
| - null_map()->set_constructor(null_value());
|
| + null_map()->set_constructor_or_backpointer(null_value());
|
|
|
| constant_pool_array_map()->set_prototype(null_value());
|
| - constant_pool_array_map()->set_constructor(null_value());
|
| + constant_pool_array_map()->set_constructor_or_backpointer(null_value());
|
|
|
| { // Map allocation
|
| #define ALLOCATE_MAP(instance_type, size, field_name) \
|
| @@ -3849,9 +3849,9 @@ void Heap::InitializeJSObjectFromMap(JSObject* obj, FixedArray* properties,
|
| // Pre-allocated fields need to be initialized with undefined_value as well
|
| // so that object accesses before the constructor completes (e.g. in the
|
| // debugger) will not cause a crash.
|
| - if (map->constructor()->IsJSFunction() &&
|
| - JSFunction::cast(map->constructor())
|
| - ->IsInobjectSlackTrackingInProgress()) {
|
| + Object* constructor = map->GetConstructor();
|
| + if (constructor->IsJSFunction() &&
|
| + JSFunction::cast(constructor)->IsInobjectSlackTrackingInProgress()) {
|
| // We might want to shrink the object later.
|
| DCHECK(obj->GetInternalFieldCount() == 0);
|
| filler = Heap::one_pointer_filler_map();
|
|
|