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

Side by Side Diff: Source/platform/heap/ThreadState.cpp

Issue 643883002: Oilpan: Avoid looking up TLS in ThreadState::current() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 #else 94 #else
95 #error Unsupported getStackStart on this platform. 95 #error Unsupported getStackStart on this platform.
96 #endif 96 #endif
97 } 97 }
98 98
99 // The maximum number of WrapperPersistentRegions to keep around in the 99 // The maximum number of WrapperPersistentRegions to keep around in the
100 // m_pooledWrapperPersistentRegions pool. 100 // m_pooledWrapperPersistentRegions pool.
101 static const size_t MaxPooledWrapperPersistentRegionCount = 2; 101 static const size_t MaxPooledWrapperPersistentRegionCount = 2;
102 102
103 WTF::ThreadSpecific<ThreadState*>* ThreadState::s_threadSpecific = 0; 103 WTF::ThreadSpecific<ThreadState*>* ThreadState::s_threadSpecific = 0;
104 intptr_t ThreadState::s_mainThreadStackStart = 0;
104 uint8_t ThreadState::s_mainThreadStateStorage[sizeof(ThreadState)]; 105 uint8_t ThreadState::s_mainThreadStateStorage[sizeof(ThreadState)];
105 SafePointBarrier* ThreadState::s_safePointBarrier = 0; 106 SafePointBarrier* ThreadState::s_safePointBarrier = 0;
106 bool ThreadState::s_inGC = false; 107 bool ThreadState::s_inGC = false;
107 108
108 static Mutex& threadAttachMutex() 109 static Mutex& threadAttachMutex()
109 { 110 {
110 AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); 111 AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex);
111 return mutex; 112 return mutex;
112 } 113 }
113 114
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 , m_shouldFlushHeapDoesNotContainCache(false) 305 , m_shouldFlushHeapDoesNotContainCache(false)
305 , m_lowCollectionRate(false) 306 , m_lowCollectionRate(false)
306 , m_numberOfSweeperTasks(0) 307 , m_numberOfSweeperTasks(0)
307 #if defined(ADDRESS_SANITIZER) 308 #if defined(ADDRESS_SANITIZER)
308 , m_asanFakeStack(__asan_get_current_fake_stack()) 309 , m_asanFakeStack(__asan_get_current_fake_stack())
309 #endif 310 #endif
310 { 311 {
311 ASSERT(!**s_threadSpecific); 312 ASSERT(!**s_threadSpecific);
312 **s_threadSpecific = this; 313 **s_threadSpecific = this;
313 314
315 if (isMainThread())
316 s_mainThreadStackStart = reinterpret_cast<intptr_t>(m_startOfStack);
317
314 InitializeHeaps<NumberOfHeaps>::init(m_heaps, this); 318 InitializeHeaps<NumberOfHeaps>::init(m_heaps, this);
315 319
316 m_weakCallbackStack = new CallbackStack(); 320 m_weakCallbackStack = new CallbackStack();
317 321
318 if (blink::Platform::current()) 322 if (blink::Platform::current())
319 m_sweeperThread = adoptPtr(blink::Platform::current()->createThread("Bli nk GC Sweeper")); 323 m_sweeperThread = adoptPtr(blink::Platform::current()->createThread("Bli nk GC Sweeper"));
320 } 324 }
321 325
322 ThreadState::~ThreadState() 326 ThreadState::~ThreadState()
323 { 327 {
(...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 return gcInfo; 1265 return gcInfo;
1262 } 1266 }
1263 } 1267 }
1264 if (needLockForIteration) 1268 if (needLockForIteration)
1265 threadAttachMutex().unlock(); 1269 threadAttachMutex().unlock();
1266 return 0; 1270 return 0;
1267 } 1271 }
1268 #endif 1272 #endif
1269 1273
1270 } 1274 }
OLDNEW
« Source/platform/heap/ThreadState.h ('K') | « Source/platform/heap/ThreadState.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698