hotspot/src/share/vm/runtime/reflection.cpp
changeset 8076 96d498ec7ae1
parent 7397 5b173b4ca846
child 8725 8c1e3dd5fe1b
--- a/hotspot/src/share/vm/runtime/reflection.cpp	Thu Jan 27 13:42:28 2011 -0800
+++ b/hotspot/src/share/vm/runtime/reflection.cpp	Thu Jan 27 16:11:27 2011 -0800
@@ -64,7 +64,7 @@
       // this frame is a likely suspect
       caller = vfst.method()->method_holder();
       line_number = vfst.method()->line_number_from_bci(vfst.bci());
-      symbolOop s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name();
+      Symbol* s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name();
       if (s != NULL) {
         source_file = s->as_C_string();
       }
@@ -622,7 +622,7 @@
   ResourceMark rm(THREAD);
   Exceptions::fthrow(
     THREAD_AND_LOCATION,
-    vmSymbolHandles::java_lang_IncompatibleClassChangeError(),
+    vmSymbols::java_lang_IncompatibleClassChangeError(),
     "%s and %s disagree on InnerClasses attribute",
     outer->external_name(),
     inner->external_name()
@@ -638,11 +638,11 @@
       return java_lang_Class::primitive_mirror(ss->type());
     case T_OBJECT:
     case T_ARRAY:
-      symbolOop name        = ss->as_symbol(CHECK_NULL);
+      Symbol* name        = ss->as_symbol(CHECK_NULL);
       oop loader            = instanceKlass::cast(method->method_holder())->class_loader();
       oop protection_domain = instanceKlass::cast(method->method_holder())->protection_domain();
       klassOop k = SystemDictionary::resolve_or_fail(
-                                       symbolHandle(THREAD, name),
+                                       name,
                                        Handle(THREAD, loader),
                                        Handle(THREAD, protection_domain),
                                        true, CHECK_NULL);
@@ -660,7 +660,8 @@
   objArrayHandle mirrors (THREAD, m);
   int index = 0;
   // Collect parameter types
-  symbolHandle signature (THREAD, method->signature());
+  ResourceMark rm(THREAD);
+  Symbol*  signature  = method->signature();
   SignatureStream ss(signature);
   while (!ss.at_return_type()) {
     oop mirror = get_mirror_from_signature(method, &ss, CHECK_(objArrayHandle()));
@@ -681,9 +682,9 @@
 }
 
 
-Handle Reflection::new_type(symbolHandle signature, KlassHandle k, TRAPS) {
+Handle Reflection::new_type(Symbol* signature, KlassHandle k, TRAPS) {
   // Basic types
-  BasicType type = vmSymbols::signature_type(signature());
+  BasicType type = vmSymbols::signature_type(signature);
   if (type != T_OBJECT) {
     return Handle(THREAD, Universe::java_mirror(type));
   }
@@ -714,7 +715,7 @@
   instanceKlassHandle holder (THREAD, method->method_holder());
   int slot = method->method_idnum();
 
-  symbolHandle signature (THREAD, method->signature());
+  Symbol*  signature  = method->signature();
   int parameter_count = ArgumentCount(signature).size();
   oop return_type_oop = NULL;
   objArrayHandle parameter_types = get_parameter_types(method, parameter_count, &return_type_oop, CHECK_NULL);
@@ -726,16 +727,16 @@
 
   if (exception_types.is_null()) return NULL;
 
-  symbolHandle method_name(THREAD, method->name());
+  Symbol*  method_name = method->name();
   Handle name;
   if (intern_name) {
     // intern_name is only true with UseNewReflection
-    oop name_oop = StringTable::intern(method_name(), CHECK_NULL);
+    oop name_oop = StringTable::intern(method_name, CHECK_NULL);
     name = Handle(THREAD, name_oop);
   } else {
     name = java_lang_String::create_from_symbol(method_name, CHECK_NULL);
   }
-  if (name.is_null()) return NULL;
+  if (name == NULL) return NULL;
 
   int modifiers = method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
 
@@ -751,7 +752,7 @@
   java_lang_reflect_Method::set_override(mh(), false);
   if (java_lang_reflect_Method::has_signature_field() &&
       method->generic_signature() != NULL) {
-    symbolHandle gs(THREAD, method->generic_signature());
+    Symbol*  gs = method->generic_signature();
     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
     java_lang_reflect_Method::set_signature(mh(), sig());
   }
@@ -774,7 +775,7 @@
   instanceKlassHandle  holder (THREAD, method->method_holder());
   int slot = method->method_idnum();
 
-  symbolHandle signature (THREAD, method->signature());
+  Symbol*  signature  = method->signature();
   int parameter_count = ArgumentCount(signature).size();
   objArrayHandle parameter_types = get_parameter_types(method, parameter_count, NULL, CHECK_NULL);
   if (parameter_types.is_null()) return NULL;
@@ -794,7 +795,7 @@
   java_lang_reflect_Constructor::set_override(ch(), false);
   if (java_lang_reflect_Constructor::has_signature_field() &&
       method->generic_signature() != NULL) {
-    symbolHandle gs(THREAD, method->generic_signature());
+    Symbol*  gs = method->generic_signature();
     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
     java_lang_reflect_Constructor::set_signature(ch(), sig());
   }
@@ -809,16 +810,16 @@
 
 
 oop Reflection::new_field(fieldDescriptor* fd, bool intern_name, TRAPS) {
-  symbolHandle field_name(THREAD, fd->name());
+  Symbol*  field_name = fd->name();
   Handle name;
   if (intern_name) {
     // intern_name is only true with UseNewReflection
-    oop name_oop = StringTable::intern(field_name(), CHECK_NULL);
+    oop name_oop = StringTable::intern(field_name, CHECK_NULL);
     name = Handle(THREAD, name_oop);
   } else {
     name = java_lang_String::create_from_symbol(field_name, CHECK_NULL);
   }
-  symbolHandle signature (THREAD, fd->signature());
+  Symbol*  signature  = fd->signature();
   KlassHandle  holder    (THREAD, fd->field_holder());
   Handle type = new_type(signature, holder, CHECK_NULL);
   Handle rh  = java_lang_reflect_Field::create(CHECK_NULL);
@@ -832,7 +833,7 @@
   java_lang_reflect_Field::set_override(rh(), false);
   if (java_lang_reflect_Field::has_signature_field() &&
       fd->generic_signature() != NULL) {
-    symbolHandle gs(THREAD, fd->generic_signature());
+    Symbol*  gs = fd->generic_signature();
     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
     java_lang_reflect_Field::set_signature(rh(), sig());
   }
@@ -858,8 +859,8 @@
   assert(!method.is_null() , "method should not be null");
 
   CallInfo info;
-  symbolHandle signature (THREAD, method->signature());
-  symbolHandle name      (THREAD, method->name());
+  Symbol*  signature  = method->signature();
+  Symbol*  name       = method->name();
   LinkResolver::resolve_interface_call(info, receiver, recv_klass, klass,
                                        name, signature,
                                        KlassHandle(), false, true,
@@ -912,8 +913,8 @@
             oop resolution_exception = PENDING_EXCEPTION;
             CLEAR_PENDING_EXCEPTION;
             JavaCallArguments args(Handle(THREAD, resolution_exception));
-            THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(),
-                vmSymbolHandles::throwable_void_signature(),
+            THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(),
+                vmSymbols::throwable_void_signature(),
                 &args);
           }
         } else {
@@ -941,8 +942,8 @@
                      method->name(),
                      method->signature()));
               JavaCallArguments args(h_origexception);
-              THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(),
-                vmSymbolHandles::throwable_void_signature(),
+              THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(),
+                vmSymbols::throwable_void_signature(),
                 &args);
             } else {
               ResourceMark rm(THREAD);
@@ -1043,8 +1044,8 @@
     oop target_exception = PENDING_EXCEPTION;
     CLEAR_PENDING_EXCEPTION;
     JavaCallArguments args(Handle(THREAD, target_exception));
-    THROW_ARG_0(vmSymbolHandles::java_lang_reflect_InvocationTargetException(),
-                vmSymbolHandles::throwable_void_signature(),
+    THROW_ARG_0(vmSymbols::java_lang_reflect_InvocationTargetException(),
+                vmSymbols::throwable_void_signature(),
                 &args);
   } else {
     if (rtype == T_BOOLEAN || rtype == T_BYTE || rtype == T_CHAR || rtype == T_SHORT)
@@ -1097,9 +1098,9 @@
 
 
 oop Reflection::new_field(FieldStream* st, TRAPS) {
-  symbolHandle field_name(THREAD, st->name());
+  Symbol*  field_name = st->name();
   Handle name = java_lang_String::create_from_symbol(field_name, CHECK_NULL);
-  symbolHandle signature(THREAD, st->signature());
+  Symbol*  signature = st->signature();
   Handle type = new_type(signature, st->klass(), CHECK_NULL);
   Handle rh  = java_lang_reflect_Field::create(CHECK_NULL);
   oop result = rh();
@@ -1242,7 +1243,7 @@
     case T_ARRAY: {
       Handle obj(THREAD, (oop) value->l);
       if (obj.not_null()) {
-        symbolHandle signature(THREAD, fd->signature());
+        Symbol*  signature = fd->signature();
         Handle       loader   (THREAD, fd->loader());
         Handle       protect  (THREAD, Klass::cast(fd->field_holder())->protection_domain());
         klassOop k = SystemDictionary::resolve_or_fail(signature, loader, protect, true, CHECK); // may block
@@ -1259,7 +1260,7 @@
 }
 
 
-oop Reflection::reflect_field(oop mirror, symbolOop field_name, jint which, TRAPS) {
+oop Reflection::reflect_field(oop mirror, Symbol* field_name, jint which, TRAPS) {
   // Exclude primitive types and array types
   if (java_lang_Class::is_primitive(mirror))                             return NULL;
   if (Klass::cast(java_lang_Class::as_klassOop(mirror))->oop_is_array()) return NULL;
@@ -1287,7 +1288,7 @@
   // Exclude primitive types and array types
   if (java_lang_Class::is_primitive(mirror)
       || Klass::cast(java_lang_Class::as_klassOop(mirror))->oop_is_array()) {
-    symbolHandle name = vmSymbolHandles::java_lang_reflect_Field();
+    Symbol* name = vmSymbols::java_lang_reflect_Field();
     klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL);
     return oopFactory::new_objArray(klass, 0, CHECK_NULL);  // Return empty array
   }
@@ -1308,7 +1309,7 @@
   }
 
   // Allocate result
-  symbolHandle name = vmSymbolHandles::java_lang_reflect_Field();
+  Symbol* name = vmSymbols::java_lang_reflect_Field();
   klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL);
   objArrayOop r = oopFactory::new_objArray(klass, count, CHECK_NULL);
   objArrayHandle result (THREAD, r);
@@ -1327,7 +1328,7 @@
 }
 
 
-oop Reflection::reflect_method(oop mirror, symbolHandle method_name, objArrayHandle types, jint which, TRAPS) {
+oop Reflection::reflect_method(oop mirror, Symbol* method_name, objArrayHandle types, jint which, TRAPS) {
   if (java_lang_Class::is_primitive(mirror))  return NULL;
   klassOop klass = java_lang_Class::as_klassOop(mirror);
   if (Klass::cast(klass)->oop_is_array() && which == MEMBER_DECLARED)  return NULL;
@@ -1351,8 +1352,8 @@
         for (MethodStream st(h_k, false, false); !st.eos(); st.next()) {
           methodHandle m(THREAD, st.method());
           // For interfaces include static initializers since classic does that!
-          if (method_name() == m->name() && (include_clinit || (m->is_public() && !m->is_static() && !m->is_initializer()))) {
-            symbolHandle signature(THREAD, m->signature());
+          if (method_name == m->name() && (include_clinit || (m->is_public() && !m->is_static() && !m->is_initializer()))) {
+            Symbol*  signature = m->signature();
             bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL);
             if (parameter_match) {
               return new_method(m, false, false, THREAD);
@@ -1364,8 +1365,8 @@
       {
         for (MethodStream st(h_k, false, false); !st.eos(); st.next()) {
           methodHandle m(THREAD, st.method());
-          if (method_name() == m->name() && m->is_public() && m->is_static() && !m->is_initializer()) {
-            symbolHandle signature(THREAD, m->signature());
+          if (method_name == m->name() && m->is_public() && m->is_static() && !m->is_initializer()) {
+            Symbol*  signature = m->signature();
             bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL);
             if (parameter_match) {
               return new_method(m, false, false, THREAD);
@@ -1379,8 +1380,8 @@
       {
         for (MethodStream st(h_k, true, true); !st.eos(); st.next()) {
           methodHandle m(THREAD, st.method());
-          if (method_name() == m->name() && !m->is_initializer()) {
-            symbolHandle signature(THREAD, m->signature());
+          if (method_name == m->name() && !m->is_initializer()) {
+            Symbol*  signature = m->signature();
             bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL);
             if (parameter_match) {
               return new_method(m, false, false, THREAD);
@@ -1531,7 +1532,7 @@
   for (MethodStream st(h_k, true, true); !st.eos(); st.next()) {
     methodHandle m(THREAD, st.method());
     if (m->name() == vmSymbols::object_initializer_name() && (local_only || m->is_public())) {
-      symbolHandle signature(THREAD, m->signature());
+      Symbol*  signature = m->signature();
       bool parameter_match = match_parameter_types(m, types, ArgumentCount(signature).size(), CHECK_NULL);
       if (parameter_match) {
         return new_constructor(m, THREAD);
@@ -1569,7 +1570,7 @@
   }
 
   // Allocate result
-  symbolHandle name = vmSymbolHandles::java_lang_reflect_Constructor();
+  Symbol* name = vmSymbols::java_lang_reflect_Constructor();
   klassOop klass = SystemDictionary::resolve_or_fail(name, true, CHECK_NULL);
   objArrayOop r = oopFactory::new_objArray(klass, count, CHECK_NULL);
   objArrayHandle h_result (THREAD, r);