Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(507)

Side by Side Diff: Source/heap/Heap.cpp

Issue 187483002: Oilpan: We need to collect all garbage before shutting down the worker thread (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/heap/Heap.h ('k') | Source/heap/HeapTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 1294
1295 // Call weak callbacks on objects that may now be pointing to dead 1295 // Call weak callbacks on objects that may now be pointing to dead
1296 // objects. 1296 // objects.
1297 while (popAndInvokeWeakPointerCallback(&marker)) { } 1297 while (popAndInvokeWeakPointerCallback(&marker)) { }
1298 1298
1299 // It is not permitted to trace pointers of live objects in the weak 1299 // It is not permitted to trace pointers of live objects in the weak
1300 // callback phase, so the marking stack should still be empty here. 1300 // callback phase, so the marking stack should still be empty here.
1301 s_markingStack->assertIsEmpty(); 1301 s_markingStack->assertIsEmpty();
1302 } 1302 }
1303 1303
1304 void Heap::collectAllGarbage(ThreadState::StackState stackState, GCType gcType)
1305 {
1306 // FIXME: oilpan: we should perform a single GC and everything
1307 // should die. Unfortunately it is not the case for all objects
1308 // because the hierarchy was not completely moved to the heap and
1309 // some heap allocated objects own objects that contain persistents
1310 // pointing to other heap allocated objects.
1311 for (int i = 0; i < 5; i++)
1312 collectGarbage(stackState, gcType);
1313 }
1314
1304 void Heap::getStats(HeapStats* stats) 1315 void Heap::getStats(HeapStats* stats)
1305 { 1316 {
1306 stats->clear(); 1317 stats->clear();
1307 ASSERT(ThreadState::isAnyThreadInGC()); 1318 ASSERT(ThreadState::isAnyThreadInGC());
1308 ThreadState::AttachedThreadStateSet& threads = ThreadState::attachedThreads( ); 1319 ThreadState::AttachedThreadStateSet& threads = ThreadState::attachedThreads( );
1309 typedef ThreadState::AttachedThreadStateSet::iterator ThreadStateIterator; 1320 typedef ThreadState::AttachedThreadStateSet::iterator ThreadStateIterator;
1310 for (ThreadStateIterator it = threads.begin(), end = threads.end(); it != en d; ++it) { 1321 for (ThreadStateIterator it = threads.begin(), end = threads.end(); it != en d; ++it) {
1311 HeapStats temp; 1322 HeapStats temp;
1312 (*it)->getStats(temp); 1323 (*it)->getStats(temp);
1313 stats->add(&temp); 1324 stats->add(&temp);
(...skipping 19 matching lines...) Expand all
1333 1344
1334 // Force template instantiations for the types that we need. 1345 // Force template instantiations for the types that we need.
1335 template class HeapPage<FinalizedHeapObjectHeader>; 1346 template class HeapPage<FinalizedHeapObjectHeader>;
1336 template class HeapPage<HeapObjectHeader>; 1347 template class HeapPage<HeapObjectHeader>;
1337 template class ThreadHeap<FinalizedHeapObjectHeader>; 1348 template class ThreadHeap<FinalizedHeapObjectHeader>;
1338 template class ThreadHeap<HeapObjectHeader>; 1349 template class ThreadHeap<HeapObjectHeader>;
1339 1350
1340 CallbackStack* Heap::s_markingStack; 1351 CallbackStack* Heap::s_markingStack;
1341 CallbackStack* Heap::s_weakCallbackStack; 1352 CallbackStack* Heap::s_weakCallbackStack;
1342 } 1353 }
OLDNEW
« no previous file with comments | « Source/heap/Heap.h ('k') | Source/heap/HeapTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698