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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 bool contains(void* pointer) { return contains(reinterpret_cast<Address>(poi nter)); } | 177 bool contains(void* pointer) { return contains(reinterpret_cast<Address>(poi nter)); } |
| 178 bool contains(const void* pointer) { return contains(const_cast<void*>(point er)); } | 178 bool contains(const void* pointer) { return contains(const_cast<void*>(point er)); } |
| 179 BaseHeapPage* heapPageFromAddress(Address); | 179 BaseHeapPage* heapPageFromAddress(Address); |
| 180 | 180 |
| 181 bool isAllocationAllowed() const { return !m_noAllocationCount; } | 181 bool isAllocationAllowed() const { return !m_noAllocationCount; } |
| 182 void enterNoAllocationScope() { m_noAllocationCount++; } | 182 void enterNoAllocationScope() { m_noAllocationCount++; } |
| 183 void leaveNoAllocationScope() { m_noAllocationCount--; } | 183 void leaveNoAllocationScope() { m_noAllocationCount--; } |
| 184 | 184 |
| 185 void executePendingAction(); | 185 void executePendingAction(); |
| 186 | 186 |
| 187 void paused(StackState); | 187 void enterSafePoint(StackState); |
| 188 void resumed(); | 188 void leaveSafePoint(); |
| 189 bool isPaused() const { return m_isPaused; } | 189 bool isInSafePoint() const { return m_inSafePoint; } |
| 190 | 190 |
| 191 bool shouldGC(); | 191 bool shouldGC(); |
| 192 bool shouldForceConservativeGC(); | 192 bool shouldForceConservativeGC(); |
| 193 bool isInGC() const { return m_inGC; } | 193 bool isInGC() const { return m_inGC; } |
| 194 void enterGC() | 194 void enterGC() |
| 195 { | 195 { |
| 196 if (!m_inGC++) | 196 if (!m_inGC++) |
| 197 s_inGC = true; | 197 s_inGC = true; |
| 198 } | 198 } |
| 199 void leaveGC() | 199 void leaveGC() |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 227 | 227 |
| 228 static ThreadState* Current(); | 228 static ThreadState* Current(); |
| 229 static ThreadState* MainThreadState() { return &s_mainThreadState; } | 229 static ThreadState* MainThreadState() { return &s_mainThreadState; } |
| 230 static bool IsMainThread() { return Current() == MainThreadState(); } | 230 static bool IsMainThread() { return Current() == MainThreadState(); } |
| 231 | 231 |
| 232 static void stopThreads(StackState); | 232 static void stopThreads(StackState); |
| 233 static void resumeThreads(); | 233 static void resumeThreads(); |
| 234 | 234 |
| 235 void safePoint(); | 235 void safePoint(); |
| 236 | 236 |
| 237 class PauseScope { | 237 class SafePointScope { |
| 238 public: | 238 public: |
| 239 PauseScope(StackState stackState) { ThreadState::Current()->paused(stack State); } | 239 SafePointScope(StackState stackState) { ThreadState::Current()->enterSaf ePoint(stackState); } |
| 240 ~PauseScope() { ThreadState::Current()->resumed(); } | 240 ~SafePointScope() { ThreadState::Current()->leaveSafePoint(); } |
| 241 }; | 241 }; |
| 242 | 242 |
| 243 void visitStack(Visitor*); | 243 void visitStack(Visitor*); |
| 244 void visitPersistents(Visitor*); | 244 void visitPersistents(Visitor*); |
| 245 bool checkAndVisitPointer(Visitor*, Address); | 245 bool checkAndVisitPointer(Visitor*, Address); |
| 246 bool isConsistentForGC(); | 246 bool isConsistentForGC(); |
| 247 void makeConsistentForGC(); | 247 void makeConsistentForGC(); |
| 248 void getStats(HeapStats&); | 248 void getStats(HeapStats&); |
| 249 HeapStats& stats() { return m_stats; } | 249 HeapStats& stats() { return m_stats; } |
| 250 HeapStats& statsAfterLastGC() { return m_statsAfterLastGC; } | 250 HeapStats& statsAfterLastGC() { return m_statsAfterLastGC; } |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 279 static SafePointBarrier* s_safePointBarrier; | 279 static SafePointBarrier* s_safePointBarrier; |
| 280 // This variable is flipped to true after all threads are stoped and outermo st GC has started. | 280 // This variable is flipped to true after all threads are stoped and outermo st GC has started. |
| 281 static bool s_inGC; | 281 static bool s_inGC; |
| 282 | 282 |
| 283 void create(intptr_t* startOfStack); | 283 void create(intptr_t* startOfStack); |
| 284 void destroy(); | 284 void destroy(); |
| 285 void trace(Visitor*); | 285 void trace(Visitor*); |
| 286 bool pointersOnStack() const { return m_stackState == HeapPointersOnStack; } | 286 bool pointersOnStack() const { return m_stackState == HeapPointersOnStack; } |
| 287 | 287 |
| 288 ThreadIdentifier m_thread; | 288 ThreadIdentifier m_thread; |
| 289 bool m_isPaused; | 289 bool m_inSafePoint; |
|
Mads Ager (chromium)
2013/12/05 09:22:24
m_atSafePoint?
| |
| 290 int m_inGC; | 290 int m_inGC; |
| 291 PersistentNode* m_persistents; | 291 PersistentNode* m_persistents; |
| 292 StackState m_stackState; | 292 StackState m_stackState; |
| 293 intptr_t* m_startOfStack; | 293 intptr_t* m_startOfStack; |
| 294 intptr_t* m_endOfStack; | 294 intptr_t* m_endOfStack; |
| 295 HeapContainsCache* m_heapContainsCache; | 295 HeapContainsCache* m_heapContainsCache; |
| 296 BaseHeap* m_heaps[NumberOfHeaps]; | 296 BaseHeap* m_heaps[NumberOfHeaps]; |
| 297 PendingAction m_pendingAction; | 297 PendingAction m_pendingAction; |
| 298 size_t m_noAllocationCount; | 298 size_t m_noAllocationCount; |
| 299 bool m_sweepInProgress; | 299 bool m_sweepInProgress; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 393 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Int32Array); | 393 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Int32Array); |
| 394 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint32Array); | 394 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint32Array); |
| 395 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float32Array); | 395 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float32Array); |
| 396 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float64Array); | 396 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float64Array); |
| 397 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBCallbacksProxy); | 397 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBCallbacksProxy); |
| 398 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseBackendProxy); | 398 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseBackendProxy); |
| 399 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseCallbacksProxy); | 399 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseCallbacksProxy); |
| 400 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBFactoryBackendProxy); | 400 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBFactoryBackendProxy); |
| 401 | 401 |
| 402 #endif | 402 #endif |
| OLD | NEW |