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 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 | 782 |
783 if (isSweepingInProgress()) { | 783 if (isSweepingInProgress()) { |
784 setGCState(SweepingAndIdleGCScheduled); | 784 setGCState(SweepingAndIdleGCScheduled); |
785 return; | 785 return; |
786 } | 786 } |
787 | 787 |
788 // Some threads (e.g. PPAPI thread) don't have a scheduler. | 788 // Some threads (e.g. PPAPI thread) don't have a scheduler. |
789 if (!Platform::current()->currentThread()->scheduler()) | 789 if (!Platform::current()->currentThread()->scheduler()) |
790 return; | 790 return; |
791 | 791 |
792 Platform::current()->currentThread()->scheduler()->postNonNestableIdleTask(B
LINK_FROM_HERE, WTF::bind(&ThreadState::performIdleGC, this)); | 792 Platform::current()->currentThread()->scheduler()->postNonNestableIdleTask(B
LINK_FROM_HERE, WTF::bind(&ThreadState::performIdleGC, WTF::unretained(this))); |
793 setGCState(IdleGCScheduled); | 793 setGCState(IdleGCScheduled); |
794 } | 794 } |
795 | 795 |
796 void ThreadState::scheduleIdleLazySweep() | 796 void ThreadState::scheduleIdleLazySweep() |
797 { | 797 { |
798 // TODO(haraken): Idle complete sweep should be supported in worker threads. | 798 // TODO(haraken): Idle complete sweep should be supported in worker threads. |
799 if (!isMainThread()) | 799 if (!isMainThread()) |
800 return; | 800 return; |
801 | 801 |
802 // Some threads (e.g. PPAPI thread) don't have a scheduler. | 802 // Some threads (e.g. PPAPI thread) don't have a scheduler. |
803 if (!Platform::current()->currentThread()->scheduler()) | 803 if (!Platform::current()->currentThread()->scheduler()) |
804 return; | 804 return; |
805 | 805 |
806 Platform::current()->currentThread()->scheduler()->postIdleTask(BLINK_FROM_H
ERE, WTF::bind(&ThreadState::performIdleLazySweep, this)); | 806 Platform::current()->currentThread()->scheduler()->postIdleTask(BLINK_FROM_H
ERE, WTF::bind(&ThreadState::performIdleLazySweep, WTF::unretained(this))); |
807 } | 807 } |
808 | 808 |
809 void ThreadState::schedulePreciseGC() | 809 void ThreadState::schedulePreciseGC() |
810 { | 810 { |
811 ASSERT(checkThread()); | 811 ASSERT(checkThread()); |
812 if (isSweepingInProgress()) { | 812 if (isSweepingInProgress()) { |
813 setGCState(SweepingAndPreciseGCScheduled); | 813 setGCState(SweepingAndPreciseGCScheduled); |
814 return; | 814 return; |
815 } | 815 } |
816 | 816 |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 threadDump->AddScalar("dead_count", "objects", totalDeadCount); | 1533 threadDump->AddScalar("dead_count", "objects", totalDeadCount); |
1534 threadDump->AddScalar("live_size", "bytes", totalLiveSize); | 1534 threadDump->AddScalar("live_size", "bytes", totalLiveSize); |
1535 threadDump->AddScalar("dead_size", "bytes", totalDeadSize); | 1535 threadDump->AddScalar("dead_size", "bytes", totalDeadSize); |
1536 | 1536 |
1537 base::trace_event::MemoryAllocatorDump* heapsDump = BlinkGCMemoryDumpProvide
r::instance()->createMemoryAllocatorDumpForCurrentGC(heapsDumpName); | 1537 base::trace_event::MemoryAllocatorDump* heapsDump = BlinkGCMemoryDumpProvide
r::instance()->createMemoryAllocatorDumpForCurrentGC(heapsDumpName); |
1538 base::trace_event::MemoryAllocatorDump* classesDump = BlinkGCMemoryDumpProvi
der::instance()->createMemoryAllocatorDumpForCurrentGC(classesDumpName); | 1538 base::trace_event::MemoryAllocatorDump* classesDump = BlinkGCMemoryDumpProvi
der::instance()->createMemoryAllocatorDumpForCurrentGC(classesDumpName); |
1539 BlinkGCMemoryDumpProvider::instance()->currentProcessMemoryDump()->AddOwners
hipEdge(classesDump->guid(), heapsDump->guid()); | 1539 BlinkGCMemoryDumpProvider::instance()->currentProcessMemoryDump()->AddOwners
hipEdge(classesDump->guid(), heapsDump->guid()); |
1540 } | 1540 } |
1541 | 1541 |
1542 } // namespace blink | 1542 } // namespace blink |
OLD | NEW |