src/share/vm/prims/methodHandleWalk.cpp

changeset 2806
2a23b1b5a0a8
parent 2742
ed69575596ac
child 2895
167b70ff3abc
equal deleted inserted replaced
2767:97e8046e2562 2806:2a23b1b5a0a8
80 } 80 }
81 81
82 82
83 void MethodHandleChain::set_last_method(oop target, TRAPS) { 83 void MethodHandleChain::set_last_method(oop target, TRAPS) {
84 _is_last = true; 84 _is_last = true;
85 klassOop receiver_limit_oop = NULL; 85 KlassHandle receiver_limit; int flags = 0;
86 int flags = 0; 86 _last_method = MethodHandles::decode_method(target, receiver_limit, flags);
87 methodOop m = MethodHandles::decode_method(target, receiver_limit_oop, flags);
88 _last_method = methodHandle(THREAD, m);
89 if ((flags & MethodHandles::_dmf_has_receiver) == 0) 87 if ((flags & MethodHandles::_dmf_has_receiver) == 0)
90 _last_invoke = Bytecodes::_invokestatic; 88 _last_invoke = Bytecodes::_invokestatic;
91 else if ((flags & MethodHandles::_dmf_does_dispatch) == 0) 89 else if ((flags & MethodHandles::_dmf_does_dispatch) == 0)
92 _last_invoke = Bytecodes::_invokespecial; 90 _last_invoke = Bytecodes::_invokespecial;
93 else if ((flags & MethodHandles::_dmf_from_interface) != 0) 91 else if ((flags & MethodHandles::_dmf_from_interface) != 0)

mercurial