mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
6839872: remove implementation inheritance from JSR 292 APIs
Consolidate runtime support in java.dyn.MethodHandleNatives; include transitional compatibility logic Reviewed-by: twisti
This commit is contained in:
parent
c506cb0e5b
commit
6146dffe45
13 changed files with 308 additions and 123 deletions
|
@ -144,18 +144,18 @@ class SymbolPropertyTable;
|
|||
template(reflect_UnsafeStaticFieldAccessorImpl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \
|
||||
\
|
||||
/* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
|
||||
template(MethodHandle_klass, java_dyn_MethodHandle, Opt) \
|
||||
template(MemberName_klass, sun_dyn_MemberName, Opt) \
|
||||
template(MethodHandleImpl_klass, sun_dyn_MethodHandleImpl, Opt) \
|
||||
template(MethodHandleNatives_klass, sun_dyn_MethodHandleNatives, Opt) \
|
||||
template(AdapterMethodHandle_klass, sun_dyn_AdapterMethodHandle, Opt) \
|
||||
template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \
|
||||
template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \
|
||||
template(MethodType_klass, java_dyn_MethodType, Opt) \
|
||||
template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Opt) \
|
||||
template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
|
||||
template(Linkage_klass, java_dyn_Linkage, Opt) \
|
||||
template(CallSite_klass, java_dyn_CallSite, Opt) \
|
||||
template(MethodHandle_klass, java_dyn_MethodHandle, Pre_JSR292) \
|
||||
template(MemberName_klass, java_dyn_MemberName, Pre_JSR292) \
|
||||
template(MethodHandleImpl_klass, java_dyn_MethodHandleImpl, Pre_JSR292) /* AllowTransitionalJSR292 ONLY */ \
|
||||
template(MethodHandleNatives_klass, java_dyn_MethodHandleNatives, Pre_JSR292) \
|
||||
template(AdapterMethodHandle_klass, java_dyn_AdapterMethodHandle, Pre_JSR292) \
|
||||
template(BoundMethodHandle_klass, java_dyn_BoundMethodHandle, Pre_JSR292) \
|
||||
template(DirectMethodHandle_klass, java_dyn_DirectMethodHandle, Pre_JSR292) \
|
||||
template(MethodType_klass, java_dyn_MethodType, Pre_JSR292) \
|
||||
template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Pre_JSR292) \
|
||||
template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Pre_JSR292) \
|
||||
template(Linkage_klass, java_dyn_Linkage, Pre_JSR292) \
|
||||
template(CallSite_klass, java_dyn_CallSite, Pre_JSR292) \
|
||||
/* Note: MethodHandle must be first, and CallSite last in group */ \
|
||||
\
|
||||
template(StringBuffer_klass, java_lang_StringBuffer, Pre) \
|
||||
|
@ -207,6 +207,7 @@ class SystemDictionary : AllStatic {
|
|||
|
||||
enum InitOption {
|
||||
Pre, // preloaded; error if not present
|
||||
Pre_JSR292, // preloaded if EnableMethodHandles
|
||||
|
||||
// Order is significant. Options before this point require resolve_or_fail.
|
||||
// Options after this point will use resolve_or_null instead.
|
||||
|
@ -401,6 +402,7 @@ public:
|
|||
}
|
||||
|
||||
static klassOop check_klass_Pre(klassOop k) { return check_klass(k); }
|
||||
static klassOop check_klass_Pre_JSR292(klassOop k) { return EnableInvokeDynamic ? check_klass(k) : k; }
|
||||
static klassOop check_klass_Opt(klassOop k) { return k; }
|
||||
static klassOop check_klass_Opt_Kernel(klassOop k) { return k; } //== Opt
|
||||
static klassOop check_klass_Opt_Only_JDK15(klassOop k) {
|
||||
|
@ -420,6 +422,8 @@ public:
|
|||
initialize_wk_klasses_until((WKID) limit, start_id, THREAD);
|
||||
}
|
||||
|
||||
static Symbol* find_backup_symbol(Symbol* symbol, const char* from_prefix, const char* to_prefix);
|
||||
|
||||
public:
|
||||
#define WK_KLASS_DECLARE(name, ignore_symbol, option) \
|
||||
static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); }
|
||||
|
@ -441,6 +445,9 @@ public:
|
|||
|
||||
static void load_abstract_ownable_synchronizer_klass(TRAPS);
|
||||
|
||||
static Symbol* find_backup_class_name(Symbol* class_name_symbol);
|
||||
static Symbol* find_backup_signature(Symbol* signature_symbol);
|
||||
|
||||
private:
|
||||
// Tells whether ClassLoader.loadClassInternal is present
|
||||
static bool has_loadClassInternal() { return _has_loadClassInternal; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue