comparison src/share/vm/graal/graalVMEntries.cpp @ 3055:fecdb0a65fb2

runtime profiles exceptions at the call site
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 21 Jun 2011 11:13:52 +0200
parents 9fed07e4a375
children 536528f48708
comparison
equal deleted inserted replaced
3024:abcc480f3bd5 3055:fecdb0a65fb2
181 TRACE_graal_3("VMEntries::RiMethod_invocationCount"); 181 TRACE_graal_3("VMEntries::RiMethod_invocationCount");
182 methodOop method = getMethodFromHotSpotMethod(hotspot_method); 182 methodOop method = getMethodFromHotSpotMethod(hotspot_method);
183 return method->invocation_count(); 183 return method->invocation_count();
184 } 184 }
185 185
186 // public native int RiMethod_throwoutCount(long vmId);
187 JNIEXPORT jint JNICALL Java_com_oracle_graal_runtime_VMEntries_RiMethod_2exceptionProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) {
188 TRACE_graal_3("VMEntries::RiMethod_exceptionProbability");
189 ciMethod* cimethod;
190 {
191 VM_ENTRY_MARK;
192 methodOop method = getMethodFromHotSpotMethod(hotspot_method);
193 cimethod = (ciMethod*)CURRENT_ENV->get_object(method);
194 }
195
196 ciMethodData* method_data = cimethod->method_data_or_null();
197 if (method_data == NULL) {
198 return -1;
199 } else {
200 ciProfileData* profile = method_data->bci_to_data(bci);
201 if (profile == NULL) {
202 return 0;
203 }
204 uint trap = method_data->trap_recompiled_at(profile);
205 if (trap > 0) {
206 return 100;
207 } else {
208 return trap;
209 }
210 }
211 }
212
186 // public native RiTypeProfile RiMethod_typeProfile(long vmId, int bci); 213 // public native RiTypeProfile RiMethod_typeProfile(long vmId, int bci);
187 JNIEXPORT jobject JNICALL Java_com_oracle_graal_runtime_VMEntries_RiMethod_1typeProfile(JNIEnv *, jobject, jobject hotspot_method, jint bci) { 214 JNIEXPORT jobject JNICALL Java_com_oracle_graal_runtime_VMEntries_RiMethod_2typeProfile(JNIEnv *, jobject, jobject hotspot_method, jint bci) {
188 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); 215 TRACE_graal_3("VMEntries::RiMethod_typeProfile");
189 ciMethod* cimethod; 216 ciMethod* cimethod;
190 { 217 {
191 VM_ENTRY_MARK; 218 VM_ENTRY_MARK;
192 methodOop method = getMethodFromHotSpotMethod(hotspot_method); 219 methodOop method = getMethodFromHotSpotMethod(hotspot_method);
223 250
224 return JNIHandles::make_local(obj()); 251 return JNIHandles::make_local(obj());
225 } 252 }
226 253
227 // public native RiTypeProfile RiMethod_branchProfile(long vmId, int bci); 254 // public native RiTypeProfile RiMethod_branchProfile(long vmId, int bci);
228 JNIEXPORT jint JNICALL Java_com_oracle_graal_runtime_VMEntries_RiMethod_1branchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { 255 JNIEXPORT jint JNICALL Java_com_oracle_graal_runtime_VMEntries_RiMethod_2branchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) {
229 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); 256 TRACE_graal_3("VMEntries::RiMethod_typeProfile");
230 ciMethodData* method_data; 257 ciMethodData* method_data;
231 ciMethod* cimethod; 258 ciMethod* cimethod;
232 { 259 {
233 VM_ENTRY_MARK; 260 VM_ENTRY_MARK;
801 {CC"RiMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1code)}, 828 {CC"RiMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1code)},
802 {CC"RiMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1signature)}, 829 {CC"RiMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1signature)},
803 {CC"RiMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1exceptionHandlers)}, 830 {CC"RiMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1exceptionHandlers)},
804 {CC"RiMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasBalancedMonitors)}, 831 {CC"RiMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasBalancedMonitors)},
805 {CC"RiMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1uniqueConcreteMethod)}, 832 {CC"RiMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1uniqueConcreteMethod)},
806 {CC"RiMethod_typeProfile", CC"("RESOLVED_METHOD"I)"TYPE_PROFILE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1typeProfile)}, 833 {CC"RiMethod_typeProfile", CC"("RESOLVED_METHOD"I)"TYPE_PROFILE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2typeProfile)},
807 {CC"RiMethod_branchProbability", CC"("RESOLVED_METHOD"I)I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1branchProbability)}, 834 {CC"RiMethod_branchProbability", CC"("RESOLVED_METHOD"I)I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2branchProbability)},
808 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1invocationCount)}, 835 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1invocationCount)},
836 {CC"RiMethod_exceptionProbability", CC"("RESOLVED_METHOD"I)I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2exceptionProbability)},
809 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiSignature_1lookupType)}, 837 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiSignature_1lookupType)},
810 {CC"RiConstantPool_lookupConstant", CC"("PROXY"I)"OBJECT, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupConstant)}, 838 {CC"RiConstantPool_lookupConstant", CC"("PROXY"I)"OBJECT, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupConstant)},
811 {CC"RiConstantPool_lookupMethod", CC"("PROXY"IB)"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupMethod)}, 839 {CC"RiConstantPool_lookupMethod", CC"("PROXY"IB)"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupMethod)},
812 {CC"RiConstantPool_lookupSignature", CC"("PROXY"I)"SIGNATURE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupSignature)}, 840 {CC"RiConstantPool_lookupSignature", CC"("PROXY"I)"SIGNATURE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupSignature)},
813 {CC"RiConstantPool_lookupType", CC"("PROXY"I)"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupType)}, 841 {CC"RiConstantPool_lookupType", CC"("PROXY"I)"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupType)},