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 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3211 if (!maybe_obj->ToObject(&obj)) return false; | 3213 if (!maybe_obj->ToObject(&obj)) return false; |
3212 } | 3214 } |
3213 SeededNumberDictionary::cast(obj)->set_requires_slow_elements(); | 3215 SeededNumberDictionary::cast(obj)->set_requires_slow_elements(); |
3214 set_empty_slow_element_dictionary(SeededNumberDictionary::cast(obj)); | 3216 set_empty_slow_element_dictionary(SeededNumberDictionary::cast(obj)); |
3215 | 3217 |
3216 { MaybeObject* maybe_obj = AllocateSymbol(); | 3218 { MaybeObject* maybe_obj = AllocateSymbol(); |
3217 if (!maybe_obj->ToObject(&obj)) return false; | 3219 if (!maybe_obj->ToObject(&obj)) return false; |
3218 } | 3220 } |
3219 set_observed_symbol(Symbol::cast(obj)); | 3221 set_observed_symbol(Symbol::cast(obj)); |
3220 | 3222 |
3221 set_i18n_template_one(the_hole_value()); | |
3222 set_i18n_template_two(the_hole_value()); | |
3223 | |
3224 // Handling of script id generation is in Factory::NewScript. | 3223 // Handling of script id generation is in Factory::NewScript. |
3225 set_last_script_id(Smi::FromInt(v8::Script::kNoScriptId)); | 3224 set_last_script_id(Smi::FromInt(v8::Script::kNoScriptId)); |
3226 | 3225 |
3227 // Initialize keyed lookup cache. | 3226 // Initialize keyed lookup cache. |
3228 isolate_->keyed_lookup_cache()->Clear(); | 3227 isolate_->keyed_lookup_cache()->Clear(); |
3229 | 3228 |
3230 // Initialize context slot cache. | 3229 // Initialize context slot cache. |
3231 isolate_->context_slot_cache()->Clear(); | 3230 isolate_->context_slot_cache()->Clear(); |
3232 | 3231 |
3233 // Initialize descriptor cache. | 3232 // Initialize descriptor cache. |
(...skipping 3367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6601 case VISIT_ALL_IN_SCAVENGE: | 6600 case VISIT_ALL_IN_SCAVENGE: |
6602 isolate_->global_handles()->IterateNewSpaceStrongAndDependentRoots(v); | 6601 isolate_->global_handles()->IterateNewSpaceStrongAndDependentRoots(v); |
6603 break; | 6602 break; |
6604 case VISIT_ALL_IN_SWEEP_NEWSPACE: | 6603 case VISIT_ALL_IN_SWEEP_NEWSPACE: |
6605 case VISIT_ALL: | 6604 case VISIT_ALL: |
6606 isolate_->global_handles()->IterateAllRoots(v); | 6605 isolate_->global_handles()->IterateAllRoots(v); |
6607 break; | 6606 break; |
6608 } | 6607 } |
6609 v->Synchronize(VisitorSynchronization::kGlobalHandles); | 6608 v->Synchronize(VisitorSynchronization::kGlobalHandles); |
6610 | 6609 |
| 6610 // Iterate over eternal handles. |
| 6611 if (mode == VISIT_ALL_IN_SCAVENGE) { |
| 6612 isolate_->eternal_handles()->IterateNewSpaceRoots(v); |
| 6613 } else { |
| 6614 isolate_->eternal_handles()->IterateAllRoots(v); |
| 6615 } |
| 6616 v->Synchronize(VisitorSynchronization::kEternalHandles); |
| 6617 |
6611 // Iterate over pointers being held by inactive threads. | 6618 // Iterate over pointers being held by inactive threads. |
6612 isolate_->thread_manager()->Iterate(v); | 6619 isolate_->thread_manager()->Iterate(v); |
6613 v->Synchronize(VisitorSynchronization::kThreadManager); | 6620 v->Synchronize(VisitorSynchronization::kThreadManager); |
6614 | 6621 |
6615 // Iterate over the pointers the Serialization/Deserialization code is | 6622 // Iterate over the pointers the Serialization/Deserialization code is |
6616 // holding. | 6623 // holding. |
6617 // During garbage collection this keeps the partial snapshot cache alive. | 6624 // During garbage collection this keeps the partial snapshot cache alive. |
6618 // During deserialization of the startup snapshot this creates the partial | 6625 // During deserialization of the startup snapshot this creates the partial |
6619 // snapshot cache and deserializes the objects it refers to. During | 6626 // snapshot cache and deserializes the objects it refers to. During |
6620 // serialization this does nothing, since the partial snapshot cache is | 6627 // serialization this does nothing, since the partial snapshot cache is |
(...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8036 if (FLAG_parallel_recompilation) { | 8043 if (FLAG_parallel_recompilation) { |
8037 heap_->relocation_mutex_->Lock(); | 8044 heap_->relocation_mutex_->Lock(); |
8038 #ifdef DEBUG | 8045 #ifdef DEBUG |
8039 heap_->relocation_mutex_locked_by_optimizer_thread_ = | 8046 heap_->relocation_mutex_locked_by_optimizer_thread_ = |
8040 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); | 8047 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); |
8041 #endif // DEBUG | 8048 #endif // DEBUG |
8042 } | 8049 } |
8043 } | 8050 } |
8044 | 8051 |
8045 } } // namespace v8::internal | 8052 } } // namespace v8::internal |
OLD | NEW |