OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/once.h" | 10 #include "src/base/once.h" |
(...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1203 mark_compact_collector_.Prepare(); | 1203 mark_compact_collector_.Prepare(); |
1204 | 1204 |
1205 ms_count_++; | 1205 ms_count_++; |
1206 | 1206 |
1207 MarkCompactPrologue(); | 1207 MarkCompactPrologue(); |
1208 | 1208 |
1209 mark_compact_collector_.CollectGarbage(); | 1209 mark_compact_collector_.CollectGarbage(); |
1210 | 1210 |
1211 LOG(isolate_, ResourceEvent("markcompact", "end")); | 1211 LOG(isolate_, ResourceEvent("markcompact", "end")); |
1212 | 1212 |
1213 gc_state_ = NOT_IN_GC; | 1213 MarkCompactEpilogue(); |
1214 | |
1215 isolate_->counters()->objs_since_last_full()->Set(0); | |
1216 | |
1217 flush_monomorphic_ics_ = false; | |
1218 | 1214 |
1219 if (FLAG_allocation_site_pretenuring) { | 1215 if (FLAG_allocation_site_pretenuring) { |
1220 EvaluateOldSpaceLocalPretenuring(size_of_objects_before_gc); | 1216 EvaluateOldSpaceLocalPretenuring(size_of_objects_before_gc); |
1221 } | 1217 } |
1222 } | 1218 } |
1223 | 1219 |
1224 | 1220 |
| 1221 void Heap::MarkCompactEpilogue() { |
| 1222 gc_state_ = NOT_IN_GC; |
| 1223 |
| 1224 isolate_->counters()->objs_since_last_full()->Set(0); |
| 1225 |
| 1226 flush_monomorphic_ics_ = false; |
| 1227 |
| 1228 incremental_marking()->Epilogue(); |
| 1229 } |
| 1230 |
| 1231 |
1225 void Heap::MarkCompactPrologue() { | 1232 void Heap::MarkCompactPrologue() { |
1226 // At any old GC clear the keyed lookup cache to enable collection of unused | 1233 // At any old GC clear the keyed lookup cache to enable collection of unused |
1227 // maps. | 1234 // maps. |
1228 isolate_->keyed_lookup_cache()->Clear(); | 1235 isolate_->keyed_lookup_cache()->Clear(); |
1229 isolate_->context_slot_cache()->Clear(); | 1236 isolate_->context_slot_cache()->Clear(); |
1230 isolate_->descriptor_lookup_cache()->Clear(); | 1237 isolate_->descriptor_lookup_cache()->Clear(); |
1231 RegExpResultsCache::Clear(string_split_cache()); | 1238 RegExpResultsCache::Clear(string_split_cache()); |
1232 RegExpResultsCache::Clear(regexp_multiple_cache()); | 1239 RegExpResultsCache::Clear(regexp_multiple_cache()); |
1233 | 1240 |
1234 isolate_->compilation_cache()->MarkCompactPrologue(); | 1241 isolate_->compilation_cache()->MarkCompactPrologue(); |
(...skipping 5152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6387 static_cast<int>(object_sizes_last_time_[index])); | 6394 static_cast<int>(object_sizes_last_time_[index])); |
6388 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6395 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
6389 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6396 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
6390 | 6397 |
6391 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6398 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
6392 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6399 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
6393 ClearObjectStats(); | 6400 ClearObjectStats(); |
6394 } | 6401 } |
6395 } | 6402 } |
6396 } // namespace v8::internal | 6403 } // namespace v8::internal |
OLD | NEW |