< prev index next >

src/share/vm/utilities/macros.hpp

Print this page
rev 13110 : imported patch target_macros


 473 #define NOT_ARM32(code)
 474 #else
 475 #define ARM32_ONLY(code)
 476 #define NOT_ARM32(code) code
 477 #endif
 478 
 479 #ifdef AARCH64
 480 #define AARCH64_ONLY(code) code
 481 #define NOT_AARCH64(code)
 482 #else
 483 #define AARCH64_ONLY(code)
 484 #define NOT_AARCH64(code) code
 485 #endif
 486 
 487 #define define_pd_global(type, name, value) const type pd_##name = value;
 488 
 489 // Helper macros for constructing file names for includes.
 490 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
 491 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
 492 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))

 493 
 494 // Include platform dependent files.
 495 //
 496 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
 497 // INCLUDE_SUFFIX_CPU, which are set on the command line, the name of
 498 // platform dependent files to be included.
 499 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_sparc
 500 //   CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_sparc.inline.hpp
 501 //   OS_CPU_HEADER(vmStructs)          --> vmStructs_linux_sparc.hpp
 502 //
 503 // basename<cpu>.hpp / basename<cpu>.inline.hpp
 504 #define CPU_HEADER_H(basename)         XSTR(CPU_HEADER_STEM(basename).h)
 505 #define CPU_HEADER(basename)           XSTR(CPU_HEADER_STEM(basename).hpp)
 506 #define CPU_HEADER_INLINE(basename)    XSTR(CPU_HEADER_STEM(basename).inline.hpp)
 507 // basename<os>.hpp / basename<os>.inline.hpp
 508 #define OS_HEADER_H(basename)          XSTR(OS_HEADER_STEM(basename).h)
 509 #define OS_HEADER(basename)            XSTR(OS_HEADER_STEM(basename).hpp)
 510 #define OS_HEADER_INLINE(basename)     XSTR(OS_HEADER_STEM(basename).inline.hpp)
 511 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp
 512 #define OS_CPU_HEADER(basename)        XSTR(OS_CPU_HEADER_STEM(basename).hpp)
 513 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp)



 514 
 515 // To use Atomic::inc(jshort* dest) and Atomic::dec(jshort* dest), the address must be specially
 516 // aligned, such that (*dest) occupies the upper 16 bits of an aligned 32-bit word. The best way to
 517 // achieve is to place your short value next to another short value, which doesn't need atomic ops.
 518 //
 519 // Example
 520 //  ATOMIC_SHORT_PAIR(
 521 //    volatile short _refcount,  // needs atomic operation
 522 //    unsigned short _length     // number of UTF8 characters in the symbol (does not need atomic op)
 523 //  );
 524 
 525 #ifdef VM_LITTLE_ENDIAN
 526   #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl)  \
 527     non_atomic_decl;                                       \
 528     atomic_decl
 529 #else
 530   #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl)  \
 531     atomic_decl;                                           \
 532     non_atomic_decl
 533 #endif


 473 #define NOT_ARM32(code)
 474 #else
 475 #define ARM32_ONLY(code)
 476 #define NOT_ARM32(code) code
 477 #endif
 478 
 479 #ifdef AARCH64
 480 #define AARCH64_ONLY(code) code
 481 #define NOT_AARCH64(code)
 482 #else
 483 #define AARCH64_ONLY(code)
 484 #define NOT_AARCH64(code) code
 485 #endif
 486 
 487 #define define_pd_global(type, name, value) const type pd_##name = value;
 488 
 489 // Helper macros for constructing file names for includes.
 490 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
 491 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
 492 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))
 493 #define TARGET_COMPILER_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_TARGET_COMPILER)
 494 
 495 // Include platform dependent files.
 496 //
 497 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
 498 // INCLUDE_SUFFIX_CPU / INCLUDE_SUFFIX_TARGET_COMPILER, which are set on
 499 // the command line, the name of platform dependent files to be included.
 500 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_sparc
 501 //   CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_sparc.inline.hpp
 502 //   OS_CPU_HEADER(vmStructs)          --> vmStructs_linux_sparc.hpp
 503 //
 504 // basename<cpu>.hpp / basename<cpu>.inline.hpp
 505 #define CPU_HEADER_H(basename)         XSTR(CPU_HEADER_STEM(basename).h)
 506 #define CPU_HEADER(basename)           XSTR(CPU_HEADER_STEM(basename).hpp)
 507 #define CPU_HEADER_INLINE(basename)    XSTR(CPU_HEADER_STEM(basename).inline.hpp)
 508 // basename<os>.hpp / basename<os>.inline.hpp
 509 #define OS_HEADER_H(basename)          XSTR(OS_HEADER_STEM(basename).h)
 510 #define OS_HEADER(basename)            XSTR(OS_HEADER_STEM(basename).hpp)
 511 #define OS_HEADER_INLINE(basename)     XSTR(OS_HEADER_STEM(basename).inline.hpp)
 512 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp
 513 #define OS_CPU_HEADER(basename)        XSTR(OS_CPU_HEADER_STEM(basename).hpp)
 514 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp)
 515 // basename<compiler>.hpp / basename<compiler>.inline.hpp
 516 #define TARGET_COMPILER_HEADER(basename)        XSTR(TARGET_COMPILER_HEADER_STEM(basename).hpp)
 517 #define TARGET_COMPILER_HEADER_INLINE(basename) XSTR(TARGET_COMPILER_HEADER_STEM(basename).inline.hpp)
 518 
 519 // To use Atomic::inc(jshort* dest) and Atomic::dec(jshort* dest), the address must be specially
 520 // aligned, such that (*dest) occupies the upper 16 bits of an aligned 32-bit word. The best way to
 521 // achieve is to place your short value next to another short value, which doesn't need atomic ops.
 522 //
 523 // Example
 524 //  ATOMIC_SHORT_PAIR(
 525 //    volatile short _refcount,  // needs atomic operation
 526 //    unsigned short _length     // number of UTF8 characters in the symbol (does not need atomic op)
 527 //  );
 528 
 529 #ifdef VM_LITTLE_ENDIAN
 530   #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl)  \
 531     non_atomic_decl;                                       \
 532     atomic_decl
 533 #else
 534   #define ATOMIC_SHORT_PAIR(atomic_decl, non_atomic_decl)  \
 535     atomic_decl;                                           \
 536     non_atomic_decl
 537 #endif
< prev index next >