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

src/share/vm/prims/methodHandles.cpp

Print this page

        

*** 518,528 **** if (target_oop->klass() == SystemDictionary::reflect_Field_klass()) { oop clazz = java_lang_reflect_Field::clazz(target_oop); // fd.field_holder() int slot = java_lang_reflect_Field::slot(target_oop); // fd.index() int mods = java_lang_reflect_Field::modifiers(target_oop); klassOop k = java_lang_Class::as_klassOop(clazz); ! int offset = instanceKlass::cast(k)->offset_from_fields(slot); init_MemberName(mname_oop, k, accessFlags_from(mods), offset); } else { KlassHandle receiver_limit; int decode_flags = 0; methodHandle m = MethodHandles::decode_method(target_oop, receiver_limit, decode_flags); bool do_dispatch = ((decode_flags & MethodHandles::_dmf_does_dispatch) != 0); --- 518,528 ---- if (target_oop->klass() == SystemDictionary::reflect_Field_klass()) { oop clazz = java_lang_reflect_Field::clazz(target_oop); // fd.field_holder() int slot = java_lang_reflect_Field::slot(target_oop); // fd.index() int mods = java_lang_reflect_Field::modifiers(target_oop); klassOop k = java_lang_Class::as_klassOop(clazz); ! int offset = instanceKlass::cast(k)->field_offset(slot); init_MemberName(mname_oop, k, accessFlags_from(mods), offset); } else { KlassHandle receiver_limit; int decode_flags = 0; methodHandle m = MethodHandles::decode_method(target_oop, receiver_limit, decode_flags); bool do_dispatch = ((decode_flags & MethodHandles::_dmf_does_dispatch) != 0);
*** 1630,1641 **** if (mh.is_null() || m.is_null() || (!do_dispatch && m->is_abstract())) { THROW(vmSymbols::java_lang_InternalError()); } - java_lang_invoke_MethodHandle::init_vmslots(mh()); - if (VerifyMethodHandles) { // The privileged code which invokes this routine should not make // a mistake about types, but it's better to verify. verify_DirectMethodHandle(mh, m, CHECK); } --- 1630,1639 ----
*** 1754,1764 **** receiver_klass, CHECK); if (m.is_null()) { THROW(vmSymbols::java_lang_InternalError()); } if (m->is_abstract()) { THROW(vmSymbols::java_lang_AbstractMethodError()); } - java_lang_invoke_MethodHandle::init_vmslots(mh()); int vmargslot = m->size_of_parameters() - 1; assert(java_lang_invoke_BoundMethodHandle::vmargslot(mh()) == vmargslot, ""); if (VerifyMethodHandles) { verify_BoundMethodHandle_with_receiver(mh, m, CHECK); --- 1752,1761 ----
*** 1860,1870 **** // Check arguments. if (mh.is_null() || target.is_null() || !java_lang_invoke_MethodHandle::is_instance(target())) { THROW(vmSymbols::java_lang_InternalError()); } - java_lang_invoke_MethodHandle::init_vmslots(mh()); int argslot = java_lang_invoke_BoundMethodHandle::vmargslot(mh()); if (VerifyMethodHandles) { int insert_after = argnum - 1; verify_vmargslot(mh, insert_after, argslot, CHECK); --- 1857,1866 ----
*** 2684,2693 **** --- 2680,2690 ---- SystemDictionaryHandles::Object_klass(), THREAD); java_lang_invoke_MethodTypeForm::init_vmlayout(mtform(), cookie); } } + assert(java_lang_invoke_MethodTypeForm::vmslots(mtform()) == argument_slot_count(mtype()), "must agree"); } #ifdef ASSERT extern "C"
src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File