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;