Mercurial > hg > release > icedtea7-2.1
view patches/8006179-lookup_using_findvirtual.patch @ 2552:cf4897fbb9f5
Add new fixes locally (backports from u17b02 & 2.4, PR1303 fix) so as to keep with 2.1.7 forest tag.
2013-03-11 Andrew John Hughes <gnu.andrew@member.fsf.org>
* Makefile.am:
(ICEDTEA_PATCHES): Add patches.
* NEWS: Updated.
* patches/8002344-krb5loginmodule.patch,
* patches/8004344-toolkiterrorhandler.patch:
Backported from 2.4.
* patches/8006179-lookup_using_findvirtual.patch,
* patches/8006882-sun.proxy.patch:
Taken from upstream jdk7u17 b02.
* patches/pr1303-ifdef_fix.patch:
PR1303 issue (#ifdef vs. #if) caught by Bernhard
Rosenkr?nzer.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Mon, 11 Mar 2013 15:11:10 +0000 |
parents | |
children |
line wrap: on
line source
# HG changeset patch # User jrose # Date 1358570871 28800 # Node ID 90e4cb6f78bb0551ae23f88dd75cb57aad9d8662 # Parent 0ad964f2ced1b4f12c1b30bd92dceb73ba15f608 8006179: JSR292 MethodHandles lookup with interface using findVirtual() Reviewed-by: twisti diff --git a/src/share/classes/java/lang/invoke/DirectMethodHandle.java b/src/share/classes/java/lang/invoke/DirectMethodHandle.java --- openjdk/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java +++ openjdk/jdk/src/share/classes/java/lang/invoke/DirectMethodHandle.java @@ -44,6 +44,15 @@ if (!m.isResolved()) throw new InternalError(); + if (m.getDeclaringClass().isInterface() && !m.isAbstract()) { + // Check for corner case: invokeinterface of Object method. + MemberName m2 = new MemberName(Object.class, m.getName(), m.getMethodType(), m.getModifiers()); + m2 = MemberName.getFactory().resolveOrNull(m2, false, null); + if (m2 != null && m2.isPublic()) { + m = m2; + } + } + MethodHandleNatives.init(this, (Object) m, doDispatch, lookupClass); }