207 case CallInfo::itable_call:
208 assert(resolved_method()->method_holder()->verify_itable_index(_call_index), "");
209 break;
210 case CallInfo::unknown_kind:
211 assert(call_kind() != CallInfo::unknown_kind, "CallInfo must be set");
212 break;
213 default:
214 fatal("Unexpected call kind %d", call_kind());
215 }
216 }
217 #endif //ASSERT
218
219 #ifndef PRODUCT
220 void CallInfo::print() {
221 ResourceMark rm;
222 const char* kindstr = "unknown";
223 switch (_call_kind) {
224 case direct_call: kindstr = "direct"; break;
225 case vtable_call: kindstr = "vtable"; break;
226 case itable_call: kindstr = "itable"; break;
227 }
228 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 }
231 #endif
232
233 //------------------------------------------------------------------------------------------------------------------------
234 // Implementation of LinkInfo
235
236 LinkInfo::LinkInfo(const constantPoolHandle& pool, int index, methodHandle current_method, TRAPS) {
237 // resolve klass
238 _resolved_klass = pool->klass_ref_at(index, CHECK);
239
240 // Get name, signature, and static klass
241 _name = pool->name_ref_at(index);
242 _signature = pool->signature_ref_at(index);
243 _tag = pool->tag_ref_at(index);
244 _current_klass = pool->pool_holder();
245 _current_method = current_method;
246
|
207 case CallInfo::itable_call:
208 assert(resolved_method()->method_holder()->verify_itable_index(_call_index), "");
209 break;
210 case CallInfo::unknown_kind:
211 assert(call_kind() != CallInfo::unknown_kind, "CallInfo must be set");
212 break;
213 default:
214 fatal("Unexpected call kind %d", call_kind());
215 }
216 }
217 #endif //ASSERT
218
219 #ifndef PRODUCT
220 void CallInfo::print() {
221 ResourceMark rm;
222 const char* kindstr = "unknown";
223 switch (_call_kind) {
224 case direct_call: kindstr = "direct"; break;
225 case vtable_call: kindstr = "vtable"; break;
226 case itable_call: kindstr = "itable"; break;
227 default: break;
228 }
229 tty->print_cr("Call %s@%d %s", kindstr, _call_index,
230 _resolved_method.is_null() ? "(none)" : _resolved_method->name_and_sig_as_C_string());
231 }
232 #endif
233
234 //------------------------------------------------------------------------------------------------------------------------
235 // Implementation of LinkInfo
236
237 LinkInfo::LinkInfo(const constantPoolHandle& pool, int index, methodHandle current_method, TRAPS) {
238 // resolve klass
239 _resolved_klass = pool->klass_ref_at(index, CHECK);
240
241 // Get name, signature, and static klass
242 _name = pool->name_ref_at(index);
243 _signature = pool->signature_ref_at(index);
244 _tag = pool->tag_ref_at(index);
245 _current_klass = pool->pool_holder();
246 _current_method = current_method;
247
|