Changeset 10456 in webkit for trunk/JavaScriptCore/kjs/collector.cpp
- Timestamp:
- Sep 3, 2005, 6:18:13 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/collector.cpp
r10197 r10456 29 29 #include <algorithm> 30 30 31 #if APPLE_CHANGES 31 #if !WIN32 32 32 33 #include <CoreFoundation/CoreFoundation.h> 33 34 #include <pthread.h> … … 35 36 #include <mach/task.h> 36 37 #include <mach/thread_act.h> 38 39 #else 40 41 #include <windows.h> 42 37 43 #endif 38 44 … … 174 180 } 175 181 182 #if KJS_MULTIPLE_THREADS 183 176 184 struct Collector::Thread { 177 185 Thread(pthread_t pthread, mach_port_t mthread) : posixThread(pthread), machThread(mthread) {} … … 222 230 } 223 231 } 232 233 #endif 224 234 225 235 #define IS_POINTER_ALIGNED(p) (((int)(p) & (sizeof(char *) - 1)) == 0) … … 275 285 void Collector::markCurrentThreadConservatively() 276 286 { 277 jmp_buf registers; 278 setjmp(registers); 279 280 pthread_t thread = pthread_self(); 281 void *stackBase = pthread_get_stackaddr_np(thread); 282 int dummy; 283 void *stackPointer = &dummy; 284 markStackObjectsConservatively(stackPointer, stackBase); 285 } 287 jmp_buf registers; 288 setjmp(registers); 289 290 #if !WIN32 291 pthread_t thread = pthread_self(); 292 void *stackBase = pthread_get_stackaddr_np(thread); 293 #else 294 NT_TIB *pTib; 295 __asm { 296 MOV EAX, FS:[18h] 297 MOV pTib, EAX 298 } 299 void *stackBase = (void *)pTib->StackBase; 300 #endif 301 302 int dummy; 303 void *stackPointer = &dummy; 304 305 markStackObjectsConservatively(stackPointer, stackBase); 306 } 307 308 #if KJS_MULTIPLE_THREADS 286 309 287 310 typedef unsigned long usword_t; // word size, assumed to be either 32 or 64 bit … … 324 347 } 325 348 349 #endif 350 326 351 void Collector::markStackObjectsConservatively() 327 352 { 328 353 markCurrentThreadConservatively(); 329 354 355 #if KJS_MULTIPLE_THREADS 330 356 for (Thread *thread = registeredThreads; thread != NULL; thread = thread->next) { 331 357 if (thread->posixThread != pthread_self()) { … … 333 359 } 334 360 } 361 #endif 335 362 } 336 363
Note:
See TracChangeset
for help on using the changeset viewer.