comparison src/share/vm/prims/whitebox.cpp @ 20667:887a7cedb892

8064701: Some CDS optimizations should be disabled if bootclasspath is modified by JVMTI Summary: Added API to track bootclasspath modification Reviewed-by: jiangli, dholmes, minqi
author iklam
date Tue, 18 Nov 2014 03:38:50 -0800
parents 787c9c28311f
children c80ddae00f51
comparison
equal deleted inserted replaced
20666:bee8095780db 20667:887a7cedb892
54 #include "services/memTracker.hpp" 54 #include "services/memTracker.hpp"
55 #include "utilities/nativeCallStack.hpp" 55 #include "utilities/nativeCallStack.hpp"
56 #endif // INCLUDE_NMT 56 #endif // INCLUDE_NMT
57 57
58 #include "compiler/compileBroker.hpp" 58 #include "compiler/compileBroker.hpp"
59 #include "jvmtifiles/jvmtiEnv.hpp"
59 #include "runtime/compilationPolicy.hpp" 60 #include "runtime/compilationPolicy.hpp"
60 61
61 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC 62 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
62 63
63 #define SIZE_T_MAX_VALUE ((size_t) -1) 64 #define SIZE_T_MAX_VALUE ((size_t) -1)
123 jintArray result = JVM_GetResourceLookupCache(env, loader, resource_name); 124 jintArray result = JVM_GetResourceLookupCache(env, loader, resource_name);
124 125
125 env->ReleaseStringUTFChars(name, resource_name); 126 env->ReleaseStringUTFChars(name, resource_name);
126 return result; 127 return result;
127 WB_END 128 WB_END
129
130 WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) {
131 #if INCLUDE_JVMTI
132 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
133 const char* seg = env->GetStringUTFChars(segment, NULL);
134 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION);
135 jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg);
136 assert(err == JVMTI_ERROR_NONE, "must not fail");
137 env->ReleaseStringUTFChars(segment, seg);
138 #endif
139 }
140 WB_END
141
142 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) {
143 #if INCLUDE_JVMTI
144 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
145 const char* seg = env->GetStringUTFChars(segment, NULL);
146 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION);
147 jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg);
148 assert(err == JVMTI_ERROR_NONE, "must not fail");
149 env->ReleaseStringUTFChars(segment, seg);
150 #endif
151 }
152 WB_END
153
128 154
129 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) { 155 WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) {
130 return (jlong)Arguments::max_heap_for_compressed_oops(); 156 return (jlong)Arguments::max_heap_for_compressed_oops();
131 } 157 }
132 WB_END 158 WB_END
956 (void*)&WB_GetLookupCacheMatches}, 982 (void*)&WB_GetLookupCacheMatches},
957 {CC"parseCommandLine", 983 {CC"parseCommandLine",
958 CC"(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;", 984 CC"(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
959 (void*) &WB_ParseCommandLine 985 (void*) &WB_ParseCommandLine
960 }, 986 },
987 {CC"addToBootstrapClassLoaderSearch", CC"(Ljava/lang/String;)V",
988 (void*)&WB_AddToBootstrapClassLoaderSearch},
989 {CC"addToSystemClassLoaderSearch", CC"(Ljava/lang/String;)V",
990 (void*)&WB_AddToSystemClassLoaderSearch},
961 {CC"getCompressedOopsMaxHeapSize", CC"()J", 991 {CC"getCompressedOopsMaxHeapSize", CC"()J",
962 (void*)&WB_GetCompressedOopsMaxHeapSize}, 992 (void*)&WB_GetCompressedOopsMaxHeapSize},
963 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes }, 993 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
964 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests}, 994 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
965 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea}, 995 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},