comparison src/share/vm/graal/graalCompilerToVM.cpp @ 11852:d7964e96b0b0

move benchmark counters into separate class and make them correct for multithreaded applications
author Lukas Stadler <lukas.stadler@jku.at>
date Mon, 30 Sep 2013 18:32:26 +0200
parents 7cca436d600b
children 359f7e70ae7f
comparison
equal deleted inserted replaced
11828:1d64bfb3f481 11852:d7964e96b0b0
873 break; 873 break;
874 } 874 }
875 875
876 set_int("arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset())); 876 set_int("arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset()));
877 877
878 set_int("graalCountersThreadOffset", in_bytes(JavaThread::graal_counters_offset()));
879 set_int("graalCountersSize", (jint) GRAAL_COUNTERS_SIZE);
880
878 #undef set_boolean 881 #undef set_boolean
879 #undef set_int 882 #undef set_int
880 #undef set_long 883 #undef set_long
881 #undef set_object 884 #undef set_object
882 885
1141 1144
1142 C2V_VMENTRY(jlong, readUnsafeKlassPointer, (JNIEnv *env, jobject, jobject o)) 1145 C2V_VMENTRY(jlong, readUnsafeKlassPointer, (JNIEnv *env, jobject, jobject o))
1143 oop resolved_o = JNIHandles::resolve(o); 1146 oop resolved_o = JNIHandles::resolve(o);
1144 jlong klass = (jlong)(address)resolved_o->klass(); 1147 jlong klass = (jlong)(address)resolved_o->klass();
1145 return klass; 1148 return klass;
1149 C2V_END
1150
1151 C2V_VMENTRY(jlongArray, collectCounters, (JNIEnv *env, jobject))
1152 typeArrayOop arrayOop = oopFactory::new_longArray(GRAAL_COUNTERS_SIZE, CHECK_NULL);
1153 JavaThread::collect_counters(arrayOop);
1154 return (jlongArray) JNIHandles::make_local(arrayOop);
1146 C2V_END 1155 C2V_END
1147 1156
1148 #define CC (char*) /*cast a literal from (const char*)*/ 1157 #define CC (char*) /*cast a literal from (const char*)*/
1149 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f)) 1158 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f))
1150 1159
1222 {CC"getFileName", CC"("HS_RESOLVED_JAVA_TYPE")"STRING, FN_PTR(getFileName)}, 1231 {CC"getFileName", CC"("HS_RESOLVED_JAVA_TYPE")"STRING, FN_PTR(getFileName)},
1223 {CC"reprofile", CC"("METASPACE_METHOD")V", FN_PTR(reprofile)}, 1232 {CC"reprofile", CC"("METASPACE_METHOD")V", FN_PTR(reprofile)},
1224 {CC"invalidateInstalledCode", CC"("HS_INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)}, 1233 {CC"invalidateInstalledCode", CC"("HS_INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)},
1225 {CC"readUnsafeUncompressedPointer", CC"("OBJECT"J)"OBJECT, FN_PTR(readUnsafeUncompressedPointer)}, 1234 {CC"readUnsafeUncompressedPointer", CC"("OBJECT"J)"OBJECT, FN_PTR(readUnsafeUncompressedPointer)},
1226 {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)}, 1235 {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)},
1236 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)},
1227 }; 1237 };
1228 1238
1229 int CompilerToVM_methods_count() { 1239 int CompilerToVM_methods_count() {
1230 return sizeof(CompilerToVM_methods) / sizeof(JNINativeMethod); 1240 return sizeof(CompilerToVM_methods) / sizeof(JNINativeMethod);
1231 } 1241 }