Mercurial > hg > graal-compiler
diff src/share/vm/compiler/compileBroker.cpp @ 6266:1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
6984705: JSR 292 method handle creation should not go through JNI
Summary: remove assembly code for JDK 7 chained method handles
Reviewed-by: jrose, twisti, kvn, mhaupt
Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author | twisti |
---|---|
date | Tue, 24 Jul 2012 10:51:00 -0700 |
parents | d2a62e0f25eb |
children | 957c266d8bc5 da91efe96a93 |
line wrap: on
line diff
--- a/src/share/vm/compiler/compileBroker.cpp Mon Jul 23 13:04:59 2012 -0700 +++ b/src/share/vm/compiler/compileBroker.cpp Tue Jul 24 10:51:00 2012 -0700 @@ -407,7 +407,10 @@ if (is_osr_method) { st->print(" @ %d", osr_bci); } - st->print(" (%d bytes)", method->code_size()); + if (method->is_native()) + st->print(" (native)"); + else + st->print(" (%d bytes)", method->code_size()); } if (msg != NULL) { @@ -427,12 +430,17 @@ st->print(" "); // print compilation number // method attributes - const char sync_char = method->is_synchronized() ? 's' : ' '; - const char exception_char = method->has_exception_handlers() ? '!' : ' '; - const char monitors_char = method->has_monitor_bytecodes() ? 'm' : ' '; + if (method->is_loaded()) { + const char sync_char = method->is_synchronized() ? 's' : ' '; + const char exception_char = method->has_exception_handlers() ? '!' : ' '; + const char monitors_char = method->has_monitor_bytecodes() ? 'm' : ' '; - // print method attributes - st->print(" %c%c%c ", sync_char, exception_char, monitors_char); + // print method attributes + st->print(" %c%c%c ", sync_char, exception_char, monitors_char); + } else { + // %s!bn + st->print(" "); // print method attributes + } if (TieredCompilation) { st->print(" "); @@ -444,7 +452,10 @@ st->print("@ %d ", bci); // print bci method->print_short_name(st); - st->print(" (%d bytes)", method->code_size()); + if (method->is_loaded()) + st->print(" (%d bytes)", method->code_size()); + else + st->print(" (not loaded)"); if (msg != NULL) { st->print(" %s", msg); @@ -1018,6 +1029,7 @@ "sanity check"); assert(!instanceKlass::cast(method->method_holder())->is_not_initialized(), "method holder must be initialized"); + assert(!method->is_method_handle_intrinsic(), "do not enqueue these guys"); if (CIPrintRequests) { tty->print("request: "); @@ -1231,7 +1243,7 @@ // // Note: A native method implies non-osr compilation which is // checked with an assertion at the entry of this method. - if (method->is_native()) { + if (method->is_native() && !method->is_method_handle_intrinsic()) { bool in_base_library; address adr = NativeLookup::lookup(method, in_base_library, THREAD); if (HAS_PENDING_EXCEPTION) { @@ -1264,7 +1276,7 @@ // do the compilation if (method->is_native()) { - if (!PreferInterpreterNativeStubs) { + if (!PreferInterpreterNativeStubs || method->is_method_handle_intrinsic()) { // Acquire our lock. int compile_id; {