| 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 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 // heap page. If so, find the start of that object and mark it | 381 // heap page. If so, find the start of that object and mark it |
| 382 // using the given Visitor. Otherwise do nothing. The pointer must | 382 // using the given Visitor. Otherwise do nothing. The pointer must |
| 383 // be within the same aligned blinkPageSize as the this-pointer. | 383 // be within the same aligned blinkPageSize as the this-pointer. |
| 384 // | 384 // |
| 385 // This is used during conservative stack scanning to | 385 // This is used during conservative stack scanning to |
| 386 // conservatively mark all objects that could be referenced from | 386 // conservatively mark all objects that could be referenced from |
| 387 // the stack. | 387 // the stack. |
| 388 virtual void checkAndMarkPointer(Visitor*, Address) = 0; | 388 virtual void checkAndMarkPointer(Visitor*, Address) = 0; |
| 389 virtual void markOrphaned(); | 389 virtual void markOrphaned(); |
| 390 | 390 |
| 391 virtual void takeSnapshot(String dumpBaseName, size_t pageIndex, size_t* out
FreeSize, size_t* outFreeCount) = 0; | 391 virtual void takeSnapshot(String dumpBaseName, size_t pageIndex, ThreadState
::GCSnapshotInfo&, size_t* outFreeSize, size_t* outFreeCount) = 0; |
| 392 #if ENABLE(GC_PROFILING) | 392 #if ENABLE(GC_PROFILING) |
| 393 virtual const GCInfo* findGCInfo(Address) = 0; | 393 virtual const GCInfo* findGCInfo(Address) = 0; |
| 394 virtual void snapshot(TracedValue*, ThreadState::SnapshotInfo*) = 0; | 394 virtual void snapshot(TracedValue*, ThreadState::SnapshotInfo*) = 0; |
| 395 virtual void incrementMarkedObjectsAge() = 0; | 395 virtual void incrementMarkedObjectsAge() = 0; |
| 396 virtual void countMarkedObjects(ClassAgeCountsMap&) = 0; | 396 virtual void countMarkedObjects(ClassAgeCountsMap&) = 0; |
| 397 virtual void countObjectsToSweep(ClassAgeCountsMap&) = 0; | 397 virtual void countObjectsToSweep(ClassAgeCountsMap&) = 0; |
| 398 #endif | 398 #endif |
| 399 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) | 399 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) |
| 400 virtual bool contains(Address) = 0; | 400 virtual bool contains(Address) = 0; |
| 401 #endif | 401 #endif |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 void removeFromHeap() override; | 463 void removeFromHeap() override; |
| 464 void sweep() override; | 464 void sweep() override; |
| 465 void makeConsistentForGC() override; | 465 void makeConsistentForGC() override; |
| 466 void makeConsistentForMutator() override; | 466 void makeConsistentForMutator() override; |
| 467 #if defined(ADDRESS_SANITIZER) | 467 #if defined(ADDRESS_SANITIZER) |
| 468 void poisonObjects(ThreadState::ObjectsToPoison, ThreadState::Poisoning) ove
rride; | 468 void poisonObjects(ThreadState::ObjectsToPoison, ThreadState::Poisoning) ove
rride; |
| 469 #endif | 469 #endif |
| 470 void checkAndMarkPointer(Visitor*, Address) override; | 470 void checkAndMarkPointer(Visitor*, Address) override; |
| 471 void markOrphaned() override; | 471 void markOrphaned() override; |
| 472 | 472 |
| 473 void takeSnapshot(String dumpBaseName, size_t pageIndex, size_t* outFreeSize
, size_t* outFreeCount) override; | 473 void takeSnapshot(String dumpBaseName, size_t pageIndex, ThreadState::GCSnap
shotInfo&, size_t* outFreeSize, size_t* outFreeCount) override; |
| 474 #if ENABLE(GC_PROFILING) | 474 #if ENABLE(GC_PROFILING) |
| 475 const GCInfo* findGCInfo(Address) override; | 475 const GCInfo* findGCInfo(Address) override; |
| 476 void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; | 476 void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; |
| 477 void incrementMarkedObjectsAge() override; | 477 void incrementMarkedObjectsAge() override; |
| 478 void countMarkedObjects(ClassAgeCountsMap&) override; | 478 void countMarkedObjects(ClassAgeCountsMap&) override; |
| 479 void countObjectsToSweep(ClassAgeCountsMap&) override; | 479 void countObjectsToSweep(ClassAgeCountsMap&) override; |
| 480 #endif | 480 #endif |
| 481 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) | 481 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) |
| 482 // Returns true for the whole blinkPageSize page that the page is on, even | 482 // Returns true for the whole blinkPageSize page that the page is on, even |
| 483 // for the header, and the unmapped guard page at the start. That ensures | 483 // for the header, and the unmapped guard page at the start. That ensures |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 void removeFromHeap() override; | 528 void removeFromHeap() override; |
| 529 void sweep() override; | 529 void sweep() override; |
| 530 void makeConsistentForGC() override; | 530 void makeConsistentForGC() override; |
| 531 void makeConsistentForMutator() override; | 531 void makeConsistentForMutator() override; |
| 532 #if defined(ADDRESS_SANITIZER) | 532 #if defined(ADDRESS_SANITIZER) |
| 533 void poisonObjects(ThreadState::ObjectsToPoison, ThreadState::Poisoning) ove
rride; | 533 void poisonObjects(ThreadState::ObjectsToPoison, ThreadState::Poisoning) ove
rride; |
| 534 #endif | 534 #endif |
| 535 void checkAndMarkPointer(Visitor*, Address) override; | 535 void checkAndMarkPointer(Visitor*, Address) override; |
| 536 void markOrphaned() override; | 536 void markOrphaned() override; |
| 537 | 537 |
| 538 void takeSnapshot(String dumpBaseName, size_t pageIndex, size_t* outFreeSize
, size_t* outFreeCount) override; | 538 void takeSnapshot(String dumpBaseName, size_t pageIndex, ThreadState::GCSnap
shotInfo&, size_t* outFreeSize, size_t* outFreeCount) override; |
| 539 #if ENABLE(GC_PROFILING) | 539 #if ENABLE(GC_PROFILING) |
| 540 const GCInfo* findGCInfo(Address) override; | 540 const GCInfo* findGCInfo(Address) override; |
| 541 void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; | 541 void snapshot(TracedValue*, ThreadState::SnapshotInfo*) override; |
| 542 void incrementMarkedObjectsAge() override; | 542 void incrementMarkedObjectsAge() override; |
| 543 void countMarkedObjects(ClassAgeCountsMap&) override; | 543 void countMarkedObjects(ClassAgeCountsMap&) override; |
| 544 void countObjectsToSweep(ClassAgeCountsMap&) override; | 544 void countObjectsToSweep(ClassAgeCountsMap&) override; |
| 545 #endif | 545 #endif |
| 546 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) | 546 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) |
| 547 // Returns true for any address that is on one of the pages that this | 547 // Returns true for any address that is on one of the pages that this |
| 548 // large object uses. That ensures that we can use a negative result to | 548 // large object uses. That ensures that we can use a negative result to |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 // | 674 // |
| 675 // BaseHeap is a parent class of NormalPageHeap and LargeObjectHeap. | 675 // BaseHeap is a parent class of NormalPageHeap and LargeObjectHeap. |
| 676 // NormalPageHeap represents a heap that contains NormalPages | 676 // NormalPageHeap represents a heap that contains NormalPages |
| 677 // and LargeObjectHeap represents a heap that contains LargeObjectPages. | 677 // and LargeObjectHeap represents a heap that contains LargeObjectPages. |
| 678 class PLATFORM_EXPORT BaseHeap { | 678 class PLATFORM_EXPORT BaseHeap { |
| 679 public: | 679 public: |
| 680 BaseHeap(ThreadState*, int); | 680 BaseHeap(ThreadState*, int); |
| 681 virtual ~BaseHeap(); | 681 virtual ~BaseHeap(); |
| 682 void cleanupPages(); | 682 void cleanupPages(); |
| 683 | 683 |
| 684 void takeSnapshot(const String& dumpBaseName); | 684 void takeSnapshot(const String& dumpBaseName, ThreadState::GCSnapshotInfo&); |
| 685 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) | 685 #if ENABLE(ASSERT) || ENABLE(GC_PROFILING) |
| 686 BasePage* findPageFromAddress(Address); | 686 BasePage* findPageFromAddress(Address); |
| 687 #endif | 687 #endif |
| 688 virtual void takeFreelistSnapshot(const String& dumpBaseName) { } | 688 virtual void takeFreelistSnapshot(const String& dumpBaseName) { } |
| 689 #if ENABLE(GC_PROFILING) | 689 #if ENABLE(GC_PROFILING) |
| 690 void snapshot(TracedValue*, ThreadState::SnapshotInfo*); | 690 void snapshot(TracedValue*, ThreadState::SnapshotInfo*); |
| 691 virtual void snapshotFreeList(TracedValue&) { } | 691 virtual void snapshotFreeList(TracedValue&) { } |
| 692 | 692 |
| 693 void countMarkedObjects(ClassAgeCountsMap&) const; | 693 void countMarkedObjects(ClassAgeCountsMap&) const; |
| 694 void countObjectsToSweep(ClassAgeCountsMap&) const; | 694 void countObjectsToSweep(ClassAgeCountsMap&) const; |
| (...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1392 size_t copySize = previousHeader->payloadSize(); | 1392 size_t copySize = previousHeader->payloadSize(); |
| 1393 if (copySize > size) | 1393 if (copySize > size) |
| 1394 copySize = size; | 1394 copySize = size; |
| 1395 memcpy(address, previous, copySize); | 1395 memcpy(address, previous, copySize); |
| 1396 return address; | 1396 return address; |
| 1397 } | 1397 } |
| 1398 | 1398 |
| 1399 } // namespace blink | 1399 } // namespace blink |
| 1400 | 1400 |
| 1401 #endif // Heap_h | 1401 #endif // Heap_h |
| OLD | NEW |