1176 JNIEXPORT jobject JNICALL 1177 JVM_InitAgentProperties(JNIEnv *env, jobject agent_props); 1178 1179 JNIEXPORT jstring JNICALL 1180 JVM_GetTemporaryDirectory(JNIEnv *env); 1181 1182 /* Generics reflection support. 1183 * 1184 * Returns information about the given class's EnclosingMethod 1185 * attribute, if present, or null if the class had no enclosing 1186 * method. 1187 * 1188 * If non-null, the returned array contains three elements. Element 0 1189 * is the java.lang.Class of which the enclosing method is a member, 1190 * and elements 1 and 2 are the java.lang.Strings for the enclosing 1191 * method's name and descriptor, respectively. 1192 */ 1193 JNIEXPORT jobjectArray JNICALL 1194 JVM_GetEnclosingMethodInfo(JNIEnv* env, jclass ofClass); 1195 1196 /* ========================================================================= 1197 * The following defines a private JVM interface that the JDK can query 1198 * for the JVM version and capabilities. sun.misc.Version defines 1199 * the methods for getting the VM version and its capabilities. 1200 * 1201 * When a new bit is added, the following should be updated to provide 1202 * access to the new capability: 1203 * HS: JVM_GetVersionInfo and Abstract_VM_Version class 1204 * SDK: Version class 1205 * 1206 * Similary, a private JDK interface JDK_GetVersionInfo0 is defined for 1207 * JVM to query for the JDK version and capabilities. 1208 * 1209 * When a new bit is added, the following should be updated to provide 1210 * access to the new capability: 1211 * HS: JDK_Version class 1212 * SDK: JDK_GetVersionInfo0 1213 * 1214 * ========================================================================== 1215 */ 1216 typedef struct { 1217 unsigned int jvm_version; /* Encoded $VNUM as specified by JEP-223 */ 1218 unsigned int patch_version : 8; /* JEP-223 patch version */ 1219 unsigned int reserved3 : 8; 1220 unsigned int reserved1 : 16; 1221 unsigned int reserved2; 1222 1223 /* The following bits represents JVM supports that JDK has dependency on. 1224 * JDK can use these bits to determine which JVM version 1225 * and support it has to maintain runtime compatibility. 1226 * 1227 * When a new bit is added in a minor or update release, make sure 1228 * the new bit is also added in the main/baseline. 1229 */ 1230 unsigned int is_attach_supported : 1; 1231 unsigned int : 31; 1232 unsigned int : 32; 1233 unsigned int : 32; 1234 } jvm_version_info; 1235 1236 #define JVM_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24) 1237 #define JVM_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16) 1238 #define JVM_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8) 1239 #define JVM_VERSION_BUILD(version) ((version & 0x000000FF)) 1240 1241 JNIEXPORT void JNICALL 1242 JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size); 1243 1244 typedef struct { 1245 unsigned int jdk_version; /* Encoded $VNUM as specified by JEP-223 */ 1246 unsigned int patch_version : 8; /* JEP-223 patch version */ 1247 unsigned int reserved3 : 8; 1248 unsigned int reserved1 : 16; 1249 unsigned int reserved2; 1250 unsigned int : 32; 1251 unsigned int : 32; 1252 unsigned int : 32; 1253 } jdk_version_info; 1254 1255 #define JDK_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24) 1256 #define JDK_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16) 1257 #define JDK_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8) 1258 #define JDK_VERSION_BUILD(version) ((version & 0x000000FF)) 1259 1260 /* 1261 * This is the function JDK_GetVersionInfo0 defined in libjava.so 1262 * that is dynamically looked up by JVM. 1263 */ 1264 typedef void (*jdk_version_info_fn_t)(jdk_version_info* info, size_t info_size); 1265 1266 /* 1267 * This structure is used by the launcher to get the default thread 1268 * stack size from the VM using JNI_GetDefaultJavaVMInitArgs() with a 1269 * version of 1.1. As it is not supported otherwise, it has been removed 1270 * from jni.h 1271 */ 1272 typedef struct JDK1_1InitArgs { 1273 jint version; 1274 1275 char **properties; 1276 jint checkSource; 1277 jint nativeStackSize; 1278 jint javaStackSize; 1279 jint minHeapSize; 1280 jint maxHeapSize; 1281 jint verifyMode; 1282 char *classpath; 1283 1284 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args); 1285 void (JNICALL *exit)(jint code); | 1176 JNIEXPORT jobject JNICALL 1177 JVM_InitAgentProperties(JNIEnv *env, jobject agent_props); 1178 1179 JNIEXPORT jstring JNICALL 1180 JVM_GetTemporaryDirectory(JNIEnv *env); 1181 1182 /* Generics reflection support. 1183 * 1184 * Returns information about the given class's EnclosingMethod 1185 * attribute, if present, or null if the class had no enclosing 1186 * method. 1187 * 1188 * If non-null, the returned array contains three elements. Element 0 1189 * is the java.lang.Class of which the enclosing method is a member, 1190 * and elements 1 and 2 are the java.lang.Strings for the enclosing 1191 * method's name and descriptor, respectively. 1192 */ 1193 JNIEXPORT jobjectArray JNICALL 1194 JVM_GetEnclosingMethodInfo(JNIEnv* env, jclass ofClass); 1195 1196 /* 1197 * This structure is used by the launcher to get the default thread 1198 * stack size from the VM using JNI_GetDefaultJavaVMInitArgs() with a 1199 * version of 1.1. As it is not supported otherwise, it has been removed 1200 * from jni.h 1201 */ 1202 typedef struct JDK1_1InitArgs { 1203 jint version; 1204 1205 char **properties; 1206 jint checkSource; 1207 jint nativeStackSize; 1208 jint javaStackSize; 1209 jint minHeapSize; 1210 jint maxHeapSize; 1211 jint verifyMode; 1212 char *classpath; 1213 1214 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args); 1215 void (JNICALL *exit)(jint code); |