mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8283689: Update the foreign linker VM implementation
Co-authored-by: Jorn Vernee <jvernee@openjdk.org> Co-authored-by: Nick Gasson <ngasson@openjdk.org> Reviewed-by: mcimadamore, vlivanov, rehn
This commit is contained in:
parent
6a8be358d2
commit
81e4bdbe13
154 changed files with 3718 additions and 4360 deletions
|
@ -83,7 +83,10 @@ class RecordComponent;
|
|||
f(jdk_internal_vm_Continuation) \
|
||||
f(jdk_internal_vm_StackChunk) \
|
||||
f(java_util_concurrent_locks_AbstractOwnableSynchronizer) \
|
||||
f(jdk_internal_invoke_NativeEntryPoint) \
|
||||
f(jdk_internal_foreign_abi_NativeEntryPoint) \
|
||||
f(jdk_internal_foreign_abi_ABIDescriptor) \
|
||||
f(jdk_internal_foreign_abi_VMStorage) \
|
||||
f(jdk_internal_foreign_abi_CallConv) \
|
||||
f(jdk_internal_misc_UnsafeConstants) \
|
||||
f(java_lang_boxing_object) \
|
||||
f(vector_VectorPayload) \
|
||||
|
@ -1276,16 +1279,12 @@ class java_lang_invoke_LambdaForm: AllStatic {
|
|||
// Interface to java.lang.invoke.NativeEntryPoint objects
|
||||
// (These are a private interface for managing adapter code generation.)
|
||||
|
||||
class jdk_internal_invoke_NativeEntryPoint: AllStatic {
|
||||
class jdk_internal_foreign_abi_NativeEntryPoint: AllStatic {
|
||||
friend class JavaClasses;
|
||||
|
||||
private:
|
||||
static int _shadow_space_offset;
|
||||
static int _argMoves_offset;
|
||||
static int _returnMoves_offset;
|
||||
static int _need_transition_offset;
|
||||
static int _method_type_offset;
|
||||
static int _name_offset;
|
||||
static int _invoker_offset;
|
||||
|
||||
static void compute_offsets();
|
||||
|
||||
|
@ -1293,12 +1292,8 @@ class jdk_internal_invoke_NativeEntryPoint: AllStatic {
|
|||
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
|
||||
|
||||
// Accessors
|
||||
static jint shadow_space(oop entry);
|
||||
static oop argMoves(oop entry);
|
||||
static oop returnMoves(oop entry);
|
||||
static jboolean need_transition(oop entry);
|
||||
static oop method_type(oop entry);
|
||||
static oop name(oop entry);
|
||||
static jlong invoker(oop entry);
|
||||
|
||||
// Testers
|
||||
static bool is_subclass(Klass* klass) {
|
||||
|
@ -1308,12 +1303,92 @@ class jdk_internal_invoke_NativeEntryPoint: AllStatic {
|
|||
static bool is_instance(oop obj);
|
||||
|
||||
// Accessors for code generation:
|
||||
static int shadow_space_offset_in_bytes() { return _shadow_space_offset; }
|
||||
static int argMoves_offset_in_bytes() { return _argMoves_offset; }
|
||||
static int returnMoves_offset_in_bytes() { return _returnMoves_offset; }
|
||||
static int need_transition_offset_in_bytes() { return _need_transition_offset; }
|
||||
static int method_type_offset_in_bytes() { return _method_type_offset; }
|
||||
static int name_offset_in_bytes() { return _name_offset; }
|
||||
static int invoker_offset_in_bytes() { return _invoker_offset; }
|
||||
};
|
||||
|
||||
class jdk_internal_foreign_abi_ABIDescriptor: AllStatic {
|
||||
friend class JavaClasses;
|
||||
|
||||
private:
|
||||
static int _inputStorage_offset;
|
||||
static int _outputStorage_offset;
|
||||
static int _volatileStorage_offset;
|
||||
static int _stackAlignment_offset;
|
||||
static int _shadowSpace_offset;
|
||||
static int _targetAddrStorage_offset;
|
||||
static int _retBufAddrStorage_offset;
|
||||
|
||||
static void compute_offsets();
|
||||
|
||||
public:
|
||||
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
|
||||
|
||||
// Accessors
|
||||
static objArrayOop inputStorage(oop entry);
|
||||
static objArrayOop outputStorage(oop entry);
|
||||
static objArrayOop volatileStorage(oop entry);
|
||||
static jint stackAlignment(oop entry);
|
||||
static jint shadowSpace(oop entry);
|
||||
static oop targetAddrStorage(oop entry);
|
||||
static oop retBufAddrStorage(oop entry);
|
||||
|
||||
// Testers
|
||||
static bool is_subclass(Klass* klass) {
|
||||
return vmClasses::ABIDescriptor_klass() != NULL &&
|
||||
klass->is_subclass_of(vmClasses::ABIDescriptor_klass());
|
||||
}
|
||||
static bool is_instance(oop obj);
|
||||
};
|
||||
|
||||
class jdk_internal_foreign_abi_VMStorage: AllStatic {
|
||||
friend class JavaClasses;
|
||||
|
||||
private:
|
||||
static int _type_offset;
|
||||
static int _index_offset;
|
||||
static int _debugName_offset;
|
||||
|
||||
static void compute_offsets();
|
||||
|
||||
public:
|
||||
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
|
||||
|
||||
// Accessors
|
||||
static jint type(oop entry);
|
||||
static jint index(oop entry);
|
||||
static oop debugName(oop entry);
|
||||
|
||||
// Testers
|
||||
static bool is_subclass(Klass* klass) {
|
||||
return vmClasses::VMStorage_klass() != NULL &&
|
||||
klass->is_subclass_of(vmClasses::VMStorage_klass());
|
||||
}
|
||||
static bool is_instance(oop obj);
|
||||
};
|
||||
|
||||
class jdk_internal_foreign_abi_CallConv: AllStatic {
|
||||
friend class JavaClasses;
|
||||
|
||||
private:
|
||||
static int _argRegs_offset;
|
||||
static int _retRegs_offset;
|
||||
|
||||
static void compute_offsets();
|
||||
|
||||
public:
|
||||
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;
|
||||
|
||||
// Accessors
|
||||
static objArrayOop argRegs(oop entry);
|
||||
static objArrayOop retRegs(oop entry);
|
||||
|
||||
// Testers
|
||||
static bool is_subclass(Klass* klass) {
|
||||
return vmClasses::CallConv_klass() != NULL &&
|
||||
klass->is_subclass_of(vmClasses::CallConv_klass());
|
||||
}
|
||||
static bool is_instance(oop obj);
|
||||
};
|
||||
|
||||
// Interface to java.lang.invoke.MemberName objects
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue