33 #include "runtime/commandLineFlagWriteableList.hpp"
34 #include "runtime/commandLineFlagRangeList.hpp"
35 #include "runtime/os.hpp"
36 #include "runtime/sharedRuntime.hpp"
37 #include "trace/tracing.hpp"
38 #include "utilities/defaultStream.hpp"
39 #include "utilities/macros.hpp"
40 #include "utilities/ostream.hpp"
41 #if INCLUDE_ALL_GCS
42 #include "gc/g1/g1_globals.hpp"
43 #endif // INCLUDE_ALL_GCS
44 #ifdef COMPILER1
45 #include "c1/c1_globals.hpp"
46 #endif
47 #if INCLUDE_JVMCI
48 #include "jvmci/jvmci_globals.hpp"
49 #endif
50 #ifdef COMPILER2
51 #include "opto/c2_globals.hpp"
52 #endif
53 #ifdef SHARK
54 #include "shark/shark_globals.hpp"
55 #endif
56
57 RUNTIME_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
58 MATERIALIZE_PD_DEVELOPER_FLAG, \
59 MATERIALIZE_PRODUCT_FLAG, \
60 MATERIALIZE_PD_PRODUCT_FLAG, \
61 MATERIALIZE_DIAGNOSTIC_FLAG, \
62 MATERIALIZE_PD_DIAGNOSTIC_FLAG, \
63 MATERIALIZE_EXPERIMENTAL_FLAG, \
64 MATERIALIZE_NOTPRODUCT_FLAG, \
65 MATERIALIZE_MANAGEABLE_FLAG, \
66 MATERIALIZE_PRODUCT_RW_FLAG, \
67 MATERIALIZE_LP64_PRODUCT_FLAG, \
68 IGNORE_RANGE, \
69 IGNORE_CONSTRAINT, \
70 IGNORE_WRITEABLE)
71
72 RUNTIME_OS_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
73 MATERIALIZE_PD_DEVELOPER_FLAG, \
74 MATERIALIZE_PRODUCT_FLAG, \
75 MATERIALIZE_PD_PRODUCT_FLAG, \
561 if (withComments) {
562 st->print("%s", _doc);
563 }
564 #endif
565
566 st->cr();
567 }
568 }
569
570 void Flag::print_kind_and_origin(outputStream* st) {
571 struct Data {
572 int flag;
573 const char* name;
574 };
575
576 Data data[] = {
577 { KIND_JVMCI, "JVMCI" },
578 { KIND_C1, "C1" },
579 { KIND_C2, "C2" },
580 { KIND_ARCH, "ARCH" },
581 { KIND_SHARK, "SHARK" },
582 { KIND_PLATFORM_DEPENDENT, "pd" },
583 { KIND_PRODUCT, "product" },
584 { KIND_MANAGEABLE, "manageable" },
585 { KIND_DIAGNOSTIC, "diagnostic" },
586 { KIND_EXPERIMENTAL, "experimental" },
587 { KIND_COMMERCIAL, "commercial" },
588 { KIND_NOT_PRODUCT, "notproduct" },
589 { KIND_DEVELOP, "develop" },
590 { KIND_LP64_PRODUCT, "lp64_product" },
591 { KIND_READ_WRITE, "rw" },
592 { -1, "" }
593 };
594
595 if ((_flags & KIND_MASK) != 0) {
596 bool is_first = true;
597 const size_t buffer_size = 64;
598 size_t buffer_used = 0;
599 char kind[buffer_size];
600
601 jio_snprintf(kind, buffer_size, "{");
737 #define C1_PD_DIAGNOSTIC_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DIAGNOSTIC | Flag::KIND_PLATFORM_DEPENDENT) },
738 #define C1_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP) },
739 #define C1_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
740 #define C1_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_NOT_PRODUCT) },
741
742 #define C2_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT) },
743 #define C2_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
744 #define C2_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DIAGNOSTIC) },
745 #define C2_PD_DIAGNOSTIC_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DIAGNOSTIC | Flag::KIND_PLATFORM_DEPENDENT) },
746 #define C2_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_EXPERIMENTAL) },
747 #define C2_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP) },
748 #define C2_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
749 #define C2_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_NOT_PRODUCT) },
750
751 #define ARCH_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_PRODUCT) },
752 #define ARCH_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DIAGNOSTIC) },
753 #define ARCH_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_EXPERIMENTAL) },
754 #define ARCH_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DEVELOP) },
755 #define ARCH_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_NOT_PRODUCT) },
756
757 #define SHARK_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_PRODUCT) },
758 #define SHARK_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
759 #define SHARK_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DIAGNOSTIC) },
760 #define SHARK_PD_DIAGNOSTIC_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DIAGNOSTIC | Flag::KIND_PLATFORM_DEPENDENT) },
761 #define SHARK_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DEVELOP) },
762 #define SHARK_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
763 #define SHARK_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_NOT_PRODUCT) },
764
765 static Flag flagTable[] = {
766 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
767 RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
768 RUNTIME_PRODUCT_FLAG_STRUCT, \
769 RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
770 RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
771 RUNTIME_PD_DIAGNOSTIC_FLAG_STRUCT, \
772 RUNTIME_EXPERIMENTAL_FLAG_STRUCT, \
773 RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
774 RUNTIME_MANAGEABLE_FLAG_STRUCT, \
775 RUNTIME_PRODUCT_RW_FLAG_STRUCT, \
776 RUNTIME_LP64_PRODUCT_FLAG_STRUCT, \
777 IGNORE_RANGE, \
778 IGNORE_CONSTRAINT, \
779 IGNORE_WRITEABLE)
780 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
781 RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
782 RUNTIME_PRODUCT_FLAG_STRUCT, \
783 RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
784 RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
823 C1_DIAGNOSTIC_FLAG_STRUCT, \
824 C1_PD_DIAGNOSTIC_FLAG_STRUCT, \
825 C1_NOTPRODUCT_FLAG_STRUCT, \
826 IGNORE_RANGE, \
827 IGNORE_CONSTRAINT, \
828 IGNORE_WRITEABLE)
829 #endif // COMPILER1
830 #ifdef COMPILER2
831 C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, \
832 C2_PD_DEVELOP_FLAG_STRUCT, \
833 C2_PRODUCT_FLAG_STRUCT, \
834 C2_PD_PRODUCT_FLAG_STRUCT, \
835 C2_DIAGNOSTIC_FLAG_STRUCT, \
836 C2_PD_DIAGNOSTIC_FLAG_STRUCT, \
837 C2_EXPERIMENTAL_FLAG_STRUCT, \
838 C2_NOTPRODUCT_FLAG_STRUCT, \
839 IGNORE_RANGE, \
840 IGNORE_CONSTRAINT, \
841 IGNORE_WRITEABLE)
842 #endif // COMPILER2
843 #ifdef SHARK
844 SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, \
845 SHARK_PD_DEVELOP_FLAG_STRUCT, \
846 SHARK_PRODUCT_FLAG_STRUCT, \
847 SHARK_PD_PRODUCT_FLAG_STRUCT, \
848 SHARK_DIAGNOSTIC_FLAG_STRUCT, \
849 SHARK_PD_DIAGNOSTIC_FLAG_STRUCT, \
850 SHARK_NOTPRODUCT_FLAG_STRUCT, \
851 IGNORE_RANGE, \
852 IGNORE_CONSTRAINT, \
853 IGNORE_WRITEABLE)
854 #endif // SHARK
855 ARCH_FLAGS(ARCH_DEVELOP_FLAG_STRUCT, \
856 ARCH_PRODUCT_FLAG_STRUCT, \
857 ARCH_DIAGNOSTIC_FLAG_STRUCT, \
858 ARCH_EXPERIMENTAL_FLAG_STRUCT, \
859 ARCH_NOTPRODUCT_FLAG_STRUCT, \
860 IGNORE_RANGE, \
861 IGNORE_CONSTRAINT, \
862 IGNORE_WRITEABLE)
863 FLAGTABLE_EXT
864 {0, NULL, NULL}
865 };
866
867 Flag* Flag::flags = flagTable;
868 size_t Flag::numFlags = (sizeof(flagTable) / sizeof(Flag));
869
870 inline bool str_equal(const char* s, size_t s_len, const char* q, size_t q_len) {
871 if (s_len != q_len) return false;
872 return memcmp(s, q, q_len) == 0;
873 }
874
|
33 #include "runtime/commandLineFlagWriteableList.hpp"
34 #include "runtime/commandLineFlagRangeList.hpp"
35 #include "runtime/os.hpp"
36 #include "runtime/sharedRuntime.hpp"
37 #include "trace/tracing.hpp"
38 #include "utilities/defaultStream.hpp"
39 #include "utilities/macros.hpp"
40 #include "utilities/ostream.hpp"
41 #if INCLUDE_ALL_GCS
42 #include "gc/g1/g1_globals.hpp"
43 #endif // INCLUDE_ALL_GCS
44 #ifdef COMPILER1
45 #include "c1/c1_globals.hpp"
46 #endif
47 #if INCLUDE_JVMCI
48 #include "jvmci/jvmci_globals.hpp"
49 #endif
50 #ifdef COMPILER2
51 #include "opto/c2_globals.hpp"
52 #endif
53
54 RUNTIME_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
55 MATERIALIZE_PD_DEVELOPER_FLAG, \
56 MATERIALIZE_PRODUCT_FLAG, \
57 MATERIALIZE_PD_PRODUCT_FLAG, \
58 MATERIALIZE_DIAGNOSTIC_FLAG, \
59 MATERIALIZE_PD_DIAGNOSTIC_FLAG, \
60 MATERIALIZE_EXPERIMENTAL_FLAG, \
61 MATERIALIZE_NOTPRODUCT_FLAG, \
62 MATERIALIZE_MANAGEABLE_FLAG, \
63 MATERIALIZE_PRODUCT_RW_FLAG, \
64 MATERIALIZE_LP64_PRODUCT_FLAG, \
65 IGNORE_RANGE, \
66 IGNORE_CONSTRAINT, \
67 IGNORE_WRITEABLE)
68
69 RUNTIME_OS_FLAGS(MATERIALIZE_DEVELOPER_FLAG, \
70 MATERIALIZE_PD_DEVELOPER_FLAG, \
71 MATERIALIZE_PRODUCT_FLAG, \
72 MATERIALIZE_PD_PRODUCT_FLAG, \
558 if (withComments) {
559 st->print("%s", _doc);
560 }
561 #endif
562
563 st->cr();
564 }
565 }
566
567 void Flag::print_kind_and_origin(outputStream* st) {
568 struct Data {
569 int flag;
570 const char* name;
571 };
572
573 Data data[] = {
574 { KIND_JVMCI, "JVMCI" },
575 { KIND_C1, "C1" },
576 { KIND_C2, "C2" },
577 { KIND_ARCH, "ARCH" },
578 { KIND_PLATFORM_DEPENDENT, "pd" },
579 { KIND_PRODUCT, "product" },
580 { KIND_MANAGEABLE, "manageable" },
581 { KIND_DIAGNOSTIC, "diagnostic" },
582 { KIND_EXPERIMENTAL, "experimental" },
583 { KIND_COMMERCIAL, "commercial" },
584 { KIND_NOT_PRODUCT, "notproduct" },
585 { KIND_DEVELOP, "develop" },
586 { KIND_LP64_PRODUCT, "lp64_product" },
587 { KIND_READ_WRITE, "rw" },
588 { -1, "" }
589 };
590
591 if ((_flags & KIND_MASK) != 0) {
592 bool is_first = true;
593 const size_t buffer_size = 64;
594 size_t buffer_used = 0;
595 char kind[buffer_size];
596
597 jio_snprintf(kind, buffer_size, "{");
733 #define C1_PD_DIAGNOSTIC_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DIAGNOSTIC | Flag::KIND_PLATFORM_DEPENDENT) },
734 #define C1_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP) },
735 #define C1_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
736 #define C1_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_NOT_PRODUCT) },
737
738 #define C2_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT) },
739 #define C2_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
740 #define C2_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DIAGNOSTIC) },
741 #define C2_PD_DIAGNOSTIC_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DIAGNOSTIC | Flag::KIND_PLATFORM_DEPENDENT) },
742 #define C2_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_EXPERIMENTAL) },
743 #define C2_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP) },
744 #define C2_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
745 #define C2_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_NOT_PRODUCT) },
746
747 #define ARCH_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_PRODUCT) },
748 #define ARCH_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DIAGNOSTIC) },
749 #define ARCH_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_EXPERIMENTAL) },
750 #define ARCH_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DEVELOP) },
751 #define ARCH_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), (void*) &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_NOT_PRODUCT) },
752
753 static Flag flagTable[] = {
754 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
755 RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
756 RUNTIME_PRODUCT_FLAG_STRUCT, \
757 RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
758 RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
759 RUNTIME_PD_DIAGNOSTIC_FLAG_STRUCT, \
760 RUNTIME_EXPERIMENTAL_FLAG_STRUCT, \
761 RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
762 RUNTIME_MANAGEABLE_FLAG_STRUCT, \
763 RUNTIME_PRODUCT_RW_FLAG_STRUCT, \
764 RUNTIME_LP64_PRODUCT_FLAG_STRUCT, \
765 IGNORE_RANGE, \
766 IGNORE_CONSTRAINT, \
767 IGNORE_WRITEABLE)
768 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
769 RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
770 RUNTIME_PRODUCT_FLAG_STRUCT, \
771 RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
772 RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
811 C1_DIAGNOSTIC_FLAG_STRUCT, \
812 C1_PD_DIAGNOSTIC_FLAG_STRUCT, \
813 C1_NOTPRODUCT_FLAG_STRUCT, \
814 IGNORE_RANGE, \
815 IGNORE_CONSTRAINT, \
816 IGNORE_WRITEABLE)
817 #endif // COMPILER1
818 #ifdef COMPILER2
819 C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, \
820 C2_PD_DEVELOP_FLAG_STRUCT, \
821 C2_PRODUCT_FLAG_STRUCT, \
822 C2_PD_PRODUCT_FLAG_STRUCT, \
823 C2_DIAGNOSTIC_FLAG_STRUCT, \
824 C2_PD_DIAGNOSTIC_FLAG_STRUCT, \
825 C2_EXPERIMENTAL_FLAG_STRUCT, \
826 C2_NOTPRODUCT_FLAG_STRUCT, \
827 IGNORE_RANGE, \
828 IGNORE_CONSTRAINT, \
829 IGNORE_WRITEABLE)
830 #endif // COMPILER2
831 ARCH_FLAGS(ARCH_DEVELOP_FLAG_STRUCT, \
832 ARCH_PRODUCT_FLAG_STRUCT, \
833 ARCH_DIAGNOSTIC_FLAG_STRUCT, \
834 ARCH_EXPERIMENTAL_FLAG_STRUCT, \
835 ARCH_NOTPRODUCT_FLAG_STRUCT, \
836 IGNORE_RANGE, \
837 IGNORE_CONSTRAINT, \
838 IGNORE_WRITEABLE)
839 FLAGTABLE_EXT
840 {0, NULL, NULL}
841 };
842
843 Flag* Flag::flags = flagTable;
844 size_t Flag::numFlags = (sizeof(flagTable) / sizeof(Flag));
845
846 inline bool str_equal(const char* s, size_t s_len, const char* q, size_t q_len) {
847 if (s_len != q_len) return false;
848 return memcmp(s, q, q_len) == 0;
849 }
850
|