--- a/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp Thu Jan 27 13:42:28 2011 -0800
+++ b/hotspot/src/share/vm/interpreter/bytecodeTracer.cpp Thu Jan 27 16:11:27 2011 -0800
@@ -188,7 +188,7 @@
_closure->trace(method, bcp, st);
}
-void print_symbol(symbolOop sym, outputStream* st) {
+void print_symbol(Symbol* sym, outputStream* st) {
char buf[40];
int len = sym->utf8_length();
if (len >= (int)sizeof(buf)) {
@@ -205,10 +205,9 @@
} else if (java_lang_String::is_instance(value)) {
EXCEPTION_MARK;
Handle h_value (THREAD, value);
- symbolHandle sym = java_lang_String::as_symbol(h_value, CATCH);
- print_symbol(sym(), st);
- } else if (value->is_symbol()) {
- print_symbol(symbolOop(value), st);
+ Symbol* sym = java_lang_String::as_symbol(h_value, CATCH);
+ print_symbol(sym, st);
+ sym->decrement_refcount();
} else {
st->print_cr(" " PTR_FORMAT, (intptr_t) value);
}
@@ -316,7 +315,7 @@
} else if (tag.is_method_type()) {
int i2 = constants->method_type_index_at(i);
st->print(" <MethodType> %d", i2);
- print_oop(constants->symbol_at(i2), st);
+ print_symbol(constants->symbol_at(i2), st);
} else if (tag.is_method_handle()) {
int kind = constants->method_handle_ref_kind_at(i);
int i2 = constants->method_handle_index_at(i);
@@ -354,11 +353,11 @@
return;
}
- symbolOop name = constants->uncached_name_ref_at(i);
- symbolOop signature = constants->uncached_signature_ref_at(i);
+ Symbol* name = constants->uncached_name_ref_at(i);
+ Symbol* signature = constants->uncached_signature_ref_at(i);
const char* sep = (tag.is_field() ? "/" : "");
if (has_klass) {
- symbolOop klass = constants->klass_name_at(constants->uncached_klass_ref_index_at(i));
+ Symbol* klass = constants->klass_name_at(constants->uncached_klass_ref_index_at(i));
st->print_cr(" %d <%s.%s%s%s> ", i, klass->as_C_string(), name->as_C_string(), sep, signature->as_C_string());
} else {
if (tag.is_invoke_dynamic()) {
@@ -438,7 +437,7 @@
case Bytecodes::_anewarray: {
int klass_index = get_index_u2();
constantPoolOop constants = method()->constants();
- symbolOop name = constants->klass_name_at(klass_index);
+ Symbol* name = constants->klass_name_at(klass_index);
st->print_cr(" %s ", name->as_C_string());
}
break;
@@ -446,7 +445,7 @@
int klass_index = get_index_u2();
int nof_dims = get_index_u1();
constantPoolOop constants = method()->constants();
- symbolOop name = constants->klass_name_at(klass_index);
+ Symbol* name = constants->klass_name_at(klass_index);
st->print_cr(" %s %d", name->as_C_string(), nof_dims);
}
break;
@@ -552,7 +551,7 @@
case Bytecodes::_instanceof:
{ int i = get_index_u2();
constantPoolOop constants = method()->constants();
- symbolOop name = constants->klass_name_at(i);
+ Symbol* name = constants->klass_name_at(i);
st->print_cr(" %d <%s>", i, name->as_C_string());
}
break;