comparison src/share/vm/classfile/systemDictionary.hpp @ 726:be93aad57795

6655646: dynamic languages need dynamically linked call sites Summary: invokedynamic instruction (JSR 292 RI) Reviewed-by: twisti, never
author jrose
date Tue, 21 Apr 2009 23:21:04 -0700
parents e5b0439ef4ae
children ad6585fd4087
comparison
equal deleted inserted replaced
725:928912ce8438 726:be93aad57795
140 template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \ 140 template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \
141 template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \ 141 template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \
142 template(MethodType_klass, java_dyn_MethodType, Opt) \ 142 template(MethodType_klass, java_dyn_MethodType, Opt) \
143 template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Opt) \ 143 template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Opt) \
144 template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \ 144 template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
145 template(Linkage_klass, java_dyn_Linkage, Opt) \
146 template(CallSite_klass, java_dyn_CallSite, Opt) \
147 template(CallSiteImpl_klass, sun_dyn_CallSiteImpl, Opt) \
148 template(Dynamic_klass, java_dyn_Dynamic, Opt) \
149 /* Note: MethodHandle must be first, and Dynamic last in group */ \
150 \
145 template(vector_klass, java_util_Vector, Pre) \ 151 template(vector_klass, java_util_Vector, Pre) \
146 template(hashtable_klass, java_util_Hashtable, Pre) \ 152 template(hashtable_klass, java_util_Hashtable, Pre) \
147 template(stringBuffer_klass, java_lang_StringBuffer, Pre) \ 153 template(stringBuffer_klass, java_lang_StringBuffer, Pre) \
148 \ 154 \
149 /* It's NULL in non-1.4 JDKs. */ \ 155 /* It's NULL in non-1.4 JDKs. */ \
464 // ask Java to compute the java.dyn.MethodType object for a given signature 470 // ask Java to compute the java.dyn.MethodType object for a given signature
465 static Handle compute_method_handle_type(symbolHandle signature, 471 static Handle compute_method_handle_type(symbolHandle signature,
466 Handle class_loader, 472 Handle class_loader,
467 Handle protection_domain, 473 Handle protection_domain,
468 TRAPS); 474 TRAPS);
475 // ask Java to create a dynamic call site, while linking an invokedynamic op
476 static Handle make_dynamic_call_site(KlassHandle caller,
477 int caller_method_idnum,
478 int caller_bci,
479 symbolHandle name,
480 methodHandle mh_invoke,
481 TRAPS);
482
483 // coordinate with Java about bootstrap methods
484 static Handle find_bootstrap_method(KlassHandle caller,
485 // This argument is non-null only when a
486 // classfile attribute has been found:
487 KlassHandle search_bootstrap_klass,
488 TRAPS);
489
469 // Utility for printing loader "name" as part of tracing constraints 490 // Utility for printing loader "name" as part of tracing constraints
470 static const char* loader_name(oop loader) { 491 static const char* loader_name(oop loader) {
471 return ((loader) == NULL ? "<bootloader>" : 492 return ((loader) == NULL ? "<bootloader>" :
472 instanceKlass::cast((loader)->klass())->name()->as_C_string() ); 493 instanceKlass::cast((loader)->klass())->name()->as_C_string() );
473 } 494 }