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 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 void processMarkingStack(Visitor*); | 428 void processMarkingStack(Visitor*); |
429 void postMarkingProcessing(Visitor*); | 429 void postMarkingProcessing(Visitor*); |
430 void globalWeakProcessing(Visitor*); | 430 void globalWeakProcessing(Visitor*); |
431 | 431 |
432 void preGC(); | 432 void preGC(); |
433 void postGC(BlinkGC::GCType); | 433 void postGC(BlinkGC::GCType); |
434 | 434 |
435 // Conservatively checks whether an address is a pointer in any of the | 435 // Conservatively checks whether an address is a pointer in any of the |
436 // thread heaps. If so marks the object pointed to as live. | 436 // thread heaps. If so marks the object pointed to as live. |
437 Address checkAndMarkPointer(Visitor*, Address); | 437 Address checkAndMarkPointer(Visitor*, Address); |
| 438 #if DCHECK_IS_ON() |
| 439 Address checkAndMarkPointer(Visitor*, |
| 440 Address, |
| 441 MarkedPointerCallbackForTesting); |
| 442 #endif |
438 | 443 |
439 size_t objectPayloadSizeForTesting(); | 444 size_t objectPayloadSizeForTesting(); |
440 | 445 |
441 void flushHeapDoesNotContainCache(); | 446 void flushHeapDoesNotContainCache(); |
442 | 447 |
443 FreePagePool* getFreePagePool() { return m_freePagePool.get(); } | 448 FreePagePool* getFreePagePool() { return m_freePagePool.get(); } |
444 OrphanedPagePool* getOrphanedPagePool() { return m_orphanedPagePool.get(); } | 449 OrphanedPagePool* getOrphanedPagePool() { return m_orphanedPagePool.get(); } |
445 | 450 |
446 // This look-up uses the region search tree and a negative contains cache to | 451 // This look-up uses the region search tree and a negative contains cache to |
447 // provide an efficient mapping from arbitrary addresses to the containing | 452 // provide an efficient mapping from arbitrary addresses to the containing |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 address = ThreadHeap::allocateOnArenaIndex(state, size, arenaIndex, | 690 address = ThreadHeap::allocateOnArenaIndex(state, size, arenaIndex, |
686 gcInfoIndex, typeName); | 691 gcInfoIndex, typeName); |
687 } | 692 } |
688 size_t copySize = previousHeader->payloadSize(); | 693 size_t copySize = previousHeader->payloadSize(); |
689 if (copySize > size) | 694 if (copySize > size) |
690 copySize = size; | 695 copySize = size; |
691 memcpy(address, previous, copySize); | 696 memcpy(address, previous, copySize); |
692 return address; | 697 return address; |
693 } | 698 } |
694 | 699 |
695 template <typename Derived> | |
696 template <typename T> | 700 template <typename T> |
697 void VisitorHelper<Derived>::handleWeakCell(Visitor* self, void* object) { | 701 void Visitor::handleWeakCell(Visitor* self, void* object) { |
698 T** cell = reinterpret_cast<T**>(object); | 702 T** cell = reinterpret_cast<T**>(object); |
699 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell)) | 703 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell)) |
700 *cell = nullptr; | 704 *cell = nullptr; |
701 } | 705 } |
702 | 706 |
703 } // namespace blink | 707 } // namespace blink |
704 | 708 |
| 709 #include "platform/heap/VisitorImpl.h" |
| 710 |
705 #endif // Heap_h | 711 #endif // Heap_h |
OLD | NEW |