Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalVMEntries.cpp @ 3650:0e8a2a629afb
Pass-by compilation broker.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 16 Nov 2011 21:27:28 +0100 |
parents | 5a8c44b5fb80 |
children | 6aef50c6d967 |
comparison
equal
deleted
inserted
replaced
3649:5a8c44b5fb80 | 3650:0e8a2a629afb |
---|---|
65 | 65 |
66 // public RiExceptionHandler[] RiMethod_exceptionHandlers(long vmId); | 66 // public RiExceptionHandler[] RiMethod_exceptionHandlers(long vmId); |
67 JNIEXPORT jobjectArray JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_1exceptionHandlers(JNIEnv *, jobject, jobject hotspot_method) { | 67 JNIEXPORT jobjectArray JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_1exceptionHandlers(JNIEnv *, jobject, jobject hotspot_method) { |
68 TRACE_graal_3("VMEntries::RiMethod_exceptionHandlers"); | 68 TRACE_graal_3("VMEntries::RiMethod_exceptionHandlers"); |
69 VM_ENTRY_MARK | 69 VM_ENTRY_MARK |
70 ResourceMark rm; | |
70 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | 71 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); |
71 typeArrayHandle handlers = method->exception_table(); | 72 typeArrayHandle handlers = method->exception_table(); |
72 int handler_count = handlers.is_null() ? 0 : handlers->length() / 4; | 73 int handler_count = handlers.is_null() ? 0 : handlers->length() / 4; |
73 | 74 |
74 instanceKlass::cast(HotSpotExceptionHandler::klass())->initialize(CHECK_NULL); | 75 instanceKlass::cast(HotSpotExceptionHandler::klass())->initialize(CHECK_NULL); |
178 } | 179 } |
179 | 180 |
180 // public native int RiMethod_exceptionProbability(long vmId, int bci); | 181 // public native int RiMethod_exceptionProbability(long vmId, int bci); |
181 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2exceptionProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { | 182 JNIEXPORT jint JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2exceptionProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { |
182 TRACE_graal_3("VMEntries::RiMethod_exceptionProbability"); | 183 TRACE_graal_3("VMEntries::RiMethod_exceptionProbability"); |
183 { | 184 VM_ENTRY_MARK; |
184 VM_ENTRY_MARK; | 185 ResourceMark rm; |
185 methodOop method = getMethodFromHotSpotMethod(hotspot_method); | 186 methodOop method = getMethodFromHotSpotMethod(hotspot_method); |
186 methodDataOop method_data = method->method_data(); | 187 methodDataOop method_data = method->method_data(); |
187 if (method_data == NULL || !method_data->is_mature()) { | 188 if (method_data == NULL || !method_data->is_mature()) { |
188 return -1; | 189 return -1; |
189 } | 190 } |
190 ProfileData* data = method_data->bci_to_data(bci); | 191 ProfileData* data = method_data->bci_to_data(bci); |
191 if (data == NULL) { | 192 if (data == NULL) { |
192 return 0; | 193 return 0; |
193 } | 194 } |
194 uint trap = Deoptimization::trap_state_is_recompiled(data->trap_state())? 1: 0; | 195 uint trap = Deoptimization::trap_state_is_recompiled(data->trap_state())? 1: 0; |
195 if (trap > 0) { | 196 if (trap > 0) { |
196 return 100; | 197 return 100; |
197 } else { | 198 } else { |
198 return trap; | 199 return trap; |
199 } | |
200 } | 200 } |
201 } | 201 } |
202 | 202 |
203 // ------------------------------------------------------------------ | 203 // ------------------------------------------------------------------ |
204 // Adjust a CounterData count to be commensurate with | 204 // Adjust a CounterData count to be commensurate with |
230 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2typeProfile(JNIEnv *, jobject, jobject hotspot_method, jint bci) { | 230 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2typeProfile(JNIEnv *, jobject, jobject hotspot_method, jint bci) { |
231 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); | 231 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); |
232 Handle obj; | 232 Handle obj; |
233 { | 233 { |
234 VM_ENTRY_MARK; | 234 VM_ENTRY_MARK; |
235 ResourceMark rm; | |
235 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | 236 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); |
236 if (strstr(method->name_and_sig_as_C_string(), "factor") != NULL) { | |
237 // tty->print_cr("here"); | |
238 } | |
239 if (bci == 123) { | |
240 // tty->print_cr("here2"); | |
241 } | |
242 methodDataHandle method_data = method->method_data(); | 237 methodDataHandle method_data = method->method_data(); |
243 if (method_data == NULL || !method_data->is_mature()) { | 238 if (method_data == NULL || !method_data->is_mature()) { |
244 return NULL; | 239 return NULL; |
245 } | 240 } |
246 ProfileData* data = method_data->bci_to_data(bci); | 241 ProfileData* data = method_data->bci_to_data(bci); |
293 return JNIHandles::make_local(obj()); | 288 return JNIHandles::make_local(obj()); |
294 } | 289 } |
295 | 290 |
296 JNIEXPORT jdouble JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2branchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { | 291 JNIEXPORT jdouble JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2branchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { |
297 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); | 292 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); |
293 ResourceMark rm; | |
298 methodOop method = getMethodFromHotSpotMethod(hotspot_method); | 294 methodOop method = getMethodFromHotSpotMethod(hotspot_method); |
299 methodDataOop method_data = method->method_data(); | 295 methodDataOop method_data = method->method_data(); |
300 | 296 |
301 if (method_data == NULL || !method_data->is_mature()) return -1; | 297 if (method_data == NULL || !method_data->is_mature()) return -1; |
302 method_data->bci_to_data(bci); | 298 method_data->bci_to_data(bci); |
326 } | 322 } |
327 | 323 |
328 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2switchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { | 324 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiMethod_2switchProbability(JNIEnv *, jobject, jobject hotspot_method, jint bci) { |
329 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); | 325 TRACE_graal_3("VMEntries::RiMethod_typeProfile"); |
330 VM_ENTRY_MARK; | 326 VM_ENTRY_MARK; |
327 ResourceMark rm; | |
331 methodOop method = getMethodFromHotSpotMethod(hotspot_method); | 328 methodOop method = getMethodFromHotSpotMethod(hotspot_method); |
332 methodDataOop method_data = method->method_data(); | 329 methodDataOop method_data = method->method_data(); |
333 | 330 |
334 if (method_data == NULL || !method_data->is_mature()) return NULL; | 331 if (method_data == NULL || !method_data->is_mature()) return NULL; |
335 | 332 |
371 | 368 |
372 // public RiType RiSignature_lookupType(String returnType, HotSpotTypeResolved accessingClass); | 369 // public RiType RiSignature_lookupType(String returnType, HotSpotTypeResolved accessingClass); |
373 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiSignature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass) { | 370 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiSignature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass) { |
374 TRACE_graal_3("VMEntries::RiSignature_lookupType"); | 371 TRACE_graal_3("VMEntries::RiSignature_lookupType"); |
375 VM_ENTRY_MARK; | 372 VM_ENTRY_MARK; |
373 ResourceMark rm; | |
376 | 374 |
377 Symbol* nameSymbol = VmIds::toSymbol(jname); | 375 Symbol* nameSymbol = VmIds::toSymbol(jname); |
378 Handle name = JNIHandles::resolve(jname); | 376 Handle name = JNIHandles::resolve(jname); |
379 | 377 |
380 oop result; | 378 oop result; |
522 | 520 |
523 // public RiField RiConstantPool_lookupField(long vmId, int cpi); | 521 // public RiField RiConstantPool_lookupField(long vmId, int cpi); |
524 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiConstantPool_1lookupField(JNIEnv *env, jobject, jobject constantPoolHolder, jint index, jbyte byteCode) { | 522 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiConstantPool_1lookupField(JNIEnv *env, jobject, jobject constantPoolHolder, jint index, jbyte byteCode) { |
525 TRACE_graal_3("VMEntries::RiConstantPool_lookupField"); | 523 TRACE_graal_3("VMEntries::RiConstantPool_lookupField"); |
526 VM_ENTRY_MARK; | 524 VM_ENTRY_MARK; |
525 ResourceMark rm; | |
527 | 526 |
528 index = GraalCompiler::to_cp_index_u2(index); | 527 index = GraalCompiler::to_cp_index_u2(index); |
529 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(constantPoolHolder)))->constants(); | 528 constantPoolHandle cp = instanceKlass::cast(java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(constantPoolHolder)))->constants(); |
530 | 529 |
531 ciInstanceKlass* loading_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(cp->pool_holder()); | |
532 ciField *field = CURRENT_ENV->get_field_by_index(loading_klass, index); | |
533 | |
534 int nt_index = cp->name_and_type_ref_index_at(index); | 530 int nt_index = cp->name_and_type_ref_index_at(index); |
535 int sig_index = cp->signature_ref_index_at(nt_index); | 531 int sig_index = cp->signature_ref_index_at(nt_index); |
536 Symbol* signature = cp->symbol_at(sig_index); | 532 Symbol* signature = cp->symbol_at(sig_index); |
537 int name_index = cp->name_ref_index_at(nt_index); | 533 int name_index = cp->name_ref_index_at(nt_index); |
538 Symbol* name = cp->symbol_at(name_index); | 534 Symbol* name = cp->symbol_at(name_index); |
734 | 730 |
735 // public RiField[] RiType_fields(HotSpotTypeResolved klass); | 731 // public RiField[] RiType_fields(HotSpotTypeResolved klass); |
736 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiType_1fields(JNIEnv *, jobject, jobject klass) { | 732 JNIEXPORT jobject JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiType_1fields(JNIEnv *, jobject, jobject klass) { |
737 TRACE_graal_3("VMEntries::RiType_fields"); | 733 TRACE_graal_3("VMEntries::RiType_fields"); |
738 VM_ENTRY_MARK; | 734 VM_ENTRY_MARK; |
735 ResourceMark rm; | |
739 | 736 |
740 instanceKlassHandle k = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass)); | 737 instanceKlassHandle k = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(klass)); |
741 class MyFieldClosure : public FieldClosure { | 738 class MyFieldClosure : public FieldClosure { |
742 public: | 739 public: |
743 instanceKlassHandle _holder; | 740 instanceKlassHandle _holder; |