412 return extract_high_short_from_int(ref_index); |
412 return extract_high_short_from_int(ref_index); |
413 } |
413 } |
414 |
414 |
415 // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve, |
415 // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve, |
416 // name_and_type_ref_index_at) all expect to be passed indices obtained |
416 // name_and_type_ref_index_at) all expect to be passed indices obtained |
417 // directly from the bytecode, and extracted according to java byte order. |
417 // directly from the bytecode. |
418 // If the indices are meant to refer to fields or methods, they are |
418 // If the indices are meant to refer to fields or methods, they are |
419 // actually potentially byte-swapped, rewritten constant pool cache indices. |
419 // actually rewritten constant pool cache indices. |
420 // The routine remap_instruction_operand_from_cache manages the adjustment |
420 // The routine remap_instruction_operand_from_cache manages the adjustment |
421 // of these values back to constant pool indices. |
421 // of these values back to constant pool indices. |
422 |
422 |
423 // There are also "uncached" versions which do not adjust the operand index; see below. |
423 // There are also "uncached" versions which do not adjust the operand index; see below. |
|
424 |
|
425 // FIXME: Consider renaming these with a prefix "cached_" to make the distinction clear. |
|
426 // In a few cases (the verifier) there are uses before a cpcache has been built, |
|
427 // which are handled by a dynamic check in remap_instruction_operand_from_cache. |
|
428 // FIXME: Remove the dynamic check, and adjust all callers to specify the correct mode. |
424 |
429 |
425 // Lookup for entries consisting of (klass_index, name_and_type index) |
430 // Lookup for entries consisting of (klass_index, name_and_type index) |
426 klassOop klass_ref_at(int which, TRAPS); |
431 klassOop klass_ref_at(int which, TRAPS); |
427 symbolOop klass_ref_at_noresolve(int which); |
432 symbolOop klass_ref_at_noresolve(int which); |
428 symbolOop name_ref_at(int which) { return impl_name_ref_at(which, false); } |
433 symbolOop name_ref_at(int which) { return impl_name_ref_at(which, false); } |
482 static klassOop klass_ref_at_if_loaded (constantPoolHandle this_oop, int which); |
487 static klassOop klass_ref_at_if_loaded (constantPoolHandle this_oop, int which); |
483 // Same as above - but does LinkResolving. |
488 // Same as above - but does LinkResolving. |
484 static klassOop klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS); |
489 static klassOop klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS); |
485 |
490 |
486 // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the |
491 // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the |
487 // future by other Java code. These take constant pool indices rather than possibly-byte-swapped |
492 // future by other Java code. These take constant pool indices rather than |
488 // constant pool cache indices as do the peer methods above. |
493 // constant pool cache indices as do the peer methods above. |
489 symbolOop uncached_klass_ref_at_noresolve(int which); |
494 symbolOop uncached_klass_ref_at_noresolve(int which); |
490 symbolOop uncached_name_ref_at(int which) { return impl_name_ref_at(which, true); } |
495 symbolOop uncached_name_ref_at(int which) { return impl_name_ref_at(which, true); } |
491 symbolOop uncached_signature_ref_at(int which) { return impl_signature_ref_at(which, true); } |
496 symbolOop uncached_signature_ref_at(int which) { return impl_signature_ref_at(which, true); } |
492 int uncached_klass_ref_index_at(int which) { return impl_klass_ref_index_at(which, true); } |
497 int uncached_klass_ref_index_at(int which) { return impl_klass_ref_index_at(which, true); } |