Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/doCall.cpp @ 726:be93aad57795
6655646: dynamic languages need dynamically linked call sites
Summary: invokedynamic instruction (JSR 292 RI)
Reviewed-by: twisti, never
author | jrose |
---|---|
date | Tue, 21 Apr 2009 23:21:04 -0700 |
parents | 194b8e3a2fc4 |
children | c96bf21b756f |
comparison
equal
deleted
inserted
replaced
725:928912ce8438 | 726:be93aad57795 |
---|---|
246 uncommon_trap(Deoptimization::Reason_uninitialized, | 246 uncommon_trap(Deoptimization::Reason_uninitialized, |
247 Deoptimization::Action_reinterpret, | 247 Deoptimization::Action_reinterpret, |
248 holder_klass); | 248 holder_klass); |
249 return true; | 249 return true; |
250 } | 250 } |
251 if (dest_method->is_method_handle_invoke() | |
252 && holder_klass->name() == ciSymbol::java_dyn_Dynamic()) { | |
253 // FIXME: NYI | |
254 uncommon_trap(Deoptimization::Reason_unhandled, | |
255 Deoptimization::Action_none, | |
256 holder_klass); | |
257 return true; | |
258 } | |
251 | 259 |
252 assert(dest_method->will_link(method()->holder(), klass, bc()), "dest_method: typeflow responsibility"); | 260 assert(dest_method->will_link(method()->holder(), klass, bc()), "dest_method: typeflow responsibility"); |
253 return false; | 261 return false; |
254 } | 262 } |
255 | 263 |
746 } else if (is_inline) { | 754 } else if (is_inline) { |
747 switch (bc()) { | 755 switch (bc()) { |
748 case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_inlined_calls_addr()); break; | 756 case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_inlined_calls_addr()); break; |
749 case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break; | 757 case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_inlined_interface_calls_addr()); break; |
750 case Bytecodes::_invokestatic: | 758 case Bytecodes::_invokestatic: |
759 case Bytecodes::_invokedynamic: | |
751 case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break; | 760 case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_inlined_static_calls_addr()); break; |
752 default: fatal("unexpected call bytecode"); | 761 default: fatal("unexpected call bytecode"); |
753 } | 762 } |
754 } else { | 763 } else { |
755 switch (bc()) { | 764 switch (bc()) { |
756 case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_normal_calls_addr()); break; | 765 case Bytecodes::_invokevirtual: increment_counter(SharedRuntime::nof_normal_calls_addr()); break; |
757 case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break; | 766 case Bytecodes::_invokeinterface: increment_counter(SharedRuntime::nof_interface_calls_addr()); break; |
758 case Bytecodes::_invokestatic: | 767 case Bytecodes::_invokestatic: |
768 case Bytecodes::_invokedynamic: | |
759 case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_static_calls_addr()); break; | 769 case Bytecodes::_invokespecial: increment_counter(SharedRuntime::nof_static_calls_addr()); break; |
760 default: fatal("unexpected call bytecode"); | 770 default: fatal("unexpected call bytecode"); |
761 } | 771 } |
762 } | 772 } |
763 } | 773 } |