1721 if (GetMethodOption <double> (thread, env, method, name, &result)) { 1722 // can't be in VM when we call JNI 1723 ThreadToNativeFromVM ttnfv(thread); 1724 return doubleBox(thread, env, result); 1725 } 1726 return NULL; 1727 WB_END 1728 1729 WB_ENTRY(jobject, WB_GetMethodStringOption(JNIEnv* env, jobject wb, jobject method, jstring name)) 1730 ccstr ccstrResult; 1731 if (GetMethodOption <ccstr> (thread, env, method, name, &ccstrResult)) { 1732 // can't be in VM when we call JNI 1733 ThreadToNativeFromVM ttnfv(thread); 1734 jstring result = env->NewStringUTF(ccstrResult); 1735 CHECK_JNI_EXCEPTION_(env, NULL); 1736 return result; 1737 } 1738 return NULL; 1739 WB_END 1740 1741 WB_ENTRY(jboolean, WB_IsShared(JNIEnv* env, jobject wb, jobject obj)) 1742 oop obj_oop = JNIHandles::resolve(obj); 1743 return MetaspaceShared::is_archive_object(obj_oop); 1744 WB_END 1745 1746 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz)) 1747 return (jboolean)MetaspaceShared::is_in_shared_metaspace(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 1748 WB_END 1749 1750 WB_ENTRY(jboolean, WB_AreSharedStringsIgnored(JNIEnv* env)) 1751 return !StringTable::shared_string_mapped(); 1752 WB_END 1753 1754 WB_ENTRY(jobject, WB_GetResolvedReferences(JNIEnv* env, jobject wb, jclass clazz)) 1755 Klass *k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); 1756 if (k->is_instance_klass()) { 1757 InstanceKlass *ik = InstanceKlass::cast(k); 1758 ConstantPool *cp = ik->constants(); 1759 objArrayOop refs = cp->resolved_references(); 1760 return (jobject)JNIHandles::make_local(env, refs); 2149 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength}, 2150 {CC"remapInstructionOperandFromCPCache0", 2151 CC"(Ljava/lang/Class;I)I", (void*)&WB_ConstantPoolRemapInstructionOperandFromCache}, 2152 {CC"encodeConstantPoolIndyIndex0", 2153 CC"(I)I", (void*)&WB_ConstantPoolEncodeIndyIndex}, 2154 {CC"getMethodBooleanOption", 2155 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Boolean;", 2156 (void*)&WB_GetMethodBooleaneOption}, 2157 {CC"getMethodIntxOption", 2158 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;", 2159 (void*)&WB_GetMethodIntxOption}, 2160 {CC"getMethodUintxOption", 2161 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;", 2162 (void*)&WB_GetMethodUintxOption}, 2163 {CC"getMethodDoubleOption", 2164 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Double;", 2165 (void*)&WB_GetMethodDoubleOption}, 2166 {CC"getMethodStringOption", 2167 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/String;", 2168 (void*)&WB_GetMethodStringOption}, 2169 {CC"isShared", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsShared }, 2170 {CC"isSharedClass", CC"(Ljava/lang/Class;)Z", (void*)&WB_IsSharedClass }, 2171 {CC"areSharedStringsIgnored", CC"()Z", (void*)&WB_AreSharedStringsIgnored }, 2172 {CC"getResolvedReferences", CC"(Ljava/lang/Class;)Ljava/lang/Object;", (void*)&WB_GetResolvedReferences}, 2173 {CC"areOpenArchiveHeapObjectsMapped", CC"()Z", (void*)&WB_AreOpenArchiveHeapObjectsMapped}, 2174 {CC"isCDSIncludedInVmBuild", CC"()Z", (void*)&WB_IsCDSIncludedInVmBuild }, 2175 {CC"isJFRIncludedInVmBuild", CC"()Z", (void*)&WB_IsJFRIncludedInVmBuild }, 2176 {CC"isJavaHeapArchiveSupported", CC"()Z", (void*)&WB_IsJavaHeapArchiveSupported }, 2177 2178 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches }, 2179 {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack }, 2180 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I", 2181 (void*)&WB_AddCompilerDirective }, 2182 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, 2183 {CC"isGCSupported", CC"(I)Z", (void*)&WB_IsGCSupported}, 2184 {CC"isGCSelected", CC"(I)Z", (void*)&WB_IsGCSelected}, 2185 {CC"isGCSelectedErgonomically", CC"()Z", (void*)&WB_IsGCSelectedErgonomically}, 2186 {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl}, 2187 {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;", 2188 (void*)&WB_GetConcurrentGCPhases}, | 1721 if (GetMethodOption <double> (thread, env, method, name, &result)) { 1722 // can't be in VM when we call JNI 1723 ThreadToNativeFromVM ttnfv(thread); 1724 return doubleBox(thread, env, result); 1725 } 1726 return NULL; 1727 WB_END 1728 1729 WB_ENTRY(jobject, WB_GetMethodStringOption(JNIEnv* env, jobject wb, jobject method, jstring name)) 1730 ccstr ccstrResult; 1731 if (GetMethodOption <ccstr> (thread, env, method, name, &ccstrResult)) { 1732 // can't be in VM when we call JNI 1733 ThreadToNativeFromVM ttnfv(thread); 1734 jstring result = env->NewStringUTF(ccstrResult); 1735 CHECK_JNI_EXCEPTION_(env, NULL); 1736 return result; 1737 } 1738 return NULL; 1739 WB_END 1740 1741 WB_ENTRY(jobject, WB_GetDefaultArchivePath(JNIEnv* env, jobject wb)) 1742 const char* p = Arguments::get_default_shared_archive_path(); 1743 ThreadToNativeFromVM ttn(thread); 1744 jstring path_string = env->NewStringUTF(p); 1745 1746 CHECK_JNI_EXCEPTION_(env, NULL); 1747 1748 return path_string; 1749 WB_END 1750 1751 WB_ENTRY(jboolean, WB_IsSharingEnabled(JNIEnv* env, jobject wb)) 1752 return UseSharedSpaces; 1753 WB_END 1754 1755 WB_ENTRY(jboolean, WB_IsShared(JNIEnv* env, jobject wb, jobject obj)) 1756 oop obj_oop = JNIHandles::resolve(obj); 1757 return MetaspaceShared::is_archive_object(obj_oop); 1758 WB_END 1759 1760 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz)) 1761 return (jboolean)MetaspaceShared::is_in_shared_metaspace(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 1762 WB_END 1763 1764 WB_ENTRY(jboolean, WB_AreSharedStringsIgnored(JNIEnv* env)) 1765 return !StringTable::shared_string_mapped(); 1766 WB_END 1767 1768 WB_ENTRY(jobject, WB_GetResolvedReferences(JNIEnv* env, jobject wb, jclass clazz)) 1769 Klass *k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); 1770 if (k->is_instance_klass()) { 1771 InstanceKlass *ik = InstanceKlass::cast(k); 1772 ConstantPool *cp = ik->constants(); 1773 objArrayOop refs = cp->resolved_references(); 1774 return (jobject)JNIHandles::make_local(env, refs); 2163 {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength}, 2164 {CC"remapInstructionOperandFromCPCache0", 2165 CC"(Ljava/lang/Class;I)I", (void*)&WB_ConstantPoolRemapInstructionOperandFromCache}, 2166 {CC"encodeConstantPoolIndyIndex0", 2167 CC"(I)I", (void*)&WB_ConstantPoolEncodeIndyIndex}, 2168 {CC"getMethodBooleanOption", 2169 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Boolean;", 2170 (void*)&WB_GetMethodBooleaneOption}, 2171 {CC"getMethodIntxOption", 2172 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;", 2173 (void*)&WB_GetMethodIntxOption}, 2174 {CC"getMethodUintxOption", 2175 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;", 2176 (void*)&WB_GetMethodUintxOption}, 2177 {CC"getMethodDoubleOption", 2178 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Double;", 2179 (void*)&WB_GetMethodDoubleOption}, 2180 {CC"getMethodStringOption", 2181 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/String;", 2182 (void*)&WB_GetMethodStringOption}, 2183 {CC"getDefaultArchivePath", CC"()Ljava/lang/String;", 2184 (void*)&WB_GetDefaultArchivePath}, 2185 {CC"isSharingEnabled", CC"()Z", (void*)&WB_IsSharingEnabled}, 2186 {CC"isShared", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsShared }, 2187 {CC"isSharedClass", CC"(Ljava/lang/Class;)Z", (void*)&WB_IsSharedClass }, 2188 {CC"areSharedStringsIgnored", CC"()Z", (void*)&WB_AreSharedStringsIgnored }, 2189 {CC"getResolvedReferences", CC"(Ljava/lang/Class;)Ljava/lang/Object;", (void*)&WB_GetResolvedReferences}, 2190 {CC"areOpenArchiveHeapObjectsMapped", CC"()Z", (void*)&WB_AreOpenArchiveHeapObjectsMapped}, 2191 {CC"isCDSIncludedInVmBuild", CC"()Z", (void*)&WB_IsCDSIncludedInVmBuild }, 2192 {CC"isJFRIncludedInVmBuild", CC"()Z", (void*)&WB_IsJFRIncludedInVmBuild }, 2193 {CC"isJavaHeapArchiveSupported", CC"()Z", (void*)&WB_IsJavaHeapArchiveSupported }, 2194 2195 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches }, 2196 {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack }, 2197 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I", 2198 (void*)&WB_AddCompilerDirective }, 2199 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, 2200 {CC"isGCSupported", CC"(I)Z", (void*)&WB_IsGCSupported}, 2201 {CC"isGCSelected", CC"(I)Z", (void*)&WB_IsGCSelected}, 2202 {CC"isGCSelectedErgonomically", CC"()Z", (void*)&WB_IsGCSelectedErgonomically}, 2203 {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl}, 2204 {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;", 2205 (void*)&WB_GetConcurrentGCPhases}, |