src/share/vm/prims/jni.cpp

changeset 2497
3582bf76420e
parent 2331
017cd8bce8a8
child 2658
c7f3d0b4570f
     1.1 --- a/src/share/vm/prims/jni.cpp	Thu Jan 27 13:42:28 2011 -0800
     1.2 +++ b/src/share/vm/prims/jni.cpp	Thu Jan 27 16:11:27 2011 -0800
     1.3 @@ -40,7 +40,7 @@
     1.4  #include "oops/objArrayKlass.hpp"
     1.5  #include "oops/objArrayOop.hpp"
     1.6  #include "oops/oop.inline.hpp"
     1.7 -#include "oops/symbolOop.hpp"
     1.8 +#include "oops/symbol.hpp"
     1.9  #include "oops/typeArrayKlass.hpp"
    1.10  #include "oops/typeArrayOop.hpp"
    1.11  #include "prims/jni.h"
    1.12 @@ -338,16 +338,15 @@
    1.13  
    1.14    // Since exceptions can be thrown, class initialization can take place
    1.15    // if name is NULL no check for class name in .class stream has to be made.
    1.16 -  symbolHandle class_name;
    1.17    if (name != NULL) {
    1.18      const int str_len = (int)strlen(name);
    1.19 -    if (str_len > symbolOopDesc::max_length()) {
    1.20 +    if (str_len > Symbol::max_length()) {
    1.21        // It's impossible to create this class;  the name cannot fit
    1.22        // into the constant pool.
    1.23        THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name);
    1.24      }
    1.25 -    class_name = oopFactory::new_symbol_handle(name, str_len, CHECK_NULL);
    1.26    }
    1.27 +  TempNewSymbol class_name = SymbolTable::new_symbol(name, THREAD);
    1.28  
    1.29    ResourceMark rm(THREAD);
    1.30    ClassFileStream st((u1*) buf, bufLen, NULL);
    1.31 @@ -394,7 +393,7 @@
    1.32  
    1.33    // Sanity check the name:  it cannot be null or larger than the maximum size
    1.34    // name we can fit in the constant pool.
    1.35 -  if (name == NULL || (int)strlen(name) > symbolOopDesc::max_length()) {
    1.36 +  if (name == NULL || (int)strlen(name) > Symbol::max_length()) {
    1.37      THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name);
    1.38    }
    1.39  
    1.40 @@ -411,8 +410,8 @@
    1.41          k->name() == vmSymbols::java_lang_ClassLoader_NativeLibrary()) {
    1.42        JavaValue result(T_OBJECT);
    1.43        JavaCalls::call_static(&result, k,
    1.44 -                                      vmSymbolHandles::getFromClass_name(),
    1.45 -                                      vmSymbolHandles::void_class_signature(),
    1.46 +                                      vmSymbols::getFromClass_name(),
    1.47 +                                      vmSymbols::void_class_signature(),
    1.48                                        thread);
    1.49        if (HAS_PENDING_EXCEPTION) {
    1.50          Handle ex(thread, thread->pending_exception());
    1.51 @@ -430,7 +429,7 @@
    1.52      loader = Handle(THREAD, SystemDictionary::java_system_loader());
    1.53    }
    1.54  
    1.55 -  symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL);
    1.56 +  TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL);
    1.57    result = find_class_from_class_loader(env, sym, true, loader,
    1.58                                          protection_domain, true, thread);
    1.59  
    1.60 @@ -609,7 +608,7 @@
    1.61    DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret);
    1.62  
    1.63    instanceKlass* k = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
    1.64 -  symbolHandle name = symbolHandle(THREAD, k->name());
    1.65 +  Symbol*  name = k->name();
    1.66    Handle class_loader (THREAD,  k->class_loader());
    1.67    Handle protection_domain (THREAD, k->protection_domain());
    1.68    THROW_MSG_LOADER_(name, (char *)message, class_loader, protection_domain, JNI_OK);
    1.69 @@ -663,8 +662,8 @@
    1.70                                  ex,
    1.71                                  KlassHandle(THREAD,
    1.72                                    SystemDictionary::Throwable_klass()),
    1.73 -                                vmSymbolHandles::printStackTrace_name(),
    1.74 -                                vmSymbolHandles::void_method_signature(),
    1.75 +                                vmSymbols::printStackTrace_name(),
    1.76 +                                vmSymbols::void_method_signature(),
    1.77                                  THREAD);
    1.78          // If an exception is thrown in the call it gets thrown away. Not much
    1.79          // we can do with it. The native code that calls this, does not check
    1.80 @@ -838,8 +837,7 @@
    1.81    virtual void get_double () = 0;
    1.82    virtual void get_object () = 0;
    1.83  
    1.84 -  JNI_ArgumentPusher(Thread *thread, symbolOop signature)
    1.85 -       : SignatureIterator(thread, signature) {
    1.86 +  JNI_ArgumentPusher(Symbol* signature) : SignatureIterator(signature) {
    1.87      this->_return_type = T_ILLEGAL;
    1.88      _arguments = NULL;
    1.89    }
    1.90 @@ -895,12 +893,12 @@
    1.91    }
    1.92  
    1.93   public:
    1.94 -  JNI_ArgumentPusherVaArg(Thread *thread, symbolOop signature, va_list rap)
    1.95 -       : JNI_ArgumentPusher(thread, signature) {
    1.96 +  JNI_ArgumentPusherVaArg(Symbol* signature, va_list rap)
    1.97 +       : JNI_ArgumentPusher(signature) {
    1.98      set_ap(rap);
    1.99    }
   1.100 -  JNI_ArgumentPusherVaArg(Thread *thread, jmethodID method_id, va_list rap)
   1.101 -      : JNI_ArgumentPusher(thread, JNIHandles::resolve_jmethod_id(method_id)->signature()) {
   1.102 +  JNI_ArgumentPusherVaArg(jmethodID method_id, va_list rap)
   1.103 +      : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) {
   1.104      set_ap(rap);
   1.105    }
   1.106  
   1.107 @@ -966,12 +964,12 @@
   1.108    inline void set_ap(const jvalue *rap) { _ap = rap; }
   1.109  
   1.110   public:
   1.111 -  JNI_ArgumentPusherArray(Thread *thread, symbolOop signature, const jvalue *rap)
   1.112 -       : JNI_ArgumentPusher(thread, signature) {
   1.113 +  JNI_ArgumentPusherArray(Symbol* signature, const jvalue *rap)
   1.114 +       : JNI_ArgumentPusher(signature) {
   1.115      set_ap(rap);
   1.116    }
   1.117 -  JNI_ArgumentPusherArray(Thread *thread, jmethodID method_id, const jvalue *rap)
   1.118 -      : JNI_ArgumentPusher(thread, JNIHandles::resolve_jmethod_id(method_id)->signature()) {
   1.119 +  JNI_ArgumentPusherArray(jmethodID method_id, const jvalue *rap)
   1.120 +      : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) {
   1.121      set_ap(rap);
   1.122    }
   1.123  
   1.124 @@ -1038,8 +1036,8 @@
   1.125    KlassHandle recv_klass; // Default to NULL (use of ?: can confuse gcc)
   1.126    if (recv.not_null()) recv_klass = KlassHandle(THREAD, recv->klass());
   1.127    KlassHandle spec_klass (THREAD, method->method_holder());
   1.128 -  symbolHandle name (THREAD, method->name());
   1.129 -  symbolHandle signature (THREAD, method->signature());
   1.130 +  Symbol*  name  = method->name();
   1.131 +  Symbol*  signature  = method->signature();
   1.132    CallInfo info;
   1.133    LinkResolver::resolve_interface_call(info, recv, recv_klass,  spec_klass, name, signature, KlassHandle(), false, true, CHECK_(methodHandle()));
   1.134    return info.selected_method();
   1.135 @@ -1051,8 +1049,8 @@
   1.136    KlassHandle recv_klass; // Default to NULL (use of ?: can confuse gcc)
   1.137    if (recv.not_null()) recv_klass = KlassHandle(THREAD, recv->klass());
   1.138    KlassHandle spec_klass (THREAD, method->method_holder());
   1.139 -  symbolHandle name (THREAD, method->name());
   1.140 -  symbolHandle signature (THREAD, method->signature());
   1.141 +  Symbol*  name  = method->name();
   1.142 +  Symbol*  signature  = method->signature();
   1.143    CallInfo info;
   1.144    LinkResolver::resolve_virtual_call(info, recv, recv_klass,  spec_klass, name, signature, KlassHandle(), false, true, CHECK_(methodHandle()));
   1.145    return info.selected_method();
   1.146 @@ -1073,7 +1071,7 @@
   1.147    assert(method->is_static(), "method should be static");
   1.148  
   1.149    // Fill out JavaCallArguments object
   1.150 -  args->iterate( Fingerprinter(THREAD, method).fingerprint() );
   1.151 +  args->iterate( Fingerprinter(method).fingerprint() );
   1.152    // Initialize result type
   1.153    result->set_type(args->get_ret_type());
   1.154  
   1.155 @@ -1149,7 +1147,7 @@
   1.156    args->push_receiver(h_recv); // Push jobject handle
   1.157  
   1.158    // Fill out JavaCallArguments object
   1.159 -  args->iterate( Fingerprinter(THREAD, method).fingerprint() );
   1.160 +  args->iterate( Fingerprinter(method).fingerprint() );
   1.161    // Initialize result type
   1.162    result->set_type(args->get_ret_type());
   1.163  
   1.164 @@ -1196,7 +1194,7 @@
   1.165    instanceOop i = alloc_object(clazz, CHECK_NULL);
   1.166    obj = JNIHandles::make_local(env, i);
   1.167    JavaValue jvalue(T_VOID);
   1.168 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args);
   1.169 +  JNI_ArgumentPusherArray ap(methodID, args);
   1.170    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
   1.171    return obj;
   1.172  JNI_END
   1.173 @@ -1212,7 +1210,7 @@
   1.174    instanceOop i = alloc_object(clazz, CHECK_NULL);
   1.175    obj = JNIHandles::make_local(env, i);
   1.176    JavaValue jvalue(T_VOID);
   1.177 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.178 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.179    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
   1.180    return obj;
   1.181  JNI_END
   1.182 @@ -1230,7 +1228,7 @@
   1.183    va_list args;
   1.184    va_start(args, methodID);
   1.185    JavaValue jvalue(T_VOID);
   1.186 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.187 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.188    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
   1.189    va_end(args);
   1.190    return obj;
   1.191 @@ -1271,16 +1269,13 @@
   1.192    // The class should have been loaded (we have an instance of the class
   1.193    // passed in) so the method and signature should already be in the symbol
   1.194    // table.  If they're not there, the method doesn't exist.
   1.195 -  symbolHandle signature =
   1.196 -           symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig)));
   1.197 -  symbolHandle name;
   1.198 -  if (name_str == NULL) {
   1.199 -    name = vmSymbolHandles::object_initializer_name();
   1.200 -  } else {
   1.201 -    name = symbolHandle(THREAD,
   1.202 -                        SymbolTable::probe(name_str, (int)strlen(name_str)));
   1.203 -  }
   1.204 -  if (name.is_null() || signature.is_null()) {
   1.205 +  const char *name_to_probe = (name_str == NULL)
   1.206 +                        ? vmSymbols::object_initializer_name()->as_C_string()
   1.207 +                        : name_str;
   1.208 +  TempNewSymbol name = SymbolTable::probe(name_to_probe, (int)strlen(name_to_probe));
   1.209 +  TempNewSymbol signature = SymbolTable::probe(sig, (int)strlen(sig));
   1.210 +
   1.211 +  if (name == NULL || signature == NULL) {
   1.212      THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), name_str);
   1.213    }
   1.214  
   1.215 @@ -1298,20 +1293,20 @@
   1.216    Klass::cast(klass())->initialize(CHECK_NULL);
   1.217  
   1.218    methodOop m;
   1.219 -  if (name() == vmSymbols::object_initializer_name() ||
   1.220 -      name() == vmSymbols::class_initializer_name()) {
   1.221 +  if (name == vmSymbols::object_initializer_name() ||
   1.222 +      name == vmSymbols::class_initializer_name()) {
   1.223      // Never search superclasses for constructors
   1.224      if (klass->oop_is_instance()) {
   1.225 -      m = instanceKlass::cast(klass())->find_method(name(), signature());
   1.226 +      m = instanceKlass::cast(klass())->find_method(name, signature);
   1.227      } else {
   1.228        m = NULL;
   1.229      }
   1.230    } else {
   1.231 -    m = klass->lookup_method(name(), signature());
   1.232 +    m = klass->lookup_method(name, signature);
   1.233      // Look up interfaces
   1.234      if (m == NULL && klass->oop_is_instance()) {
   1.235 -      m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name(),
   1.236 -                                                                   signature());
   1.237 +      m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name,
   1.238 +                                                                   signature);
   1.239      }
   1.240    }
   1.241    if (m == NULL || (m->is_static() != is_static)) {
   1.242 @@ -1365,7 +1360,7 @@
   1.243    va_list args; \
   1.244    va_start(args, methodID); \
   1.245    JavaValue jvalue(Tag); \
   1.246 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.247 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.248    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \
   1.249    va_end(args); \
   1.250    ret = jvalue.get_##ResultType(); \
   1.251 @@ -1383,7 +1378,7 @@
   1.252                       (const ResultType&)ret);\
   1.253  \
   1.254    JavaValue jvalue(Tag); \
   1.255 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.256 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.257    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \
   1.258    ret = jvalue.get_##ResultType(); \
   1.259    return ret;\
   1.260 @@ -1399,7 +1394,7 @@
   1.261                       (const ResultType&)ret);\
   1.262  \
   1.263    JavaValue jvalue(Tag); \
   1.264 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args); \
   1.265 +  JNI_ArgumentPusherArray ap(methodID, args); \
   1.266    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \
   1.267    ret = jvalue.get_##ResultType(); \
   1.268    return ret;\
   1.269 @@ -1429,7 +1424,7 @@
   1.270    va_list args;
   1.271    va_start(args, methodID);
   1.272    JavaValue jvalue(T_VOID);
   1.273 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.274 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.275    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK);
   1.276    va_end(args);
   1.277  JNI_END
   1.278 @@ -1441,7 +1436,7 @@
   1.279    DT_VOID_RETURN_MARK(CallVoidMethodV);
   1.280  
   1.281    JavaValue jvalue(T_VOID);
   1.282 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.283 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.284    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK);
   1.285  JNI_END
   1.286  
   1.287 @@ -1452,7 +1447,7 @@
   1.288    DT_VOID_RETURN_MARK(CallVoidMethodA);
   1.289  
   1.290    JavaValue jvalue(T_VOID);
   1.291 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args);
   1.292 +  JNI_ArgumentPusherArray ap(methodID, args);
   1.293    jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK);
   1.294  JNI_END
   1.295  
   1.296 @@ -1475,7 +1470,7 @@
   1.297    va_list args; \
   1.298    va_start(args, methodID); \
   1.299    JavaValue jvalue(Tag); \
   1.300 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.301 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.302    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \
   1.303    va_end(args); \
   1.304    ret = jvalue.get_##ResultType(); \
   1.305 @@ -1491,7 +1486,7 @@
   1.306                       (const ResultType&)ret);\
   1.307  \
   1.308    JavaValue jvalue(Tag); \
   1.309 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.310 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.311    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \
   1.312    ret = jvalue.get_##ResultType(); \
   1.313    return ret;\
   1.314 @@ -1506,7 +1501,7 @@
   1.315                       (const ResultType&)ret);\
   1.316  \
   1.317    JavaValue jvalue(Tag); \
   1.318 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args); \
   1.319 +  JNI_ArgumentPusherArray ap(methodID, args); \
   1.320    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \
   1.321    ret = jvalue.get_##ResultType(); \
   1.322    return ret;\
   1.323 @@ -1539,7 +1534,7 @@
   1.324    va_list args;
   1.325    va_start(args, methodID);
   1.326    JavaValue jvalue(T_VOID);
   1.327 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.328 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.329    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK);
   1.330    va_end(args);
   1.331  JNI_END
   1.332 @@ -1553,7 +1548,7 @@
   1.333    DT_VOID_RETURN_MARK(CallNonvirtualVoidMethodV);
   1.334  
   1.335    JavaValue jvalue(T_VOID);
   1.336 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.337 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.338    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK);
   1.339  JNI_END
   1.340  
   1.341 @@ -1564,7 +1559,7 @@
   1.342                  env, obj, cls, methodID);
   1.343    DT_VOID_RETURN_MARK(CallNonvirtualVoidMethodA);
   1.344    JavaValue jvalue(T_VOID);
   1.345 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args);
   1.346 +  JNI_ArgumentPusherArray ap(methodID, args);
   1.347    jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK);
   1.348  JNI_END
   1.349  
   1.350 @@ -1587,7 +1582,7 @@
   1.351    va_list args; \
   1.352    va_start(args, methodID); \
   1.353    JavaValue jvalue(Tag); \
   1.354 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.355 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.356    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \
   1.357    va_end(args); \
   1.358    ret = jvalue.get_##ResultType(); \
   1.359 @@ -1603,7 +1598,7 @@
   1.360                       (const ResultType&)ret);\
   1.361  \
   1.362    JavaValue jvalue(Tag); \
   1.363 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args); \
   1.364 +  JNI_ArgumentPusherVaArg ap(methodID, args); \
   1.365    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \
   1.366    ret = jvalue.get_##ResultType(); \
   1.367    return ret;\
   1.368 @@ -1618,7 +1613,7 @@
   1.369                       (const ResultType&)ret);\
   1.370  \
   1.371    JavaValue jvalue(Tag); \
   1.372 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args); \
   1.373 +  JNI_ArgumentPusherArray ap(methodID, args); \
   1.374    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \
   1.375    ret = jvalue.get_##ResultType(); \
   1.376    return ret;\
   1.377 @@ -1649,7 +1644,7 @@
   1.378    va_list args;
   1.379    va_start(args, methodID);
   1.380    JavaValue jvalue(T_VOID);
   1.381 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.382 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.383    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK);
   1.384    va_end(args);
   1.385  JNI_END
   1.386 @@ -1661,7 +1656,7 @@
   1.387    DT_VOID_RETURN_MARK(CallStaticVoidMethodV);
   1.388  
   1.389    JavaValue jvalue(T_VOID);
   1.390 -  JNI_ArgumentPusherVaArg ap(THREAD, methodID, args);
   1.391 +  JNI_ArgumentPusherVaArg ap(methodID, args);
   1.392    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK);
   1.393  JNI_END
   1.394  
   1.395 @@ -1672,7 +1667,7 @@
   1.396    DT_VOID_RETURN_MARK(CallStaticVoidMethodA);
   1.397  
   1.398    JavaValue jvalue(T_VOID);
   1.399 -  JNI_ArgumentPusherArray ap(THREAD, methodID, args);
   1.400 +  JNI_ArgumentPusherArray ap(methodID, args);
   1.401    jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK);
   1.402  JNI_END
   1.403  
   1.404 @@ -1694,11 +1689,9 @@
   1.405    // The class should have been loaded (we have an instance of the class
   1.406    // passed in) so the field and signature should already be in the symbol
   1.407    // table.  If they're not there, the field doesn't exist.
   1.408 -  symbolHandle fieldname =
   1.409 -            symbolHandle(THREAD, SymbolTable::probe(name, (int)strlen(name)));
   1.410 -  symbolHandle signame   =
   1.411 -            symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig)));
   1.412 -  if (fieldname.is_null() || signame.is_null()) {
   1.413 +  TempNewSymbol fieldname = SymbolTable::probe(name, (int)strlen(name));
   1.414 +  TempNewSymbol signame = SymbolTable::probe(sig, (int)strlen(sig));
   1.415 +  if (fieldname == NULL || signame == NULL) {
   1.416      THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   1.417    }
   1.418    KlassHandle k(THREAD,
   1.419 @@ -1708,7 +1701,7 @@
   1.420  
   1.421    fieldDescriptor fd;
   1.422    if (!Klass::cast(k())->oop_is_instance() ||
   1.423 -      !instanceKlass::cast(k())->find_field(fieldname(), signame(), false, &fd)) {
   1.424 +      !instanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) {
   1.425      THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   1.426    }
   1.427  
   1.428 @@ -1893,11 +1886,9 @@
   1.429    // The class should have been loaded (we have an instance of the class
   1.430    // passed in) so the field and signature should already be in the symbol
   1.431    // table.  If they're not there, the field doesn't exist.
   1.432 -  symbolHandle fieldname =
   1.433 -           symbolHandle(THREAD, SymbolTable::probe(name, (int)strlen(name)));
   1.434 -  symbolHandle signame   =
   1.435 -           symbolHandle(THREAD, SymbolTable::probe(sig, (int)strlen(sig)));
   1.436 -  if (fieldname.is_null() || signame.is_null()) {
   1.437 +  TempNewSymbol fieldname = SymbolTable::probe(name, (int)strlen(name));
   1.438 +  TempNewSymbol signame = SymbolTable::probe(sig, (int)strlen(sig));
   1.439 +  if (fieldname == NULL || signame == NULL) {
   1.440      THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   1.441    }
   1.442    KlassHandle k(THREAD,
   1.443 @@ -1907,7 +1898,7 @@
   1.444  
   1.445    fieldDescriptor fd;
   1.446    if (!Klass::cast(k())->oop_is_instance() ||
   1.447 -      !instanceKlass::cast(k())->find_field(fieldname(), signame(), true, &fd)) {
   1.448 +      !instanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) {
   1.449      THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   1.450    }
   1.451  
   1.452 @@ -2389,7 +2380,7 @@
   1.453  // to see if the native method is now wrapped with the prefixes.  See the
   1.454  // SetNativeMethodPrefix(es) functions in the JVM TI Spec for details.
   1.455  static methodOop find_prefixed_native(KlassHandle k,
   1.456 -                                      symbolHandle name, symbolHandle signature, TRAPS) {
   1.457 +                                      Symbol* name, Symbol* signature, TRAPS) {
   1.458    ResourceMark rm(THREAD);
   1.459    methodOop method;
   1.460    int name_len = name->utf8_length();
   1.461 @@ -2405,11 +2396,11 @@
   1.462      char* trial_name_str = NEW_RESOURCE_ARRAY(char, trial_len + 1);
   1.463      strcpy(trial_name_str, prefix);
   1.464      strcat(trial_name_str, name_str);
   1.465 -    symbolHandle trial_name(THREAD, SymbolTable::probe(trial_name_str, trial_len));
   1.466 -    if (trial_name.is_null()) {
   1.467 +    TempNewSymbol trial_name = SymbolTable::probe(trial_name_str, trial_len);
   1.468 +    if (trial_name == NULL) {
   1.469        continue; // no such symbol, so this prefix wasn't used, try the next prefix
   1.470      }
   1.471 -    method = Klass::cast(k())->lookup_method(trial_name(), signature());
   1.472 +    method = Klass::cast(k())->lookup_method(trial_name, signature);
   1.473      if (method == NULL) {
   1.474        continue; // signature doesn't match, try the next prefix
   1.475      }
   1.476 @@ -2424,13 +2415,13 @@
   1.477    return NULL; // not found
   1.478  }
   1.479  
   1.480 -static bool register_native(KlassHandle k, symbolHandle name, symbolHandle signature, address entry, TRAPS) {
   1.481 -  methodOop method = Klass::cast(k())->lookup_method(name(), signature());
   1.482 +static bool register_native(KlassHandle k, Symbol* name, Symbol* signature, address entry, TRAPS) {
   1.483 +  methodOop method = Klass::cast(k())->lookup_method(name, signature);
   1.484    if (method == NULL) {
   1.485      ResourceMark rm;
   1.486      stringStream st;
   1.487      st.print("Method %s name or signature does not match",
   1.488 -             methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name(), signature()));
   1.489 +             methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
   1.490      THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false);
   1.491    }
   1.492    if (!method->is_native()) {
   1.493 @@ -2440,7 +2431,7 @@
   1.494        ResourceMark rm;
   1.495        stringStream st;
   1.496        st.print("Method %s is not declared as native",
   1.497 -               methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name(), signature()));
   1.498 +               methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
   1.499        THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false);
   1.500      }
   1.501    }
   1.502 @@ -2480,10 +2471,10 @@
   1.503      // The class should have been loaded (we have an instance of the class
   1.504      // passed in) so the method and signature should already be in the symbol
   1.505      // table.  If they're not there, the method doesn't exist.
   1.506 -    symbolHandle name(THREAD, SymbolTable::probe(meth_name, meth_name_len));
   1.507 -    symbolHandle signature(THREAD, SymbolTable::probe(meth_sig, (int)strlen(meth_sig)));
   1.508 -
   1.509 -    if (name.is_null() || signature.is_null()) {
   1.510 +    TempNewSymbol  name = SymbolTable::probe(meth_name, meth_name_len);
   1.511 +    TempNewSymbol  signature = SymbolTable::probe(meth_sig, (int)strlen(meth_sig));
   1.512 +
   1.513 +    if (name == NULL || signature == NULL) {
   1.514        ResourceMark rm;
   1.515        stringStream st;
   1.516        st.print("Method %s.%s%s not found", Klass::cast(h_k())->external_name(), meth_name, meth_sig);
   1.517 @@ -2717,7 +2708,7 @@
   1.518    Handle loader;            // null (bootstrap) loader
   1.519    Handle protection_domain; // null protection domain
   1.520  
   1.521 -  symbolHandle sym = oopFactory::new_symbol_handle(name, CHECK_NULL);
   1.522 +  TempNewSymbol sym = SymbolTable::new_symbol(name, CHECK_NULL);
   1.523    jclass result =  find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
   1.524  
   1.525    if (TraceClassResolution && result != NULL) {

mercurial