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 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 | 1007 |
1008 gc_post_processing_depth_++; | 1008 gc_post_processing_depth_++; |
1009 { AllowHeapAllocation allow_allocation; | 1009 { AllowHeapAllocation allow_allocation; |
1010 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); | 1010 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); |
1011 next_gc_likely_to_collect_more = | 1011 next_gc_likely_to_collect_more = |
1012 isolate_->global_handles()->PostGarbageCollectionProcessing( | 1012 isolate_->global_handles()->PostGarbageCollectionProcessing( |
1013 collector, tracer); | 1013 collector, tracer); |
1014 } | 1014 } |
1015 gc_post_processing_depth_--; | 1015 gc_post_processing_depth_--; |
1016 | 1016 |
| 1017 isolate_->eternal_handles()->PostGarbageCollectionProcessing(this); |
| 1018 |
1017 // Update relocatables. | 1019 // Update relocatables. |
1018 Relocatable::PostGarbageCollectionProcessing(); | 1020 Relocatable::PostGarbageCollectionProcessing(); |
1019 | 1021 |
1020 if (collector == MARK_COMPACTOR) { | 1022 if (collector == MARK_COMPACTOR) { |
1021 // Register the amount of external allocated memory. | 1023 // Register the amount of external allocated memory. |
1022 amount_of_external_allocated_memory_at_last_global_gc_ = | 1024 amount_of_external_allocated_memory_at_last_global_gc_ = |
1023 amount_of_external_allocated_memory_; | 1025 amount_of_external_allocated_memory_; |
1024 } | 1026 } |
1025 | 1027 |
1026 { | 1028 { |
(...skipping 2179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3206 if (!maybe_obj->ToObject(&obj)) return false; | 3208 if (!maybe_obj->ToObject(&obj)) return false; |
3207 } | 3209 } |
3208 SeededNumberDictionary::cast(obj)->set_requires_slow_elements(); | 3210 SeededNumberDictionary::cast(obj)->set_requires_slow_elements(); |
3209 set_empty_slow_element_dictionary(SeededNumberDictionary::cast(obj)); | 3211 set_empty_slow_element_dictionary(SeededNumberDictionary::cast(obj)); |
3210 | 3212 |
3211 { MaybeObject* maybe_obj = AllocateSymbol(); | 3213 { MaybeObject* maybe_obj = AllocateSymbol(); |
3212 if (!maybe_obj->ToObject(&obj)) return false; | 3214 if (!maybe_obj->ToObject(&obj)) return false; |
3213 } | 3215 } |
3214 set_observed_symbol(Symbol::cast(obj)); | 3216 set_observed_symbol(Symbol::cast(obj)); |
3215 | 3217 |
3216 set_i18n_template_one(the_hole_value()); | |
3217 set_i18n_template_two(the_hole_value()); | |
3218 | |
3219 // Handling of script id generation is in Factory::NewScript. | 3218 // Handling of script id generation is in Factory::NewScript. |
3220 set_last_script_id(Smi::FromInt(v8::Script::kNoScriptId)); | 3219 set_last_script_id(Smi::FromInt(v8::Script::kNoScriptId)); |
3221 | 3220 |
3222 // Initialize keyed lookup cache. | 3221 // Initialize keyed lookup cache. |
3223 isolate_->keyed_lookup_cache()->Clear(); | 3222 isolate_->keyed_lookup_cache()->Clear(); |
3224 | 3223 |
3225 // Initialize context slot cache. | 3224 // Initialize context slot cache. |
3226 isolate_->context_slot_cache()->Clear(); | 3225 isolate_->context_slot_cache()->Clear(); |
3227 | 3226 |
3228 // Initialize descriptor cache. | 3227 // Initialize descriptor cache. |
(...skipping 3367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6596 case VISIT_ALL_IN_SCAVENGE: | 6595 case VISIT_ALL_IN_SCAVENGE: |
6597 isolate_->global_handles()->IterateNewSpaceStrongAndDependentRoots(v); | 6596 isolate_->global_handles()->IterateNewSpaceStrongAndDependentRoots(v); |
6598 break; | 6597 break; |
6599 case VISIT_ALL_IN_SWEEP_NEWSPACE: | 6598 case VISIT_ALL_IN_SWEEP_NEWSPACE: |
6600 case VISIT_ALL: | 6599 case VISIT_ALL: |
6601 isolate_->global_handles()->IterateAllRoots(v); | 6600 isolate_->global_handles()->IterateAllRoots(v); |
6602 break; | 6601 break; |
6603 } | 6602 } |
6604 v->Synchronize(VisitorSynchronization::kGlobalHandles); | 6603 v->Synchronize(VisitorSynchronization::kGlobalHandles); |
6605 | 6604 |
| 6605 // Iterate over eternal handles. |
| 6606 if (mode == VISIT_ALL_IN_SCAVENGE) { |
| 6607 isolate_->eternal_handles()->IterateNewSpaceRoots(v); |
| 6608 } else { |
| 6609 isolate_->eternal_handles()->IterateAllRoots(v); |
| 6610 } |
| 6611 v->Synchronize(VisitorSynchronization::kEternalHandles); |
| 6612 |
6606 // Iterate over pointers being held by inactive threads. | 6613 // Iterate over pointers being held by inactive threads. |
6607 isolate_->thread_manager()->Iterate(v); | 6614 isolate_->thread_manager()->Iterate(v); |
6608 v->Synchronize(VisitorSynchronization::kThreadManager); | 6615 v->Synchronize(VisitorSynchronization::kThreadManager); |
6609 | 6616 |
6610 // Iterate over the pointers the Serialization/Deserialization code is | 6617 // Iterate over the pointers the Serialization/Deserialization code is |
6611 // holding. | 6618 // holding. |
6612 // During garbage collection this keeps the partial snapshot cache alive. | 6619 // During garbage collection this keeps the partial snapshot cache alive. |
6613 // During deserialization of the startup snapshot this creates the partial | 6620 // During deserialization of the startup snapshot this creates the partial |
6614 // snapshot cache and deserializes the objects it refers to. During | 6621 // snapshot cache and deserializes the objects it refers to. During |
6615 // serialization this does nothing, since the partial snapshot cache is | 6622 // serialization this does nothing, since the partial snapshot cache is |
(...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8031 if (FLAG_parallel_recompilation) { | 8038 if (FLAG_parallel_recompilation) { |
8032 heap_->relocation_mutex_->Lock(); | 8039 heap_->relocation_mutex_->Lock(); |
8033 #ifdef DEBUG | 8040 #ifdef DEBUG |
8034 heap_->relocation_mutex_locked_by_optimizer_thread_ = | 8041 heap_->relocation_mutex_locked_by_optimizer_thread_ = |
8035 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); | 8042 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); |
8036 #endif // DEBUG | 8043 #endif // DEBUG |
8037 } | 8044 } |
8038 } | 8045 } |
8039 | 8046 |
8040 } } // namespace v8::internal | 8047 } } // namespace v8::internal |
OLD | NEW |