64 f(java_lang_invoke_MemberName) \
65 f(java_lang_invoke_ResolvedMethodName) \
66 f(java_lang_invoke_LambdaForm) \
67 f(java_lang_invoke_MethodType) \
68 f(java_lang_invoke_CallSite) \
69 f(java_lang_invoke_MethodHandleNatives_CallSiteContext) \
70 f(java_security_AccessControlContext) \
71 f(java_lang_reflect_AccessibleObject) \
72 f(java_lang_reflect_Method) \
73 f(java_lang_reflect_Constructor) \
74 f(java_lang_reflect_Field) \
75 f(java_nio_Buffer) \
76 f(reflect_ConstantPool) \
77 f(reflect_UnsafeStaticFieldAccessorImpl) \
78 f(java_lang_reflect_Parameter) \
79 f(java_lang_Module) \
80 f(java_lang_StackTraceElement) \
81 f(java_lang_StackFrameInfo) \
82 f(java_lang_LiveStackFrameInfo) \
83 f(java_util_concurrent_locks_AbstractOwnableSynchronizer) \
84 //end
85
86 #define BASIC_JAVA_CLASSES_DO(f) \
87 BASIC_JAVA_CLASSES_DO_PART1(f) \
88 BASIC_JAVA_CLASSES_DO_PART2(f)
89
90 // Interface to java.lang.String objects
91
92 class java_lang_String : AllStatic {
93 private:
94 static int value_offset;
95 static int hash_offset;
96 static int coder_offset;
97
98 static bool initialized;
99
100 static Handle basic_create(int length, bool byte_arr, TRAPS);
101
102 static inline void set_coder(oop string, jbyte coder);
103
1464 };
1465
1466
1467 class java_nio_Buffer: AllStatic {
1468 private:
1469 static int _limit_offset;
1470
1471 public:
1472 static int limit_offset();
1473 static void compute_offsets();
1474 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
1475 };
1476
1477 class java_util_concurrent_locks_AbstractOwnableSynchronizer : AllStatic {
1478 private:
1479 static int _owner_offset;
1480 public:
1481 static void compute_offsets();
1482 static oop get_owner_threadObj(oop obj);
1483 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
1484 };
1485
1486 // Use to declare fields that need to be injected into Java classes
1487 // for the JVM to use. The name_index and signature_index are
1488 // declared in vmSymbols. The may_be_java flag is used to declare
1489 // fields that might already exist in Java but should be injected if
1490 // they don't. Otherwise the field is unconditionally injected and
1491 // the JVM uses the injected one. This is to ensure that name
1492 // collisions don't occur. In general may_be_java should be false
1493 // unless there's a good reason.
1494
1495 class InjectedField {
1496 public:
1497 const SystemDictionary::WKID klass_id;
1498 const vmSymbols::SID name_index;
1499 const vmSymbols::SID signature_index;
1500 const bool may_be_java;
1501
1502
1503 Klass* klass() const { return SystemDictionary::well_known_klass(klass_id); }
|
64 f(java_lang_invoke_MemberName) \
65 f(java_lang_invoke_ResolvedMethodName) \
66 f(java_lang_invoke_LambdaForm) \
67 f(java_lang_invoke_MethodType) \
68 f(java_lang_invoke_CallSite) \
69 f(java_lang_invoke_MethodHandleNatives_CallSiteContext) \
70 f(java_security_AccessControlContext) \
71 f(java_lang_reflect_AccessibleObject) \
72 f(java_lang_reflect_Method) \
73 f(java_lang_reflect_Constructor) \
74 f(java_lang_reflect_Field) \
75 f(java_nio_Buffer) \
76 f(reflect_ConstantPool) \
77 f(reflect_UnsafeStaticFieldAccessorImpl) \
78 f(java_lang_reflect_Parameter) \
79 f(java_lang_Module) \
80 f(java_lang_StackTraceElement) \
81 f(java_lang_StackFrameInfo) \
82 f(java_lang_LiveStackFrameInfo) \
83 f(java_util_concurrent_locks_AbstractOwnableSynchronizer) \
84 f(jdk_internal_misc_UnsafeConstants) \
85 //end
86
87 #define BASIC_JAVA_CLASSES_DO(f) \
88 BASIC_JAVA_CLASSES_DO_PART1(f) \
89 BASIC_JAVA_CLASSES_DO_PART2(f)
90
91 // Interface to java.lang.String objects
92
93 class java_lang_String : AllStatic {
94 private:
95 static int value_offset;
96 static int hash_offset;
97 static int coder_offset;
98
99 static bool initialized;
100
101 static Handle basic_create(int length, bool byte_arr, TRAPS);
102
103 static inline void set_coder(oop string, jbyte coder);
104
1465 };
1466
1467
1468 class java_nio_Buffer: AllStatic {
1469 private:
1470 static int _limit_offset;
1471
1472 public:
1473 static int limit_offset();
1474 static void compute_offsets();
1475 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
1476 };
1477
1478 class java_util_concurrent_locks_AbstractOwnableSynchronizer : AllStatic {
1479 private:
1480 static int _owner_offset;
1481 public:
1482 static void compute_offsets();
1483 static oop get_owner_threadObj(oop obj);
1484 static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
1485 };
1486
1487 // Interface to jdk.internal.misc.UnsafeConsants
1488
1489 class jdk_internal_misc_UnsafeConstants : AllStatic {
1490 public:
1491 static void set_unsafe_constants();
1492 static void compute_offsets() { }
1493 static void serialize_offsets(SerializeClosure* f) { }
1494 };
1495
1496 // Use to declare fields that need to be injected into Java classes
1497 // for the JVM to use. The name_index and signature_index are
1498 // declared in vmSymbols. The may_be_java flag is used to declare
1499 // fields that might already exist in Java but should be injected if
1500 // they don't. Otherwise the field is unconditionally injected and
1501 // the JVM uses the injected one. This is to ensure that name
1502 // collisions don't occur. In general may_be_java should be false
1503 // unless there's a good reason.
1504
1505 class InjectedField {
1506 public:
1507 const SystemDictionary::WKID klass_id;
1508 const vmSymbols::SID name_index;
1509 const vmSymbols::SID signature_index;
1510 const bool may_be_java;
1511
1512
1513 Klass* klass() const { return SystemDictionary::well_known_klass(klass_id); }
|