# HG changeset patch # User Jaroslav Tulach # Date 1407877036 -7200 # Node ID c1732e50ebe7f13cdf0a63ed63632b2f19198c54 # Parent b913b6b415a0d0be2f10cd3eecd803a2df3e7cb7 Need to initialize flags. getFields throws SecurityException on bck2brwsr VM - avoid. diff -r b913b6b415a0 -r c1732e50ebe7 rt/emul/compact/src/main/java/java/lang/invoke/MemberName.java --- a/rt/emul/compact/src/main/java/java/lang/invoke/MemberName.java Tue Aug 12 21:07:20 2014 +0200 +++ b/rt/emul/compact/src/main/java/java/lang/invoke/MemberName.java Tue Aug 12 22:57:16 2014 +0200 @@ -73,7 +73,7 @@ Class clazz; // class in which the method is defined private String name; // may be null if not yet materialized private Object type; // may be null if not yet materialized - private int flags; // modifier bits; see reflect.Modifier + int flags; // modifier bits; see reflect.Modifier //@Injected JVM_Method* vmtarget; //@Injected int vmindex; private Object resolution; // if null, this guy is resolved 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; } diff -r b913b6b415a0 -r c1732e50ebe7 rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Tue Aug 12 21:07:20 2014 +0200 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Tue Aug 12 22:57:16 2014 +0200 @@ -53,7 +53,7 @@ + "var arr = new Array();\n" + "function check(m, verify) {\n" + " if (m.indexOf(prefix) === 0) {\n" - + " if (!c[m].cls) return;\n" + + " if (!c[m] || !c[m].cls) return;\n" + " if (verify) {\n" + " for (var i = 0; i < arr.length; i += 3) {\n" + " if (arr[i] === m) return;\n"