src/share/vm/prims/methodHandleWalk.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7045514 Cdiff src/share/vm/prims/methodHandleWalk.cpp

src/share/vm/prims/methodHandleWalk.cpp

Print this page

        

*** 176,185 **** --- 176,191 ---- if (op >= 0 && op < (int)ARRAY_SIZE(adapter_ops)) return adapter_ops[op]; return "unknown_op"; } + void MethodHandleChain::print(oopDesc* m) { + HandleMark hm; + ResourceMark rm; + Handle mh(m); + print(mh); + } void MethodHandleChain::print(Handle mh) { EXCEPTION_MARK; MethodHandleChain mhc(mh, THREAD); if (HAS_PENDING_EXCEPTION) {
*** 412,423 **** klassOop dest_klass = NULL; BasicType dest = java_lang_Class::as_BasicType(chain().adapter_arg_oop(), &dest_klass); assert(dest == T_OBJECT, ""); ArgToken arg = _outgoing.at(arg_slot); assert(dest == arg.basic_type(), ""); ! ArgToken new_arg = make_conversion(T_OBJECT, dest_klass, Bytecodes::_checkcast, arg, CHECK_(empty)); ! assert(!arg.has_index() || arg.index() == new_arg.index(), "should be the same index"); debug_only(dest_klass = (klassOop)badOop); break; } case java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_PRIM: { --- 418,428 ---- klassOop dest_klass = NULL; BasicType dest = java_lang_Class::as_BasicType(chain().adapter_arg_oop(), &dest_klass); assert(dest == T_OBJECT, ""); ArgToken arg = _outgoing.at(arg_slot); assert(dest == arg.basic_type(), ""); ! arg = make_conversion(T_OBJECT, dest_klass, Bytecodes::_checkcast, arg, CHECK_(empty)); debug_only(dest_klass = (klassOop)badOop); break; } case java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_PRIM: {
*** 1246,1256 **** } else { emit_load(srctype, src.index()); index = src.index(); } emit_bc(op, cpool_klass_put(tk)); ! if (index == -1) index = new_local_index(type); emit_store(srctype, index); break; case Bytecodes::_nop: --- 1251,1262 ---- } else { emit_load(srctype, src.index()); index = src.index(); } emit_bc(op, cpool_klass_put(tk)); ! // Allocate a new local for the type so that we don't hide the ! // previous type from the verifier. index = new_local_index(type); emit_store(srctype, index); break; case Bytecodes::_nop:
src/share/vm/prims/methodHandleWalk.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File