Mercurial > hg > truffle
comparison src/share/vm/oops/constantPool.cpp @ 6940:18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
Summary: Change types of above methods and field to InstanceKlass and remove unneeded casts from the source files.
Reviewed-by: dholmes, coleenp, zgu
Contributed-by: harold.seigel@oracle.com
author | coleenp |
---|---|
date | Tue, 06 Nov 2012 15:09:37 -0500 |
parents | 4735d2c84362 |
children | e522a00b91aa 90273fc0a981 |
comparison
equal
deleted
inserted
replaced
6939:c284cf4781f0 | 6940:18fb7da42534 |
---|---|
226 if (this_oop->tag_at(which).is_unresolved_klass_in_error()) { | 226 if (this_oop->tag_at(which).is_unresolved_klass_in_error()) { |
227 in_error = true; | 227 in_error = true; |
228 } else { | 228 } else { |
229 do_resolve = true; | 229 do_resolve = true; |
230 name = this_oop->unresolved_klass_at(which); | 230 name = this_oop->unresolved_klass_at(which); |
231 loader = Handle(THREAD, InstanceKlass::cast(this_oop->pool_holder())->class_loader()); | 231 loader = Handle(THREAD, this_oop->pool_holder()->class_loader()); |
232 } | 232 } |
233 } | 233 } |
234 } // unlocking constantPool | 234 } // unlocking constantPool |
235 | 235 |
236 | 236 |
245 THROW_MSG_0(error, className); | 245 THROW_MSG_0(error, className); |
246 } | 246 } |
247 | 247 |
248 if (do_resolve) { | 248 if (do_resolve) { |
249 // this_oop must be unlocked during resolve_or_fail | 249 // this_oop must be unlocked during resolve_or_fail |
250 oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain(); | 250 oop protection_domain = this_oop->pool_holder()->protection_domain(); |
251 Handle h_prot (THREAD, protection_domain); | 251 Handle h_prot (THREAD, protection_domain); |
252 Klass* k_oop = SystemDictionary::resolve_or_fail(name, loader, h_prot, true, THREAD); | 252 Klass* k_oop = SystemDictionary::resolve_or_fail(name, loader, h_prot, true, THREAD); |
253 KlassHandle k; | 253 KlassHandle k; |
254 if (!HAS_PENDING_EXCEPTION) { | 254 if (!HAS_PENDING_EXCEPTION) { |
255 k = KlassHandle(THREAD, k_oop); | 255 k = KlassHandle(THREAD, k_oop); |
313 if (JavaThread::current()->has_last_Java_frame()) { | 313 if (JavaThread::current()->has_last_Java_frame()) { |
314 // try to identify the method which called this function. | 314 // try to identify the method which called this function. |
315 vframeStream vfst(JavaThread::current()); | 315 vframeStream vfst(JavaThread::current()); |
316 if (!vfst.at_end()) { | 316 if (!vfst.at_end()) { |
317 line_number = vfst.method()->line_number_from_bci(vfst.bci()); | 317 line_number = vfst.method()->line_number_from_bci(vfst.bci()); |
318 Symbol* s = InstanceKlass::cast(vfst.method()->method_holder())->source_file_name(); | 318 Symbol* s = vfst.method()->method_holder()->source_file_name(); |
319 if (s != NULL) { | 319 if (s != NULL) { |
320 source_file = s->as_C_string(); | 320 source_file = s->as_C_string(); |
321 } | 321 } |
322 } | 322 } |
323 } | 323 } |
324 if (k() != this_oop->pool_holder()) { | 324 if (k() != this_oop->pool_holder()) { |
325 // only print something if the classes are different | 325 // only print something if the classes are different |
326 if (source_file != NULL) { | 326 if (source_file != NULL) { |
327 tty->print("RESOLVE %s %s %s:%d\n", | 327 tty->print("RESOLVE %s %s %s:%d\n", |
328 InstanceKlass::cast(this_oop->pool_holder())->external_name(), | 328 this_oop->pool_holder()->external_name(), |
329 InstanceKlass::cast(k())->external_name(), source_file, line_number); | 329 InstanceKlass::cast(k())->external_name(), source_file, line_number); |
330 } else { | 330 } else { |
331 tty->print("RESOLVE %s %s\n", | 331 tty->print("RESOLVE %s %s\n", |
332 InstanceKlass::cast(this_oop->pool_holder())->external_name(), | 332 this_oop->pool_holder()->external_name(), |
333 InstanceKlass::cast(k())->external_name()); | 333 InstanceKlass::cast(k())->external_name()); |
334 } | 334 } |
335 } | 335 } |
336 return k(); | 336 return k(); |
337 } else { | 337 } else { |
338 MonitorLockerEx ml(this_oop->lock()); | 338 MonitorLockerEx ml(this_oop->lock()); |
339 // Only updated constant pool - if it is resolved. | 339 // Only updated constant pool - if it is resolved. |
340 do_resolve = this_oop->tag_at(which).is_unresolved_klass(); | 340 do_resolve = this_oop->tag_at(which).is_unresolved_klass(); |
341 if (do_resolve) { | 341 if (do_resolve) { |
342 ClassLoaderData* this_key = InstanceKlass::cast(this_oop->pool_holder())->class_loader_data(); | 342 ClassLoaderData* this_key = this_oop->pool_holder()->class_loader_data(); |
343 if (!this_key->is_the_null_class_loader_data()) { | 343 if (!this_key->is_the_null_class_loader_data()) { |
344 this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM | 344 this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM |
345 } | 345 } |
346 this_oop->klass_at_put(which, k()); | 346 this_oop->klass_at_put(which, k()); |
347 } | 347 } |
365 return entry.get_klass(); | 365 return entry.get_klass(); |
366 } else { | 366 } else { |
367 assert(entry.is_unresolved(), "must be either symbol or klass"); | 367 assert(entry.is_unresolved(), "must be either symbol or klass"); |
368 Thread *thread = Thread::current(); | 368 Thread *thread = Thread::current(); |
369 Symbol* name = entry.get_symbol(); | 369 Symbol* name = entry.get_symbol(); |
370 oop loader = InstanceKlass::cast(this_oop->pool_holder())->class_loader(); | 370 oop loader = this_oop->pool_holder()->class_loader(); |
371 oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain(); | 371 oop protection_domain = this_oop->pool_holder()->protection_domain(); |
372 Handle h_prot (thread, protection_domain); | 372 Handle h_prot (thread, protection_domain); |
373 Handle h_loader (thread, loader); | 373 Handle h_loader (thread, loader); |
374 Klass* k = SystemDictionary::find(name, h_loader, h_prot, thread); | 374 Klass* k = SystemDictionary::find(name, h_loader, h_prot, thread); |
375 | 375 |
376 if (k != NULL) { | 376 if (k != NULL) { |
407 assert(entry.get_klass()->is_klass(), "must be"); | 407 assert(entry.get_klass()->is_klass(), "must be"); |
408 return entry.get_klass(); | 408 return entry.get_klass(); |
409 } else { | 409 } else { |
410 assert(entry.is_unresolved(), "must be either symbol or klass"); | 410 assert(entry.is_unresolved(), "must be either symbol or klass"); |
411 Symbol* name = entry.get_symbol(); | 411 Symbol* name = entry.get_symbol(); |
412 oop loader = InstanceKlass::cast(this_oop->pool_holder())->class_loader(); | 412 oop loader = this_oop->pool_holder()->class_loader(); |
413 oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain(); | 413 oop protection_domain = this_oop->pool_holder()->protection_domain(); |
414 Handle h_loader(THREAD, loader); | 414 Handle h_loader(THREAD, loader); |
415 Handle h_prot (THREAD, protection_domain); | 415 Handle h_prot (THREAD, protection_domain); |
416 KlassHandle k(THREAD, SystemDictionary::find(name, h_loader, h_prot, THREAD)); | 416 KlassHandle k(THREAD, SystemDictionary::find(name, h_loader, h_prot, THREAD)); |
417 | 417 |
418 // Do access check for klasses | 418 // Do access check for klasses |
1788 // Ensure that all the patches have been used. | 1788 // Ensure that all the patches have been used. |
1789 for (int index = 0; index < cp_patches->length(); index++) { | 1789 for (int index = 0; index < cp_patches->length(); index++) { |
1790 assert(cp_patches->at(index).is_null(), | 1790 assert(cp_patches->at(index).is_null(), |
1791 err_msg("Unused constant pool patch at %d in class file %s", | 1791 err_msg("Unused constant pool patch at %d in class file %s", |
1792 index, | 1792 index, |
1793 InstanceKlass::cast(pool_holder())->external_name())); | 1793 pool_holder()->external_name())); |
1794 } | 1794 } |
1795 #endif // ASSERT | 1795 #endif // ASSERT |
1796 } | 1796 } |
1797 | 1797 |
1798 #ifndef PRODUCT | 1798 #ifndef PRODUCT |
1946 if (operands() != NULL) st->print("/operands[%d]", operands()->length()); | 1946 if (operands() != NULL) st->print("/operands[%d]", operands()->length()); |
1947 print_address_on(st); | 1947 print_address_on(st); |
1948 st->print(" for "); | 1948 st->print(" for "); |
1949 pool_holder()->print_value_on(st); | 1949 pool_holder()->print_value_on(st); |
1950 if (pool_holder() != NULL) { | 1950 if (pool_holder() != NULL) { |
1951 bool extra = (InstanceKlass::cast(pool_holder())->constants() != this); | 1951 bool extra = (pool_holder()->constants() != this); |
1952 if (extra) st->print(" (extra)"); | 1952 if (extra) st->print(" (extra)"); |
1953 } | 1953 } |
1954 if (cache() != NULL) { | 1954 if (cache() != NULL) { |
1955 st->print(" cache=" PTR_FORMAT, cache()); | 1955 st->print(" cache=" PTR_FORMAT, cache()); |
1956 } | 1956 } |