Chromium Code Reviews| 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 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 483 void visitStack(Visitor*); | 483 void visitStack(Visitor*); |
| 484 | 484 |
| 485 // Visit the asan fake stack frame corresponding to a slot on the | 485 // Visit the asan fake stack frame corresponding to a slot on the |
| 486 // real machine stack if there is one. | 486 // real machine stack if there is one. |
| 487 void visitAsanFakeStackForPointer(Visitor*, Address); | 487 void visitAsanFakeStackForPointer(Visitor*, Address); |
| 488 | 488 |
| 489 // Visit all persistents allocated on this thread. | 489 // Visit all persistents allocated on this thread. |
| 490 void visitPersistents(Visitor*); | 490 void visitPersistents(Visitor*); |
| 491 | 491 |
| 492 struct GCSnapshotInfo { | 492 struct GCSnapshotInfo { |
| 493 // Map from gcInfoIndex to a snapshot class-ids (used as index below). | |
|
haraken
2015/06/27 07:27:40
I'm wondering why you simply can't use gcInfoIndex
| |
| 494 using ClassTagMap = HashMap<size_t, size_t>; | |
| 495 ClassTagMap classTags; | |
| 496 | |
| 497 // Map from class-id (index) to count/size. | |
| 498 Vector<int> liveCount; | |
| 499 Vector<int> deadCount; | |
| 500 Vector<size_t> liveSize; | |
| 501 Vector<size_t> deadSize; | |
| 502 | |
| 493 size_t currentHeapFreeSize; | 503 size_t currentHeapFreeSize; |
| 494 size_t currentHeapFreeCount; | 504 size_t currentHeapFreeCount; |
| 505 | |
| 506 size_t getClassTag(const size_t GCInfoIndex); | |
| 495 }; | 507 }; |
| 496 | 508 |
| 497 #if ENABLE(GC_PROFILING) | 509 #if ENABLE(GC_PROFILING) |
| 498 const GCInfo* findGCInfo(Address); | 510 const GCInfo* findGCInfo(Address); |
| 499 static const GCInfo* findGCInfoFromAllThreads(Address); | 511 static const GCInfo* findGCInfoFromAllThreads(Address); |
| 500 | 512 |
| 501 struct SnapshotInfo { | 513 struct SnapshotInfo { |
| 502 ThreadState* state; | 514 ThreadState* state; |
| 503 | 515 |
| 504 size_t freeSize; | 516 size_t freeSize; |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 642 static bool isVectorHeapIndex(int heapIndex) | 654 static bool isVectorHeapIndex(int heapIndex) |
| 643 { | 655 { |
| 644 return Vector1HeapIndex <= heapIndex && heapIndex <= Vector4HeapIndex; | 656 return Vector1HeapIndex <= heapIndex && heapIndex <= Vector4HeapIndex; |
| 645 } | 657 } |
| 646 void allocationPointAdjusted(int heapIndex); | 658 void allocationPointAdjusted(int heapIndex); |
| 647 void promptlyFreed(size_t gcInfoIndex); | 659 void promptlyFreed(size_t gcInfoIndex); |
| 648 | 660 |
| 649 private: | 661 private: |
| 650 enum SnapshotType { | 662 enum SnapshotType { |
| 651 HeapSnapshot, | 663 HeapSnapshot, |
| 652 FreelistSnapshot | 664 FreelistSnapshot, |
| 665 HeapSnapshotWithClasses | |
| 653 }; | 666 }; |
| 654 | 667 |
| 655 ThreadState(); | 668 ThreadState(); |
| 656 ~ThreadState(); | 669 ~ThreadState(); |
| 657 | 670 |
| 658 NO_SANITIZE_ADDRESS void copyStackUntilSafePointScope(); | 671 NO_SANITIZE_ADDRESS void copyStackUntilSafePointScope(); |
| 659 void clearSafePointScopeMarker() | 672 void clearSafePointScopeMarker() |
| 660 { | 673 { |
| 661 m_safePointStackCopy.clear(); | 674 m_safePointStackCopy.clear(); |
| 662 m_safePointScopeMarker = nullptr; | 675 m_safePointScopeMarker = nullptr; |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 785 }; | 798 }; |
| 786 | 799 |
| 787 template<> class ThreadStateFor<AnyThread> { | 800 template<> class ThreadStateFor<AnyThread> { |
| 788 public: | 801 public: |
| 789 static ThreadState* state() { return ThreadState::current(); } | 802 static ThreadState* state() { return ThreadState::current(); } |
| 790 }; | 803 }; |
| 791 | 804 |
| 792 } // namespace blink | 805 } // namespace blink |
| 793 | 806 |
| 794 #endif // ThreadState_h | 807 #endif // ThreadState_h |
| OLD | NEW |