< prev index next >

src/hotspot/share/utilities/macros.hpp

Print this page
rev 59383 : [mq]: final
   1 /*
   2  * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 403 #define LINUX_ONLY(code)
 404 #define NOT_LINUX(code) code
 405 #endif
 406 
 407 #ifdef __APPLE__
 408 #define MACOS_ONLY(code) code
 409 #define NOT_MACOS(code)
 410 #else
 411 #define MACOS_ONLY(code)
 412 #define NOT_MACOS(code) code
 413 #endif
 414 
 415 #ifdef AIX
 416 #define AIX_ONLY(code) code
 417 #define NOT_AIX(code)
 418 #else
 419 #define AIX_ONLY(code)
 420 #define NOT_AIX(code) code
 421 #endif
 422 
 423 #ifdef SOLARIS
 424 #define SOLARIS_ONLY(code) code
 425 #define NOT_SOLARIS(code)
 426 #else
 427 #define SOLARIS_ONLY(code)
 428 #define NOT_SOLARIS(code) code
 429 #endif
 430 
 431 #ifdef _WINDOWS
 432 #define WINDOWS_ONLY(code) code
 433 #define NOT_WINDOWS(code)
 434 #else
 435 #define WINDOWS_ONLY(code)
 436 #define NOT_WINDOWS(code) code
 437 #endif
 438 
 439 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
 440 #ifndef BSD
 441 #define BSD
 442 #endif // BSD defined in <sys/param.h>
 443 #define BSD_ONLY(code) code
 444 #define NOT_BSD(code)
 445 #else
 446 #define BSD_ONLY(code)
 447 #define NOT_BSD(code) code
 448 #endif
 449 
 450 #ifdef _WIN64


 492 #define IA64_ONLY(code)
 493 #define NOT_IA64(code) code
 494 #endif
 495 
 496 #ifdef AMD64
 497 #define AMD64_ONLY(code) code
 498 #define NOT_AMD64(code)
 499 #else
 500 #define AMD64_ONLY(code)
 501 #define NOT_AMD64(code) code
 502 #endif
 503 
 504 #ifdef S390
 505 #define S390_ONLY(code) code
 506 #define NOT_S390(code)
 507 #else
 508 #define S390_ONLY(code)
 509 #define NOT_S390(code) code
 510 #endif
 511 
 512 #ifdef SPARC
 513 #define SPARC_ONLY(code) code
 514 #define NOT_SPARC(code)
 515 #else
 516 #define SPARC_ONLY(code)
 517 #define NOT_SPARC(code) code
 518 #endif
 519 
 520 #if defined(PPC32) || defined(PPC64)
 521 #ifndef PPC
 522 #define PPC
 523 #endif
 524 #define PPC_ONLY(code) code
 525 #define NOT_PPC(code)
 526 #else
 527 #undef PPC
 528 #define PPC_ONLY(code)
 529 #define NOT_PPC(code) code
 530 #endif
 531 
 532 #ifdef PPC32
 533 #define PPC32_ONLY(code) code
 534 #define NOT_PPC32(code)
 535 #else
 536 #define PPC32_ONLY(code)
 537 #define NOT_PPC32(code) code
 538 #endif
 539 


 584 #define LITTLE_ENDIAN_ONLY(code) code
 585 #define BIG_ENDIAN_ONLY(code)
 586 #else
 587 #define LITTLE_ENDIAN_ONLY(code)
 588 #define BIG_ENDIAN_ONLY(code) code
 589 #endif
 590 
 591 #define define_pd_global(type, name, value) const type pd_##name = value;
 592 
 593 // Helper macros for constructing file names for includes.
 594 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
 595 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
 596 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))
 597 #define COMPILER_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_COMPILER)
 598 
 599 // Include platform dependent files.
 600 //
 601 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
 602 // INCLUDE_SUFFIX_CPU / INCLUDE_SUFFIX_COMPILER, which are set on
 603 // the command line, the name of platform dependent files to be included.
 604 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_sparc
 605 //   CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_sparc.inline.hpp
 606 //   OS_CPU_HEADER(vmStructs)          --> vmStructs_linux_sparc.hpp
 607 //
 608 // basename<cpu>.hpp / basename<cpu>.inline.hpp
 609 #define CPU_HEADER_H(basename)         XSTR(CPU_HEADER_STEM(basename).h)
 610 #define CPU_HEADER(basename)           XSTR(CPU_HEADER_STEM(basename).hpp)
 611 #define CPU_HEADER_INLINE(basename)    XSTR(CPU_HEADER_STEM(basename).inline.hpp)
 612 // basename<os>.hpp / basename<os>.inline.hpp
 613 #define OS_HEADER_H(basename)          XSTR(OS_HEADER_STEM(basename).h)
 614 #define OS_HEADER(basename)            XSTR(OS_HEADER_STEM(basename).hpp)
 615 #define OS_HEADER_INLINE(basename)     XSTR(OS_HEADER_STEM(basename).inline.hpp)
 616 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp
 617 #define OS_CPU_HEADER(basename)        XSTR(OS_CPU_HEADER_STEM(basename).hpp)
 618 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp)
 619 // basename<compiler>.hpp / basename<compiler>.inline.hpp
 620 #define COMPILER_HEADER(basename)        XSTR(COMPILER_HEADER_STEM(basename).hpp)
 621 #define COMPILER_HEADER_INLINE(basename) XSTR(COMPILER_HEADER_STEM(basename).inline.hpp)
 622 
 623 #if INCLUDE_CDS && INCLUDE_G1GC && defined(_LP64) && !defined(_WINDOWS)
 624 #define INCLUDE_CDS_JAVA_HEAP 1
 625 #define CDS_JAVA_HEAP_ONLY(x) x
 626 #define NOT_CDS_JAVA_HEAP(x)
   1 /*
   2  * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 403 #define LINUX_ONLY(code)
 404 #define NOT_LINUX(code) code
 405 #endif
 406 
 407 #ifdef __APPLE__
 408 #define MACOS_ONLY(code) code
 409 #define NOT_MACOS(code)
 410 #else
 411 #define MACOS_ONLY(code)
 412 #define NOT_MACOS(code) code
 413 #endif
 414 
 415 #ifdef AIX
 416 #define AIX_ONLY(code) code
 417 #define NOT_AIX(code)
 418 #else
 419 #define AIX_ONLY(code)
 420 #define NOT_AIX(code) code
 421 #endif
 422 








 423 #ifdef _WINDOWS
 424 #define WINDOWS_ONLY(code) code
 425 #define NOT_WINDOWS(code)
 426 #else
 427 #define WINDOWS_ONLY(code)
 428 #define NOT_WINDOWS(code) code
 429 #endif
 430 
 431 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
 432 #ifndef BSD
 433 #define BSD
 434 #endif // BSD defined in <sys/param.h>
 435 #define BSD_ONLY(code) code
 436 #define NOT_BSD(code)
 437 #else
 438 #define BSD_ONLY(code)
 439 #define NOT_BSD(code) code
 440 #endif
 441 
 442 #ifdef _WIN64


 484 #define IA64_ONLY(code)
 485 #define NOT_IA64(code) code
 486 #endif
 487 
 488 #ifdef AMD64
 489 #define AMD64_ONLY(code) code
 490 #define NOT_AMD64(code)
 491 #else
 492 #define AMD64_ONLY(code)
 493 #define NOT_AMD64(code) code
 494 #endif
 495 
 496 #ifdef S390
 497 #define S390_ONLY(code) code
 498 #define NOT_S390(code)
 499 #else
 500 #define S390_ONLY(code)
 501 #define NOT_S390(code) code
 502 #endif
 503 








 504 #if defined(PPC32) || defined(PPC64)
 505 #ifndef PPC
 506 #define PPC
 507 #endif
 508 #define PPC_ONLY(code) code
 509 #define NOT_PPC(code)
 510 #else
 511 #undef PPC
 512 #define PPC_ONLY(code)
 513 #define NOT_PPC(code) code
 514 #endif
 515 
 516 #ifdef PPC32
 517 #define PPC32_ONLY(code) code
 518 #define NOT_PPC32(code)
 519 #else
 520 #define PPC32_ONLY(code)
 521 #define NOT_PPC32(code) code
 522 #endif
 523 


 568 #define LITTLE_ENDIAN_ONLY(code) code
 569 #define BIG_ENDIAN_ONLY(code)
 570 #else
 571 #define LITTLE_ENDIAN_ONLY(code)
 572 #define BIG_ENDIAN_ONLY(code) code
 573 #endif
 574 
 575 #define define_pd_global(type, name, value) const type pd_##name = value;
 576 
 577 // Helper macros for constructing file names for includes.
 578 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
 579 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
 580 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))
 581 #define COMPILER_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_COMPILER)
 582 
 583 // Include platform dependent files.
 584 //
 585 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
 586 // INCLUDE_SUFFIX_CPU / INCLUDE_SUFFIX_COMPILER, which are set on
 587 // the command line, the name of platform dependent files to be included.
 588 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_x86
 589 //   CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_x86.inline.hpp
 590 //   OS_CPU_HEADER(vmStructs)          --> vmStructs_linux_x86.hpp
 591 //
 592 // basename<cpu>.hpp / basename<cpu>.inline.hpp
 593 #define CPU_HEADER_H(basename)         XSTR(CPU_HEADER_STEM(basename).h)
 594 #define CPU_HEADER(basename)           XSTR(CPU_HEADER_STEM(basename).hpp)
 595 #define CPU_HEADER_INLINE(basename)    XSTR(CPU_HEADER_STEM(basename).inline.hpp)
 596 // basename<os>.hpp / basename<os>.inline.hpp
 597 #define OS_HEADER_H(basename)          XSTR(OS_HEADER_STEM(basename).h)
 598 #define OS_HEADER(basename)            XSTR(OS_HEADER_STEM(basename).hpp)
 599 #define OS_HEADER_INLINE(basename)     XSTR(OS_HEADER_STEM(basename).inline.hpp)
 600 // basename<os><cpu>.hpp / basename<os><cpu>.inline.hpp
 601 #define OS_CPU_HEADER(basename)        XSTR(OS_CPU_HEADER_STEM(basename).hpp)
 602 #define OS_CPU_HEADER_INLINE(basename) XSTR(OS_CPU_HEADER_STEM(basename).inline.hpp)
 603 // basename<compiler>.hpp / basename<compiler>.inline.hpp
 604 #define COMPILER_HEADER(basename)        XSTR(COMPILER_HEADER_STEM(basename).hpp)
 605 #define COMPILER_HEADER_INLINE(basename) XSTR(COMPILER_HEADER_STEM(basename).inline.hpp)
 606 
 607 #if INCLUDE_CDS && INCLUDE_G1GC && defined(_LP64) && !defined(_WINDOWS)
 608 #define INCLUDE_CDS_JAVA_HEAP 1
 609 #define CDS_JAVA_HEAP_ONLY(x) x
 610 #define NOT_CDS_JAVA_HEAP(x)
< prev index next >