217 #endif //ASSERT |
217 #endif //ASSERT |
218 |
218 |
219 #ifndef PRODUCT |
219 #ifndef PRODUCT |
220 void CallInfo::print() { |
220 void CallInfo::print() { |
221 ResourceMark rm; |
221 ResourceMark rm; |
222 const char* kindstr = "unknown"; |
222 const char* kindstr; |
223 switch (_call_kind) { |
223 switch (_call_kind) { |
224 case direct_call: kindstr = "direct"; break; |
224 case direct_call: kindstr = "direct"; break; |
225 case vtable_call: kindstr = "vtable"; break; |
225 case vtable_call: kindstr = "vtable"; break; |
226 case itable_call: kindstr = "itable"; break; |
226 case itable_call: kindstr = "itable"; break; |
|
227 default : kindstr = "unknown"; break; |
227 } |
228 } |
228 tty->print_cr("Call %s@%d %s", kindstr, _call_index, |
229 tty->print_cr("Call %s@%d %s", kindstr, _call_index, |
229 _resolved_method.is_null() ? "(none)" : _resolved_method->name_and_sig_as_C_string()); |
230 _resolved_method.is_null() ? "(none)" : _resolved_method->name_and_sig_as_C_string()); |
230 } |
231 } |
231 #endif |
232 #endif |
1568 case Bytecodes::_invokespecial : resolve_invokespecial (result, recv, pool, index, CHECK); break; |
1569 case Bytecodes::_invokespecial : resolve_invokespecial (result, recv, pool, index, CHECK); break; |
1569 case Bytecodes::_invokevirtual : resolve_invokevirtual (result, recv, pool, index, CHECK); break; |
1570 case Bytecodes::_invokevirtual : resolve_invokevirtual (result, recv, pool, index, CHECK); break; |
1570 case Bytecodes::_invokehandle : resolve_invokehandle (result, pool, index, CHECK); break; |
1571 case Bytecodes::_invokehandle : resolve_invokehandle (result, pool, index, CHECK); break; |
1571 case Bytecodes::_invokedynamic : resolve_invokedynamic (result, pool, index, CHECK); break; |
1572 case Bytecodes::_invokedynamic : resolve_invokedynamic (result, pool, index, CHECK); break; |
1572 case Bytecodes::_invokeinterface: resolve_invokeinterface(result, recv, pool, index, CHECK); break; |
1573 case Bytecodes::_invokeinterface: resolve_invokeinterface(result, recv, pool, index, CHECK); break; |
|
1574 default : break; |
1573 } |
1575 } |
1574 return; |
1576 return; |
1575 } |
1577 } |
1576 |
1578 |
1577 void LinkResolver::resolve_invoke(CallInfo& result, Handle& recv, |
1579 void LinkResolver::resolve_invoke(CallInfo& result, Handle& recv, |
1596 case Bytecodes::_invokespecial: |
1598 case Bytecodes::_invokespecial: |
1597 resolve_special_call(result, recv, link_info, CHECK); |
1599 resolve_special_call(result, recv, link_info, CHECK); |
1598 break; |
1600 break; |
1599 default: |
1601 default: |
1600 fatal("bad call: %s", Bytecodes::name(byte)); |
1602 fatal("bad call: %s", Bytecodes::name(byte)); |
|
1603 break; |
1601 } |
1604 } |
1602 } |
1605 } |
1603 |
1606 |
1604 void LinkResolver::resolve_invokestatic(CallInfo& result, const constantPoolHandle& pool, int index, TRAPS) { |
1607 void LinkResolver::resolve_invokestatic(CallInfo& result, const constantPoolHandle& pool, int index, TRAPS) { |
1605 LinkInfo link_info(pool, index, CHECK); |
1608 LinkInfo link_info(pool, index, CHECK); |