54 boolean speculativeResolve) throws LinkageError, ClassNotFoundException;
55
56 //--- Field layout queries parallel to jdk.internal.misc.Unsafe:
57 static native long objectFieldOffset(MemberName self); // e.g., returns vmindex
58 static native long staticFieldOffset(MemberName self); // e.g., returns vmindex
59 static native Object staticFieldBase(MemberName self); // e.g., returns clazz
60 static native Object getMemberVMInfo(MemberName self); // returns {vmindex,vmtarget}
61
62 //--- CallSite support
63
64 /** Tell the JVM that we need to change the target of a CallSite. */
65 static native void setCallSiteTargetNormal(CallSite site, MethodHandle target);
66 static native void setCallSiteTargetVolatile(CallSite site, MethodHandle target);
67
68 static native void copyOutBootstrapArguments(Class<?> caller, int[] indexInfo,
69 int start, int end,
70 Object[] buf, int pos,
71 boolean resolve,
72 Object ifNotAvailable);
73
74 /** Represents a context to track nmethod dependencies on CallSite instance target. */
75 static class CallSiteContext implements Runnable {
76 //@Injected JVM_nmethodBucket* vmdependencies;
77 //@Injected jlong last_cleanup;
78
79 static CallSiteContext make(CallSite cs) {
80 final CallSiteContext newContext = new CallSiteContext();
81 // CallSite instance is tracked by a Cleanable which clears native
82 // structures allocated for CallSite context. Though the CallSite can
83 // become unreachable, its Context is retained by the Cleanable instance
84 // (which is referenced from Cleaner instance which is referenced from
85 // CleanerFactory class) until cleanup is performed.
86 CleanerFactory.cleaner().register(cs, newContext);
87 return newContext;
88 }
89
90 @Override
91 public void run() {
92 MethodHandleNatives.clearCallSiteContext(this);
93 }
|
54 boolean speculativeResolve) throws LinkageError, ClassNotFoundException;
55
56 //--- Field layout queries parallel to jdk.internal.misc.Unsafe:
57 static native long objectFieldOffset(MemberName self); // e.g., returns vmindex
58 static native long staticFieldOffset(MemberName self); // e.g., returns vmindex
59 static native Object staticFieldBase(MemberName self); // e.g., returns clazz
60 static native Object getMemberVMInfo(MemberName self); // returns {vmindex,vmtarget}
61
62 //--- CallSite support
63
64 /** Tell the JVM that we need to change the target of a CallSite. */
65 static native void setCallSiteTargetNormal(CallSite site, MethodHandle target);
66 static native void setCallSiteTargetVolatile(CallSite site, MethodHandle target);
67
68 static native void copyOutBootstrapArguments(Class<?> caller, int[] indexInfo,
69 int start, int end,
70 Object[] buf, int pos,
71 boolean resolve,
72 Object ifNotAvailable);
73
74 /// CDS support
75 static native void checkArchivable(Class<?> type);
76
77 /** Represents a context to track nmethod dependencies on CallSite instance target. */
78 static class CallSiteContext implements Runnable {
79 //@Injected JVM_nmethodBucket* vmdependencies;
80 //@Injected jlong last_cleanup;
81
82 static CallSiteContext make(CallSite cs) {
83 final CallSiteContext newContext = new CallSiteContext();
84 // CallSite instance is tracked by a Cleanable which clears native
85 // structures allocated for CallSite context. Though the CallSite can
86 // become unreachable, its Context is retained by the Cleanable instance
87 // (which is referenced from Cleaner instance which is referenced from
88 // CleanerFactory class) until cleanup is performed.
89 CleanerFactory.cleaner().register(cs, newContext);
90 return newContext;
91 }
92
93 @Override
94 public void run() {
95 MethodHandleNatives.clearCallSiteContext(this);
96 }
|