Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/sharedRuntime.cpp @ 1201:24128c2ffa87
6921339: backout 6917766
Reviewed-by: mr
author | twisti |
---|---|
date | Fri, 29 Jan 2010 08:33:24 -0800 |
parents | ba263cfb7611 |
children | 5f24d0319e54 |
comparison
equal
deleted
inserted
replaced
1200:ba263cfb7611 | 1201:24128c2ffa87 |
---|---|
1031 // MethodHandle invokes don't have a CompiledIC and should always | 1031 // MethodHandle invokes don't have a CompiledIC and should always |
1032 // simply redispatch to the callee_target. | 1032 // simply redispatch to the callee_target. |
1033 address sender_pc = caller_frame.pc(); | 1033 address sender_pc = caller_frame.pc(); |
1034 CodeBlob* sender_cb = caller_frame.cb(); | 1034 CodeBlob* sender_cb = caller_frame.cb(); |
1035 nmethod* sender_nm = sender_cb->as_nmethod_or_null(); | 1035 nmethod* sender_nm = sender_cb->as_nmethod_or_null(); |
1036 bool is_mh_invoke_via_adapter = false; // Direct c2c call or via adapter? | |
1037 if (sender_nm != NULL && sender_nm->is_method_handle_return(sender_pc)) { | |
1038 // If the callee_target is set, then we have come here via an i2c | |
1039 // adapter. | |
1040 methodOop callee = thread->callee_target(); | |
1041 if (callee != NULL) { | |
1042 assert(callee->is_method(), "sanity"); | |
1043 is_mh_invoke_via_adapter = true; | |
1044 } | |
1045 } | |
1046 | 1036 |
1047 if (caller_frame.is_interpreted_frame() || | 1037 if (caller_frame.is_interpreted_frame() || |
1048 caller_frame.is_entry_frame() || | 1038 caller_frame.is_entry_frame() || |
1049 is_mh_invoke_via_adapter) { | 1039 (sender_nm != NULL && sender_nm->is_method_handle_return(sender_pc))) { |
1050 methodOop callee = thread->callee_target(); | 1040 methodOop callee = thread->callee_target(); |
1051 guarantee(callee != NULL && callee->is_method(), "bad handshake"); | 1041 guarantee(callee != NULL && callee->is_method(), "bad handshake"); |
1052 thread->set_vm_result(callee); | 1042 thread->set_vm_result(callee); |
1053 thread->set_callee_target(NULL); | 1043 thread->set_callee_target(NULL); |
1054 return callee->get_c2i_entry(); | 1044 return callee->get_c2i_entry(); |
1425 CodeBlob* callee = CodeCache::find_blob(destination); | 1415 CodeBlob* callee = CodeCache::find_blob(destination); |
1426 // callee == cb seems weird. It means calling interpreter thru stub. | 1416 // callee == cb seems weird. It means calling interpreter thru stub. |
1427 if (callee == cb || callee->is_adapter_blob()) { | 1417 if (callee == cb || callee->is_adapter_blob()) { |
1428 // static call or optimized virtual | 1418 // static call or optimized virtual |
1429 if (TraceCallFixup) { | 1419 if (TraceCallFixup) { |
1430 tty->print("fixup callsite at " INTPTR_FORMAT " to compiled code for", caller_pc); | 1420 tty->print("fixup callsite at " INTPTR_FORMAT " to compiled code for", caller_pc); |
1431 moop->print_short_name(tty); | 1421 moop->print_short_name(tty); |
1432 tty->print_cr(" to " INTPTR_FORMAT, entry_point); | 1422 tty->print_cr(" to " INTPTR_FORMAT, entry_point); |
1433 } | 1423 } |
1434 call->set_destination_mt_safe(entry_point); | 1424 call->set_destination_mt_safe(entry_point); |
1435 } else { | 1425 } else { |
1441 // assert is too strong could also be resolve destinations. | 1431 // assert is too strong could also be resolve destinations. |
1442 // assert(InlineCacheBuffer::contains(destination) || VtableStubs::contains(destination), "must be"); | 1432 // assert(InlineCacheBuffer::contains(destination) || VtableStubs::contains(destination), "must be"); |
1443 } | 1433 } |
1444 } else { | 1434 } else { |
1445 if (TraceCallFixup) { | 1435 if (TraceCallFixup) { |
1446 tty->print("already patched callsite at " INTPTR_FORMAT " to compiled code for", caller_pc); | 1436 tty->print("already patched callsite at " INTPTR_FORMAT " to compiled code for", caller_pc); |
1447 moop->print_short_name(tty); | 1437 moop->print_short_name(tty); |
1448 tty->print_cr(" to " INTPTR_FORMAT, entry_point); | 1438 tty->print_cr(" to " INTPTR_FORMAT, entry_point); |
1449 } | 1439 } |
1450 } | 1440 } |
1451 } | 1441 } |