OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 2150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2161 map->set_map_no_write_barrier(meta_map()); | 2161 map->set_map_no_write_barrier(meta_map()); |
2162 map->set_instance_type(instance_type); | 2162 map->set_instance_type(instance_type); |
2163 map->set_visitor_id( | 2163 map->set_visitor_id( |
2164 StaticVisitorBase::GetVisitorId(instance_type, instance_size)); | 2164 StaticVisitorBase::GetVisitorId(instance_type, instance_size)); |
2165 map->set_prototype(null_value(), SKIP_WRITE_BARRIER); | 2165 map->set_prototype(null_value(), SKIP_WRITE_BARRIER); |
2166 map->set_constructor(null_value(), SKIP_WRITE_BARRIER); | 2166 map->set_constructor(null_value(), SKIP_WRITE_BARRIER); |
2167 map->set_instance_size(instance_size); | 2167 map->set_instance_size(instance_size); |
2168 map->set_inobject_properties(0); | 2168 map->set_inobject_properties(0); |
2169 map->set_pre_allocated_property_fields(0); | 2169 map->set_pre_allocated_property_fields(0); |
2170 map->set_code_cache(empty_fixed_array(), SKIP_WRITE_BARRIER); | 2170 map->set_code_cache(empty_fixed_array(), SKIP_WRITE_BARRIER); |
| 2171 map->set_dependent_codes(DependentCodes::cast(empty_fixed_array()), |
| 2172 SKIP_WRITE_BARRIER); |
2171 map->init_back_pointer(undefined_value()); | 2173 map->init_back_pointer(undefined_value()); |
2172 map->set_unused_property_fields(0); | 2174 map->set_unused_property_fields(0); |
2173 map->set_instance_descriptors(empty_descriptor_array()); | 2175 map->set_instance_descriptors(empty_descriptor_array()); |
2174 map->set_bit_field(0); | 2176 map->set_bit_field(0); |
2175 map->set_bit_field2(1 << Map::kIsExtensible); | 2177 map->set_bit_field2(1 << Map::kIsExtensible); |
2176 int bit_field3 = Map::EnumLengthBits::encode(Map::kInvalidEnumCache) | | 2178 int bit_field3 = Map::EnumLengthBits::encode(Map::kInvalidEnumCache) | |
2177 Map::OwnsDescriptors::encode(true); | 2179 Map::OwnsDescriptors::encode(true); |
2178 map->set_bit_field3(bit_field3); | 2180 map->set_bit_field3(bit_field3); |
2179 map->set_elements_kind(elements_kind); | 2181 map->set_elements_kind(elements_kind); |
2180 | 2182 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2296 ASSERT(!InNewSpace(undefined_value())); | 2298 ASSERT(!InNewSpace(undefined_value())); |
2297 | 2299 |
2298 // Allocate the empty descriptor array. | 2300 // Allocate the empty descriptor array. |
2299 { MaybeObject* maybe_obj = AllocateEmptyFixedArray(); | 2301 { MaybeObject* maybe_obj = AllocateEmptyFixedArray(); |
2300 if (!maybe_obj->ToObject(&obj)) return false; | 2302 if (!maybe_obj->ToObject(&obj)) return false; |
2301 } | 2303 } |
2302 set_empty_descriptor_array(DescriptorArray::cast(obj)); | 2304 set_empty_descriptor_array(DescriptorArray::cast(obj)); |
2303 | 2305 |
2304 // Fix the instance_descriptors for the existing maps. | 2306 // Fix the instance_descriptors for the existing maps. |
2305 meta_map()->set_code_cache(empty_fixed_array()); | 2307 meta_map()->set_code_cache(empty_fixed_array()); |
| 2308 meta_map()->set_dependent_codes(DependentCodes::cast(empty_fixed_array())); |
2306 meta_map()->init_back_pointer(undefined_value()); | 2309 meta_map()->init_back_pointer(undefined_value()); |
2307 meta_map()->set_instance_descriptors(empty_descriptor_array()); | 2310 meta_map()->set_instance_descriptors(empty_descriptor_array()); |
2308 | 2311 |
2309 fixed_array_map()->set_code_cache(empty_fixed_array()); | 2312 fixed_array_map()->set_code_cache(empty_fixed_array()); |
| 2313 fixed_array_map()->set_dependent_codes( |
| 2314 DependentCodes::cast(empty_fixed_array())); |
2310 fixed_array_map()->init_back_pointer(undefined_value()); | 2315 fixed_array_map()->init_back_pointer(undefined_value()); |
2311 fixed_array_map()->set_instance_descriptors(empty_descriptor_array()); | 2316 fixed_array_map()->set_instance_descriptors(empty_descriptor_array()); |
2312 | 2317 |
2313 oddball_map()->set_code_cache(empty_fixed_array()); | 2318 oddball_map()->set_code_cache(empty_fixed_array()); |
| 2319 oddball_map()->set_dependent_codes(DependentCodes::cast(empty_fixed_array())); |
2314 oddball_map()->init_back_pointer(undefined_value()); | 2320 oddball_map()->init_back_pointer(undefined_value()); |
2315 oddball_map()->set_instance_descriptors(empty_descriptor_array()); | 2321 oddball_map()->set_instance_descriptors(empty_descriptor_array()); |
2316 | 2322 |
2317 // Fix prototype object for existing maps. | 2323 // Fix prototype object for existing maps. |
2318 meta_map()->set_prototype(null_value()); | 2324 meta_map()->set_prototype(null_value()); |
2319 meta_map()->set_constructor(null_value()); | 2325 meta_map()->set_constructor(null_value()); |
2320 | 2326 |
2321 fixed_array_map()->set_prototype(null_value()); | 2327 fixed_array_map()->set_prototype(null_value()); |
2322 fixed_array_map()->set_constructor(null_value()); | 2328 fixed_array_map()->set_constructor(null_value()); |
2323 | 2329 |
(...skipping 1426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3750 code->set_flags(flags); | 3756 code->set_flags(flags); |
3751 if (code->is_call_stub() || code->is_keyed_call_stub()) { | 3757 if (code->is_call_stub() || code->is_keyed_call_stub()) { |
3752 code->set_check_type(RECEIVER_MAP_CHECK); | 3758 code->set_check_type(RECEIVER_MAP_CHECK); |
3753 } | 3759 } |
3754 code->set_deoptimization_data(empty_fixed_array(), SKIP_WRITE_BARRIER); | 3760 code->set_deoptimization_data(empty_fixed_array(), SKIP_WRITE_BARRIER); |
3755 code->InitializeTypeFeedbackInfoNoWriteBarrier(undefined_value()); | 3761 code->InitializeTypeFeedbackInfoNoWriteBarrier(undefined_value()); |
3756 code->set_handler_table(empty_fixed_array(), SKIP_WRITE_BARRIER); | 3762 code->set_handler_table(empty_fixed_array(), SKIP_WRITE_BARRIER); |
3757 code->set_gc_metadata(Smi::FromInt(0)); | 3763 code->set_gc_metadata(Smi::FromInt(0)); |
3758 code->set_ic_age(global_ic_age_); | 3764 code->set_ic_age(global_ic_age_); |
3759 code->set_prologue_offset(kPrologueOffsetNotSet); | 3765 code->set_prologue_offset(kPrologueOffsetNotSet); |
| 3766 if (code->kind() == Code::OPTIMIZED_FUNCTION) { |
| 3767 code->set_marked_for_deoptimization(false); |
| 3768 } |
3760 // Allow self references to created code object by patching the handle to | 3769 // Allow self references to created code object by patching the handle to |
3761 // point to the newly allocated Code object. | 3770 // point to the newly allocated Code object. |
3762 if (!self_reference.is_null()) { | 3771 if (!self_reference.is_null()) { |
3763 *(self_reference.location()) = code; | 3772 *(self_reference.location()) = code; |
3764 } | 3773 } |
3765 // Migrate generated code. | 3774 // Migrate generated code. |
3766 // The generated code can contain Object** values (typically from handles) | 3775 // The generated code can contain Object** values (typically from handles) |
3767 // that are dereferenced during the copy to point directly to the actual heap | 3776 // that are dereferenced during the copy to point directly to the actual heap |
3768 // objects. These pointers can include references to the code object itself, | 3777 // objects. These pointers can include references to the code object itself, |
3769 // through the self_reference parameter. | 3778 // through the self_reference parameter. |
(...skipping 3636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7406 static_cast<int>(object_sizes_last_time_[index])); | 7415 static_cast<int>(object_sizes_last_time_[index])); |
7407 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) | 7416 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) |
7408 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 7417 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
7409 | 7418 |
7410 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 7419 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
7411 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 7420 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
7412 ClearObjectStats(); | 7421 ClearObjectStats(); |
7413 } | 7422 } |
7414 | 7423 |
7415 } } // namespace v8::internal | 7424 } } // namespace v8::internal |
OLD | NEW |