7023639: JSR 292 method handle invocation needs a fast path for compiled code

6984705: JSR 292 method handle creation should not go through JNI

Remove assembly code for JDK 7 chained method handles

Co-authored-by: John Rose <john.r.rose@oracle.com>
Co-authored-by: Michael Haupt <michael.haupt@oracle.com>
Reviewed-by: jrose, twisti, kvn, mhaupt
This commit is contained in:
Christian Thalinger 2012-07-24 10:51:00 -07:00
parent 893817c28d
commit 12901d0e5b
181 changed files with 5760 additions and 14402 deletions

View file

@ -407,7 +407,10 @@ void CompileTask::print_compilation_impl(outputStream* st, methodOop method, int
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 @@ void CompileTask::print_inlining(outputStream* st, ciMethod* method, int inline_
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 @@ void CompileTask::print_inlining(outputStream* st, ciMethod* method, int inline_
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 @@ void CompileBroker::compile_method_base(methodHandle method,
"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 @@ nmethod* CompileBroker::compile_method(methodHandle method, int osr_bci,
//
// 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 @@ nmethod* CompileBroker::compile_method(methodHandle method, int osr_bci,
// do the compilation
if (method->is_native()) {
if (!PreferInterpreterNativeStubs) {
if (!PreferInterpreterNativeStubs || method->is_method_handle_intrinsic()) {
// Acquire our lock.
int compile_id;
{