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 ////////////////////////////////////////////////////////////////////////