Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/systemDictionary.hpp @ 1507:cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
Summary: split MethodHandle.invoke into invokeExact and invokeGeneric; also clean up JVM-to-Java interfaces
Reviewed-by: twisti
author | jrose |
---|---|
date | Sat, 01 May 2010 02:42:18 -0700 |
parents | cd37471eaecc |
children | 2ffde6cfe049 |
comparison
equal
deleted
inserted
replaced
1506:2338d41fbd81 | 1507:cd5dbf694d45 |
---|---|
134 \ | 134 \ |
135 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ | 135 /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \ |
136 template(MethodHandle_klass, java_dyn_MethodHandle, Opt) \ | 136 template(MethodHandle_klass, java_dyn_MethodHandle, Opt) \ |
137 template(MemberName_klass, sun_dyn_MemberName, Opt) \ | 137 template(MemberName_klass, sun_dyn_MemberName, Opt) \ |
138 template(MethodHandleImpl_klass, sun_dyn_MethodHandleImpl, Opt) \ | 138 template(MethodHandleImpl_klass, sun_dyn_MethodHandleImpl, Opt) \ |
139 template(MethodHandleNatives_klass, sun_dyn_MethodHandleNatives, Opt) \ | |
139 template(AdapterMethodHandle_klass, sun_dyn_AdapterMethodHandle, Opt) \ | 140 template(AdapterMethodHandle_klass, sun_dyn_AdapterMethodHandle, Opt) \ |
140 template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \ | 141 template(BoundMethodHandle_klass, sun_dyn_BoundMethodHandle, Opt) \ |
141 template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \ | 142 template(DirectMethodHandle_klass, sun_dyn_DirectMethodHandle, Opt) \ |
142 template(MethodType_klass, java_dyn_MethodType, Opt) \ | 143 template(MethodType_klass, java_dyn_MethodType, Opt) \ |
143 template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Opt) \ | 144 template(MethodTypeForm_klass, java_dyn_MethodTypeForm, Opt) \ |
461 static char* check_signature_loaders(symbolHandle signature, Handle loader1, | 462 static char* check_signature_loaders(symbolHandle signature, Handle loader1, |
462 Handle loader2, bool is_method, TRAPS); | 463 Handle loader2, bool is_method, TRAPS); |
463 | 464 |
464 // JSR 292 | 465 // JSR 292 |
465 // find the java.dyn.MethodHandles::invoke method for a given signature | 466 // find the java.dyn.MethodHandles::invoke method for a given signature |
466 static methodOop find_method_handle_invoke(symbolHandle signature, | 467 static methodOop find_method_handle_invoke(symbolHandle name, |
468 symbolHandle signature, | |
467 Handle class_loader, | 469 Handle class_loader, |
468 Handle protection_domain, | 470 Handle protection_domain, |
469 TRAPS); | 471 TRAPS); |
470 // ask Java to compute the java.dyn.MethodType object for a given signature | 472 // ask Java to compute a java.dyn.MethodType object for a given signature |
471 static Handle compute_method_handle_type(symbolHandle signature, | 473 static Handle find_method_handle_type(symbolHandle signature, |
472 Handle class_loader, | 474 Handle class_loader, |
473 Handle protection_domain, | 475 Handle protection_domain, |
474 TRAPS); | 476 TRAPS); |
475 // ask Java to create a dynamic call site, while linking an invokedynamic op | 477 // ask Java to create a dynamic call site, while linking an invokedynamic op |
476 static Handle make_dynamic_call_site(KlassHandle caller, | 478 static Handle make_dynamic_call_site(Handle bootstrap_method, |
477 int caller_method_idnum, | 479 // Callee information: |
480 symbolHandle name, | |
481 methodHandle signature_invoker, | |
482 Handle info, | |
483 // Caller information: | |
484 methodHandle caller_method, | |
478 int caller_bci, | 485 int caller_bci, |
479 symbolHandle name, | |
480 methodHandle mh_invoke, | |
481 TRAPS); | 486 TRAPS); |
482 | 487 |
483 // coordinate with Java about bootstrap methods | 488 // coordinate with Java about bootstrap methods |
484 static Handle find_bootstrap_method(KlassHandle caller, | 489 static Handle find_bootstrap_method(KlassHandle caller, TRAPS); |
485 // This argument is non-null only when a | |
486 // classfile attribute has been found: | |
487 KlassHandle search_bootstrap_klass, | |
488 TRAPS); | |
489 | 490 |
490 // Utility for printing loader "name" as part of tracing constraints | 491 // Utility for printing loader "name" as part of tracing constraints |
491 static const char* loader_name(oop loader) { | 492 static const char* loader_name(oop loader) { |
492 return ((loader) == NULL ? "<bootloader>" : | 493 return ((loader) == NULL ? "<bootloader>" : |
493 instanceKlass::cast((loader)->klass())->name()->as_C_string() ); | 494 instanceKlass::cast((loader)->klass())->name()->as_C_string() ); |