--- a/hotspot/src/share/vm/oops/constantPoolOop.cpp Mon Apr 20 14:48:03 2009 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.cpp Tue Apr 21 23:21:04 2009 -0700
@@ -249,32 +249,41 @@
}
-symbolOop constantPoolOopDesc::uncached_name_ref_at(int which) {
- jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
- int name_index = extract_low_short_from_int(ref_index);
+symbolOop constantPoolOopDesc::impl_name_ref_at(int which, bool uncached) {
+ int name_index = name_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
return symbol_at(name_index);
}
-symbolOop constantPoolOopDesc::uncached_signature_ref_at(int which) {
- jint ref_index = name_and_type_at(uncached_name_and_type_ref_index_at(which));
- int signature_index = extract_high_short_from_int(ref_index);
+symbolOop constantPoolOopDesc::impl_signature_ref_at(int which, bool uncached) {
+ int signature_index = signature_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
return symbol_at(signature_index);
}
-int constantPoolOopDesc::uncached_name_and_type_ref_index_at(int which) {
- jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) {
+ jint ref_index = field_or_method_at(which, uncached);
return extract_high_short_from_int(ref_index);
}
-int constantPoolOopDesc::uncached_klass_ref_index_at(int which) {
- jint ref_index = field_or_method_at(which, true);
+int constantPoolOopDesc::impl_klass_ref_index_at(int which, bool uncached) {
+ jint ref_index = field_or_method_at(which, uncached);
return extract_low_short_from_int(ref_index);
}
+
+int constantPoolOopDesc::map_instruction_operand_to_index(int operand) {
+ if (constantPoolCacheOopDesc::is_secondary_index(operand)) {
+ return cache()->main_entry_at(operand)->constant_pool_index();
+ }
+ assert((int)(u2)operand == operand, "clean u2");
+ int index = Bytes::swap_u2(operand);
+ return cache()->entry_at(index)->constant_pool_index();
+}
+
+
void constantPoolOopDesc::verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle k, TRAPS) {
if (k->oop_is_instance() || k->oop_is_objArray()) {
instanceKlassHandle holder (THREAD, this_oop->pool_holder());
@@ -290,26 +299,14 @@
}
-int constantPoolOopDesc::klass_ref_index_at(int which) {
- jint ref_index = field_or_method_at(which, false);
+int constantPoolOopDesc::name_ref_index_at(int which_nt) {
+ jint ref_index = name_and_type_at(which_nt);
return extract_low_short_from_int(ref_index);
}
-int constantPoolOopDesc::name_and_type_ref_index_at(int which) {
- jint ref_index = field_or_method_at(which, false);
- return extract_high_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::name_ref_index_at(int which) {
- jint ref_index = name_and_type_at(which);
- return extract_low_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::signature_ref_index_at(int which) {
- jint ref_index = name_and_type_at(which);
+int constantPoolOopDesc::signature_ref_index_at(int which_nt) {
+ jint ref_index = name_and_type_at(which_nt);
return extract_high_short_from_int(ref_index);
}
@@ -353,20 +350,6 @@
}
-symbolOop constantPoolOopDesc::name_ref_at(int which) {
- jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
- int name_index = extract_low_short_from_int(ref_index);
- return symbol_at(name_index);
-}
-
-
-symbolOop constantPoolOopDesc::signature_ref_at(int which) {
- jint ref_index = name_and_type_at(name_and_type_ref_index_at(which));
- int signature_index = extract_high_short_from_int(ref_index);
- return symbol_at(signature_index);
-}
-
-
BasicType constantPoolOopDesc::basic_type_for_signature_at(int which) {
return FieldType::basic_type(symbol_at(which));
}