comparison src/share/vm/classfile/vmSymbols.cpp @ 6847:65d07d9ee446

8000263: JSR 292: signature types may appear to be unloaded Reviewed-by: kvn, jrose
author twisti
date Mon, 08 Oct 2012 17:04:00 -0700
parents da91efe96a93
children 18fb7da42534
comparison
equal deleted inserted replaced
6846:377508648226 6847:65d07d9ee446
322 #undef SRC_DEST 322 #undef SRC_DEST
323 323
324 return vmIntrinsics::_none; 324 return vmIntrinsics::_none;
325 } 325 }
326 326
327 Method* vmIntrinsics::method_for(vmIntrinsics::ID id) {
328 if (id == _none) return NULL;
329 Symbol* cname = vmSymbols::symbol_at(class_for(id));
330 Symbol* mname = vmSymbols::symbol_at(name_for(id));
331 Symbol* msig = vmSymbols::symbol_at(signature_for(id));
332 if (cname == NULL || mname == NULL || msig == NULL) return NULL;
333 Klass* k = SystemDictionary::find_well_known_klass(cname);
334 if (k == NULL) return NULL;
335 Method* m = InstanceKlass::cast(k)->find_method(mname, msig);
336 if (m == NULL &&
337 cname == vmSymbols::java_lang_invoke_MethodHandle() &&
338 msig == vmSymbols::star_name()) {
339 // Any signature polymorphic method is represented by a fixed concrete signature:
340 m = InstanceKlass::cast(k)->find_method(mname, vmSymbols::object_array_object_signature());
341 }
342 return m;
343 }
344
345 327
346 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0" 328 #define VM_INTRINSIC_INITIALIZE(id, klass, name, sig, flags) #id "\0"
347 static const char* vm_intrinsic_name_bodies = 329 static const char* vm_intrinsic_name_bodies =
348 VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE, 330 VM_INTRINSICS_DO(VM_INTRINSIC_INITIALIZE,
349 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE); 331 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE);