Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 , m_vectorBackingHeapIndex(BlinkGC::Vector1HeapIndex) | 97 , m_vectorBackingHeapIndex(BlinkGC::Vector1HeapIndex) |
| 98 , m_currentHeapAges(0) | 98 , m_currentHeapAges(0) |
| 99 , m_isTerminating(false) | 99 , m_isTerminating(false) |
| 100 , m_gcMixinMarker(nullptr) | 100 , m_gcMixinMarker(nullptr) |
| 101 , m_shouldFlushHeapDoesNotContainCache(false) | 101 , m_shouldFlushHeapDoesNotContainCache(false) |
| 102 , m_gcState(NoGCScheduled) | 102 , m_gcState(NoGCScheduled) |
| 103 , m_traceDOMWrappers(nullptr) | 103 , m_traceDOMWrappers(nullptr) |
| 104 #if defined(ADDRESS_SANITIZER) | 104 #if defined(ADDRESS_SANITIZER) |
| 105 , m_asanFakeStack(__asan_get_current_fake_stack()) | 105 , m_asanFakeStack(__asan_get_current_fake_stack()) |
| 106 #endif | 106 #endif |
| 107 #if defined(LEAK_SANITIZER) | |
| 108 , m_disabledStaticPersistentsRegistration(0) | |
| 109 #endif | |
| 107 { | 110 { |
| 108 ASSERT(checkThread()); | 111 ASSERT(checkThread()); |
| 109 ASSERT(!**s_threadSpecific); | 112 ASSERT(!**s_threadSpecific); |
| 110 **s_threadSpecific = this; | 113 **s_threadSpecific = this; |
| 111 | 114 |
| 112 if (isMainThread()) { | 115 if (isMainThread()) { |
| 113 s_mainThreadStackStart = reinterpret_cast<uintptr_t>(m_startOfStack) - s izeof(void*); | 116 s_mainThreadStackStart = reinterpret_cast<uintptr_t>(m_startOfStack) - s izeof(void*); |
| 114 size_t underestimatedStackSize = StackFrameDepth::getUnderestimatedStack Size(); | 117 size_t underestimatedStackSize = StackFrameDepth::getUnderestimatedStack Size(); |
| 115 if (underestimatedStackSize > sizeof(void*)) | 118 if (underestimatedStackSize > sizeof(void*)) |
| 116 s_mainThreadUnderestimatedStackSize = underestimatedStackSize - size of(void*); | 119 s_mainThreadUnderestimatedStackSize = underestimatedStackSize - size of(void*); |
| (...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1310 ASSERT(checkThread()); | 1313 ASSERT(checkThread()); |
| 1311 SafePointScope scope(BlinkGC::HeapPointersOnStack); | 1314 SafePointScope scope(BlinkGC::HeapPointersOnStack); |
| 1312 { | 1315 { |
| 1313 MutexLocker locker(threadAttachMutex()); | 1316 MutexLocker locker(threadAttachMutex()); |
| 1314 size_t index = m_interruptors.find(interruptor); | 1317 size_t index = m_interruptors.find(interruptor); |
| 1315 RELEASE_ASSERT(index != kNotFound); | 1318 RELEASE_ASSERT(index != kNotFound); |
| 1316 m_interruptors.remove(index); | 1319 m_interruptors.remove(index); |
| 1317 } | 1320 } |
| 1318 } | 1321 } |
| 1319 | 1322 |
| 1323 #if defined(LEAK_SANITIZER) | |
| 1324 void ThreadState::registerStaticPersistentNode(PersistentNode* node) | |
| 1325 { | |
| 1326 if (m_disabledStaticPersistentsRegistration) | |
| 1327 return; | |
| 1328 | |
| 1329 ASSERT(!m_staticPersistents.contains(node)); | |
| 1330 m_staticPersistents.add(node); | |
| 1331 } | |
| 1332 | |
| 1333 void ThreadState::releaseStaticPersistentNodes() | |
| 1334 { | |
| 1335 for (PersistentNode* node : m_staticPersistents) | |
| 1336 persistentRegion()->freePersistentNode(node); | |
|
haraken
2015/12/07 14:46:10
After calling this, all static Persistent handles
sof
2015/12/07 16:59:17
Intentional to handle it that way; the sweeping ph
| |
| 1337 | |
| 1338 m_staticPersistents.clear(); | |
| 1339 } | |
| 1340 | |
| 1341 void ThreadState::enterStaticReferenceRegistrationDisabledScope() | |
| 1342 { | |
| 1343 m_disabledStaticPersistentsRegistration++; | |
| 1344 } | |
| 1345 | |
| 1346 void ThreadState::leaveStaticReferenceRegistrationDisabledScope() | |
| 1347 { | |
| 1348 ASSERT(m_disabledStaticPersistentsRegistration); | |
| 1349 m_disabledStaticPersistentsRegistration--; | |
| 1350 } | |
| 1351 #endif | |
| 1352 | |
| 1320 ThreadState::AttachedThreadStateSet& ThreadState::attachedThreads() | 1353 ThreadState::AttachedThreadStateSet& ThreadState::attachedThreads() |
| 1321 { | 1354 { |
| 1322 DEFINE_STATIC_LOCAL(AttachedThreadStateSet, threads, ()); | 1355 DEFINE_STATIC_LOCAL(AttachedThreadStateSet, threads, ()); |
| 1323 return threads; | 1356 return threads; |
| 1324 } | 1357 } |
| 1325 | 1358 |
| 1326 void ThreadState::lockThreadAttachMutex() | 1359 void ThreadState::lockThreadAttachMutex() |
| 1327 { | 1360 { |
| 1328 threadAttachMutex().lock(); | 1361 threadAttachMutex().lock(); |
| 1329 } | 1362 } |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1483 threadDump->addScalar("dead_count", "objects", totalDeadCount); | 1516 threadDump->addScalar("dead_count", "objects", totalDeadCount); |
| 1484 threadDump->addScalar("live_size", "bytes", totalLiveSize); | 1517 threadDump->addScalar("live_size", "bytes", totalLiveSize); |
| 1485 threadDump->addScalar("dead_size", "bytes", totalDeadSize); | 1518 threadDump->addScalar("dead_size", "bytes", totalDeadSize); |
| 1486 | 1519 |
| 1487 WebMemoryAllocatorDump* heapsDump = BlinkGCMemoryDumpProvider::instance()->c reateMemoryAllocatorDumpForCurrentGC(heapsDumpName); | 1520 WebMemoryAllocatorDump* heapsDump = BlinkGCMemoryDumpProvider::instance()->c reateMemoryAllocatorDumpForCurrentGC(heapsDumpName); |
| 1488 WebMemoryAllocatorDump* classesDump = BlinkGCMemoryDumpProvider::instance()- >createMemoryAllocatorDumpForCurrentGC(classesDumpName); | 1521 WebMemoryAllocatorDump* classesDump = BlinkGCMemoryDumpProvider::instance()- >createMemoryAllocatorDumpForCurrentGC(classesDumpName); |
| 1489 BlinkGCMemoryDumpProvider::instance()->currentProcessMemoryDump()->addOwners hipEdge(classesDump->guid(), heapsDump->guid()); | 1522 BlinkGCMemoryDumpProvider::instance()->currentProcessMemoryDump()->addOwners hipEdge(classesDump->guid(), heapsDump->guid()); |
| 1490 } | 1523 } |
| 1491 | 1524 |
| 1492 } // namespace blink | 1525 } // namespace blink |
| OLD | NEW |