405 } else { |
405 } else { |
406 method->print_short_name(st); |
406 method->print_short_name(st); |
407 if (is_osr_method) { |
407 if (is_osr_method) { |
408 st->print(" @ %d", osr_bci); |
408 st->print(" @ %d", osr_bci); |
409 } |
409 } |
410 st->print(" (%d bytes)", method->code_size()); |
410 if (method->is_native()) |
|
411 st->print(" (native)"); |
|
412 else |
|
413 st->print(" (%d bytes)", method->code_size()); |
411 } |
414 } |
412 |
415 |
413 if (msg != NULL) { |
416 if (msg != NULL) { |
414 st->print(" %s", msg); |
417 st->print(" %s", msg); |
415 } |
418 } |
425 st->print(" "); // print timestamp |
428 st->print(" "); // print timestamp |
426 // 1234 |
429 // 1234 |
427 st->print(" "); // print compilation number |
430 st->print(" "); // print compilation number |
428 |
431 |
429 // method attributes |
432 // method attributes |
430 const char sync_char = method->is_synchronized() ? 's' : ' '; |
433 if (method->is_loaded()) { |
431 const char exception_char = method->has_exception_handlers() ? '!' : ' '; |
434 const char sync_char = method->is_synchronized() ? 's' : ' '; |
432 const char monitors_char = method->has_monitor_bytecodes() ? 'm' : ' '; |
435 const char exception_char = method->has_exception_handlers() ? '!' : ' '; |
433 |
436 const char monitors_char = method->has_monitor_bytecodes() ? 'm' : ' '; |
434 // print method attributes |
437 |
435 st->print(" %c%c%c ", sync_char, exception_char, monitors_char); |
438 // print method attributes |
|
439 st->print(" %c%c%c ", sync_char, exception_char, monitors_char); |
|
440 } else { |
|
441 // %s!bn |
|
442 st->print(" "); // print method attributes |
|
443 } |
436 |
444 |
437 if (TieredCompilation) { |
445 if (TieredCompilation) { |
438 st->print(" "); |
446 st->print(" "); |
439 } |
447 } |
440 st->print(" "); // more indent |
448 st->print(" "); // more indent |
442 |
450 |
443 for (int i = 0; i < inline_level; i++) st->print(" "); |
451 for (int i = 0; i < inline_level; i++) st->print(" "); |
444 |
452 |
445 st->print("@ %d ", bci); // print bci |
453 st->print("@ %d ", bci); // print bci |
446 method->print_short_name(st); |
454 method->print_short_name(st); |
447 st->print(" (%d bytes)", method->code_size()); |
455 if (method->is_loaded()) |
|
456 st->print(" (%d bytes)", method->code_size()); |
|
457 else |
|
458 st->print(" (not loaded)"); |
448 |
459 |
449 if (msg != NULL) { |
460 if (msg != NULL) { |
450 st->print(" %s", msg); |
461 st->print(" %s", msg); |
451 } |
462 } |
452 st->cr(); |
463 st->cr(); |
1016 guarantee(!method->is_abstract(), "cannot compile abstract methods"); |
1027 guarantee(!method->is_abstract(), "cannot compile abstract methods"); |
1017 assert(method->method_holder()->klass_part()->oop_is_instance(), |
1028 assert(method->method_holder()->klass_part()->oop_is_instance(), |
1018 "sanity check"); |
1029 "sanity check"); |
1019 assert(!instanceKlass::cast(method->method_holder())->is_not_initialized(), |
1030 assert(!instanceKlass::cast(method->method_holder())->is_not_initialized(), |
1020 "method holder must be initialized"); |
1031 "method holder must be initialized"); |
|
1032 assert(!method->is_method_handle_intrinsic(), "do not enqueue these guys"); |
1021 |
1033 |
1022 if (CIPrintRequests) { |
1034 if (CIPrintRequests) { |
1023 tty->print("request: "); |
1035 tty->print("request: "); |
1024 method->print_short_name(tty); |
1036 method->print_short_name(tty); |
1025 if (osr_bci != InvocationEntryBci) { |
1037 if (osr_bci != InvocationEntryBci) { |
1229 // the compilation. Native lookups can load code, which is not |
1241 // the compilation. Native lookups can load code, which is not |
1230 // permitted during compilation. |
1242 // permitted during compilation. |
1231 // |
1243 // |
1232 // Note: A native method implies non-osr compilation which is |
1244 // Note: A native method implies non-osr compilation which is |
1233 // checked with an assertion at the entry of this method. |
1245 // checked with an assertion at the entry of this method. |
1234 if (method->is_native()) { |
1246 if (method->is_native() && !method->is_method_handle_intrinsic()) { |
1235 bool in_base_library; |
1247 bool in_base_library; |
1236 address adr = NativeLookup::lookup(method, in_base_library, THREAD); |
1248 address adr = NativeLookup::lookup(method, in_base_library, THREAD); |
1237 if (HAS_PENDING_EXCEPTION) { |
1249 if (HAS_PENDING_EXCEPTION) { |
1238 // In case of an exception looking up the method, we just forget |
1250 // In case of an exception looking up the method, we just forget |
1239 // about it. The interpreter will kick-in and throw the exception. |
1251 // about it. The interpreter will kick-in and throw the exception. |
1262 return NULL; |
1274 return NULL; |
1263 } |
1275 } |
1264 |
1276 |
1265 // do the compilation |
1277 // do the compilation |
1266 if (method->is_native()) { |
1278 if (method->is_native()) { |
1267 if (!PreferInterpreterNativeStubs) { |
1279 if (!PreferInterpreterNativeStubs || method->is_method_handle_intrinsic()) { |
1268 // Acquire our lock. |
1280 // Acquire our lock. |
1269 int compile_id; |
1281 int compile_id; |
1270 { |
1282 { |
1271 MutexLocker locker(MethodCompileQueue_lock, THREAD); |
1283 MutexLocker locker(MethodCompileQueue_lock, THREAD); |
1272 compile_id = assign_compile_id(method, standard_entry_bci); |
1284 compile_id = assign_compile_id(method, standard_entry_bci); |