Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Side by Side Diff: Source/platform/heap/Heap.h

Issue 1203493004: [tracing] Adding class-wise memory statistics to blink gc memory dumps (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Remove useless check. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/platform/heap/GCInfo.h ('k') | Source/platform/heap/Heap.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « Source/platform/heap/GCInfo.h ('k') | Source/platform/heap/Heap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698