src/share/vm/prims/methodHandleWalk.cpp

changeset 2638
72dee110246f
parent 2533
c5a923563727
child 2639
8033953d67ff
equal deleted inserted replaced
2637:799d8ccf63cf 2638:72dee110246f
98 98
99 99
100 BasicType MethodHandleChain::compute_bound_arg_type(oop target, methodOop m, int arg_slot, TRAPS) { 100 BasicType MethodHandleChain::compute_bound_arg_type(oop target, methodOop m, int arg_slot, TRAPS) {
101 // There is no direct indication of whether the argument is primitive or not. 101 // There is no direct indication of whether the argument is primitive or not.
102 // It is implied by the _vmentry code, and by the MethodType of the target. 102 // It is implied by the _vmentry code, and by the MethodType of the target.
103 // FIXME: Make it explicit MethodHandleImpl refactors out from MethodHandle
104 BasicType arg_type = T_VOID; 103 BasicType arg_type = T_VOID;
105 if (target != NULL) { 104 if (target != NULL) {
106 oop mtype = java_dyn_MethodHandle::type(target); 105 oop mtype = java_dyn_MethodHandle::type(target);
107 int arg_num = MethodHandles::argument_slot_to_argnum(mtype, arg_slot); 106 int arg_num = MethodHandles::argument_slot_to_argnum(mtype, arg_slot);
108 if (arg_num >= 0) { 107 if (arg_num >= 0) {
958 int argc, MethodHandleWalker::ArgToken* argv, 957 int argc, MethodHandleWalker::ArgToken* argv,
959 TRAPS) { 958 TRAPS) {
960 if (m == NULL) { 959 if (m == NULL) {
961 // Get the intrinsic methodOop. 960 // Get the intrinsic methodOop.
962 m = vmIntrinsics::method_for(iid); 961 m = vmIntrinsics::method_for(iid);
962 if (m == NULL && iid == vmIntrinsics::_checkSpreadArgument && AllowTransitionalJSR292) {
963 m = vmIntrinsics::method_for(vmIntrinsics::_checkSpreadArgument_TRANS);
964 }
965 if (m == NULL) {
966 ArgToken zero;
967 lose(vmIntrinsics::name_at(iid), CHECK_(zero));
968 }
963 } 969 }
964 970
965 klassOop klass = m->method_holder(); 971 klassOop klass = m->method_holder();
966 Symbol* name = m->name(); 972 Symbol* name = m->name();
967 Symbol* signature = m->signature(); 973 Symbol* signature = m->signature();

mercurial