diff -r b913b6b415a0 -r c1732e50ebe7 rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java --- a/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java Tue Aug 12 21:07:20 2014 +0200 +++ b/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java Tue Aug 12 22:57:16 2014 +0200 @@ -47,7 +47,16 @@ /// MemberName support static void init(MemberName self, Object ref) { - self.clazz = ((Member)ref).getDeclaringClass(); + final Member mem = (Member)ref; + self.clazz = mem.getDeclaringClass(); + int mod = mem.getModifiers(); + if (ref instanceof Method) { + mod |= MemberName.IS_METHOD; + } + if (ref instanceof Constructor) { + mod |= MemberName.IS_CONSTRUCTOR; + } + self.flags = mod; } static void expand(MemberName self) { @@ -73,13 +82,13 @@ MemberName mn = new MemberName(m); results[skip++] = mn; } - for (Field m : defc.getFields()) { - if (skip == results.length) { - break; - } - MemberName mn = new MemberName(m); - results[skip++] = mn; - } +// for (Field m : defc.getFields()) { +// if (skip == results.length) { +// break; +// } +// MemberName mn = new MemberName(m); +// results[skip++] = mn; +// } return skip - orig; }