1.1 --- a/core/src/main/java/org/apidesign/bck2brwsr/core/impl/JavaScriptProcesor.java Mon Jan 14 10:57:51 2013 +0100
1.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/impl/JavaScriptProcesor.java Mon Jan 14 11:30:56 2013 +0100
1.3 @@ -53,7 +53,7 @@
1.4 @Override
1.5 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
1.6 for (Element e : roundEnv.getElementsAnnotatedWith(JavaScriptBody.class)) {
1.7 - if (e.getKind() != ElementKind.METHOD) {
1.8 + if (e.getKind() != ElementKind.METHOD && e.getKind() != ElementKind.CONSTRUCTOR) {
1.9 continue;
1.10 }
1.11 ExecutableElement ee = (ExecutableElement)e;
1.12 @@ -61,13 +61,7 @@
1.13
1.14 JavaScriptBody jsb = e.getAnnotation(JavaScriptBody.class);
1.15 String[] arr = jsb.args();
1.16 - int indx;
1.17 - if (!ee.getModifiers().contains(Modifier.STATIC)) {
1.18 - indx = 1;
1.19 - } else {
1.20 - indx = 0;
1.21 - }
1.22 - if (indx + params.size() != arr.length) {
1.23 + if (params.size() != arr.length) {
1.24 processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Number of args arguments does not match real arguments!", e);
1.25 }
1.26 }
1.27 @@ -81,14 +75,8 @@
1.28 StringBuilder sb = new StringBuilder();
1.29 if (e.getKind() == ElementKind.METHOD && member.getSimpleName().contentEquals("args")) {
1.30 ExecutableElement ee = (ExecutableElement) e;
1.31 - String sep;
1.32 - if (!ee.getModifiers().contains(Modifier.STATIC)) {
1.33 - sb.append("{ \"self\"");
1.34 - sep = ", ";
1.35 - } else {
1.36 - sb.append("{ ");
1.37 - sep = "";
1.38 - }
1.39 + String sep = "";
1.40 + sb.append("{ ");
1.41 for (VariableElement ve : ee.getParameters()) {
1.42 sb.append(sep).append('"').append(ve.getSimpleName())
1.43 .append('"');
2.1 --- a/emul/src/main/java/java/lang/Class.java Mon Jan 14 10:57:51 2013 +0100
2.2 +++ b/emul/src/main/java/java/lang/Class.java Mon Jan 14 11:30:56 2013 +0100
2.3 @@ -318,7 +318,7 @@
2.4 return (getAccess() & 0x200) != 0;
2.5 }
2.6
2.7 - @JavaScriptBody(args = "self", body = "return self.access;")
2.8 + @JavaScriptBody(args = {}, body = "return this.access;")
2.9 private native int getAccess();
2.10
2.11
2.12 @@ -362,8 +362,8 @@
2.13 * @see java.lang.Void#TYPE
2.14 * @since JDK1.1
2.15 */
2.16 - @JavaScriptBody(args = "self", body =
2.17 - "if (self.primitive) return true;"
2.18 + @JavaScriptBody(args = {}, body =
2.19 + "if (this.primitive) return true;"
2.20 + "else return false;"
2.21 )
2.22 public native boolean isPrimitive();
2.23 @@ -447,7 +447,7 @@
2.24 return jvmName().replace('/', '.');
2.25 }
2.26
2.27 - @JavaScriptBody(args = "self", body = "return self.jvmName;")
2.28 + @JavaScriptBody(args = {}, body = "return this.jvmName;")
2.29 private native String jvmName();
2.30
2.31
2.32 @@ -481,7 +481,7 @@
2.33 *
2.34 * @return the superclass of the class represented by this object.
2.35 */
2.36 - @JavaScriptBody(args = "self", body = "return self.superclass;")
2.37 + @JavaScriptBody(args = {}, body = "return this.superclass;")
2.38 public native Class<? super T> getSuperclass();
2.39
2.40 /**
2.41 @@ -1078,10 +1078,10 @@
2.42 throw new ClassCastException(this.toString());
2.43 }
2.44
2.45 - @JavaScriptBody(args = { "self", "ac" },
2.46 + @JavaScriptBody(args = { "ac" },
2.47 body =
2.48 - "if (self.anno) {"
2.49 - + " return self.anno['L' + ac.jvmName + ';'];"
2.50 + "if (this.anno) {"
2.51 + + " return this.anno['L' + ac.jvmName + ';'];"
2.52 + "} else return null;"
2.53 )
2.54 private Object getAnnotationData(Class<?> annotationClass) {
2.55 @@ -1100,8 +1100,8 @@
2.56 * @throws NullPointerException {@inheritDoc}
2.57 * @since 1.5
2.58 */
2.59 - @JavaScriptBody(args = { "self", "ac" },
2.60 - body = "if (self.anno && self.anno['L' + ac.jvmName + ';']) { return true; }"
2.61 + @JavaScriptBody(args = { "ac" },
2.62 + body = "if (this.anno && this.anno['L' + ac.jvmName + ';']) { return true; }"
2.63 + "else return false;"
2.64 )
2.65 public boolean isAnnotationPresent(
2.66 @@ -1112,7 +1112,7 @@
2.67 return getAnnotation(annotationClass) != null;
2.68 }
2.69
2.70 - @JavaScriptBody(args = "self", body = "return self.anno;")
2.71 + @JavaScriptBody(args = {}, body = "return this.anno;")
2.72 private Object getAnnotationData() {
2.73 throw new UnsupportedOperationException();
2.74 }
3.1 --- a/emul/src/main/java/java/lang/Object.java Mon Jan 14 10:57:51 2013 +0100
3.2 +++ b/emul/src/main/java/java/lang/Object.java Mon Jan 14 11:30:56 2013 +0100
3.3 @@ -66,7 +66,7 @@
3.4 * @see Class Literals, section 15.8.2 of
3.5 * <cite>The Java™ Language Specification</cite>.
3.6 */
3.7 - @JavaScriptBody(args="self", body="return self.constructor.$class;")
3.8 + @JavaScriptBody(args={}, body="return this.constructor.$class;")
3.9 public final native Class<?> getClass();
3.10
3.11 /**
3.12 @@ -104,14 +104,14 @@
3.13 * @see java.lang.Object#equals(java.lang.Object)
3.14 * @see java.lang.System#identityHashCode
3.15 */
3.16 - @JavaScriptBody(args = "self", body =
3.17 - "if (self.$hashCode) return self.$hashCode;\n"
3.18 - + "var h = self.computeHashCode__I(self);\n"
3.19 - + "return self.$hashCode = h & h;"
3.20 + @JavaScriptBody(args = {}, body =
3.21 + "if (this.$hashCode) return this.$hashCode;\n"
3.22 + + "var h = this.computeHashCode__I();\n"
3.23 + + "return this.$hashCode = h & h;"
3.24 )
3.25 public native int hashCode();
3.26
3.27 - @JavaScriptBody(args = "self", body = "Math.random() * Math.pow(2, 32);")
3.28 + @JavaScriptBody(args = {}, body = "Math.random() * Math.pow(2, 32);")
3.29 native int computeHashCode();
3.30
3.31 /**
4.1 --- a/emul/src/main/java/java/lang/String.java Mon Jan 14 10:57:51 2013 +0100
4.2 +++ b/emul/src/main/java/java/lang/String.java Mon Jan 14 11:30:56 2013 +0100
4.3 @@ -169,11 +169,11 @@
4.4 * @param value
4.5 * The initial value of the string
4.6 */
4.7 - @JavaScriptBody(args = { "self", "charArr" }, body=
4.8 + @JavaScriptBody(args = { "charArr" }, body=
4.9 "for (var i = 0; i < charArr.length; i++) {\n"
4.10 + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n"
4.11 + "}\n"
4.12 - + "self.fld_r = charArr.join('');\n"
4.13 + + "this.fld_r = charArr.join('');\n"
4.14 )
4.15 public String(char value[]) {
4.16 }
4.17 @@ -199,12 +199,12 @@
4.18 * If the {@code offset} and {@code count} arguments index
4.19 * characters outside the bounds of the {@code value} array
4.20 */
4.21 - @JavaScriptBody(args = { "self", "charArr", "off", "cnt" }, body =
4.22 + @JavaScriptBody(args = { "charArr", "off", "cnt" }, body =
4.23 "var up = off + cnt;\n" +
4.24 "for (var i = off; i < up; i++) {\n" +
4.25 " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n" +
4.26 "}\n" +
4.27 - "self.fld_r = charArr.slice(off, up).join(\"\");\n"
4.28 + "this.fld_r = charArr.slice(off, up).join(\"\");\n"
4.29 )
4.30 public String(char value[], int offset, int count) {
4.31 }
4.32 @@ -618,7 +618,7 @@
4.33 * @return the length of the sequence of characters represented by this
4.34 * object.
4.35 */
4.36 - @JavaScriptBody(args = "self", body = "return self.toString().length;")
4.37 + @JavaScriptBody(args = {}, body = "return this.toString().length;")
4.38 public int length() {
4.39 throw new UnsupportedOperationException();
4.40 }
4.41 @@ -631,7 +631,7 @@
4.42 *
4.43 * @since 1.6
4.44 */
4.45 - @JavaScriptBody(args = "self", body="return self.toString().length === 0;")
4.46 + @JavaScriptBody(args = {}, body="return this.toString().length === 0;")
4.47 public boolean isEmpty() {
4.48 return length() == 0;
4.49 }
4.50 @@ -654,8 +654,8 @@
4.51 * argument is negative or not less than the length of this
4.52 * string.
4.53 */
4.54 - @JavaScriptBody(args = { "self", "index" },
4.55 - body = "return self.toString().charCodeAt(index);"
4.56 + @JavaScriptBody(args = { "index" },
4.57 + body = "return this.toString().charCodeAt(index);"
4.58 )
4.59 public char charAt(int index) {
4.60 throw new UnsupportedOperationException();
4.61 @@ -780,8 +780,8 @@
4.62 * Copy characters from this string into dst starting at dstBegin.
4.63 * This method doesn't perform any range checking.
4.64 */
4.65 - @JavaScriptBody(args = { "self", "arr", "to" }, body =
4.66 - "var s = self.toString();\n" +
4.67 + @JavaScriptBody(args = { "arr", "to" }, body =
4.68 + "var s = this.toString();\n" +
4.69 "for (var i = 0; i < s.length; i++) {\n" +
4.70 " arr[to++] = s[i];\n" +
4.71 "}"
4.72 @@ -820,8 +820,8 @@
4.73 * <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than
4.74 * <code>dst.length</code></ul>
4.75 */
4.76 - @JavaScriptBody(args = { "self", "beg", "end", "arr", "dst" }, body=
4.77 - "var s = self.toString();\n" +
4.78 + @JavaScriptBody(args = { "beg", "end", "arr", "dst" }, body=
4.79 + "var s = this.toString();\n" +
4.80 "while (beg < end) {\n" +
4.81 " arr[dst++] = s[beg++];\n" +
4.82 "}\n"
4.83 @@ -993,9 +993,9 @@
4.84 * @see #compareTo(String)
4.85 * @see #equalsIgnoreCase(String)
4.86 */
4.87 - @JavaScriptBody(args = { "self", "obj" }, body =
4.88 + @JavaScriptBody(args = { "obj" }, body =
4.89 "return obj.$instOf_java_lang_String && "
4.90 - + "self.toString() === obj.toString();"
4.91 + + "this.toString() === obj.toString();"
4.92 )
4.93 public boolean equals(Object anObject) {
4.94 if (this == anObject) {
4.95 @@ -1420,9 +1420,9 @@
4.96 * this.substring(toffset).startsWith(prefix)
4.97 * </pre>
4.98 */
4.99 - @JavaScriptBody(args = { "self", "find", "from" }, body=
4.100 + @JavaScriptBody(args = { "find", "from" }, body=
4.101 "find = find.toString();\n" +
4.102 - "return self.toString().substring(from, from + find.length) === find;\n"
4.103 + "return this.toString().substring(from, from + find.length) === find;\n"
4.104 )
4.105 public boolean startsWith(String prefix, int toffset) {
4.106 char ta[] = toCharArray();
4.107 @@ -1570,9 +1570,9 @@
4.108 * than or equal to <code>fromIndex</code>, or <code>-1</code>
4.109 * if the character does not occur.
4.110 */
4.111 - @JavaScriptBody(args = { "self", "ch", "from" }, body =
4.112 + @JavaScriptBody(args = { "ch", "from" }, body =
4.113 "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" +
4.114 - "return self.toString().indexOf(ch, from);\n"
4.115 + "return this.toString().indexOf(ch, from);\n"
4.116 )
4.117 public int indexOf(int ch, int fromIndex) {
4.118 if (fromIndex < 0) {
4.119 @@ -1679,9 +1679,9 @@
4.120 * than or equal to <code>fromIndex</code>, or <code>-1</code>
4.121 * if the character does not occur before that point.
4.122 */
4.123 - @JavaScriptBody(args = { "self", "ch", "from" }, body =
4.124 + @JavaScriptBody(args = { "ch", "from" }, body =
4.125 "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" +
4.126 - "return self.toString().lastIndexOf(ch, from);"
4.127 + "return this.toString().lastIndexOf(ch, from);"
4.128 )
4.129 public int lastIndexOf(int ch, int fromIndex) {
4.130 if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
4.131 @@ -1754,8 +1754,8 @@
4.132 * starting at the specified index,
4.133 * or {@code -1} if there is no such occurrence.
4.134 */
4.135 - @JavaScriptBody(args = { "self", "str", "fromIndex" }, body =
4.136 - "return self.toString().indexOf(str.toString(), fromIndex);"
4.137 + @JavaScriptBody(args = { "str", "fromIndex" }, body =
4.138 + "return this.toString().indexOf(str.toString(), fromIndex);"
4.139 )
4.140 public native int indexOf(String str, int fromIndex);
4.141
4.142 @@ -1794,8 +1794,8 @@
4.143 * searching backward from the specified index,
4.144 * or {@code -1} if there is no such occurrence.
4.145 */
4.146 - @JavaScriptBody(args = { "self", "s", "from" }, body =
4.147 - "return self.toString().lastIndexOf(s.toString(), from);"
4.148 + @JavaScriptBody(args = { "s", "from" }, body =
4.149 + "return this.toString().lastIndexOf(s.toString(), from);"
4.150 )
4.151 public int lastIndexOf(String str, int fromIndex) {
4.152 return lastIndexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex);
4.153 @@ -1903,8 +1903,8 @@
4.154 * <code>beginIndex</code> is larger than
4.155 * <code>endIndex</code>.
4.156 */
4.157 - @JavaScriptBody(args = { "self", "beginIndex", "endIndex" }, body =
4.158 - "return self.toString().substring(beginIndex, endIndex);"
4.159 + @JavaScriptBody(args = { "beginIndex", "endIndex" }, body =
4.160 + "return this.toString().substring(beginIndex, endIndex);"
4.161 )
4.162 public String substring(int beginIndex, int endIndex) {
4.163 if (beginIndex < 0) {
4.164 @@ -2012,10 +2012,10 @@
4.165 * @return a string derived from this string by replacing every
4.166 * occurrence of <code>oldChar</code> with <code>newChar</code>.
4.167 */
4.168 - @JavaScriptBody(args = { "self", "arg1", "arg2" }, body =
4.169 + @JavaScriptBody(args = { "arg1", "arg2" }, body =
4.170 "if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);\n" +
4.171 "if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);\n" +
4.172 - "var s = self.toString();\n" +
4.173 + "var s = this.toString();\n" +
4.174 "for (;;) {\n" +
4.175 " var ret = s.replace(arg1, arg2);\n" +
4.176 " if (ret === s) {\n" +
4.177 @@ -2078,8 +2078,8 @@
4.178 * @since 1.4
4.179 * @spec JSR-51
4.180 */
4.181 - @JavaScriptBody(args = { "self", "regex" }, body =
4.182 - "self = self.toString();\n"
4.183 + @JavaScriptBody(args = { "regex" }, body =
4.184 + "var self = this.toString();\n"
4.185 + "var re = new RegExp(regex.toString());\n"
4.186 + "var r = re.exec(self);\n"
4.187 + "return r != null && r.length > 0 && self.length == r[0].length;"
4.188 @@ -2496,7 +2496,7 @@
4.189 * @return the <code>String</code>, converted to lowercase.
4.190 * @see java.lang.String#toLowerCase(Locale)
4.191 */
4.192 - @JavaScriptBody(args = "self", body = "return self.toLowerCase();")
4.193 + @JavaScriptBody(args = {}, body = "return this.toLowerCase();")
4.194 public String toLowerCase() {
4.195 throw new UnsupportedOperationException("Should be supported but without connection to locale");
4.196 }
4.197 @@ -2662,7 +2662,7 @@
4.198 * @return the <code>String</code>, converted to uppercase.
4.199 * @see java.lang.String#toUpperCase(Locale)
4.200 */
4.201 - @JavaScriptBody(args = "self", body = "return self.toUpperCase();")
4.202 + @JavaScriptBody(args = {}, body = "return this.toUpperCase();")
4.203 public String toUpperCase() {
4.204 throw new UnsupportedOperationException();
4.205 }
4.206 @@ -2718,7 +2718,7 @@
4.207 *
4.208 * @return the string itself.
4.209 */
4.210 - @JavaScriptBody(args = "self", body = "return self.toString();")
4.211 + @JavaScriptBody(args = {}, body = "return this.toString();")
4.212 public String toString() {
4.213 return this;
4.214 }
5.1 --- a/emul/src/main/java/java/lang/Throwable.java Mon Jan 14 10:57:51 2013 +0100
5.2 +++ b/emul/src/main/java/java/lang/Throwable.java Mon Jan 14 11:30:56 2013 +0100
5.3 @@ -783,7 +783,7 @@
5.4 return this;
5.5 }
5.6
5.7 - @JavaScriptBody(args = { "self", "dummy" }, body = "")
5.8 + @JavaScriptBody(args = { "dummy" }, body = "")
5.9 private native Throwable fillInStackTrace(int dummy);
5.10
5.11 /**
6.1 --- a/emul/src/main/java/java/lang/reflect/Method.java Mon Jan 14 10:57:51 2013 +0100
6.2 +++ b/emul/src/main/java/java/lang/reflect/Method.java Mon Jan 14 11:30:56 2013 +0100
6.3 @@ -646,10 +646,10 @@
6.4 return Modifier.isSynthetic(getModifiers());
6.5 }
6.6
6.7 - @JavaScriptBody(args = { "self", "ac" },
6.8 + @JavaScriptBody(args = { "ac" },
6.9 body =
6.10 - "if (self.fld_data.anno) {"
6.11 - + " return self.fld_data.anno['L' + ac.jvmName + ';'];"
6.12 + "if (this.fld_data.anno) {"
6.13 + + " return this.fld_data.anno['L' + ac.jvmName + ';'];"
6.14 + "} else return null;"
6.15 )
6.16 private Object getAnnotationData(Class<?> annotationClass) {
7.1 --- a/javap/src/main/java/org/apidesign/javap/Vector.java Mon Jan 14 10:57:51 2013 +0100
7.2 +++ b/javap/src/main/java/org/apidesign/javap/Vector.java Mon Jan 14 11:30:56 2013 +0100
7.3 @@ -37,8 +37,8 @@
7.4 void add(Object objectType) {
7.5 addElement(objectType);
7.6 }
7.7 - @JavaScriptBody(args = { "self", "obj" }, body =
7.8 - "self.push(obj);"
7.9 + @JavaScriptBody(args = { "obj" }, body =
7.10 + "this.push(obj);"
7.11 )
7.12 void addElement(Object obj) {
7.13 final int s = size();
7.14 @@ -46,16 +46,16 @@
7.15 setElementAt(obj, s);
7.16 }
7.17
7.18 - @JavaScriptBody(args = { "self" }, body =
7.19 - "return self.length;"
7.20 + @JavaScriptBody(args = { }, body =
7.21 + "return this.length;"
7.22 )
7.23 int size() {
7.24 return arr == null ? 0 : arr.length;
7.25 }
7.26
7.27 - @JavaScriptBody(args = { "self", "newArr" }, body =
7.28 - "for (var i = 0; i < self.length; i++) {\n"
7.29 - + " newArr[i] = self[i];\n"
7.30 + @JavaScriptBody(args = { "newArr" }, body =
7.31 + "for (var i = 0; i < this.length; i++) {\n"
7.32 + + " newArr[i] = this[i];\n"
7.33 + "}\n")
7.34 void copyInto(Object[] newArr) {
7.35 if (arr == null) {
7.36 @@ -67,8 +67,8 @@
7.37 }
7.38 }
7.39
7.40 - @JavaScriptBody(args = { "self", "index" }, body =
7.41 - "return self[index];"
7.42 + @JavaScriptBody(args = { "index" }, body =
7.43 + "return this[index];"
7.44 )
7.45 Object elementAt(int index) {
7.46 return arr[index];
7.47 @@ -80,8 +80,8 @@
7.48 arr = newArr;
7.49 }
7.50
7.51 - @JavaScriptBody(args = { "self", "val", "index" }, body =
7.52 - "self[index] = val;"
7.53 + @JavaScriptBody(args = { "val", "index" }, body =
7.54 + "this[index] = val;"
7.55 )
7.56 void setElementAt(Object val, int index) {
7.57 arr[index] = val;
8.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Mon Jan 14 10:57:51 2013 +0100
8.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Mon Jan 14 11:30:56 2013 +0100
8.3 @@ -51,9 +51,9 @@
8.4 * @param r the runnable to execute, never null
8.5 */
8.6 @JavaScriptBody(
8.7 - args={ "self", "ev", "r" },
8.8 - body="var e = window.document.getElementById(self.fld_id);\n"
8.9 - + "e[ev.fld_id] = function() { r.run__V(r); };\n"
8.10 + args={ "ev", "r" },
8.11 + body="var e = window.document.getElementById(this.fld_id);\n"
8.12 + + "e[ev.fld_id] = function() { r.run__V(); };\n"
8.13 )
8.14 final native void on(OnEvent ev, Runnable r);
8.15
9.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Jan 14 10:57:51 2013 +0100
9.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Jan 14 11:30:56 2013 +0100
9.3 @@ -1452,21 +1452,13 @@
9.4 out.append(prefix).append(mn);
9.5 out.append(" = function(");
9.6 String space = "";
9.7 - int index;
9.8 - if (!isStatic) {
9.9 - index = 1;
9.10 - } else {
9.11 - index = 0;
9.12 - }
9.13 + int index = 0;
9.14 for (int i = 0; i < cnt.length(); i++) {
9.15 out.append(space);
9.16 space = outputArg(out, p.args, index);
9.17 index++;
9.18 }
9.19 out.append(") {").append("\n");
9.20 - if (!isStatic) {
9.21 - out.append(" var ").append(p.args[0]).append(" = this;\n");
9.22 - }
9.23 out.append(p.body);
9.24 out.append("\n}\n");
9.25 return mn;
10.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Mon Jan 14 10:57:51 2013 +0100
10.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Mon Jan 14 11:30:56 2013 +0100
10.3 @@ -112,11 +112,11 @@
10.4 this.lazy = vm;
10.5 }
10.6
10.7 - @JavaScriptBody(args = {"self", "n"},
10.8 + @JavaScriptBody(args = {"n"},
10.9 body =
10.10 "var cls = n.replace__Ljava_lang_String_2CC('/','_').toString();"
10.11 + "\nvar dot = n.replace__Ljava_lang_String_2CC('/','.').toString();"
10.12 - + "\nvar lazy = self.fld_lazy;"
10.13 + + "\nvar lazy = this.fld_lazy;"
10.14 + "\nvar loader = lazy.fld_loader;"
10.15 + "\nvar vm = loader.vm;"
10.16 + "\nif (vm[cls]) return false;"