| 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 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 UncommitFromSpace(); | 599 UncommitFromSpace(); |
| 600 incremental_marking()->UncommitMarkingDeque(); | 600 incremental_marking()->UncommitMarkingDeque(); |
| 601 } | 601 } |
| 602 | 602 |
| 603 | 603 |
| 604 bool Heap::CollectGarbage(AllocationSpace space, | 604 bool Heap::CollectGarbage(AllocationSpace space, |
| 605 GarbageCollector collector, | 605 GarbageCollector collector, |
| 606 const char* gc_reason, | 606 const char* gc_reason, |
| 607 const char* collector_reason) { | 607 const char* collector_reason) { |
| 608 // The VM is in the GC state until exiting this function. | 608 // The VM is in the GC state until exiting this function. |
| 609 VMState state(isolate_, GC); | 609 VMState<GC> state(isolate_); |
| 610 | 610 |
| 611 #ifdef DEBUG | 611 #ifdef DEBUG |
| 612 // Reset the allocation timeout to the GC interval, but make sure to | 612 // Reset the allocation timeout to the GC interval, but make sure to |
| 613 // allow at least a few allocations after a collection. The reason | 613 // allow at least a few allocations after a collection. The reason |
| 614 // for this is that we have a lot of allocation sequences and we | 614 // for this is that we have a lot of allocation sequences and we |
| 615 // assume that a garbage collection will allow the subsequent | 615 // assume that a garbage collection will allow the subsequent |
| 616 // allocation attempts to go through. | 616 // allocation attempts to go through. |
| 617 allocation_timeout_ = Max(6, FLAG_gc_interval); | 617 allocation_timeout_ = Max(6, FLAG_gc_interval); |
| 618 #endif | 618 #endif |
| 619 | 619 |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 if (FLAG_verify_heap) { | 885 if (FLAG_verify_heap) { |
| 886 VerifyStringTable(); | 886 VerifyStringTable(); |
| 887 } | 887 } |
| 888 #endif | 888 #endif |
| 889 | 889 |
| 890 GCType gc_type = | 890 GCType gc_type = |
| 891 collector == MARK_COMPACTOR ? kGCTypeMarkSweepCompact : kGCTypeScavenge; | 891 collector == MARK_COMPACTOR ? kGCTypeMarkSweepCompact : kGCTypeScavenge; |
| 892 | 892 |
| 893 { | 893 { |
| 894 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); | 894 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); |
| 895 VMState state(isolate_, EXTERNAL); | 895 VMState<EXTERNAL> state(isolate_); |
| 896 CallGCPrologueCallbacks(gc_type); | 896 CallGCPrologueCallbacks(gc_type); |
| 897 } | 897 } |
| 898 | 898 |
| 899 EnsureFromSpaceIsCommitted(); | 899 EnsureFromSpaceIsCommitted(); |
| 900 | 900 |
| 901 int start_new_space_size = Heap::new_space()->SizeAsInt(); | 901 int start_new_space_size = Heap::new_space()->SizeAsInt(); |
| 902 | 902 |
| 903 if (IsHighSurvivalRate()) { | 903 if (IsHighSurvivalRate()) { |
| 904 // We speed up the incremental marker if it is running so that it | 904 // We speed up the incremental marker if it is running so that it |
| 905 // does not fall behind the rate of promotion, which would cause a | 905 // does not fall behind the rate of promotion, which would cause a |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 Relocatable::PostGarbageCollectionProcessing(); | 1007 Relocatable::PostGarbageCollectionProcessing(); |
| 1008 | 1008 |
| 1009 if (collector == MARK_COMPACTOR) { | 1009 if (collector == MARK_COMPACTOR) { |
| 1010 // Register the amount of external allocated memory. | 1010 // Register the amount of external allocated memory. |
| 1011 amount_of_external_allocated_memory_at_last_global_gc_ = | 1011 amount_of_external_allocated_memory_at_last_global_gc_ = |
| 1012 amount_of_external_allocated_memory_; | 1012 amount_of_external_allocated_memory_; |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 { | 1015 { |
| 1016 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); | 1016 GCTracer::Scope scope(tracer, GCTracer::Scope::EXTERNAL); |
| 1017 VMState state(isolate_, EXTERNAL); | 1017 VMState<EXTERNAL> state(isolate_); |
| 1018 CallGCEpilogueCallbacks(gc_type); | 1018 CallGCEpilogueCallbacks(gc_type); |
| 1019 } | 1019 } |
| 1020 | 1020 |
| 1021 #ifdef VERIFY_HEAP | 1021 #ifdef VERIFY_HEAP |
| 1022 if (FLAG_verify_heap) { | 1022 if (FLAG_verify_heap) { |
| 1023 VerifyStringTable(); | 1023 VerifyStringTable(); |
| 1024 } | 1024 } |
| 1025 #endif | 1025 #endif |
| 1026 | 1026 |
| 1027 return next_gc_likely_to_collect_more; | 1027 return next_gc_likely_to_collect_more; |
| (...skipping 6832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7860 static_cast<int>(object_sizes_last_time_[index])); | 7860 static_cast<int>(object_sizes_last_time_[index])); |
| 7861 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) | 7861 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) |
| 7862 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 7862 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
| 7863 | 7863 |
| 7864 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 7864 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
| 7865 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 7865 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
| 7866 ClearObjectStats(); | 7866 ClearObjectStats(); |
| 7867 } | 7867 } |
| 7868 | 7868 |
| 7869 } } // namespace v8::internal | 7869 } } // namespace v8::internal |
| OLD | NEW |