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 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 bool hasBeenSwept() const { return m_swept; } | 423 bool hasBeenSwept() const { return m_swept; } |
424 | 424 |
425 void markAsSwept() | 425 void markAsSwept() |
426 { | 426 { |
427 ASSERT(!m_swept); | 427 ASSERT(!m_swept); |
428 m_swept = true; | 428 m_swept = true; |
429 } | 429 } |
430 | 430 |
431 void markAsUnswept() | 431 void markAsUnswept() |
432 { | 432 { |
| 433 ASSERT(m_swept); |
433 m_swept = false; | 434 m_swept = false; |
434 } | 435 } |
435 | 436 |
436 private: | 437 private: |
437 PageMemory* m_storage; | 438 PageMemory* m_storage; |
438 BaseHeap* m_heap; | 439 BaseHeap* m_heap; |
439 BasePage* m_next; | 440 BasePage* m_next; |
440 // Whether the page is part of a terminating thread or not. | 441 // Whether the page is part of a terminating thread or not. |
441 bool m_terminating; | 442 bool m_terminating; |
442 | 443 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 #if ENABLE(GC_PROFILING) | 685 #if ENABLE(GC_PROFILING) |
685 void snapshot(TracedValue*, ThreadState::SnapshotInfo*); | 686 void snapshot(TracedValue*, ThreadState::SnapshotInfo*); |
686 virtual void snapshotFreeList(TracedValue&) { }; | 687 virtual void snapshotFreeList(TracedValue&) { }; |
687 | 688 |
688 void countMarkedObjects(ClassAgeCountsMap&) const; | 689 void countMarkedObjects(ClassAgeCountsMap&) const; |
689 void countObjectsToSweep(ClassAgeCountsMap&) const; | 690 void countObjectsToSweep(ClassAgeCountsMap&) const; |
690 void incrementMarkedObjectsAge(); | 691 void incrementMarkedObjectsAge(); |
691 #endif | 692 #endif |
692 | 693 |
693 virtual void clearFreeLists() { } | 694 virtual void clearFreeLists() { } |
694 void makeConsistentForSweeping(ThreadState::GCType); | 695 void makeConsistentForSweeping(); |
695 #if ENABLE(ASSERT) | 696 #if ENABLE(ASSERT) |
696 virtual bool isConsistentForSweeping() = 0; | 697 virtual bool isConsistentForSweeping() = 0; |
697 #endif | 698 #endif |
698 size_t objectPayloadSizeForTesting(); | 699 size_t objectPayloadSizeForTesting(); |
699 void prepareHeapForTermination(); | 700 void prepareHeapForTermination(); |
700 void prepareForSweep(); | 701 void prepareForSweep(); |
701 #if defined(ADDRESS_SANITIZER) | 702 #if defined(ADDRESS_SANITIZER) |
702 void poisonUnmarkedObjects(); | 703 void poisonUnmarkedObjects(); |
703 #endif | 704 #endif |
704 Address lazySweep(size_t, size_t gcInfoIndex); | 705 Address lazySweep(size_t, size_t gcInfoIndex); |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 static const char* gcReasonString(GCReason); | 917 static const char* gcReasonString(GCReason); |
917 static void collectGarbage(ThreadState::StackState, ThreadState::GCType, GCR
eason); | 918 static void collectGarbage(ThreadState::StackState, ThreadState::GCType, GCR
eason); |
918 static void collectGarbageForTerminatingThread(ThreadState*); | 919 static void collectGarbageForTerminatingThread(ThreadState*); |
919 static void collectAllGarbage(); | 920 static void collectAllGarbage(); |
920 | 921 |
921 static void processMarkingStack(Visitor*); | 922 static void processMarkingStack(Visitor*); |
922 static void postMarkingProcessing(Visitor*); | 923 static void postMarkingProcessing(Visitor*); |
923 static void globalWeakProcessing(Visitor*); | 924 static void globalWeakProcessing(Visitor*); |
924 static void setForcePreciseGCForTesting(); | 925 static void setForcePreciseGCForTesting(); |
925 | 926 |
926 static void preGC(ThreadState::GCType); | 927 static void preGC(); |
927 static void postGC(ThreadState::GCType); | 928 static void postGC(ThreadState::GCType); |
928 | 929 |
929 // Conservatively checks whether an address is a pointer in any of the | 930 // Conservatively checks whether an address is a pointer in any of the |
930 // thread heaps. If so marks the object pointed to as live. | 931 // thread heaps. If so marks the object pointed to as live. |
931 static Address checkAndMarkPointer(Visitor*, Address); | 932 static Address checkAndMarkPointer(Visitor*, Address); |
932 | 933 |
933 #if ENABLE(GC_PROFILING) | 934 #if ENABLE(GC_PROFILING) |
934 // Dump the path to specified object on the next GC. This method is to be | 935 // Dump the path to specified object on the next GC. This method is to be |
935 // invoked from GDB. | 936 // invoked from GDB. |
936 static void dumpPathToObjectOnNextGC(void* p); | 937 static void dumpPathToObjectOnNextGC(void* p); |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1295 size_t copySize = previousHeader->payloadSize(); | 1296 size_t copySize = previousHeader->payloadSize(); |
1296 if (copySize > size) | 1297 if (copySize > size) |
1297 copySize = size; | 1298 copySize = size; |
1298 memcpy(address, previous, copySize); | 1299 memcpy(address, previous, copySize); |
1299 return address; | 1300 return address; |
1300 } | 1301 } |
1301 | 1302 |
1302 } // namespace blink | 1303 } // namespace blink |
1303 | 1304 |
1304 #endif // Heap_h | 1305 #endif // Heap_h |
OLD | NEW |