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 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 | 477 |
478 #if ENABLE(ASSERT) || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER) | 478 #if ENABLE(ASSERT) || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER) |
479 // In Debug builds, memory is zapped when it's freed, and the zapped memory
is | 479 // In Debug builds, memory is zapped when it's freed, and the zapped memory
is |
480 // zeroed out when the memory is reused. Memory is also zapped when using Le
ak | 480 // zeroed out when the memory is reused. Memory is also zapped when using Le
ak |
481 // Sanitizer because the heap is used as a root region for LSan and therefor
e | 481 // Sanitizer because the heap is used as a root region for LSan and therefor
e |
482 // pointers in unreachable memory could hide leaks. | 482 // pointers in unreachable memory could hide leaks. |
483 for (size_t i = 0; i < objectSize; i++) | 483 for (size_t i = 0; i < objectSize; i++) |
484 object[i] = finalizedZapValue; | 484 object[i] = finalizedZapValue; |
485 | 485 |
486 // Zap the primary vTable entry (secondary vTable entries are not zapped). | 486 // Zap the primary vTable entry (secondary vTable entries are not zapped). |
487 *(reinterpret_cast<uintptr_t*>(object)) = zappedVTable; | 487 if (gcInfo->hasVTable()) { |
| 488 *(reinterpret_cast<uintptr_t*>(object)) = zappedVTable; |
| 489 } |
488 #endif | 490 #endif |
489 // In Release builds, the entire object is zeroed out when it is added to th
e free list. | 491 // In Release builds, the entire object is zeroed out when it is added to th
e free list. |
490 // This happens right after sweeping the page and before the thread commence
s execution. | 492 // This happens right after sweeping the page and before the thread commence
s execution. |
491 } | 493 } |
492 | 494 |
493 NO_SANITIZE_ADDRESS | 495 NO_SANITIZE_ADDRESS |
494 void FinalizedHeapObjectHeader::finalize() | 496 void FinalizedHeapObjectHeader::finalize() |
495 { | 497 { |
496 HeapObjectHeader::finalize(m_gcInfo, payload(), payloadSize()); | 498 HeapObjectHeader::finalize(m_gcInfo, payload(), payloadSize()); |
497 } | 499 } |
(...skipping 2348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2846 CallbackStack* Heap::s_markingStack; | 2848 CallbackStack* Heap::s_markingStack; |
2847 CallbackStack* Heap::s_postMarkingCallbackStack; | 2849 CallbackStack* Heap::s_postMarkingCallbackStack; |
2848 CallbackStack* Heap::s_weakCallbackStack; | 2850 CallbackStack* Heap::s_weakCallbackStack; |
2849 CallbackStack* Heap::s_ephemeronStack; | 2851 CallbackStack* Heap::s_ephemeronStack; |
2850 HeapDoesNotContainCache* Heap::s_heapDoesNotContainCache; | 2852 HeapDoesNotContainCache* Heap::s_heapDoesNotContainCache; |
2851 bool Heap::s_shutdownCalled = false; | 2853 bool Heap::s_shutdownCalled = false; |
2852 bool Heap::s_lastGCWasConservative = false; | 2854 bool Heap::s_lastGCWasConservative = false; |
2853 FreePagePool* Heap::s_freePagePool; | 2855 FreePagePool* Heap::s_freePagePool; |
2854 OrphanedPagePool* Heap::s_orphanedPagePool; | 2856 OrphanedPagePool* Heap::s_orphanedPagePool; |
2855 } | 2857 } |
OLD | NEW |