equal
deleted
inserted
replaced
484 #define OS_HEADER_INLINE(basename) XSTR(OS_HEADER_STEM(basename).inline.hpp) |
484 #define OS_HEADER_INLINE(basename) XSTR(OS_HEADER_STEM(basename).inline.hpp) |
485 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp |
485 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp |
486 #define OS_CPU_HEADER(basename) XSTR(OS_CPU_HEADER_STEM(basename).hpp) |
486 #define OS_CPU_HEADER(basename) XSTR(OS_CPU_HEADER_STEM(basename).hpp) |
487 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp) |
487 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp) |
488 |
488 |
|
489 // To use Atomic::inc(jshort* dest) and Atomic::dec(jshort* dest), the address must be specially |
|
490 // aligned, such that (*dest) occupies the upper 16 bits of an aligned 32-bit word. The best way to |
|
491 // achieve is to place your short value next to another short value, which doesn't need atomic ops. |
|
492 // |
|
493 // Example |
|
494 // ATOMIC_SHORT_PAIR( |
|
495 // volatile short _refcount, // needs atomic operation |
|
496 // unsigned short _length // number of UTF8 characters in the symbol (does not need atomic op) |
|
497 // ); |
|
498 |
|
499 #ifdef VM_LITTLE_ENDIAN |
|
500 #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl) \ |
|
501 non_atomic_decl; \ |
|
502 atomic_decl |
|
503 #else |
|
504 #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl) \ |
|
505 atomic_decl; \ |
|
506 non_atomic_decl |
|
507 #endif |
|
508 |
489 #endif // SHARE_VM_UTILITIES_MACROS_HPP |
509 #endif // SHARE_VM_UTILITIES_MACROS_HPP |