Mercurial > projects > qtd
comparison d2/qtd/Atomic.d @ 357:9784459f0750
An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Q_CLASSINFO implementation
Now Qtd can be built on Windows
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Wed, 02 Jun 2010 19:38:05 +0300 |
parents | 96a75b1e5b26 |
children |
comparison
equal
deleted
inserted
replaced
356:12cec2d14e1c | 357:9784459f0750 |
---|---|
369 oldval = llvm_atomic_cmp_swap!(T)(&val, equalTo, newval); | 369 oldval = llvm_atomic_cmp_swap!(T)(&val, equalTo, newval); |
370 } | 370 } |
371 return oldval == equalTo; | 371 return oldval == equalTo; |
372 } | 372 } |
373 } | 373 } |
374 | 374 |
375 | 375 |
376 //////////////////////////////////////////////////////////////////////////// | 376 //////////////////////////////////////////////////////////////////////////// |
377 // Atomic Increment | 377 // Atomic Increment |
378 //////////////////////////////////////////////////////////////////////////// | 378 //////////////////////////////////////////////////////////////////////////// |
379 | 379 |
380 | 380 |
397 llvm_atomic_load_add!(T)(&val, cast(T)1); | 397 llvm_atomic_load_add!(T)(&val, cast(T)1); |
398 } | 398 } |
399 return val; | 399 return val; |
400 } | 400 } |
401 } | 401 } |
402 | 402 |
403 | 403 |
404 //////////////////////////////////////////////////////////////////////////// | 404 //////////////////////////////////////////////////////////////////////////// |
405 // Atomic Decrement | 405 // Atomic Decrement |
406 //////////////////////////////////////////////////////////////////////////// | 406 //////////////////////////////////////////////////////////////////////////// |
407 | 407 |
408 | 408 |
438 { | 438 { |
439 version( X86 ) | 439 version( X86 ) |
440 { | 440 { |
441 version( BuildInfo ) | 441 version( BuildInfo ) |
442 { | 442 { |
443 pragma( msg, "tango.core.Atomic: using IA-32 inline asm" ); | 443 pragma( msg, "qtd.Atomic: using IA-32 inline asm" ); |
444 } | 444 } |
445 | 445 |
446 version(darwin){ | 446 version(darwin){ |
447 extern(C) bool OSAtomicCompareAndSwap64(long oldValue, long newValue, long *theValue); | 447 extern(C) bool OSAtomicCompareAndSwap64(long oldValue, long newValue, long *theValue); |
448 extern(C) bool OSAtomicCompareAndSwap64Barrier(long oldValue, long newValue, long *theValue); | 448 extern(C) bool OSAtomicCompareAndSwap64Barrier(long oldValue, long newValue, long *theValue); |
452 } | 452 } |
453 version( X86_64 ) | 453 version( X86_64 ) |
454 { | 454 { |
455 version( BuildInfo ) | 455 version( BuildInfo ) |
456 { | 456 { |
457 pragma( msg, "tango.core.Atomic: using AMD64 inline asm" ); | 457 pragma( msg, "qtd.core.Atomic: using AMD64 inline asm" ); |
458 } | 458 } |
459 | 459 |
460 version = Has64BitOps; | 460 version = Has64BitOps; |
461 } | 461 } |
462 | 462 |
1182 } | 1182 } |
1183 else | 1183 else |
1184 { | 1184 { |
1185 version( BuildInfo ) | 1185 version( BuildInfo ) |
1186 { | 1186 { |
1187 pragma( msg, "tango.core.Atomic: using synchronized ops" ); | 1187 pragma( msg, "qtd.Atomic: using synchronized ops" ); |
1188 } | 1188 } |
1189 | 1189 |
1190 private | 1190 private |
1191 { | 1191 { |
1192 //////////////////////////////////////////////////////////////////////// | 1192 //////////////////////////////////////////////////////////////////////// |