1.1 --- a/core/pom.xml Thu Nov 29 20:19:00 2012 +0100
1.2 +++ b/core/pom.xml Mon Dec 03 14:44:49 2012 +0100
1.3 @@ -5,12 +5,12 @@
1.4 <parent>
1.5 <groupId>org.apidesign</groupId>
1.6 <artifactId>bck2brwsr</artifactId>
1.7 - <version>1.0-SNAPSHOT</version>
1.8 + <version>0.3-SNAPSHOT</version>
1.9 </parent>
1.10 <groupId>org.apidesign.bck2brwsr</groupId>
1.11 <artifactId>core</artifactId>
1.12 - <version>1.0-SNAPSHOT</version>
1.13 - <name>core</name>
1.14 + <version>0.3-SNAPSHOT</version>
1.15 + <name>Core JS Annotations</name>
1.16 <url>http://maven.apache.org</url>
1.17 <build>
1.18 <plugins>
1.19 @@ -36,4 +36,6 @@
1.20 <scope>test</scope>
1.21 </dependency>
1.22 </dependencies>
1.23 + <description>Contains esential annotations for associating JavaScript code with
1.24 +methods and classes.</description>
1.25 </project>
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptOnly.java Mon Dec 03 14:44:49 2012 +0100
2.3 @@ -0,0 +1,37 @@
2.4 +/**
2.5 + * Back 2 Browser Bytecode Translator
2.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
2.7 + *
2.8 + * This program is free software: you can redistribute it and/or modify
2.9 + * it under the terms of the GNU General Public License as published by
2.10 + * the Free Software Foundation, version 2 of the License.
2.11 + *
2.12 + * This program is distributed in the hope that it will be useful,
2.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2.15 + * GNU General Public License for more details.
2.16 + *
2.17 + * You should have received a copy of the GNU General Public License
2.18 + * along with this program. Look for COPYING file in the top folder.
2.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
2.20 + */
2.21 +package org.apidesign.bck2brwsr.core;
2.22 +
2.23 +import java.lang.annotation.ElementType;
2.24 +import java.lang.annotation.Retention;
2.25 +import java.lang.annotation.RetentionPolicy;
2.26 +import java.lang.annotation.Target;
2.27 +
2.28 +/** Don't include given field or method in generated JavaScript. Rather
2.29 + * generate completely independent JavaScript code.
2.30 + *
2.31 + * @author Jaroslav Tulach <jtulach@netbeans.org>
2.32 + */
2.33 +@Retention(RetentionPolicy.CLASS)
2.34 +@Target({ ElementType.METHOD, ElementType.FIELD })
2.35 +public @interface JavaScriptOnly {
2.36 + /** name of the variable to assign given value to */
2.37 + String name() default "";
2.38 + /** value to assign to given field */
2.39 + String value() default "";
2.40 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptPrototype.java Mon Dec 03 14:44:49 2012 +0100
3.3 @@ -0,0 +1,41 @@
3.4 +/**
3.5 + * Back 2 Browser Bytecode Translator
3.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
3.7 + *
3.8 + * This program is free software: you can redistribute it and/or modify
3.9 + * it under the terms of the GNU General Public License as published by
3.10 + * the Free Software Foundation, version 2 of the License.
3.11 + *
3.12 + * This program is distributed in the hope that it will be useful,
3.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3.15 + * GNU General Public License for more details.
3.16 + *
3.17 + * You should have received a copy of the GNU General Public License
3.18 + * along with this program. Look for COPYING file in the top folder.
3.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
3.20 + */
3.21 +package org.apidesign.bck2brwsr.core;
3.22 +
3.23 +import java.lang.annotation.ElementType;
3.24 +import java.lang.annotation.Retention;
3.25 +import java.lang.annotation.RetentionPolicy;
3.26 +import java.lang.annotation.Target;
3.27 +
3.28 +/** Controls how JavaScript inheritance should be handled.
3.29 + * @author Jaroslav Tulach <jtulach@netbeans.org>
3.30 + */
3.31 +@Retention(RetentionPolicy.CLASS)
3.32 +@Target({ ElementType.TYPE })
3.33 +public @interface JavaScriptPrototype {
3.34 + /** Expression that identifies the function where all methods
3.35 + * should be added into.
3.36 + * @return name of function to contain methods found in given class
3.37 + */
3.38 + String container();
3.39 + /** Expression that defines the way to construct prototype for this
3.40 + * class.
3.41 + * @return expression to construct prototype
3.42 + */
3.43 + String prototype();
3.44 +}
4.1 --- a/core/src/main/java/org/apidesign/bck2brwsr/core/NoJavaScript.java Thu Nov 29 20:19:00 2012 +0100
4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
4.3 @@ -1,33 +0,0 @@
4.4 -/**
4.5 - * Back 2 Browser Bytecode Translator
4.6 - * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
4.7 - *
4.8 - * This program is free software: you can redistribute it and/or modify
4.9 - * it under the terms of the GNU General Public License as published by
4.10 - * the Free Software Foundation, version 2 of the License.
4.11 - *
4.12 - * This program is distributed in the hope that it will be useful,
4.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
4.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4.15 - * GNU General Public License for more details.
4.16 - *
4.17 - * You should have received a copy of the GNU General Public License
4.18 - * along with this program. Look for COPYING file in the top folder.
4.19 - * If not, see http://opensource.org/licenses/GPL-2.0.
4.20 - */
4.21 -package org.apidesign.bck2brwsr.core;
4.22 -
4.23 -import java.lang.annotation.ElementType;
4.24 -import java.lang.annotation.Retention;
4.25 -import java.lang.annotation.RetentionPolicy;
4.26 -import java.lang.annotation.Target;
4.27 -
4.28 -/** Don't include given field or method in generated JavaScript.
4.29 - *
4.30 - * @author Jaroslav Tulach <jtulach@netbeans.org>
4.31 - */
4.32 -@Retention(RetentionPolicy.CLASS)
4.33 -@Target({ ElementType.METHOD, ElementType.FIELD })
4.34 -public @interface NoJavaScript {
4.35 -
4.36 -}
5.1 --- a/emul/pom.xml Thu Nov 29 20:19:00 2012 +0100
5.2 +++ b/emul/pom.xml Mon Dec 03 14:44:49 2012 +0100
5.3 @@ -5,11 +5,11 @@
5.4 <parent>
5.5 <groupId>org.apidesign</groupId>
5.6 <artifactId>bck2brwsr</artifactId>
5.7 - <version>1.0-SNAPSHOT</version>
5.8 + <version>0.3-SNAPSHOT</version>
5.9 </parent>
5.10 <groupId>org.apidesign.bck2brwsr</groupId>
5.11 <artifactId>emul</artifactId>
5.12 - <version>1.0-SNAPSHOT</version>
5.13 + <version>0.3-SNAPSHOT</version>
5.14 <name>Java API Emulation</name>
5.15 <url>http://maven.apache.org</url>
5.16 <properties>
5.17 @@ -19,7 +19,7 @@
5.18 <dependency>
5.19 <groupId>org.apidesign.bck2brwsr</groupId>
5.20 <artifactId>core</artifactId>
5.21 - <version>1.0-SNAPSHOT</version>
5.22 + <version>0.3-SNAPSHOT</version>
5.23 <type>jar</type>
5.24 </dependency>
5.25 </dependencies>
6.1 --- a/emul/src/main/java/java/lang/AbstractStringBuilder.java Thu Nov 29 20:19:00 2012 +0100
6.2 +++ b/emul/src/main/java/java/lang/AbstractStringBuilder.java Mon Dec 03 14:44:49 2012 +0100
6.3 @@ -602,7 +602,7 @@
6.4 */
6.5 @JavaScriptBody(
6.6 args={ "self", "i" },
6.7 - body="return java_lang_AbstractStringBuilder_appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());"
6.8 + body="return java_lang_AbstractStringBuilder(true).appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());"
6.9 )
6.10 public AbstractStringBuilder append(int i) {
6.11 if (i == Integer.MIN_VALUE) {
7.1 --- a/emul/src/main/java/java/lang/ClassLoader.java Thu Nov 29 20:19:00 2012 +0100
7.2 +++ b/emul/src/main/java/java/lang/ClassLoader.java Mon Dec 03 14:44:49 2012 +0100
7.3 @@ -29,6 +29,7 @@
7.4 import java.net.URL;
7.5 import java.util.Enumeration;
7.6 import java.util.NoSuchElementException;
7.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
7.8
7.9 /**
7.10 * A class loader is an object that is responsible for loading classes. The
7.11 @@ -147,6 +148,7 @@
7.12 */
7.13 public abstract class ClassLoader {
7.14
7.15 + @JavaScriptBody(args = {}, body = "")
7.16 private static native void registerNatives();
7.17 static {
7.18 registerNatives();
8.1 --- a/emul/src/main/java/java/lang/Object.java Thu Nov 29 20:19:00 2012 +0100
8.2 +++ b/emul/src/main/java/java/lang/Object.java Mon Dec 03 14:44:49 2012 +0100
8.3 @@ -25,6 +25,9 @@
8.4
8.5 package java.lang;
8.6
8.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
8.8 +import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
8.9 +
8.10 /**
8.11 * Class {@code Object} is the root of the class hierarchy.
8.12 * Every class has {@code Object} as a superclass. All objects,
8.13 @@ -34,8 +37,10 @@
8.14 * @see java.lang.Class
8.15 * @since JDK1.0
8.16 */
8.17 +@JavaScriptPrototype(container = "Object.prototype", prototype = "new Object")
8.18 public class Object {
8.19
8.20 + @JavaScriptBody(args = {}, body = "")
8.21 private static native void registerNatives();
8.22 static {
8.23 registerNatives();
9.1 --- a/emul/src/main/java/java/lang/String.java Thu Nov 29 20:19:00 2012 +0100
9.2 +++ b/emul/src/main/java/java/lang/String.java Mon Dec 03 14:44:49 2012 +0100
9.3 @@ -25,8 +25,11 @@
9.4
9.5 package java.lang;
9.6
9.7 +import java.util.Comparator;
9.8 import org.apidesign.bck2brwsr.core.ExtraJavaScript;
9.9 -import java.util.Comparator;
9.10 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
9.11 +import org.apidesign.bck2brwsr.core.JavaScriptOnly;
9.12 +import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
9.13
9.14 /**
9.15 * The <code>String</code> class represents character strings. All
9.16 @@ -99,25 +102,29 @@
9.17
9.18 @ExtraJavaScript(
9.19 resource="/org/apidesign/vm4brwsr/emul/java_lang_String.js",
9.20 - processByteCode=false
9.21 + processByteCode=true
9.22 )
9.23 +@JavaScriptPrototype(container = "String.prototype", prototype = "new String")
9.24 public final class String
9.25 implements java.io.Serializable, Comparable<String>, CharSequence
9.26 {
9.27 - /** The value is used for character storage. */
9.28 - private final char value[];
9.29 -
9.30 - /** The offset is the first index of the storage that is used. */
9.31 - private final int offset;
9.32 -
9.33 - /** The count is the number of characters in the String. */
9.34 - private final int count;
9.35 -
9.36 + @JavaScriptOnly
9.37 /** Cache the hash code for the string */
9.38 private int hash; // Default to 0
9.39 +
9.40 + /** real string to delegate to */
9.41 + private Object r;
9.42
9.43 /** use serialVersionUID from JDK 1.0.2 for interoperability */
9.44 private static final long serialVersionUID = -6849794470754667710L;
9.45 +
9.46 + @JavaScriptOnly(name="toString", value="function() { return this.fld_r; }")
9.47 + private static void jsToString() {
9.48 + }
9.49 +
9.50 + @JavaScriptOnly(name="valueOf", value="function() { return this.toString().valueOf(); }")
9.51 + private static void jsValudOf() {
9.52 + }
9.53
9.54 /**
9.55 * Class String is special cased within the Serialization Stream Protocol.
9.56 @@ -140,9 +147,7 @@
9.57 * unnecessary since Strings are immutable.
9.58 */
9.59 public String() {
9.60 - this.offset = 0;
9.61 - this.count = 0;
9.62 - this.value = new char[0];
9.63 + this.r = "";
9.64 }
9.65
9.66 /**
9.67 @@ -156,23 +161,7 @@
9.68 * A {@code String}
9.69 */
9.70 public String(String original) {
9.71 - int size = original.count;
9.72 - char[] originalValue = original.value;
9.73 - char[] v;
9.74 - if (originalValue.length > size) {
9.75 - // The array representing the String is bigger than the new
9.76 - // String itself. Perhaps this constructor is being called
9.77 - // in order to trim the baggage, so make a copy of the array.
9.78 - int off = original.offset;
9.79 - v = AbstractStringBuilder.copyOfRange(originalValue, off, off+size);
9.80 - } else {
9.81 - // The array representing the String is the same
9.82 - // size as the String, so no point in making a copy.
9.83 - v = originalValue;
9.84 - }
9.85 - this.offset = 0;
9.86 - this.count = size;
9.87 - this.value = v;
9.88 + this.r = original.toString();
9.89 }
9.90
9.91 /**
9.92 @@ -184,11 +173,13 @@
9.93 * @param value
9.94 * The initial value of the string
9.95 */
9.96 + @JavaScriptBody(args = { "self", "charArr" }, body=
9.97 + "for (var i = 0; i < charArr.length; i++) {\n"
9.98 + + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n"
9.99 + + "}\n"
9.100 + + "self.fld_r = charArr.join('');\n"
9.101 + )
9.102 public String(char value[]) {
9.103 - int size = value.length;
9.104 - this.offset = 0;
9.105 - this.count = size;
9.106 - this.value = AbstractStringBuilder.copyOf(value, size);
9.107 }
9.108
9.109 /**
9.110 @@ -212,20 +203,14 @@
9.111 * If the {@code offset} and {@code count} arguments index
9.112 * characters outside the bounds of the {@code value} array
9.113 */
9.114 + @JavaScriptBody(args = { "self", "charArr", "off", "cnt" }, body =
9.115 + "var up = off + cnt;\n" +
9.116 + "for (var i = off; i < up; i++) {\n" +
9.117 + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n" +
9.118 + "}\n" +
9.119 + "self.fld_r = charArr.slice(off, up).join(\"\");\n"
9.120 + )
9.121 public String(char value[], int offset, int count) {
9.122 - if (offset < 0) {
9.123 - throw new StringIndexOutOfBoundsException(offset);
9.124 - }
9.125 - if (count < 0) {
9.126 - throw new StringIndexOutOfBoundsException(count);
9.127 - }
9.128 - // Note: offset or count might be near -1>>>1.
9.129 - if (offset > value.length - count) {
9.130 - throw new StringIndexOutOfBoundsException(offset + count);
9.131 - }
9.132 - this.offset = 0;
9.133 - this.count = count;
9.134 - this.value = AbstractStringBuilder.copyOfRange(value, offset, offset+count);
9.135 }
9.136
9.137 /**
9.138 @@ -292,9 +277,7 @@
9.139 Character.toSurrogates(c, v, j++);
9.140 }
9.141
9.142 - this.value = v;
9.143 - this.count = n;
9.144 - this.offset = 0;
9.145 + this.r = new String(v, 0, n);
9.146 }
9.147
9.148 /**
9.149 @@ -351,9 +334,7 @@
9.150 value[i] = (char) (hibyte | (ascii[i + offset] & 0xff));
9.151 }
9.152 }
9.153 - this.offset = 0;
9.154 - this.count = count;
9.155 - this.value = value;
9.156 + this.r = new String(value, 0, count);
9.157 }
9.158
9.159 /**
9.160 @@ -578,9 +559,7 @@
9.161 for (int i = 0; i < length; i++) {
9.162 v[i] = (char)bytes[offset++];
9.163 }
9.164 - this.offset = 0;
9.165 - this.count = v.length;
9.166 - this.value = v;
9.167 + this.r = new String(v, 0, v.length);
9.168 }
9.169
9.170 /**
9.171 @@ -613,10 +592,7 @@
9.172 * A {@code StringBuffer}
9.173 */
9.174 public String(StringBuffer buffer) {
9.175 - String result = buffer.toString();
9.176 - this.value = result.value;
9.177 - this.count = result.count;
9.178 - this.offset = result.offset;
9.179 + this.r = buffer.toString();
9.180 }
9.181
9.182 /**
9.183 @@ -635,10 +611,7 @@
9.184 * @since 1.5
9.185 */
9.186 public String(StringBuilder builder) {
9.187 - String result = builder.toString();
9.188 - this.value = result.value;
9.189 - this.count = result.count;
9.190 - this.offset = result.offset;
9.191 + this.r = builder.toString();
9.192 }
9.193
9.194 /**
9.195 @@ -649,8 +622,9 @@
9.196 * @return the length of the sequence of characters represented by this
9.197 * object.
9.198 */
9.199 + @JavaScriptBody(args = "self", body = "return self.toString().length;")
9.200 public int length() {
9.201 - return count;
9.202 + throw new UnsupportedOperationException();
9.203 }
9.204
9.205 /**
9.206 @@ -661,8 +635,9 @@
9.207 *
9.208 * @since 1.6
9.209 */
9.210 + @JavaScriptBody(args = "self", body="return self.toString().length === 0;")
9.211 public boolean isEmpty() {
9.212 - return count == 0;
9.213 + return length() == 0;
9.214 }
9.215
9.216 /**
9.217 @@ -683,11 +658,11 @@
9.218 * argument is negative or not less than the length of this
9.219 * string.
9.220 */
9.221 + @JavaScriptBody(args = { "self", "index" },
9.222 + body = "return self.toString().charCodeAt(index);"
9.223 + )
9.224 public char charAt(int index) {
9.225 - if ((index < 0) || (index >= count)) {
9.226 - throw new StringIndexOutOfBoundsException(index);
9.227 - }
9.228 - return value[index + offset];
9.229 + throw new UnsupportedOperationException();
9.230 }
9.231
9.232 /**
9.233 @@ -713,10 +688,10 @@
9.234 * @since 1.5
9.235 */
9.236 public int codePointAt(int index) {
9.237 - if ((index < 0) || (index >= count)) {
9.238 + if ((index < 0) || (index >= length())) {
9.239 throw new StringIndexOutOfBoundsException(index);
9.240 }
9.241 - return Character.codePointAtImpl(value, offset + index, offset + count);
9.242 + return Character.codePointAtImpl(toCharArray(), offset() + index, offset() + length());
9.243 }
9.244
9.245 /**
9.246 @@ -743,10 +718,10 @@
9.247 */
9.248 public int codePointBefore(int index) {
9.249 int i = index - 1;
9.250 - if ((i < 0) || (i >= count)) {
9.251 + if ((i < 0) || (i >= length())) {
9.252 throw new StringIndexOutOfBoundsException(index);
9.253 }
9.254 - return Character.codePointBeforeImpl(value, offset + index, offset);
9.255 + return Character.codePointBeforeImpl(toCharArray(), offset() + index, offset());
9.256 }
9.257
9.258 /**
9.259 @@ -771,10 +746,10 @@
9.260 * @since 1.5
9.261 */
9.262 public int codePointCount(int beginIndex, int endIndex) {
9.263 - if (beginIndex < 0 || endIndex > count || beginIndex > endIndex) {
9.264 + if (beginIndex < 0 || endIndex > length() || beginIndex > endIndex) {
9.265 throw new IndexOutOfBoundsException();
9.266 }
9.267 - return Character.codePointCountImpl(value, offset+beginIndex, endIndex-beginIndex);
9.268 + return Character.codePointCountImpl(toCharArray(), offset()+beginIndex, endIndex-beginIndex);
9.269 }
9.270
9.271 /**
9.272 @@ -798,19 +773,25 @@
9.273 * @since 1.5
9.274 */
9.275 public int offsetByCodePoints(int index, int codePointOffset) {
9.276 - if (index < 0 || index > count) {
9.277 + if (index < 0 || index > length()) {
9.278 throw new IndexOutOfBoundsException();
9.279 }
9.280 - return Character.offsetByCodePointsImpl(value, offset, count,
9.281 - offset+index, codePointOffset) - offset;
9.282 + return Character.offsetByCodePointsImpl(toCharArray(), offset(), length(),
9.283 + offset()+index, codePointOffset) - offset();
9.284 }
9.285
9.286 /**
9.287 * Copy characters from this string into dst starting at dstBegin.
9.288 * This method doesn't perform any range checking.
9.289 */
9.290 + @JavaScriptBody(args = { "self", "arr", "to" }, body =
9.291 + "var s = self.toString();\n" +
9.292 + "for (var i = 0; i < s.length; i++) {\n" +
9.293 + " arr[to++] = s[i];\n" +
9.294 + "}"
9.295 + )
9.296 void getChars(char dst[], int dstBegin) {
9.297 - AbstractStringBuilder.arraycopy(value, offset, dst, dstBegin, count);
9.298 + AbstractStringBuilder.arraycopy(toCharArray(), offset(), dst, dstBegin, length());
9.299 }
9.300
9.301 /**
9.302 @@ -843,17 +824,23 @@
9.303 * <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than
9.304 * <code>dst.length</code></ul>
9.305 */
9.306 + @JavaScriptBody(args = { "self", "beg", "end", "arr", "dst" }, body=
9.307 + "var s = self.toString();\n" +
9.308 + "while (beg < end) {\n" +
9.309 + " arr[dst++] = s[beg++];\n" +
9.310 + "}\n"
9.311 + )
9.312 public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
9.313 if (srcBegin < 0) {
9.314 throw new StringIndexOutOfBoundsException(srcBegin);
9.315 }
9.316 - if (srcEnd > count) {
9.317 + if (srcEnd > length()) {
9.318 throw new StringIndexOutOfBoundsException(srcEnd);
9.319 }
9.320 if (srcBegin > srcEnd) {
9.321 throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
9.322 }
9.323 - AbstractStringBuilder.arraycopy(value, offset + srcBegin, dst, dstBegin,
9.324 + AbstractStringBuilder.arraycopy(toCharArray(), offset() + srcBegin, dst, dstBegin,
9.325 srcEnd - srcBegin);
9.326 }
9.327
9.328 @@ -905,16 +892,16 @@
9.329 if (srcBegin < 0) {
9.330 throw new StringIndexOutOfBoundsException(srcBegin);
9.331 }
9.332 - if (srcEnd > count) {
9.333 + if (srcEnd > length()) {
9.334 throw new StringIndexOutOfBoundsException(srcEnd);
9.335 }
9.336 if (srcBegin > srcEnd) {
9.337 throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
9.338 }
9.339 int j = dstBegin;
9.340 - int n = offset + srcEnd;
9.341 - int i = offset + srcBegin;
9.342 - char[] val = value; /* avoid getfield opcode */
9.343 + int n = offset() + srcEnd;
9.344 + int i = offset() + srcBegin;
9.345 + char[] val = toCharArray(); /* avoid getfield opcode */
9.346
9.347 while (i < n) {
9.348 dst[j++] = (byte)val[i++];
9.349 @@ -1010,18 +997,22 @@
9.350 * @see #compareTo(String)
9.351 * @see #equalsIgnoreCase(String)
9.352 */
9.353 + @JavaScriptBody(args = { "self", "obj" }, body =
9.354 + "return obj.$instOf_java_lang_String && "
9.355 + + "self.toString() === obj.toString();"
9.356 + )
9.357 public boolean equals(Object anObject) {
9.358 if (this == anObject) {
9.359 return true;
9.360 }
9.361 if (anObject instanceof String) {
9.362 String anotherString = (String)anObject;
9.363 - int n = count;
9.364 - if (n == anotherString.count) {
9.365 - char v1[] = value;
9.366 - char v2[] = anotherString.value;
9.367 - int i = offset;
9.368 - int j = anotherString.offset;
9.369 + int n = length();
9.370 + if (n == anotherString.length()) {
9.371 + char v1[] = toCharArray();
9.372 + char v2[] = anotherString.toCharArray();
9.373 + int i = offset();
9.374 + int j = anotherString.offset();
9.375 while (n-- != 0) {
9.376 if (v1[i++] != v2[j++])
9.377 return false;
9.378 @@ -1067,15 +1058,15 @@
9.379 * @since 1.5
9.380 */
9.381 public boolean contentEquals(CharSequence cs) {
9.382 - if (count != cs.length())
9.383 + if (length() != cs.length())
9.384 return false;
9.385 // Argument is a StringBuffer, StringBuilder
9.386 if (cs instanceof AbstractStringBuilder) {
9.387 - char v1[] = value;
9.388 + char v1[] = toCharArray();
9.389 char v2[] = ((AbstractStringBuilder)cs).getValue();
9.390 - int i = offset;
9.391 + int i = offset();
9.392 int j = 0;
9.393 - int n = count;
9.394 + int n = length();
9.395 while (n-- != 0) {
9.396 if (v1[i++] != v2[j++])
9.397 return false;
9.398 @@ -1086,10 +1077,10 @@
9.399 if (cs.equals(this))
9.400 return true;
9.401 // Argument is a generic CharSequence
9.402 - char v1[] = value;
9.403 - int i = offset;
9.404 + char v1[] = toCharArray();
9.405 + int i = offset();
9.406 int j = 0;
9.407 - int n = count;
9.408 + int n = length();
9.409 while (n-- != 0) {
9.410 if (v1[i++] != cs.charAt(j++))
9.411 return false;
9.412 @@ -1127,8 +1118,8 @@
9.413 */
9.414 public boolean equalsIgnoreCase(String anotherString) {
9.415 return (this == anotherString) ? true :
9.416 - (anotherString != null) && (anotherString.count == count) &&
9.417 - regionMatches(true, 0, anotherString, 0, count);
9.418 + (anotherString != null) && (anotherString.length() == length()) &&
9.419 + regionMatches(true, 0, anotherString, 0, length());
9.420 }
9.421
9.422 /**
9.423 @@ -1173,13 +1164,13 @@
9.424 * lexicographically greater than the string argument.
9.425 */
9.426 public int compareTo(String anotherString) {
9.427 - int len1 = count;
9.428 - int len2 = anotherString.count;
9.429 + int len1 = length();
9.430 + int len2 = anotherString.length();
9.431 int n = Math.min(len1, len2);
9.432 - char v1[] = value;
9.433 - char v2[] = anotherString.value;
9.434 - int i = offset;
9.435 - int j = anotherString.offset;
9.436 + char v1[] = toCharArray();
9.437 + char v2[] = anotherString.toCharArray();
9.438 + int i = offset();
9.439 + int j = anotherString.offset();
9.440
9.441 if (i == j) {
9.442 int k = i;
9.443 @@ -1218,6 +1209,11 @@
9.444 */
9.445 public static final Comparator<String> CASE_INSENSITIVE_ORDER
9.446 = new CaseInsensitiveComparator();
9.447 +
9.448 + private static int offset() {
9.449 + return 0;
9.450 + }
9.451 +
9.452 private static class CaseInsensitiveComparator
9.453 implements Comparator<String>, java.io.Serializable {
9.454 // use serialVersionUID from JDK 1.2.2 for interoperability
9.455 @@ -1304,13 +1300,13 @@
9.456 */
9.457 public boolean regionMatches(int toffset, String other, int ooffset,
9.458 int len) {
9.459 - char ta[] = value;
9.460 - int to = offset + toffset;
9.461 - char pa[] = other.value;
9.462 - int po = other.offset + ooffset;
9.463 + char ta[] = toCharArray();
9.464 + int to = offset() + toffset;
9.465 + char pa[] = other.toCharArray();
9.466 + int po = other.offset() + ooffset;
9.467 // Note: toffset, ooffset, or len might be near -1>>>1.
9.468 - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len)
9.469 - || (ooffset > (long)other.count - len)) {
9.470 + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len)
9.471 + || (ooffset > (long)other.length() - len)) {
9.472 return false;
9.473 }
9.474 while (len-- > 0) {
9.475 @@ -1373,13 +1369,13 @@
9.476 */
9.477 public boolean regionMatches(boolean ignoreCase, int toffset,
9.478 String other, int ooffset, int len) {
9.479 - char ta[] = value;
9.480 - int to = offset + toffset;
9.481 - char pa[] = other.value;
9.482 - int po = other.offset + ooffset;
9.483 + char ta[] = toCharArray();
9.484 + int to = offset() + toffset;
9.485 + char pa[] = other.toCharArray();
9.486 + int po = other.offset() + ooffset;
9.487 // Note: toffset, ooffset, or len might be near -1>>>1.
9.488 - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) ||
9.489 - (ooffset > (long)other.count - len)) {
9.490 + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len) ||
9.491 + (ooffset > (long)other.length() - len)) {
9.492 return false;
9.493 }
9.494 while (len-- > 0) {
9.495 @@ -1428,14 +1424,18 @@
9.496 * this.substring(toffset).startsWith(prefix)
9.497 * </pre>
9.498 */
9.499 + @JavaScriptBody(args = { "self", "find", "from" }, body=
9.500 + "find = find.toString();\n" +
9.501 + "return self.toString().substring(from, find.length) === find;\n"
9.502 + )
9.503 public boolean startsWith(String prefix, int toffset) {
9.504 - char ta[] = value;
9.505 - int to = offset + toffset;
9.506 - char pa[] = prefix.value;
9.507 - int po = prefix.offset;
9.508 - int pc = prefix.count;
9.509 + char ta[] = toCharArray();
9.510 + int to = offset() + toffset;
9.511 + char pa[] = prefix.toCharArray();
9.512 + int po = prefix.offset();
9.513 + int pc = prefix.length();
9.514 // Note: toffset might be near -1>>>1.
9.515 - if ((toffset < 0) || (toffset > count - pc)) {
9.516 + if ((toffset < 0) || (toffset > length() - pc)) {
9.517 return false;
9.518 }
9.519 while (--pc >= 0) {
9.520 @@ -1475,7 +1475,7 @@
9.521 * as determined by the {@link #equals(Object)} method.
9.522 */
9.523 public boolean endsWith(String suffix) {
9.524 - return startsWith(suffix, count - suffix.count);
9.525 + return startsWith(suffix, length() - suffix.length());
9.526 }
9.527
9.528 /**
9.529 @@ -1491,12 +1491,21 @@
9.530 *
9.531 * @return a hash code value for this object.
9.532 */
9.533 + @JavaScriptBody(args = "self", body =
9.534 + "var h = 0;\n" +
9.535 + "var s = self.toString();\n" +
9.536 + "for (var i = 0; i < s.length; i++) {\n" +
9.537 + " var high = (h >> 16) & 0xffff, low = h & 0xffff;\n" +
9.538 + " h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;\n" +
9.539 + "}\n" +
9.540 + "return h;\n"
9.541 + )
9.542 public int hashCode() {
9.543 int h = hash;
9.544 - if (h == 0 && count > 0) {
9.545 - int off = offset;
9.546 - char val[] = value;
9.547 - int len = count;
9.548 + if (h == 0 && length() > 0) {
9.549 + int off = offset();
9.550 + char val[] = toCharArray();
9.551 + int len = length();
9.552
9.553 for (int i = 0; i < len; i++) {
9.554 h = 31*h + val[off++];
9.555 @@ -1573,10 +1582,14 @@
9.556 * than or equal to <code>fromIndex</code>, or <code>-1</code>
9.557 * if the character does not occur.
9.558 */
9.559 + @JavaScriptBody(args = { "self", "ch", "from" }, body =
9.560 + "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" +
9.561 + "return self.toString().indexOf(ch, from);\n"
9.562 + )
9.563 public int indexOf(int ch, int fromIndex) {
9.564 if (fromIndex < 0) {
9.565 fromIndex = 0;
9.566 - } else if (fromIndex >= count) {
9.567 + } else if (fromIndex >= length()) {
9.568 // Note: fromIndex might be near -1>>>1.
9.569 return -1;
9.570 }
9.571 @@ -1584,9 +1597,9 @@
9.572 if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
9.573 // handle most cases here (ch is a BMP code point or a
9.574 // negative value (invalid code point))
9.575 - final char[] value = this.value;
9.576 - final int offset = this.offset;
9.577 - final int max = offset + count;
9.578 + final char[] value = this.toCharArray();
9.579 + final int offset = this.offset();
9.580 + final int max = offset + length();
9.581 for (int i = offset + fromIndex; i < max ; i++) {
9.582 if (value[i] == ch) {
9.583 return i - offset;
9.584 @@ -1603,11 +1616,11 @@
9.585 */
9.586 private int indexOfSupplementary(int ch, int fromIndex) {
9.587 if (Character.isValidCodePoint(ch)) {
9.588 - final char[] value = this.value;
9.589 - final int offset = this.offset;
9.590 + final char[] value = this.toCharArray();
9.591 + final int offset = this.offset();
9.592 final char hi = Character.highSurrogate(ch);
9.593 final char lo = Character.lowSurrogate(ch);
9.594 - final int max = offset + count - 1;
9.595 + final int max = offset + length() - 1;
9.596 for (int i = offset + fromIndex; i < max; i++) {
9.597 if (value[i] == hi && value[i+1] == lo) {
9.598 return i - offset;
9.599 @@ -1641,7 +1654,7 @@
9.600 * <code>-1</code> if the character does not occur.
9.601 */
9.602 public int lastIndexOf(int ch) {
9.603 - return lastIndexOf(ch, count - 1);
9.604 + return lastIndexOf(ch, length() - 1);
9.605 }
9.606
9.607 /**
9.608 @@ -1682,9 +1695,9 @@
9.609 if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
9.610 // handle most cases here (ch is a BMP code point or a
9.611 // negative value (invalid code point))
9.612 - final char[] value = this.value;
9.613 - final int offset = this.offset;
9.614 - int i = offset + Math.min(fromIndex, count - 1);
9.615 + final char[] value = this.toCharArray();
9.616 + final int offset = this.offset();
9.617 + int i = offset + Math.min(fromIndex, length() - 1);
9.618 for (; i >= offset ; i--) {
9.619 if (value[i] == ch) {
9.620 return i - offset;
9.621 @@ -1701,11 +1714,11 @@
9.622 */
9.623 private int lastIndexOfSupplementary(int ch, int fromIndex) {
9.624 if (Character.isValidCodePoint(ch)) {
9.625 - final char[] value = this.value;
9.626 - final int offset = this.offset;
9.627 + final char[] value = this.toCharArray();
9.628 + final int offset = this.offset();
9.629 char hi = Character.highSurrogate(ch);
9.630 char lo = Character.lowSurrogate(ch);
9.631 - int i = offset + Math.min(fromIndex, count - 2);
9.632 + int i = offset + Math.min(fromIndex, length() - 2);
9.633 for (; i >= offset; i--) {
9.634 if (value[i] == hi && value[i+1] == lo) {
9.635 return i - offset;
9.636 @@ -1749,9 +1762,11 @@
9.637 * starting at the specified index,
9.638 * or {@code -1} if there is no such occurrence.
9.639 */
9.640 + @JavaScriptBody(args = { "self", "str", "fromIndex" }, body =
9.641 + "return self.toString().indexOf(str.toString(), fromIndex) >= 0;"
9.642 + )
9.643 public int indexOf(String str, int fromIndex) {
9.644 - return indexOf(value, offset, count,
9.645 - str.value, str.offset, str.count, fromIndex);
9.646 + return indexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex);
9.647 }
9.648
9.649 /**
9.650 @@ -1821,7 +1836,7 @@
9.651 * or {@code -1} if there is no such occurrence.
9.652 */
9.653 public int lastIndexOf(String str) {
9.654 - return lastIndexOf(str, count);
9.655 + return lastIndexOf(str, length());
9.656 }
9.657
9.658 /**
9.659 @@ -1841,8 +1856,7 @@
9.660 * or {@code -1} if there is no such occurrence.
9.661 */
9.662 public int lastIndexOf(String str, int fromIndex) {
9.663 - return lastIndexOf(value, offset, count,
9.664 - str.value, str.offset, str.count, fromIndex);
9.665 + return lastIndexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex);
9.666 }
9.667
9.668 /**
9.669 @@ -1922,7 +1936,7 @@
9.670 * length of this <code>String</code> object.
9.671 */
9.672 public String substring(int beginIndex) {
9.673 - return substring(beginIndex, count);
9.674 + return substring(beginIndex, length());
9.675 }
9.676
9.677 /**
9.678 @@ -1947,18 +1961,21 @@
9.679 * <code>beginIndex</code> is larger than
9.680 * <code>endIndex</code>.
9.681 */
9.682 + @JavaScriptBody(args = { "self", "beginIndex", "endIndex" }, body =
9.683 + "return self.toString().substring(beginIndex, endIndex);"
9.684 + )
9.685 public String substring(int beginIndex, int endIndex) {
9.686 if (beginIndex < 0) {
9.687 throw new StringIndexOutOfBoundsException(beginIndex);
9.688 }
9.689 - if (endIndex > count) {
9.690 + if (endIndex > length()) {
9.691 throw new StringIndexOutOfBoundsException(endIndex);
9.692 }
9.693 if (beginIndex > endIndex) {
9.694 throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
9.695 }
9.696 - return ((beginIndex == 0) && (endIndex == count)) ? this :
9.697 - new String(value, offset + beginIndex, endIndex - beginIndex);
9.698 + return ((beginIndex == 0) && (endIndex == length())) ? this :
9.699 + new String(toCharArray(), offset() + beginIndex, endIndex - beginIndex);
9.700 }
9.701
9.702 /**
9.703 @@ -2018,10 +2035,10 @@
9.704 if (otherLen == 0) {
9.705 return this;
9.706 }
9.707 - char buf[] = new char[count + otherLen];
9.708 - getChars(0, count, buf, 0);
9.709 - str.getChars(0, otherLen, buf, count);
9.710 - return new String(buf, 0, count + otherLen);
9.711 + char buf[] = new char[length() + otherLen];
9.712 + getChars(0, length(), buf, 0);
9.713 + str.getChars(0, otherLen, buf, length());
9.714 + return new String(buf, 0, length() + otherLen);
9.715 }
9.716
9.717 /**
9.718 @@ -2053,12 +2070,24 @@
9.719 * @return a string derived from this string by replacing every
9.720 * occurrence of <code>oldChar</code> with <code>newChar</code>.
9.721 */
9.722 + @JavaScriptBody(args = { "self", "arg1", "arg2" }, body =
9.723 + "if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);\n" +
9.724 + "if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);\n" +
9.725 + "var s = self.toString();\n" +
9.726 + "for (;;) {\n" +
9.727 + " var ret = s.replace(arg1, arg2);\n" +
9.728 + " if (ret === s) {\n" +
9.729 + " return ret;\n" +
9.730 + " }\n" +
9.731 + " s = ret;\n" +
9.732 + "}"
9.733 + )
9.734 public String replace(char oldChar, char newChar) {
9.735 if (oldChar != newChar) {
9.736 - int len = count;
9.737 + int len = length();
9.738 int i = -1;
9.739 - char[] val = value; /* avoid getfield opcode */
9.740 - int off = offset; /* avoid getfield opcode */
9.741 + char[] val = toCharArray(); /* avoid getfield opcode */
9.742 + int off = offset(); /* avoid getfield opcode */
9.743
9.744 while (++i < len) {
9.745 if (val[off + i] == oldChar) {
9.746 @@ -2720,10 +2749,10 @@
9.747 * trailing white space.
9.748 */
9.749 public String trim() {
9.750 - int len = count;
9.751 + int len = length();
9.752 int st = 0;
9.753 - int off = offset; /* avoid getfield opcode */
9.754 - char[] val = value; /* avoid getfield opcode */
9.755 + int off = offset(); /* avoid getfield opcode */
9.756 + char[] val = toCharArray(); /* avoid getfield opcode */
9.757
9.758 while ((st < len) && (val[off + st] <= ' ')) {
9.759 st++;
9.760 @@ -2731,7 +2760,7 @@
9.761 while ((st < len) && (val[off + len - 1] <= ' ')) {
9.762 len--;
9.763 }
9.764 - return ((st > 0) || (len < count)) ? substring(st, len) : this;
9.765 + return ((st > 0) || (len < length())) ? substring(st, len) : this;
9.766 }
9.767
9.768 /**
9.769 @@ -2739,6 +2768,7 @@
9.770 *
9.771 * @return the string itself.
9.772 */
9.773 + @JavaScriptBody(args = "self", body = "return self.toString();")
9.774 public String toString() {
9.775 return this;
9.776 }
9.777 @@ -2750,9 +2780,10 @@
9.778 * of this string and whose contents are initialized to contain
9.779 * the character sequence represented by this string.
9.780 */
9.781 + @JavaScriptBody(args = "self", body = "return self.toString().split('');")
9.782 public char[] toCharArray() {
9.783 - char result[] = new char[count];
9.784 - getChars(0, count, result, 0);
9.785 + char result[] = new char[length()];
9.786 + getChars(0, length(), result, 0);
9.787 return result;
9.788 }
9.789
10.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Thu Nov 29 20:19:00 2012 +0100
10.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Mon Dec 03 14:44:49 2012 +0100
10.3 @@ -1,2320 +1,2 @@
10.4 -/* */
10.5 -
10.6 -
10.7 -function java_lang_String_consVAC(self,charArr) {
10.8 - for (var i = 0; i < charArr.length; i++) {
10.9 - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
10.10 - }
10.11 - self.r = charArr.join("");
10.12 -}
10.13 -
10.14 -function java_lang_String_consVACII(self, charArr, off, cnt) {
10.15 - var up = off + cnt;
10.16 - for (var i = off; i < up; i++) {
10.17 - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
10.18 - }
10.19 - self.r = charArr.slice(off, up).join("");
10.20 -}
10.21 -
10.22 -function java_lang_String_charAtCI(arg0,arg1) {
10.23 - return arg0.toString().charCodeAt(arg1);
10.24 -}
10.25 -function java_lang_String_lengthI(arg0) {
10.26 - return arg0.toString().length;
10.27 -}
10.28 -function java_lang_String_isEmptyZ(arg0) {
10.29 - return arg0.toString().length === 0;
10.30 -}
10.31 -function java_lang_String_valueOfLjava_lang_StringI(n) {
10.32 - return n.toString();
10.33 -}
10.34 -
10.35 -function java_lang_String_startsWithZLjava_lang_StringI(self,find,from) {
10.36 - find = find.toString();
10.37 - return self.toString().substring(from, find.length) === find;
10.38 -}
10.39 -function java_lang_String_startsWithZLjava_lang_String(self,find) {
10.40 - find = find.toString();
10.41 - return self.toString().substring(0, find.length) === find;
10.42 -}
10.43 -function java_lang_String_endsWithZLjava_lang_String(self,find) {
10.44 - self = self.toString();
10.45 - find = find.toString();
10.46 - if (find.length > self.length) {
10.47 - return false;
10.48 - }
10.49 - return self.substring(self.length - find.length) === find;
10.50 -}
10.51 -
10.52 -function java_lang_String_indexOfII(arg0,ch) {
10.53 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
10.54 - return arg0.toString().indexOf(ch);
10.55 -}
10.56 -function java_lang_String_indexOfIII(arg0,ch,from) {
10.57 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
10.58 - return arg0.toString().indexOf(ch, from);
10.59 -}
10.60 -
10.61 -function java_lang_String_getCharsVACI(self, arr, to) {
10.62 - var s = self.toString();
10.63 - for (var i = 0; i < s.length; i++) {
10.64 - arr[to++] = s[i];
10.65 - }
10.66 -}
10.67 -
10.68 -/*
10.69 -function java_lang_String_codePointAtII(arg0,arg1) {
10.70 - var arg2;
10.71 -;
10.72 - var stack = new Array(4);
10.73 - var gt = 0;
10.74 - for(;;) switch(gt) {
10.75 - case 0: stack.push(arg1); // 27
10.76 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11
10.77 - case 4: stack.push(arg1); // 27
10.78 - case 5: stack.push(arg0); // 42
10.79 - case 6: stack.push(stack.pop().count); // 180 1 97
10.80 - case 9: if (stack.pop() > stack.pop()) { gt = 21; continue; } // 161 0 12
10.81 - case 12: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
10.82 - case 15: stack.push(stack[stack.length - 1]); // 89
10.83 - case 16: stack.push(arg1); // 27
10.84 - case 17: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
10.85 - case 20: // 191
10.86 - case 21: stack.push(arg0); // 42
10.87 - case 22: stack.push(stack.pop().value); // 180 1 100
10.88 - case 25: stack.push(arg0); // 42
10.89 - case 26: stack.push(stack.pop().offset); // 180 1 99
10.90 - case 29: stack.push(arg1); // 27
10.91 - case 30: stack.push(stack.pop() + stack.pop()); // 96
10.92 - case 31: stack.push(arg0); // 42
10.93 - case 32: stack.push(stack.pop().offset); // 180 1 99
10.94 - case 35: stack.push(arg0); // 42
10.95 - case 36: stack.push(stack.pop().count); // 180 1 97
10.96 - case 39: stack.push(stack.pop() + stack.pop()); // 96
10.97 - case 40: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_codePointAtImplAIACAIAI(v0, v1, v2)); } // 184 1 113
10.98 - case 43: return stack.pop(); // 172
10.99 - }
10.100 -}
10.101 -function java_lang_String_codePointBeforeII(arg0,arg1) {
10.102 - var arg2;
10.103 - var arg3;
10.104 -;
10.105 - var stack = new Array(3);
10.106 - var gt = 0;
10.107 - for(;;) switch(gt) {
10.108 - case 0: stack.push(arg1); // 27
10.109 - case 1: stack.push(1); // 4
10.110 - case 2: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.111 - case 3: arg2 = stack.pop(); // 61
10.112 - case 4: stack.push(arg2); // 28
10.113 - case 5: if (stack.pop() < 0) { gt = 16; continue; } // 155 0 11
10.114 - case 8: stack.push(arg2); // 28
10.115 - case 9: stack.push(arg0); // 42
10.116 - case 10: stack.push(stack.pop().count); // 180 1 97
10.117 - case 13: if (stack.pop() > stack.pop()) { gt = 25; continue; } // 161 0 12
10.118 - case 16: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
10.119 - case 19: stack.push(stack[stack.length - 1]); // 89
10.120 - case 20: stack.push(arg1); // 27
10.121 - case 21: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
10.122 - case 24: // 191
10.123 - case 25: stack.push(arg0); // 42
10.124 - case 26: stack.push(stack.pop().value); // 180 1 100
10.125 - case 29: stack.push(arg0); // 42
10.126 - case 30: stack.push(stack.pop().offset); // 180 1 99
10.127 - case 33: stack.push(arg1); // 27
10.128 - case 34: stack.push(stack.pop() + stack.pop()); // 96
10.129 - case 35: stack.push(arg0); // 42
10.130 - case 36: stack.push(stack.pop().offset); // 180 1 99
10.131 - case 39: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_codePointBeforeImplAIACAIAI(v0, v1, v2)); } // 184 1 114
10.132 - case 42: return stack.pop(); // 172
10.133 - }
10.134 -}
10.135 -function java_lang_String_codePointCountIII(arg0,arg1,arg2) {
10.136 - var arg3;
10.137 -;
10.138 - var stack = new Array(4);
10.139 - var gt = 0;
10.140 - for(;;) switch(gt) {
10.141 - case 0: stack.push(arg1); // 27
10.142 - case 1: if (stack.pop() < 0) { gt = 17; continue; } // 155 0 16
10.143 - case 4: stack.push(arg2); // 28
10.144 - case 5: stack.push(arg0); // 42
10.145 - case 6: stack.push(stack.pop().count); // 180 1 97
10.146 - case 9: if (stack.pop() < stack.pop()) { gt = 17; continue; } // 163 0 8
10.147 - case 12: stack.push(arg1); // 27
10.148 - case 13: stack.push(arg2); // 28
10.149 - case 14: if (stack.pop() >= stack.pop()) { gt = 25; continue; } // 164 0 11
10.150 - case 17: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194
10.151 - case 20: stack.push(stack[stack.length - 1]); // 89
10.152 - case 21: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124
10.153 - case 24: // 191
10.154 - case 25: stack.push(arg0); // 42
10.155 - case 26: stack.push(stack.pop().value); // 180 1 100
10.156 - case 29: stack.push(arg0); // 42
10.157 - case 30: stack.push(stack.pop().offset); // 180 1 99
10.158 - case 33: stack.push(arg1); // 27
10.159 - case 34: stack.push(stack.pop() + stack.pop()); // 96
10.160 - case 35: stack.push(arg2); // 28
10.161 - case 36: stack.push(arg1); // 27
10.162 - case 37: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.163 - case 38: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_codePointCountImplAIACAIAI(v0, v1, v2)); } // 184 1 115
10.164 - case 41: return stack.pop(); // 172
10.165 - }
10.166 -}
10.167 -function java_lang_String_offsetByCodePointsIII(arg0,arg1,arg2) {
10.168 - var arg3;
10.169 -;
10.170 - var stack = new Array(5);
10.171 - var gt = 0;
10.172 - for(;;) switch(gt) {
10.173 - case 0: stack.push(arg1); // 27
10.174 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11
10.175 - case 4: stack.push(arg1); // 27
10.176 - case 5: stack.push(arg0); // 42
10.177 - case 6: stack.push(stack.pop().count); // 180 1 97
10.178 - case 9: if (stack.pop() >= stack.pop()) { gt = 20; continue; } // 164 0 11
10.179 - case 12: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194
10.180 - case 15: stack.push(stack[stack.length - 1]); // 89
10.181 - case 16: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124
10.182 - case 19: // 191
10.183 - case 20: stack.push(arg0); // 42
10.184 - case 21: stack.push(stack.pop().value); // 180 1 100
10.185 - case 24: stack.push(arg0); // 42
10.186 - case 25: stack.push(stack.pop().offset); // 180 1 99
10.187 - case 28: stack.push(arg0); // 42
10.188 - case 29: stack.push(stack.pop().count); // 180 1 97
10.189 - case 32: stack.push(arg0); // 42
10.190 - case 33: stack.push(stack.pop().offset); // 180 1 99
10.191 - case 36: stack.push(arg1); // 27
10.192 - case 37: stack.push(stack.pop() + stack.pop()); // 96
10.193 - case 38: stack.push(arg2); // 28
10.194 - case 39: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_offsetByCodePointsImplAIACAIAIAIAI(v0, v1, v2, v3, v4)); } // 184 1 116
10.195 - case 42: stack.push(arg0); // 42
10.196 - case 43: stack.push(stack.pop().offset); // 180 1 99
10.197 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.198 - case 47: return stack.pop(); // 172
10.199 - }
10.200 -}
10.201 -*/
10.202 -
10.203 -// public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
10.204 -function java_lang_String_getCharsVIIACAI(arg0,arg1,arg2,arg3,arg4) {
10.205 - var s = arg0.toString();
10.206 - while (arg1 < arg2) {
10.207 - arg3[arg4++] = s[arg1++];
10.208 - }
10.209 -}
10.210 -
10.211 -/*
10.212 -function java_lang_String_getBytesVIIABI(arg0,arg1,arg2,arg3,arg4) {
10.213 - var arg5;
10.214 - var arg6;
10.215 - var arg7;
10.216 - var arg8;
10.217 - var arg9;
10.218 -;
10.219 - var stack = new Array(4);
10.220 - var gt = 0;
10.221 - for(;;) switch(gt) {
10.222 - case 0: stack.push(arg1); // 27
10.223 - case 1: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 12
10.224 - case 4: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
10.225 - case 7: stack.push(stack[stack.length - 1]); // 89
10.226 - case 8: stack.push(arg1); // 27
10.227 - case 9: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
10.228 - case 12: // 191
10.229 - case 13: stack.push(arg2); // 28
10.230 - case 14: stack.push(arg0); // 42
10.231 - case 15: stack.push(stack.pop().count); // 180 1 97
10.232 - case 18: if (stack.pop() >= stack.pop()) { gt = 30; continue; } // 164 0 12
10.233 - case 21: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
10.234 - case 24: stack.push(stack[stack.length - 1]); // 89
10.235 - case 25: stack.push(arg2); // 28
10.236 - case 26: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
10.237 - case 29: // 191
10.238 - case 30: stack.push(arg1); // 27
10.239 - case 31: stack.push(arg2); // 28
10.240 - case 32: if (stack.pop() >= stack.pop()) { gt = 46; continue; } // 164 0 14
10.241 - case 35: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
10.242 - case 38: stack.push(stack[stack.length - 1]); // 89
10.243 - case 39: stack.push(arg2); // 28
10.244 - case 40: stack.push(arg1); // 27
10.245 - case 41: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.246 - case 42: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
10.247 - case 45: // 191
10.248 - case 46: stack.push(arg4); // 21 4
10.249 - case 48: arg5 = stack.pop() // 54 5
10.250 - case 50: stack.push(arg0); // 42
10.251 - case 51: stack.push(stack.pop().offset); // 180 1 99
10.252 - case 54: stack.push(arg2); // 28
10.253 - case 55: stack.push(stack.pop() + stack.pop()); // 96
10.254 - case 56: arg6 = stack.pop() // 54 6
10.255 - case 58: stack.push(arg0); // 42
10.256 - case 59: stack.push(stack.pop().offset); // 180 1 99
10.257 - case 62: stack.push(arg1); // 27
10.258 - case 63: stack.push(stack.pop() + stack.pop()); // 96
10.259 - case 64: arg7 = stack.pop() // 54 7
10.260 - case 66: stack.push(arg0); // 42
10.261 - case 67: stack.push(stack.pop().value); // 180 1 100
10.262 - case 70: arg8 = stack.pop() // 58 8
10.263 - case 72: stack.push(arg7); // 21 7
10.264 - case 74: stack.push(arg6); // 21 6
10.265 - case 76: if (stack.pop() <= stack.pop()) { gt = 98; continue; } // 162 0 22
10.266 - case 79: stack.push(arg3); // 45
10.267 - case 80: stack.push(arg5); // 21 5
10.268 - case 82: arg5++; // 132 5 1
10.269 - case 85: stack.push(arg8); // 25 8
10.270 - case 87: stack.push(arg7); // 21 7
10.271 - case 89: arg7++; // 132 7 1
10.272 - case 92: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.273 - case 93: // number conversion // 145
10.274 - case 94: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 84
10.275 - case 95: gt = 72; continue; // 167 255 233
10.276 - case 98: return; // 177
10.277 - }
10.278 -}
10.279 -function java_lang_String_getBytesABLjava_lang_String(arg0,arg1) {
10.280 - var arg2;
10.281 -;
10.282 - var stack = new Array(4);
10.283 - var gt = 0;
10.284 - for(;;) switch(gt) {
10.285 - case 0: stack.push(arg1); // 43
10.286 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
10.287 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
10.288 - case 7: stack.push(stack[stack.length - 1]); // 89
10.289 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
10.290 - case 11: // 191
10.291 - case 12: stack.push(arg1); // 43
10.292 - case 13: stack.push(arg0); // 42
10.293 - case 14: stack.push(stack.pop().value); // 180 1 100
10.294 - case 17: stack.push(arg0); // 42
10.295 - case 18: stack.push(stack.pop().offset); // 180 1 99
10.296 - case 21: stack.push(arg0); // 42
10.297 - case 22: stack.push(stack.pop().count); // 180 1 97
10.298 - case 25: { var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_StringCoding_encodeABLjava_lang_StringACAIAI(v0, v1, v2, v3)); } // 184 1 166
10.299 - case 28: return stack.pop(); // 176
10.300 - }
10.301 -}
10.302 -function java_lang_String_getBytesABLjava_nio_charset_Charset(arg0,arg1) {
10.303 - var arg2;
10.304 -;
10.305 - var stack = new Array(4);
10.306 - var gt = 0;
10.307 - for(;;) switch(gt) {
10.308 - case 0: stack.push(arg1); // 43
10.309 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
10.310 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
10.311 - case 7: stack.push(stack[stack.length - 1]); // 89
10.312 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
10.313 - case 11: // 191
10.314 - case 12: stack.push(arg1); // 43
10.315 - case 13: stack.push(arg0); // 42
10.316 - case 14: stack.push(stack.pop().value); // 180 1 100
10.317 - case 17: stack.push(arg0); // 42
10.318 - case 18: stack.push(stack.pop().offset); // 180 1 99
10.319 - case 21: stack.push(arg0); // 42
10.320 - case 22: stack.push(stack.pop().count); // 180 1 97
10.321 - case 25: { var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_StringCoding_encodeABLjava_nio_charset_CharsetACAIAI(v0, v1, v2, v3)); } // 184 1 168
10.322 - case 28: return stack.pop(); // 176
10.323 - }
10.324 -}
10.325 -function java_lang_String_getBytesAB(arg0) {
10.326 - var arg1;
10.327 -;
10.328 - var stack = new Array(3);
10.329 - var gt = 0;
10.330 - for(;;) switch(gt) {
10.331 - case 0: stack.push(arg0); // 42
10.332 - case 1: stack.push(stack.pop().value); // 180 1 100
10.333 - case 4: stack.push(arg0); // 42
10.334 - case 5: stack.push(stack.pop().offset); // 180 1 99
10.335 - case 8: stack.push(arg0); // 42
10.336 - case 9: stack.push(stack.pop().count); // 180 1 97
10.337 - case 12: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_StringCoding_encodeABACAIAI(v0, v1, v2)); } // 184 1 164
10.338 - case 15: return stack.pop(); // 176
10.339 - }
10.340 -}
10.341 -*/
10.342 -function java_lang_String_equalsZLjava_lang_Object(arg0,arg1) {
10.343 - return arg0.toString() === arg1.toString();
10.344 -}
10.345 -
10.346 -function java_lang_String_hashCodeI(self) {
10.347 - var h = 0;
10.348 - var s = self.toString();
10.349 - for (var i = 0; i < s.length; i++) {
10.350 - var high = (h >> 16) & 0xffff, low = h & 0xffff;
10.351 - h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;
10.352 - }
10.353 - return h;
10.354 -}
10.355 -
10.356 -/*
10.357 -function java_lang_String_contentEqualsZLjava_lang_StringBuffer(arg0,arg1) {
10.358 - var arg2;
10.359 - var arg3;
10.360 - var arg4;
10.361 -;
10.362 - var stack = new Array(2);
10.363 - var gt = 0;
10.364 - for(;;) switch(gt) {
10.365 - case 0: stack.push(arg1); // 43
10.366 - case 1: stack.push(stack[stack.length - 1]); // 89
10.367 - case 2: arg2 = stack.pop(); // 77
10.368 - case 3: // 194
10.369 - case 4: stack.push(arg0); // 42
10.370 - case 5: stack.push(arg1); // 43
10.371 - case 6: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.contentEqualsZLjava_lang_CharSequence(self, v0)); } // 182 1 146
10.372 - case 9: stack.push(arg2); // 44
10.373 - case 10: // 195
10.374 - case 11: return stack.pop(); // 172
10.375 - case 12: arg3 = stack.pop(); // 78
10.376 - case 13: stack.push(arg2); // 44
10.377 - case 14: // 195
10.378 - case 15: stack.push(arg3); // 45
10.379 - case 16: // 191
10.380 - }
10.381 -}
10.382 -function java_lang_String_contentEqualsZLjava_lang_CharSequence(arg0,arg1) {
10.383 - var arg2;
10.384 - var arg3;
10.385 - var arg4;
10.386 - var arg5;
10.387 - var arg6;
10.388 - var arg7;
10.389 -;
10.390 - var stack = new Array(3);
10.391 - var gt = 0;
10.392 - for(;;) switch(gt) {
10.393 - case 0: stack.push(arg0); // 42
10.394 - case 1: stack.push(stack.pop().count); // 180 1 97
10.395 - case 4: stack.push(arg1); // 43
10.396 - case 5: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 185 1 188
10.397 - case 8: // 1
10.398 - case 9: // 0
10.399 - case 10: if (stack.pop() == stack.pop()) { gt = 15; continue; } // 159 0 5
10.400 - case 13: stack.push(0); // 3
10.401 - case 14: return stack.pop(); // 172
10.402 - case 15: stack.push(arg1); // 43
10.403 - case 16: stack.push(stack.pop().$instOf_java_lang_AbstractStringBuilder ? 1 : 0); // 193 0 186
10.404 - case 19: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 58
10.405 - case 22: stack.push(arg0); // 42
10.406 - case 23: stack.push(stack.pop().value); // 180 1 100
10.407 - case 26: arg2 = stack.pop(); // 77
10.408 - case 27: stack.push(arg1); // 43
10.409 - case 28: if(stack[stack.length - 1].$instOf_java_lang_AbstractStringBuilder != 1) throw {}; // 192 0 186
10.410 - case 31: { var self = stack.pop(); stack.push(self.getValueAC(self)); } // 182 1 103
10.411 - case 34: arg3 = stack.pop(); // 78
10.412 - case 35: stack.push(arg0); // 42
10.413 - case 36: stack.push(stack.pop().offset); // 180 1 99
10.414 - case 39: arg4 = stack.pop() // 54 4
10.415 - case 41: stack.push(0); // 3
10.416 - case 42: arg5 = stack.pop() // 54 5
10.417 - case 44: stack.push(arg0); // 42
10.418 - case 45: stack.push(stack.pop().count); // 180 1 97
10.419 - case 48: arg6 = stack.pop() // 54 6
10.420 - case 50: stack.push(arg6); // 21 6
10.421 - case 52: arg6 += 255; // 132 6 255
10.422 - case 55: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 22
10.423 - case 58: stack.push(arg2); // 44
10.424 - case 59: stack.push(arg4); // 21 4
10.425 - case 61: arg4++; // 132 4 1
10.426 - case 64: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.427 - case 65: stack.push(arg3); // 45
10.428 - case 66: stack.push(arg5); // 21 5
10.429 - case 68: arg5++; // 132 5 1
10.430 - case 71: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.431 - case 72: if (stack.pop() == stack.pop()) { gt = 50; continue; } // 159 255 234
10.432 - case 75: stack.push(0); // 3
10.433 - case 76: return stack.pop(); // 172
10.434 - case 77: stack.push(arg1); // 43
10.435 - case 78: stack.push(arg0); // 42
10.436 - case 79: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.equalsZLjava_lang_Object(self, v0)); } // 182 1 131
10.437 - case 82: if (stack.pop() == 0) { gt = 87; continue; } // 153 0 5
10.438 - case 85: stack.push(1); // 4
10.439 - case 86: return stack.pop(); // 172
10.440 - case 87: stack.push(arg0); // 42
10.441 - case 88: stack.push(stack.pop().value); // 180 1 100
10.442 - case 91: arg2 = stack.pop(); // 77
10.443 - case 92: stack.push(arg0); // 42
10.444 - case 93: stack.push(stack.pop().offset); // 180 1 99
10.445 - case 96: arg3 = stack.pop(); // 62
10.446 - case 97: stack.push(0); // 3
10.447 - case 98: arg4 = stack.pop() // 54 4
10.448 - case 100: stack.push(arg0); // 42
10.449 - case 101: stack.push(stack.pop().count); // 180 1 97
10.450 - case 104: arg5 = stack.pop() // 54 5
10.451 - case 106: stack.push(arg5); // 21 5
10.452 - case 108: arg5 += 255; // 132 5 255
10.453 - case 111: if (stack.pop() == 0) { gt = 136; continue; } // 153 0 25
10.454 - case 114: stack.push(arg2); // 44
10.455 - case 115: stack.push(arg3); // 29
10.456 - case 116: arg3++; // 132 3 1
10.457 - case 119: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.458 - case 120: stack.push(arg1); // 43
10.459 - case 121: stack.push(arg4); // 21 4
10.460 - case 123: arg4++; // 132 4 1
10.461 - case 126: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.charAtCI(self, v0)); } // 185 1 189
10.462 - case 129: // 2
10.463 - case 130: // 0
10.464 - case 131: if (stack.pop() == stack.pop()) { gt = 106; continue; } // 159 255 231
10.465 - case 134: stack.push(0); // 3
10.466 - case 135: return stack.pop(); // 172
10.467 - case 136: stack.push(1); // 4
10.468 - case 137: return stack.pop(); // 172
10.469 - }
10.470 -}
10.471 -function java_lang_String_equalsIgnoreCaseZLjava_lang_String(arg0,arg1) {
10.472 - var arg2;
10.473 -;
10.474 - var stack = new Array(6);
10.475 - var gt = 0;
10.476 - for(;;) switch(gt) {
10.477 - case 0: stack.push(arg0); // 42
10.478 - case 1: stack.push(arg1); // 43
10.479 - case 2: // 166
10.480 - case 3: // 0
10.481 - case 4: stack.push(4); // 7
10.482 - case 5: stack.push(1); // 4
10.483 - case 6: gt = 44; continue; // 167 0 38
10.484 - case 9: stack.push(arg1); // 43
10.485 - case 10: if (!stack.pop()) { gt = 43; continue; } // 198 0 33
10.486 - case 13: stack.push(arg1); // 43
10.487 - case 14: stack.push(stack.pop().count); // 180 1 97
10.488 - case 17: stack.push(arg0); // 42
10.489 - case 18: stack.push(stack.pop().count); // 180 1 97
10.490 - case 21: if (stack.pop() != stack.pop()) { gt = 43; continue; } // 160 0 22
10.491 - case 24: stack.push(arg0); // 42
10.492 - case 25: stack.push(1); // 4
10.493 - case 26: stack.push(0); // 3
10.494 - case 27: stack.push(arg1); // 43
10.495 - case 28: stack.push(0); // 3
10.496 - case 29: stack.push(arg0); // 42
10.497 - case 30: stack.push(stack.pop().count); // 180 1 97
10.498 - case 33: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.regionMatchesZZILjava_lang_StringII(self, v0, v1, v2, v3, v4)); } // 182 1 153
10.499 - case 36: if (stack.pop() == 0) { gt = 43; continue; } // 153 0 7
10.500 - case 39: stack.push(1); // 4
10.501 - case 40: gt = 44; continue; // 167 0 4
10.502 - case 43: stack.push(0); // 3
10.503 - case 44: return stack.pop(); // 172
10.504 - }
10.505 -}
10.506 -function java_lang_String_compareToILjava_lang_String(arg0,arg1) {
10.507 - var arg2;
10.508 - var arg3;
10.509 - var arg4;
10.510 - var arg5;
10.511 - var arg6;
10.512 - var arg7;
10.513 - var arg8;
10.514 - var arg9;
10.515 - var arg10;
10.516 - var arg11;
10.517 - var arg12;
10.518 - var arg13;
10.519 -;
10.520 - var stack = new Array(2);
10.521 - var gt = 0;
10.522 - for(;;) switch(gt) {
10.523 - case 0: stack.push(arg0); // 42
10.524 - case 1: stack.push(stack.pop().count); // 180 1 97
10.525 - case 4: arg2 = stack.pop(); // 61
10.526 - case 5: stack.push(arg1); // 43
10.527 - case 6: stack.push(stack.pop().count); // 180 1 97
10.528 - case 9: arg3 = stack.pop(); // 62
10.529 - case 10: stack.push(arg2); // 28
10.530 - case 11: stack.push(arg3); // 29
10.531 - case 12: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Math_minIII(v0, v1)); } // 184 1 127
10.532 - case 15: arg4 = stack.pop() // 54 4
10.533 - case 17: stack.push(arg0); // 42
10.534 - case 18: stack.push(stack.pop().value); // 180 1 100
10.535 - case 21: arg5 = stack.pop() // 58 5
10.536 - case 23: stack.push(arg1); // 43
10.537 - case 24: stack.push(stack.pop().value); // 180 1 100
10.538 - case 27: arg6 = stack.pop() // 58 6
10.539 - case 29: stack.push(arg0); // 42
10.540 - case 30: stack.push(stack.pop().offset); // 180 1 99
10.541 - case 33: arg7 = stack.pop() // 54 7
10.542 - case 35: stack.push(arg1); // 43
10.543 - case 36: stack.push(stack.pop().offset); // 180 1 99
10.544 - case 39: arg8 = stack.pop() // 54 8
10.545 - case 41: stack.push(arg7); // 21 7
10.546 - case 43: stack.push(arg8); // 21 8
10.547 - case 45: if (stack.pop() != stack.pop()) { gt = 102; continue; } // 160 0 57
10.548 - case 48: stack.push(arg7); // 21 7
10.549 - case 50: arg9 = stack.pop() // 54 9
10.550 - case 52: stack.push(arg4); // 21 4
10.551 - case 54: stack.push(arg7); // 21 7
10.552 - case 56: stack.push(stack.pop() + stack.pop()); // 96
10.553 - case 57: arg10 = stack.pop() // 54 10
10.554 - case 59: stack.push(arg9); // 21 9
10.555 - case 61: stack.push(arg10); // 21 10
10.556 - case 63: if (stack.pop() <= stack.pop()) { gt = 99; continue; } // 162 0 36
10.557 - case 66: stack.push(arg5); // 25 5
10.558 - case 68: stack.push(arg9); // 21 9
10.559 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.560 - case 71: arg11 = stack.pop() // 54 11
10.561 - case 73: stack.push(arg6); // 25 6
10.562 - case 75: stack.push(arg9); // 21 9
10.563 - case 77: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.564 - case 78: arg12 = stack.pop() // 54 12
10.565 - case 80: stack.push(arg11); // 21 11
10.566 - case 82: stack.push(arg12); // 21 12
10.567 - case 84: if (stack.pop() == stack.pop()) { gt = 93; continue; } // 159 0 9
10.568 - case 87: stack.push(arg11); // 21 11
10.569 - case 89: stack.push(arg12); // 21 12
10.570 - case 91: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.571 - case 92: return stack.pop(); // 172
10.572 - case 93: arg9++; // 132 9 1
10.573 - case 96: gt = 59; continue; // 167 255 219
10.574 - case 99: gt = 146; continue; // 167 0 47
10.575 - case 102: stack.push(arg4); // 21 4
10.576 - case 104: arg4 += 255; // 132 4 255
10.577 - case 107: if (stack.pop() == 0) { gt = 146; continue; } // 153 0 39
10.578 - case 110: stack.push(arg5); // 25 5
10.579 - case 112: stack.push(arg7); // 21 7
10.580 - case 114: arg7++; // 132 7 1
10.581 - case 117: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.582 - case 118: arg9 = stack.pop() // 54 9
10.583 - case 120: stack.push(arg6); // 25 6
10.584 - case 122: stack.push(arg8); // 21 8
10.585 - case 124: arg8++; // 132 8 1
10.586 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.587 - case 128: arg10 = stack.pop() // 54 10
10.588 - case 130: stack.push(arg9); // 21 9
10.589 - case 132: stack.push(arg10); // 21 10
10.590 - case 134: if (stack.pop() == stack.pop()) { gt = 143; continue; } // 159 0 9
10.591 - case 137: stack.push(arg9); // 21 9
10.592 - case 139: stack.push(arg10); // 21 10
10.593 - case 141: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.594 - case 142: return stack.pop(); // 172
10.595 - case 143: gt = 102; continue; // 167 255 215
10.596 - case 146: stack.push(arg2); // 28
10.597 - case 147: stack.push(arg3); // 29
10.598 - case 148: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.599 - case 149: return stack.pop(); // 172
10.600 - }
10.601 -}
10.602 -function java_lang_String_compareToIgnoreCaseILjava_lang_String(arg0,arg1) {
10.603 - var arg2;
10.604 -;
10.605 - var stack = new Array(3);
10.606 - var gt = 0;
10.607 - for(;;) switch(gt) {
10.608 - case 0: stack.push(java_lang_String_CASE_INSENSITIVE_ORDER); // 178 1 102
10.609 - case 3: stack.push(arg0); // 42
10.610 - case 4: stack.push(arg1); // 43
10.611 - case 5: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareILjava_lang_ObjectLjava_lang_Object(self, v0, v1)); } // 185 1 190
10.612 - case 8: stack.push(0); // 3
10.613 - case 9: // 0
10.614 - case 10: return stack.pop(); // 172
10.615 - }
10.616 -}
10.617 -function java_lang_String_regionMatchesZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4) {
10.618 - var arg5;
10.619 - var arg6;
10.620 - var arg7;
10.621 - var arg8;
10.622 - var arg9;
10.623 -;
10.624 - var stack = new Array(6);
10.625 - var gt = 0;
10.626 - for(;;) switch(gt) {
10.627 - case 0: stack.push(arg0); // 42
10.628 - case 1: stack.push(stack.pop().value); // 180 1 100
10.629 - case 4: arg5 = stack.pop() // 58 5
10.630 - case 6: stack.push(arg0); // 42
10.631 - case 7: stack.push(stack.pop().offset); // 180 1 99
10.632 - case 10: stack.push(arg1); // 27
10.633 - case 11: stack.push(stack.pop() + stack.pop()); // 96
10.634 - case 12: arg6 = stack.pop() // 54 6
10.635 - case 14: stack.push(arg2); // 44
10.636 - case 15: stack.push(stack.pop().value); // 180 1 100
10.637 - case 18: arg7 = stack.pop() // 58 7
10.638 - case 20: stack.push(arg2); // 44
10.639 - case 21: stack.push(stack.pop().offset); // 180 1 99
10.640 - case 24: stack.push(arg3); // 29
10.641 - case 25: stack.push(stack.pop() + stack.pop()); // 96
10.642 - case 26: arg8 = stack.pop() // 54 8
10.643 - case 28: stack.push(arg3); // 29
10.644 - case 29: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 37
10.645 - case 32: stack.push(arg1); // 27
10.646 - case 33: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 33
10.647 - case 36: stack.push(arg1); // 27
10.648 - case 37: // number conversion // 133
10.649 - case 38: stack.push(arg0); // 42
10.650 - case 39: stack.push(stack.pop().count); // 180 1 97
10.651 - case 42: // number conversion // 133
10.652 - case 43: stack.push(arg4); // 21 4
10.653 - case 45: // number conversion // 133
10.654 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
10.655 - case 47: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
10.656 - case 48: if (stack.pop() > 0) { gt = 66; continue; } // 157 0 18
10.657 - case 51: stack.push(arg3); // 29
10.658 - case 52: // number conversion // 133
10.659 - case 53: stack.push(arg2); // 44
10.660 - case 54: stack.push(stack.pop().count); // 180 1 97
10.661 - case 57: // number conversion // 133
10.662 - case 58: stack.push(arg4); // 21 4
10.663 - case 60: // number conversion // 133
10.664 - case 61: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
10.665 - case 62: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
10.666 - case 63: if (stack.pop() <= 0) { gt = 68; continue; } // 158 0 5
10.667 - case 66: stack.push(0); // 3
10.668 - case 67: return stack.pop(); // 172
10.669 - case 68: stack.push(arg4); // 21 4
10.670 - case 70: arg4 += 255; // 132 4 255
10.671 - case 73: if (stack.pop() <= 0) { gt = 97; continue; } // 158 0 24
10.672 - case 76: stack.push(arg5); // 25 5
10.673 - case 78: stack.push(arg6); // 21 6
10.674 - case 80: arg6++; // 132 6 1
10.675 - case 83: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.676 - case 84: stack.push(arg7); // 25 7
10.677 - case 86: stack.push(arg8); // 21 8
10.678 - case 88: arg8++; // 132 8 1
10.679 - case 91: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.680 - case 92: if (stack.pop() == stack.pop()) { gt = 68; continue; } // 159 255 232
10.681 - case 95: stack.push(0); // 3
10.682 - case 96: return stack.pop(); // 172
10.683 - case 97: stack.push(1); // 4
10.684 - case 98: return stack.pop(); // 172
10.685 - }
10.686 -}
10.687 -function java_lang_String_regionMatchesZZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4,arg5) {
10.688 - var arg6;
10.689 - var arg7;
10.690 - var arg8;
10.691 - var arg9;
10.692 - var arg10;
10.693 - var arg11;
10.694 - var arg12;
10.695 - var arg13;
10.696 - var arg14;
10.697 -;
10.698 - var stack = new Array(6);
10.699 - var gt = 0;
10.700 - for(;;) switch(gt) {
10.701 - case 0: stack.push(arg0); // 42
10.702 - case 1: stack.push(stack.pop().value); // 180 1 100
10.703 - case 4: arg6 = stack.pop() // 58 6
10.704 - case 6: stack.push(arg0); // 42
10.705 - case 7: stack.push(stack.pop().offset); // 180 1 99
10.706 - case 10: stack.push(arg2); // 28
10.707 - case 11: stack.push(stack.pop() + stack.pop()); // 96
10.708 - case 12: arg7 = stack.pop() // 54 7
10.709 - case 14: stack.push(arg3); // 45
10.710 - case 15: stack.push(stack.pop().value); // 180 1 100
10.711 - case 18: arg8 = stack.pop() // 58 8
10.712 - case 20: stack.push(arg3); // 45
10.713 - case 21: stack.push(stack.pop().offset); // 180 1 99
10.714 - case 24: stack.push(arg4); // 21 4
10.715 - case 26: stack.push(stack.pop() + stack.pop()); // 96
10.716 - case 27: arg9 = stack.pop() // 54 9
10.717 - case 29: stack.push(arg4); // 21 4
10.718 - case 31: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 38
10.719 - case 34: stack.push(arg2); // 28
10.720 - case 35: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 34
10.721 - case 38: stack.push(arg2); // 28
10.722 - case 39: // number conversion // 133
10.723 - case 40: stack.push(arg0); // 42
10.724 - case 41: stack.push(stack.pop().count); // 180 1 97
10.725 - case 44: // number conversion // 133
10.726 - case 45: stack.push(arg5); // 21 5
10.727 - case 47: // number conversion // 133
10.728 - case 48: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
10.729 - case 49: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
10.730 - case 50: if (stack.pop() > 0) { gt = 69; continue; } // 157 0 19
10.731 - case 53: stack.push(arg4); // 21 4
10.732 - case 55: // number conversion // 133
10.733 - case 56: stack.push(arg3); // 45
10.734 - case 57: stack.push(stack.pop().count); // 180 1 97
10.735 - case 60: // number conversion // 133
10.736 - case 61: stack.push(arg5); // 21 5
10.737 - case 63: // number conversion // 133
10.738 - case 64: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
10.739 - case 65: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
10.740 - case 66: if (stack.pop() <= 0) { gt = 71; continue; } // 158 0 5
10.741 - case 69: stack.push(0); // 3
10.742 - case 70: return stack.pop(); // 172
10.743 - case 71: stack.push(arg5); // 21 5
10.744 - case 73: arg5 += 255; // 132 5 255
10.745 - case 76: if (stack.pop() <= 0) { gt = 155; continue; } // 158 0 79
10.746 - case 79: stack.push(arg6); // 25 6
10.747 - case 81: stack.push(arg7); // 21 7
10.748 - case 83: arg7++; // 132 7 1
10.749 - case 86: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.750 - case 87: arg10 = stack.pop() // 54 10
10.751 - case 89: stack.push(arg8); // 25 8
10.752 - case 91: stack.push(arg9); // 21 9
10.753 - case 93: arg9++; // 132 9 1
10.754 - case 96: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.755 - case 97: arg11 = stack.pop() // 54 11
10.756 - case 99: stack.push(arg10); // 21 10
10.757 - case 101: stack.push(arg11); // 21 11
10.758 - case 103: if (stack.pop() != stack.pop()) { gt = 109; continue; } // 160 0 6
10.759 - case 106: gt = 71; continue; // 167 255 221
10.760 - case 109: stack.push(arg1); // 27
10.761 - case 110: if (stack.pop() == 0) { gt = 153; continue; } // 153 0 43
10.762 - case 113: stack.push(arg10); // 21 10
10.763 - case 115: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105
10.764 - case 118: arg12 = stack.pop() // 54 12
10.765 - case 120: stack.push(arg11); // 21 11
10.766 - case 122: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105
10.767 - case 125: arg13 = stack.pop() // 54 13
10.768 - case 127: stack.push(arg12); // 21 12
10.769 - case 129: stack.push(arg13); // 21 13
10.770 - case 131: if (stack.pop() != stack.pop()) { gt = 137; continue; } // 160 0 6
10.771 - case 134: gt = 71; continue; // 167 255 193
10.772 - case 137: stack.push(arg12); // 21 12
10.773 - case 139: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
10.774 - case 142: stack.push(arg13); // 21 13
10.775 - case 144: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
10.776 - case 147: if (stack.pop() != stack.pop()) { gt = 153; continue; } // 160 0 6
10.777 - case 150: gt = 71; continue; // 167 255 177
10.778 - case 153: stack.push(0); // 3
10.779 - case 154: return stack.pop(); // 172
10.780 - case 155: stack.push(1); // 4
10.781 - case 156: return stack.pop(); // 172
10.782 - }
10.783 -}
10.784 -function java_lang_String_startsWithZLjava_lang_StringI(arg0,arg1,arg2) {
10.785 - var arg3;
10.786 - var arg4;
10.787 - var arg5;
10.788 - var arg6;
10.789 - var arg7;
10.790 - var arg8;
10.791 -;
10.792 - var stack = new Array(3);
10.793 - var gt = 0;
10.794 - for(;;) switch(gt) {
10.795 - case 0: stack.push(arg0); // 42
10.796 - case 1: stack.push(stack.pop().value); // 180 1 100
10.797 - case 4: arg3 = stack.pop(); // 78
10.798 - case 5: stack.push(arg0); // 42
10.799 - case 6: stack.push(stack.pop().offset); // 180 1 99
10.800 - case 9: stack.push(arg2); // 28
10.801 - case 10: stack.push(stack.pop() + stack.pop()); // 96
10.802 - case 11: arg4 = stack.pop() // 54 4
10.803 - case 13: stack.push(arg1); // 43
10.804 - case 14: stack.push(stack.pop().value); // 180 1 100
10.805 - case 17: arg5 = stack.pop() // 58 5
10.806 - case 19: stack.push(arg1); // 43
10.807 - case 20: stack.push(stack.pop().offset); // 180 1 99
10.808 - case 23: arg6 = stack.pop() // 54 6
10.809 - case 25: stack.push(arg1); // 43
10.810 - case 26: stack.push(stack.pop().count); // 180 1 97
10.811 - case 29: arg7 = stack.pop() // 54 7
10.812 - case 31: stack.push(arg2); // 28
10.813 - case 32: if (stack.pop() < 0) { gt = 46; continue; } // 155 0 14
10.814 - case 35: stack.push(arg2); // 28
10.815 - case 36: stack.push(arg0); // 42
10.816 - case 37: stack.push(stack.pop().count); // 180 1 97
10.817 - case 40: stack.push(arg7); // 21 7
10.818 - case 42: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.819 - case 43: if (stack.pop() >= stack.pop()) { gt = 48; continue; } // 164 0 5
10.820 - case 46: stack.push(0); // 3
10.821 - case 47: return stack.pop(); // 172
10.822 - case 48: arg7 += 255; // 132 7 255
10.823 - case 51: stack.push(arg7); // 21 7
10.824 - case 53: if (stack.pop() < 0) { gt = 76; continue; } // 155 0 23
10.825 - case 56: stack.push(arg3); // 45
10.826 - case 57: stack.push(arg4); // 21 4
10.827 - case 59: arg4++; // 132 4 1
10.828 - case 62: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.829 - case 63: stack.push(arg5); // 25 5
10.830 - case 65: stack.push(arg6); // 21 6
10.831 - case 67: arg6++; // 132 6 1
10.832 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.833 - case 71: if (stack.pop() == stack.pop()) { gt = 48; continue; } // 159 255 233
10.834 - case 74: stack.push(0); // 3
10.835 - case 75: return stack.pop(); // 172
10.836 - case 76: stack.push(1); // 4
10.837 - case 77: return stack.pop(); // 172
10.838 - }
10.839 -}
10.840 -function java_lang_String_startsWithZLjava_lang_String(arg0,arg1) {
10.841 - var arg2;
10.842 -;
10.843 - var stack = new Array(3);
10.844 - var gt = 0;
10.845 - for(;;) switch(gt) {
10.846 - case 0: stack.push(arg0); // 42
10.847 - case 1: stack.push(arg1); // 43
10.848 - case 2: stack.push(0); // 3
10.849 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.startsWithZLjava_lang_StringI(self, v0, v1)); } // 182 1 152
10.850 - case 6: return stack.pop(); // 172
10.851 - }
10.852 -}
10.853 -function java_lang_String_endsWithZLjava_lang_String(arg0,arg1) {
10.854 - var arg2;
10.855 -;
10.856 - var stack = new Array(4);
10.857 - var gt = 0;
10.858 - for(;;) switch(gt) {
10.859 - case 0: stack.push(arg0); // 42
10.860 - case 1: stack.push(arg1); // 43
10.861 - case 2: stack.push(arg0); // 42
10.862 - case 3: stack.push(stack.pop().count); // 180 1 97
10.863 - case 6: stack.push(arg1); // 43
10.864 - case 7: stack.push(stack.pop().count); // 180 1 97
10.865 - case 10: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.866 - case 11: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.startsWithZLjava_lang_StringI(self, v0, v1)); } // 182 1 152
10.867 - case 14: return stack.pop(); // 172
10.868 - }
10.869 -}
10.870 -function java_lang_String_lastIndexOfII(arg0,arg1) {
10.871 - var arg2;
10.872 -;
10.873 - var stack = new Array(4);
10.874 - var gt = 0;
10.875 - for(;;) switch(gt) {
10.876 - case 0: stack.push(arg0); // 42
10.877 - case 1: stack.push(arg1); // 27
10.878 - case 2: stack.push(arg0); // 42
10.879 - case 3: stack.push(stack.pop().count); // 180 1 97
10.880 - case 6: stack.push(1); // 4
10.881 - case 7: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.882 - case 8: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.lastIndexOfIII(self, v0, v1)); } // 182 1 136
10.883 - case 11: return stack.pop(); // 172
10.884 - }
10.885 -}
10.886 -function java_lang_String_lastIndexOfIII(arg0,arg1,arg2) {
10.887 - var arg3;
10.888 - var arg4;
10.889 - var arg5;
10.890 - var arg6;
10.891 - var arg7;
10.892 - var arg8;
10.893 -;
10.894 - var stack = new Array(3);
10.895 - var gt = 0;
10.896 - for(;;) switch(gt) {
10.897 - case 0: stack.push(arg0); // 42
10.898 - case 1: stack.push(stack.pop().offset); // 180 1 99
10.899 - case 4: arg3 = stack.pop(); // 62
10.900 - case 5: stack.push(arg0); // 42
10.901 - case 6: stack.push(stack.pop().value); // 180 1 100
10.902 - case 9: arg4 = stack.pop() // 58 4
10.903 - case 11: stack.push(arg0); // 42
10.904 - case 12: stack.push(stack.pop().offset); // 180 1 99
10.905 - case 15: stack.push(arg2); // 28
10.906 - case 16: stack.push(arg0); // 42
10.907 - case 17: stack.push(stack.pop().count); // 180 1 97
10.908 - case 20: if (stack.pop() > stack.pop()) { gt = 32; continue; } // 161 0 12
10.909 - case 23: stack.push(arg0); // 42
10.910 - case 24: stack.push(stack.pop().count); // 180 1 97
10.911 - case 27: stack.push(1); // 4
10.912 - case 28: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.913 - case 29: gt = 33; continue; // 167 0 4
10.914 - case 32: stack.push(arg2); // 28
10.915 - case 33: stack.push(stack.pop() + stack.pop()); // 96
10.916 - case 34: arg5 = stack.pop() // 54 5
10.917 - case 36: stack.push(arg1); // 27
10.918 - case 37: stack.push(65536); // 18 3
10.919 - case 39: if (stack.pop() <= stack.pop()) { gt = 73; continue; } // 162 0 34
10.920 - case 42: stack.push(arg5); // 21 5
10.921 - case 44: stack.push(arg3); // 29
10.922 - case 45: if (stack.pop() > stack.pop()) { gt = 71; continue; } // 161 0 26
10.923 - case 48: stack.push(arg4); // 25 4
10.924 - case 50: stack.push(arg5); // 21 5
10.925 - case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.926 - case 53: stack.push(arg1); // 27
10.927 - case 54: if (stack.pop() != stack.pop()) { gt = 65; continue; } // 160 0 11
10.928 - case 57: stack.push(arg5); // 21 5
10.929 - case 59: stack.push(arg0); // 42
10.930 - case 60: stack.push(stack.pop().offset); // 180 1 99
10.931 - case 63: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.932 - case 64: return stack.pop(); // 172
10.933 - case 65: arg5 += 255; // 132 5 255
10.934 - case 68: gt = 42; continue; // 167 255 230
10.935 - case 71: // 2
10.936 - case 72: return stack.pop(); // 172
10.937 - case 73: stack.push(arg0); // 42
10.938 - case 74: stack.push(stack.pop().offset); // 180 1 99
10.939 - case 77: stack.push(arg0); // 42
10.940 - case 78: stack.push(stack.pop().count); // 180 1 97
10.941 - case 81: stack.push(stack.pop() + stack.pop()); // 96
10.942 - case 82: arg6 = stack.pop() // 54 6
10.943 - case 84: stack.push(arg1); // 27
10.944 - case 85: stack.push(1114111); // 18 4
10.945 - case 87: if (stack.pop() < stack.pop()) { gt = 154; continue; } // 163 0 67
10.946 - case 90: stack.push(arg1); // 27
10.947 - case 91: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
10.948 - case 94: arg7 = stack.pop() // 58 7
10.949 - case 96: stack.push(arg5); // 21 5
10.950 - case 98: stack.push(arg3); // 29
10.951 - case 99: if (stack.pop() > stack.pop()) { gt = 154; continue; } // 161 0 55
10.952 - case 102: stack.push(arg4); // 25 4
10.953 - case 104: stack.push(arg5); // 21 5
10.954 - case 106: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.955 - case 107: stack.push(arg7); // 25 7
10.956 - case 109: stack.push(0); // 3
10.957 - case 110: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.958 - case 111: if (stack.pop() != stack.pop()) { gt = 148; continue; } // 160 0 37
10.959 - case 114: stack.push(arg5); // 21 5
10.960 - case 116: stack.push(1); // 4
10.961 - case 117: stack.push(stack.pop() + stack.pop()); // 96
10.962 - case 118: stack.push(arg6); // 21 6
10.963 - case 120: if (stack.pop() != stack.pop()) { gt = 126; continue; } // 160 0 6
10.964 - case 123: gt = 154; continue; // 167 0 31
10.965 - case 126: stack.push(arg4); // 25 4
10.966 - case 128: stack.push(arg5); // 21 5
10.967 - case 130: stack.push(1); // 4
10.968 - case 131: stack.push(stack.pop() + stack.pop()); // 96
10.969 - case 132: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.970 - case 133: stack.push(arg7); // 25 7
10.971 - case 135: stack.push(1); // 4
10.972 - case 136: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.973 - case 137: if (stack.pop() != stack.pop()) { gt = 148; continue; } // 160 0 11
10.974 - case 140: stack.push(arg5); // 21 5
10.975 - case 142: stack.push(arg0); // 42
10.976 - case 143: stack.push(stack.pop().offset); // 180 1 99
10.977 - case 146: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.978 - case 147: return stack.pop(); // 172
10.979 - case 148: arg5 += 255; // 132 5 255
10.980 - case 151: gt = 96; continue; // 167 255 201
10.981 - case 154: // 2
10.982 - case 155: return stack.pop(); // 172
10.983 - }
10.984 -}
10.985 -function java_lang_String_indexOfILjava_lang_String(arg0,arg1) {
10.986 - var arg2;
10.987 -;
10.988 - var stack = new Array(3);
10.989 - var gt = 0;
10.990 - for(;;) switch(gt) {
10.991 - case 0: stack.push(arg0); // 42
10.992 - case 1: stack.push(arg1); // 43
10.993 - case 2: stack.push(0); // 3
10.994 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.indexOfILjava_lang_StringI(self, v0, v1)); } // 182 1 150
10.995 - case 6: return stack.pop(); // 172
10.996 - }
10.997 -}
10.998 -function java_lang_String_indexOfILjava_lang_StringI(arg0,arg1,arg2) {
10.999 - var arg3;
10.1000 -;
10.1001 - var stack = new Array(7);
10.1002 - var gt = 0;
10.1003 - for(;;) switch(gt) {
10.1004 - case 0: stack.push(arg0); // 42
10.1005 - case 1: stack.push(stack.pop().value); // 180 1 100
10.1006 - case 4: stack.push(arg0); // 42
10.1007 - case 5: stack.push(stack.pop().offset); // 180 1 99
10.1008 - case 8: stack.push(arg0); // 42
10.1009 - case 9: stack.push(stack.pop().count); // 180 1 97
10.1010 - case 12: stack.push(arg1); // 43
10.1011 - case 13: stack.push(stack.pop().value); // 180 1 100
10.1012 - case 16: stack.push(arg1); // 43
10.1013 - case 17: stack.push(stack.pop().offset); // 180 1 99
10.1014 - case 20: stack.push(arg1); // 43
10.1015 - case 21: stack.push(stack.pop().count); // 180 1 97
10.1016 - case 24: stack.push(arg2); // 28
10.1017 - case 25: { var v6 = stack.pop(); var v5 = stack.pop(); var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_String_indexOfAIACAIAIACAIAIAI(v0, v1, v2, v3, v4, v5, v6)); } // 184 1 144
10.1018 - case 28: return stack.pop(); // 172
10.1019 - }
10.1020 -}
10.1021 -function java_lang_String_indexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) {
10.1022 - var arg7;
10.1023 - var arg8;
10.1024 - var arg9;
10.1025 - var arg10;
10.1026 - var arg11;
10.1027 - var arg12;
10.1028 - var stack = new Array();
10.1029 - var gt = 0;
10.1030 - for(;;) switch(gt) {
10.1031 - case 0: stack.push(arg6); // 21 6
10.1032 - case 2: stack.push(arg2); // 28
10.1033 - case 3: if (stack.pop() > stack.pop()) { gt = 17; continue; } // 161 0 14
10.1034 - case 6: stack.push(arg5); // 21 5
10.1035 - case 8: if (stack.pop() != 0) { gt = 15; continue; } // 154 0 7
10.1036 - case 11: stack.push(arg2); // 28
10.1037 - case 12: gt = 16; continue; // 167 0 4
10.1038 - case 15: // 2
10.1039 - case 16: return stack.pop(); // 172
10.1040 - case 17: stack.push(arg6); // 21 6
10.1041 - case 19: if (stack.pop() >= 0) { gt = 25; continue; } // 156 0 6
10.1042 - case 22: stack.push(0); // 3
10.1043 - case 23: arg6 = stack.pop() // 54 6
10.1044 - case 25: stack.push(arg5); // 21 5
10.1045 - case 27: if (stack.pop() != 0) { gt = 33; continue; } // 154 0 6
10.1046 - case 30: stack.push(arg6); // 21 6
10.1047 - case 32: return stack.pop(); // 172
10.1048 - case 33: stack.push(arg3); // 45
10.1049 - case 34: stack.push(arg4); // 21 4
10.1050 - case 36: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1051 - case 37: arg7 = stack.pop() // 54 7
10.1052 - case 39: stack.push(arg1); // 27
10.1053 - case 40: stack.push(arg2); // 28
10.1054 - case 41: stack.push(arg5); // 21 5
10.1055 - case 43: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1056 - case 44: stack.push(stack.pop() + stack.pop()); // 96
10.1057 - case 45: arg8 = stack.pop() // 54 8
10.1058 - case 47: stack.push(arg1); // 27
10.1059 - case 48: stack.push(arg6); // 21 6
10.1060 - case 50: stack.push(stack.pop() + stack.pop()); // 96
10.1061 - case 51: arg9 = stack.pop() // 54 9
10.1062 - case 53: stack.push(arg9); // 21 9
10.1063 - case 55: stack.push(arg8); // 21 8
10.1064 - case 57: if (stack.pop() < stack.pop()) { gt = 164; continue; } // 163 0 107
10.1065 - case 60: stack.push(arg0); // 42
10.1066 - case 61: stack.push(arg9); // 21 9
10.1067 - case 63: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1068 - case 64: stack.push(arg7); // 21 7
10.1069 - case 66: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 25
10.1070 - case 69: arg9++; // 132 9 1
10.1071 - case 72: stack.push(arg9); // 21 9
10.1072 - case 74: stack.push(arg8); // 21 8
10.1073 - case 76: if (stack.pop() < stack.pop()) { gt = 91; continue; } // 163 0 15
10.1074 - case 79: stack.push(arg0); // 42
10.1075 - case 80: stack.push(arg9); // 21 9
10.1076 - case 82: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1077 - case 83: stack.push(arg7); // 21 7
10.1078 - case 85: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 6
10.1079 - case 88: gt = 69; continue; // 167 255 237
10.1080 - case 91: stack.push(arg9); // 21 9
10.1081 - case 93: stack.push(arg8); // 21 8
10.1082 - case 95: if (stack.pop() < stack.pop()) { gt = 158; continue; } // 163 0 63
10.1083 - case 98: stack.push(arg9); // 21 9
10.1084 - case 100: stack.push(1); // 4
10.1085 - case 101: stack.push(stack.pop() + stack.pop()); // 96
10.1086 - case 102: arg10 = stack.pop() // 54 10
10.1087 - case 104: stack.push(arg10); // 21 10
10.1088 - case 106: stack.push(arg5); // 21 5
10.1089 - case 108: stack.push(stack.pop() + stack.pop()); // 96
10.1090 - case 109: stack.push(1); // 4
10.1091 - case 110: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1092 - case 111: arg11 = stack.pop() // 54 11
10.1093 - case 113: stack.push(arg4); // 21 4
10.1094 - case 115: stack.push(1); // 4
10.1095 - case 116: stack.push(stack.pop() + stack.pop()); // 96
10.1096 - case 117: arg12 = stack.pop() // 54 12
10.1097 - case 119: stack.push(arg10); // 21 10
10.1098 - case 121: stack.push(arg11); // 21 11
10.1099 - case 123: if (stack.pop() <= stack.pop()) { gt = 146; continue; } // 162 0 23
10.1100 - case 126: stack.push(arg0); // 42
10.1101 - case 127: stack.push(arg10); // 21 10
10.1102 - case 129: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1103 - case 130: stack.push(arg3); // 45
10.1104 - case 131: stack.push(arg12); // 21 12
10.1105 - case 133: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1106 - case 134: if (stack.pop() != stack.pop()) { gt = 146; continue; } // 160 0 12
10.1107 - case 137: arg10++; // 132 10 1
10.1108 - case 140: arg12++; // 132 12 1
10.1109 - case 143: gt = 119; continue; // 167 255 232
10.1110 - case 146: stack.push(arg10); // 21 10
10.1111 - case 148: stack.push(arg11); // 21 11
10.1112 - case 150: if (stack.pop() != stack.pop()) { gt = 158; continue; } // 160 0 8
10.1113 - case 153: stack.push(arg9); // 21 9
10.1114 - case 155: stack.push(arg1); // 27
10.1115 - case 156: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1116 - case 157: return stack.pop(); // 172
10.1117 - case 158: arg9++; // 132 9 1
10.1118 - case 161: gt = 53; continue; // 167 255 148
10.1119 - case 164: // 2
10.1120 - case 165: return stack.pop(); // 172
10.1121 - }
10.1122 -}
10.1123 -function java_lang_String_lastIndexOfILjava_lang_String(arg0,arg1) {
10.1124 - var arg2;
10.1125 -;
10.1126 - var stack = new Array(3);
10.1127 - var gt = 0;
10.1128 - for(;;) switch(gt) {
10.1129 - case 0: stack.push(arg0); // 42
10.1130 - case 1: stack.push(arg1); // 43
10.1131 - case 2: stack.push(arg0); // 42
10.1132 - case 3: stack.push(stack.pop().count); // 180 1 97
10.1133 - case 6: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.lastIndexOfILjava_lang_StringI(self, v0, v1)); } // 182 1 151
10.1134 - case 9: return stack.pop(); // 172
10.1135 - }
10.1136 -}
10.1137 -function java_lang_String_lastIndexOfILjava_lang_StringI(arg0,arg1,arg2) {
10.1138 - var arg3;
10.1139 -;
10.1140 - var stack = new Array(7);
10.1141 - var gt = 0;
10.1142 - for(;;) switch(gt) {
10.1143 - case 0: stack.push(arg0); // 42
10.1144 - case 1: stack.push(stack.pop().value); // 180 1 100
10.1145 - case 4: stack.push(arg0); // 42
10.1146 - case 5: stack.push(stack.pop().offset); // 180 1 99
10.1147 - case 8: stack.push(arg0); // 42
10.1148 - case 9: stack.push(stack.pop().count); // 180 1 97
10.1149 - case 12: stack.push(arg1); // 43
10.1150 - case 13: stack.push(stack.pop().value); // 180 1 100
10.1151 - case 16: stack.push(arg1); // 43
10.1152 - case 17: stack.push(stack.pop().offset); // 180 1 99
10.1153 - case 20: stack.push(arg1); // 43
10.1154 - case 21: stack.push(stack.pop().count); // 180 1 97
10.1155 - case 24: stack.push(arg2); // 28
10.1156 - case 25: { var v6 = stack.pop(); var v5 = stack.pop(); var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_String_lastIndexOfAIACAIAIACAIAIAI(v0, v1, v2, v3, v4, v5, v6)); } // 184 1 145
10.1157 - case 28: return stack.pop(); // 172
10.1158 - }
10.1159 -}
10.1160 -function java_lang_String_lastIndexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) {
10.1161 - var arg7;
10.1162 - var arg8;
10.1163 - var arg9;
10.1164 - var arg10;
10.1165 - var arg11;
10.1166 - var arg12;
10.1167 - var arg13;
10.1168 - var arg14;
10.1169 - var stack = new Array();
10.1170 - var gt = 0;
10.1171 - for(;;) switch(gt) {
10.1172 - case 0: stack.push(arg2); // 28
10.1173 - case 1: stack.push(arg5); // 21 5
10.1174 - case 3: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1175 - case 4: arg7 = stack.pop() // 54 7
10.1176 - case 6: stack.push(arg6); // 21 6
10.1177 - case 8: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 5
10.1178 - case 11: // 2
10.1179 - case 12: return stack.pop(); // 172
10.1180 - case 13: stack.push(arg6); // 21 6
10.1181 - case 15: stack.push(arg7); // 21 7
10.1182 - case 17: if (stack.pop() >= stack.pop()) { gt = 24; continue; } // 164 0 7
10.1183 - case 20: stack.push(arg7); // 21 7
10.1184 - case 22: arg6 = stack.pop() // 54 6
10.1185 - case 24: stack.push(arg5); // 21 5
10.1186 - case 26: if (stack.pop() != 0) { gt = 32; continue; } // 154 0 6
10.1187 - case 29: stack.push(arg6); // 21 6
10.1188 - case 31: return stack.pop(); // 172
10.1189 - case 32: stack.push(arg4); // 21 4
10.1190 - case 34: stack.push(arg5); // 21 5
10.1191 - case 36: stack.push(stack.pop() + stack.pop()); // 96
10.1192 - case 37: stack.push(1); // 4
10.1193 - case 38: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1194 - case 39: arg8 = stack.pop() // 54 8
10.1195 - case 41: stack.push(arg3); // 45
10.1196 - case 42: stack.push(arg8); // 21 8
10.1197 - case 44: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1198 - case 45: arg9 = stack.pop() // 54 9
10.1199 - case 47: stack.push(arg1); // 27
10.1200 - case 48: stack.push(arg5); // 21 5
10.1201 - case 50: stack.push(stack.pop() + stack.pop()); // 96
10.1202 - case 51: stack.push(1); // 4
10.1203 - case 52: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1204 - case 53: arg10 = stack.pop() // 54 10
10.1205 - case 55: stack.push(arg10); // 21 10
10.1206 - case 57: stack.push(arg6); // 21 6
10.1207 - case 59: stack.push(stack.pop() + stack.pop()); // 96
10.1208 - case 60: arg11 = stack.pop() // 54 11
10.1209 - case 62: stack.push(arg11); // 21 11
10.1210 - case 64: stack.push(arg10); // 21 10
10.1211 - case 66: if (stack.pop() > stack.pop()) { gt = 84; continue; } // 161 0 18
10.1212 - case 69: stack.push(arg0); // 42
10.1213 - case 70: stack.push(arg11); // 21 11
10.1214 - case 72: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1215 - case 73: stack.push(arg9); // 21 9
10.1216 - case 75: if (stack.pop() == stack.pop()) { gt = 84; continue; } // 159 0 9
10.1217 - case 78: arg11 += 255; // 132 11 255
10.1218 - case 81: gt = 62; continue; // 167 255 237
10.1219 - case 84: stack.push(arg11); // 21 11
10.1220 - case 86: stack.push(arg10); // 21 10
10.1221 - case 88: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 5
10.1222 - case 91: // 2
10.1223 - case 92: return stack.pop(); // 172
10.1224 - case 93: stack.push(arg11); // 21 11
10.1225 - case 95: stack.push(1); // 4
10.1226 - case 96: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1227 - case 97: arg12 = stack.pop() // 54 12
10.1228 - case 99: stack.push(arg12); // 21 12
10.1229 - case 101: stack.push(arg5); // 21 5
10.1230 - case 103: stack.push(1); // 4
10.1231 - case 104: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1232 - case 105: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1233 - case 106: arg13 = stack.pop() // 54 13
10.1234 - case 108: stack.push(arg8); // 21 8
10.1235 - case 110: stack.push(1); // 4
10.1236 - case 111: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1237 - case 112: arg14 = stack.pop() // 54 14
10.1238 - case 114: stack.push(arg12); // 21 12
10.1239 - case 116: stack.push(arg13); // 21 13
10.1240 - case 118: if (stack.pop() >= stack.pop()) { gt = 144; continue; } // 164 0 26
10.1241 - case 121: stack.push(arg0); // 42
10.1242 - case 122: stack.push(arg12); // 21 12
10.1243 - case 124: arg12 += 255; // 132 12 255
10.1244 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1245 - case 128: stack.push(arg3); // 45
10.1246 - case 129: stack.push(arg14); // 21 14
10.1247 - case 131: arg14 += 255; // 132 14 255
10.1248 - case 134: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1249 - case 135: if (stack.pop() == stack.pop()) { gt = 114; continue; } // 159 255 235
10.1250 - case 138: arg11 += 255; // 132 11 255
10.1251 - case 141: gt = 62; continue; // 167 255 177
10.1252 - case 144: stack.push(arg13); // 21 13
10.1253 - case 146: stack.push(arg1); // 27
10.1254 - case 147: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1255 - case 148: stack.push(1); // 4
10.1256 - case 149: stack.push(stack.pop() + stack.pop()); // 96
10.1257 - case 150: return stack.pop(); // 172
10.1258 - }
10.1259 -}
10.1260 -*/
10.1261 -function java_lang_String_substringLjava_lang_StringI(arg0,arg1) {
10.1262 - return arg0.toString().substring(arg1);
10.1263 -}
10.1264 -function java_lang_String_substringLjava_lang_StringII(arg0,arg1,arg2) {
10.1265 - return arg0.toString().substring(arg1, arg2);
10.1266 -}
10.1267 -
10.1268 -function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
10.1269 - if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
10.1270 - if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
10.1271 - var s = arg0.toString();
10.1272 - for (;;) {
10.1273 - var ret = s.replace(arg1, arg2);
10.1274 - if (ret === s) {
10.1275 - return ret;
10.1276 - }
10.1277 - s = ret;
10.1278 - }
10.1279 -}
10.1280 -function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
10.1281 - return arg0.toString().indexOf(arg1.toString()) >= 0;
10.1282 -}
10.1283 -
10.1284 -/*
10.1285 -function java_lang_String_subSequenceLjava_lang_CharSequenceII(arg0,arg1,arg2) {
10.1286 - var arg3;
10.1287 -;
10.1288 - var stack = new Array(3);
10.1289 - var gt = 0;
10.1290 - for(;;) switch(gt) {
10.1291 - case 0: stack.push(arg0); // 42
10.1292 - case 1: stack.push(arg1); // 27
10.1293 - case 2: stack.push(arg2); // 28
10.1294 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.substringLjava_lang_StringII(self, v0, v1)); } // 182 1 147
10.1295 - case 6: return stack.pop(); // 176
10.1296 - }
10.1297 -}
10.1298 -function java_lang_String_concatLjava_lang_StringLjava_lang_String(arg0,arg1) {
10.1299 - var arg2;
10.1300 - var arg3;
10.1301 - var arg4;
10.1302 -;
10.1303 - var stack = new Array(5);
10.1304 - var gt = 0;
10.1305 - for(;;) switch(gt) {
10.1306 - case 0: stack.push(arg1); // 43
10.1307 - case 1: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 182 1 133
10.1308 - case 4: arg2 = stack.pop(); // 61
10.1309 - case 5: stack.push(arg2); // 28
10.1310 - case 6: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 5
10.1311 - case 9: stack.push(arg0); // 42
10.1312 - case 10: return stack.pop(); // 176
10.1313 - case 11: stack.push(arg0); // 42
10.1314 - case 12: stack.push(stack.pop().count); // 180 1 97
10.1315 - case 15: stack.push(arg2); // 28
10.1316 - case 16: stack.push(stack.pop() + stack.pop()); // 96
10.1317 - case 17: stack.push(new Array(stack.pop())); // 188 5
10.1318 - case 19: arg3 = stack.pop(); // 78
10.1319 - case 20: stack.push(arg0); // 42
10.1320 - case 21: stack.push(0); // 3
10.1321 - case 22: stack.push(arg0); // 42
10.1322 - case 23: stack.push(stack.pop().count); // 180 1 97
10.1323 - case 26: stack.push(arg3); // 45
10.1324 - case 27: stack.push(0); // 3
10.1325 - case 28: { var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); self.getCharsVIIACAI(self, v0, v1, v2, v3); } // 182 1 138
10.1326 - case 31: stack.push(arg1); // 43
10.1327 - case 32: stack.push(0); // 3
10.1328 - case 33: stack.push(arg2); // 28
10.1329 - case 34: stack.push(arg3); // 45
10.1330 - case 35: stack.push(arg0); // 42
10.1331 - case 36: stack.push(stack.pop().count); // 180 1 97
10.1332 - case 39: { var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); self.getCharsVIIACAI(self, v0, v1, v2, v3); } // 182 1 138
10.1333 - case 42: stack.push(new java_lang_String); // 187 0 200
10.1334 - case 45: stack.push(stack[stack.length - 1]); // 89
10.1335 - case 46: stack.push(0); // 3
10.1336 - case 47: stack.push(arg0); // 42
10.1337 - case 48: stack.push(stack.pop().count); // 180 1 97
10.1338 - case 51: stack.push(arg2); // 28
10.1339 - case 52: stack.push(stack.pop() + stack.pop()); // 96
10.1340 - case 53: stack.push(arg3); // 45
10.1341 - case 54: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVIIAC(stack.pop(), v0, v1, v2); } // 183 1 137
10.1342 - case 57: return stack.pop(); // 176
10.1343 - }
10.1344 -}
10.1345 -function java_lang_String_matchesZLjava_lang_String(arg0,arg1) {
10.1346 - var arg2;
10.1347 -;
10.1348 - var stack = new Array(2);
10.1349 - var gt = 0;
10.1350 - for(;;) switch(gt) {
10.1351 - case 0: stack.push(arg1); // 43
10.1352 - case 1: stack.push(arg0); // 42
10.1353 - case 2: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_util_regex_Pattern_matchesZLjava_lang_StringLjava_lang_CharSequence(v0, v1)); } // 184 1 183
10.1354 - case 5: return stack.pop(); // 172
10.1355 - }
10.1356 -}
10.1357 -function java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
10.1358 - var arg3;
10.1359 -;
10.1360 - var stack = new Array(2);
10.1361 - var gt = 0;
10.1362 - for(;;) switch(gt) {
10.1363 - case 0: stack.push(arg1); // 43
10.1364 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
10.1365 - case 4: stack.push(arg0); // 42
10.1366 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
10.1367 - case 8: stack.push(arg2); // 44
10.1368 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceFirstLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 182
10.1369 - case 12: return stack.pop(); // 176
10.1370 - }
10.1371 -}
10.1372 -function java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
10.1373 - var arg3;
10.1374 -;
10.1375 - var stack = new Array(2);
10.1376 - var gt = 0;
10.1377 - for(;;) switch(gt) {
10.1378 - case 0: stack.push(arg1); // 43
10.1379 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
10.1380 - case 4: stack.push(arg0); // 42
10.1381 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
10.1382 - case 8: stack.push(arg2); // 44
10.1383 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
10.1384 - case 12: return stack.pop(); // 176
10.1385 - }
10.1386 -}
10.1387 -function java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence(arg0,arg1,arg2) {
10.1388 - var arg3;
10.1389 -;
10.1390 - var stack = new Array(2);
10.1391 - var gt = 0;
10.1392 - for(;;) switch(gt) {
10.1393 - case 0: stack.push(arg1); // 43
10.1394 - case 1: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
10.1395 - case 4: stack.push(16); // 16 16
10.1396 - case 6: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_StringI(v0, v1)); } // 184 1 187
10.1397 - case 9: stack.push(arg0); // 42
10.1398 - case 10: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
10.1399 - case 13: stack.push(arg2); // 44
10.1400 - case 14: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
10.1401 - case 17: { var v0 = stack.pop(); stack.push(java_util_regex_Matcher_quoteReplacementLjava_lang_StringLjava_lang_String(v0)); } // 184 1 180
10.1402 - case 20: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
10.1403 - case 23: return stack.pop(); // 176
10.1404 - }
10.1405 -}
10.1406 -function java_lang_String_splitALjava_lang_StringLjava_lang_StringI(arg0,arg1,arg2) {
10.1407 - var arg3;
10.1408 -;
10.1409 - var stack = new Array(3);
10.1410 - var gt = 0;
10.1411 - for(;;) switch(gt) {
10.1412 - case 0: stack.push(arg1); // 43
10.1413 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
10.1414 - case 4: stack.push(arg0); // 42
10.1415 - case 5: stack.push(arg2); // 28
10.1416 - case 6: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.splitALjava_lang_StringLjava_lang_CharSequenceI(self, v0, v1)); } // 182 1 184
10.1417 - case 9: return stack.pop(); // 176
10.1418 - }
10.1419 -}
10.1420 -function java_lang_String_splitALjava_lang_StringLjava_lang_String(arg0,arg1) {
10.1421 - var arg2;
10.1422 -;
10.1423 - var stack = new Array(3);
10.1424 - var gt = 0;
10.1425 - for(;;) switch(gt) {
10.1426 - case 0: stack.push(arg0); // 42
10.1427 - case 1: stack.push(arg1); // 43
10.1428 - case 2: stack.push(0); // 3
10.1429 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.splitALjava_lang_StringLjava_lang_StringI(self, v0, v1)); } // 182 1 157
10.1430 - case 6: return stack.pop(); // 176
10.1431 - }
10.1432 -}
10.1433 -function java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
10.1434 - var arg2;
10.1435 - var arg3;
10.1436 - var arg4;
10.1437 - var arg5;
10.1438 - var arg6;
10.1439 - var arg7;
10.1440 - var arg8;
10.1441 - var arg9;
10.1442 - var arg10;
10.1443 - var arg11;
10.1444 - var arg12;
10.1445 - var arg13;
10.1446 - var arg14;
10.1447 -;
10.1448 - var stack = new Array(6);
10.1449 - var gt = 0;
10.1450 - for(;;) switch(gt) {
10.1451 - case 0: stack.push(arg1); // 43
10.1452 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
10.1453 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
10.1454 - case 7: stack.push(stack[stack.length - 1]); // 89
10.1455 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
10.1456 - case 11: // 191
10.1457 - case 12: stack.push(0); // 3
10.1458 - case 13: arg2 = stack.pop(); // 61
10.1459 - case 14: stack.push(arg2); // 28
10.1460 - case 15: stack.push(arg0); // 42
10.1461 - case 16: stack.push(stack.pop().count); // 180 1 97
10.1462 - case 19: if (stack.pop() <= stack.pop()) { gt = 94; continue; } // 162 0 75
10.1463 - case 22: stack.push(arg0); // 42
10.1464 - case 23: stack.push(stack.pop().value); // 180 1 100
10.1465 - case 26: stack.push(arg0); // 42
10.1466 - case 27: stack.push(stack.pop().offset); // 180 1 99
10.1467 - case 30: stack.push(arg2); // 28
10.1468 - case 31: stack.push(stack.pop() + stack.pop()); // 96
10.1469 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1470 - case 33: arg3 = stack.pop(); // 62
10.1471 - case 34: stack.push(arg3); // 29
10.1472 - case 35: stack.push(55296); // 18 1
10.1473 - case 37: if (stack.pop() > stack.pop()) { gt = 77; continue; } // 161 0 40
10.1474 - case 40: stack.push(arg3); // 29
10.1475 - case 41: stack.push(56319); // 18 2
10.1476 - case 43: if (stack.pop() < stack.pop()) { gt = 77; continue; } // 163 0 34
10.1477 - case 46: stack.push(arg0); // 42
10.1478 - case 47: stack.push(arg2); // 28
10.1479 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
10.1480 - case 51: arg4 = stack.pop() // 54 4
10.1481 - case 53: stack.push(arg4); // 21 4
10.1482 - case 55: stack.push(arg4); // 21 4
10.1483 - case 57: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
10.1484 - case 60: if (stack.pop() == stack.pop()) { gt = 66; continue; } // 159 0 6
10.1485 - case 63: gt = 96; continue; // 167 0 33
10.1486 - case 66: stack.push(arg2); // 28
10.1487 - case 67: stack.push(arg4); // 21 4
10.1488 - case 69: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
10.1489 - case 72: stack.push(stack.pop() + stack.pop()); // 96
10.1490 - case 73: arg2 = stack.pop(); // 61
10.1491 - case 74: gt = 91; continue; // 167 0 17
10.1492 - case 77: stack.push(arg3); // 29
10.1493 - case 78: stack.push(arg3); // 29
10.1494 - case 79: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
10.1495 - case 82: if (stack.pop() == stack.pop()) { gt = 88; continue; } // 159 0 6
10.1496 - case 85: gt = 96; continue; // 167 0 11
10.1497 - case 88: arg2++; // 132 2 1
10.1498 - case 91: gt = 14; continue; // 167 255 179
10.1499 - case 94: stack.push(arg0); // 42
10.1500 - case 95: return stack.pop(); // 176
10.1501 - case 96: stack.push(arg0); // 42
10.1502 - case 97: stack.push(stack.pop().count); // 180 1 97
10.1503 - case 100: stack.push(new Array(stack.pop())); // 188 5
10.1504 - case 102: arg3 = stack.pop(); // 78
10.1505 - case 103: stack.push(0); // 3
10.1506 - case 104: arg4 = stack.pop() // 54 4
10.1507 - case 106: stack.push(arg0); // 42
10.1508 - case 107: stack.push(stack.pop().value); // 180 1 100
10.1509 - case 110: stack.push(arg0); // 42
10.1510 - case 111: stack.push(stack.pop().offset); // 180 1 99
10.1511 - case 114: stack.push(arg3); // 45
10.1512 - case 115: stack.push(0); // 3
10.1513 - case 116: stack.push(arg2); // 28
10.1514 - case 117: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_System_arraycopyVLjava_lang_ObjectILjava_lang_ObjectII(v0, v1, v2, v3, v4); } // 184 1 171
10.1515 - case 120: stack.push(arg1); // 43
10.1516 - case 121: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
10.1517 - case 124: arg5 = stack.pop() // 58 5
10.1518 - case 126: stack.push(arg5); // 25 5
10.1519 - case 128: stack.push("tr"); // 18 11
10.1520 - case 130: // 165
10.1521 - case 131: // 0
10.1522 - case 132: stack.push(6405); // 17 25 5
10.1523 - case 135: stack.push("az"); // 18 5
10.1524 - case 137: // 165
10.1525 - case 138: // 0
10.1526 - case 139: stack.push(1); // 10
10.1527 - case 140: stack.push(arg5); // 25 5
10.1528 - case 142: stack.push("lt"); // 18 9
10.1529 - case 144: // 166
10.1530 - case 145: // 0
10.1531 - case 146: stack.push(4); // 7
10.1532 - case 147: stack.push(1); // 4
10.1533 - case 148: gt = 152; continue; // 167 0 4
10.1534 - case 151: stack.push(0); // 3
10.1535 - case 152: arg6 = stack.pop() // 54 6
10.1536 - case 154: stack.push(arg2); // 28
10.1537 - case 155: arg11 = stack.pop() // 54 11
10.1538 - case 157: stack.push(arg11); // 21 11
10.1539 - case 159: stack.push(arg0); // 42
10.1540 - case 160: stack.push(stack.pop().count); // 180 1 97
10.1541 - case 163: if (stack.pop() <= stack.pop()) { gt = 419; continue; } // 162 1 0
10.1542 - case 166: stack.push(arg0); // 42
10.1543 - case 167: stack.push(stack.pop().value); // 180 1 100
10.1544 - case 170: stack.push(arg0); // 42
10.1545 - case 171: stack.push(stack.pop().offset); // 180 1 99
10.1546 - case 174: stack.push(arg11); // 21 11
10.1547 - case 176: stack.push(stack.pop() + stack.pop()); // 96
10.1548 - case 177: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1549 - case 178: arg9 = stack.pop() // 54 9
10.1550 - case 180: stack.push(arg9); // 21 9
10.1551 - case 182: // number conversion // 146
10.1552 - case 183: stack.push(55296); // 18 1
10.1553 - case 185: if (stack.pop() > stack.pop()) { gt = 214; continue; } // 161 0 29
10.1554 - case 188: stack.push(arg9); // 21 9
10.1555 - case 190: // number conversion // 146
10.1556 - case 191: stack.push(56319); // 18 2
10.1557 - case 193: if (stack.pop() < stack.pop()) { gt = 214; continue; } // 163 0 21
10.1558 - case 196: stack.push(arg0); // 42
10.1559 - case 197: stack.push(arg11); // 21 11
10.1560 - case 199: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
10.1561 - case 202: arg9 = stack.pop() // 54 9
10.1562 - case 204: stack.push(arg9); // 21 9
10.1563 - case 206: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
10.1564 - case 209: arg10 = stack.pop() // 54 10
10.1565 - case 211: gt = 217; continue; // 167 0 6
10.1566 - case 214: stack.push(1); // 4
10.1567 - case 215: arg10 = stack.pop() // 54 10
10.1568 - case 217: stack.push(arg6); // 21 6
10.1569 - case 219: if (stack.pop() != 0) { gt = 230; continue; } // 154 0 11
10.1570 - case 222: stack.push(arg9); // 21 9
10.1571 - case 224: stack.push(931); // 17 3 163
10.1572 - case 227: if (stack.pop() != stack.pop()) { gt = 242; continue; } // 160 0 15
10.1573 - case 230: stack.push(arg0); // 42
10.1574 - case 231: stack.push(arg11); // 21 11
10.1575 - case 233: stack.push(arg1); // 43
10.1576 - case 234: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_ConditionalSpecialCasing_toLowerCaseExILjava_lang_StringILjava_util_Locale(v0, v1, v2)); } // 184 1 117
10.1577 - case 237: arg8 = stack.pop() // 54 8
10.1578 - case 239: gt = 249; continue; // 167 0 10
10.1579 - case 242: stack.push(arg9); // 21 9
10.1580 - case 244: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
10.1581 - case 247: arg8 = stack.pop() // 54 8
10.1582 - case 249: stack.push(arg8); // 21 8
10.1583 - case 251: // 2
10.1584 - case 252: if (stack.pop() == stack.pop()) { gt = 262; continue; } // 159 0 10
10.1585 - case 255: stack.push(arg8); // 21 8
10.1586 - case 257: stack.push(65536); // 18 3
10.1587 - case 259: if (stack.pop() > stack.pop()) { gt = 399; continue; } // 161 0 140
10.1588 - case 262: stack.push(arg8); // 21 8
10.1589 - case 264: // 2
10.1590 - case 265: if (stack.pop() != stack.pop()) { gt = 280; continue; } // 160 0 15
10.1591 - case 268: stack.push(arg0); // 42
10.1592 - case 269: stack.push(arg11); // 21 11
10.1593 - case 271: stack.push(arg1); // 43
10.1594 - case 272: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_ConditionalSpecialCasing_toLowerCaseCharArrayACLjava_lang_StringILjava_util_Locale(v0, v1, v2)); } // 184 1 119
10.1595 - case 275: arg7 = stack.pop() // 58 7
10.1596 - case 277: gt = 315; continue; // 167 0 38
10.1597 - case 280: stack.push(arg10); // 21 10
10.1598 - case 282: stack.push(2); // 5
10.1599 - case 283: if (stack.pop() != stack.pop()) { gt = 308; continue; } // 160 0 25
10.1600 - case 286: stack.push(arg4); // 21 4
10.1601 - case 288: stack.push(arg8); // 21 8
10.1602 - case 290: stack.push(arg3); // 45
10.1603 - case 291: stack.push(arg11); // 21 11
10.1604 - case 293: stack.push(arg4); // 21 4
10.1605 - case 295: stack.push(stack.pop() + stack.pop()); // 96
10.1606 - case 296: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_toCharsAIIACAI(v0, v1, v2)); } // 184 1 111
10.1607 - case 299: stack.push(arg10); // 21 10
10.1608 - case 301: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1609 - case 302: stack.push(stack.pop() + stack.pop()); // 96
10.1610 - case 303: arg4 = stack.pop() // 54 4
10.1611 - case 305: gt = 409; continue; // 167 0 104
10.1612 - case 308: stack.push(arg8); // 21 8
10.1613 - case 310: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
10.1614 - case 313: arg7 = stack.pop() // 58 7
10.1615 - case 315: stack.push(arg7); // 25 7
10.1616 - case 317: stack.push(stack.pop().length); // 190
10.1617 - case 318: arg12 = stack.pop() // 54 12
10.1618 - case 320: stack.push(arg12); // 21 12
10.1619 - case 322: stack.push(arg10); // 21 10
10.1620 - case 324: if (stack.pop() >= stack.pop()) { gt = 355; continue; } // 164 0 31
10.1621 - case 327: stack.push(arg3); // 45
10.1622 - case 328: stack.push(stack.pop().length); // 190
10.1623 - case 329: stack.push(arg12); // 21 12
10.1624 - case 331: stack.push(stack.pop() + stack.pop()); // 96
10.1625 - case 332: stack.push(arg10); // 21 10
10.1626 - case 334: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1627 - case 335: stack.push(new Array(stack.pop())); // 188 5
10.1628 - case 337: arg13 = stack.pop() // 58 13
10.1629 - case 339: stack.push(arg3); // 45
10.1630 - case 340: stack.push(0); // 3
10.1631 - case 341: stack.push(arg13); // 25 13
10.1632 - case 343: stack.push(0); // 3
10.1633 - case 344: stack.push(arg11); // 21 11
10.1634 - case 346: stack.push(arg4); // 21 4
10.1635 - case 348: stack.push(stack.pop() + stack.pop()); // 96
10.1636 - case 349: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_System_arraycopyVLjava_lang_ObjectILjava_lang_ObjectII(v0, v1, v2, v3, v4); } // 184 1 171
10.1637 - case 352: stack.push(arg13); // 25 13
10.1638 - case 354: arg3 = stack.pop(); // 78
10.1639 - case 355: stack.push(0); // 3
10.1640 - case 356: arg13 = stack.pop() // 54 13
10.1641 - case 358: stack.push(arg13); // 21 13
10.1642 - case 360: stack.push(arg12); // 21 12
10.1643 - case 362: if (stack.pop() <= stack.pop()) { gt = 386; continue; } // 162 0 24
10.1644 - case 365: stack.push(arg3); // 45
10.1645 - case 366: stack.push(arg11); // 21 11
10.1646 - case 368: stack.push(arg4); // 21 4
10.1647 - case 370: stack.push(stack.pop() + stack.pop()); // 96
10.1648 - case 371: stack.push(arg13); // 21 13
10.1649 - case 373: stack.push(stack.pop() + stack.pop()); // 96
10.1650 - case 374: stack.push(arg7); // 25 7
10.1651 - case 376: stack.push(arg13); // 21 13
10.1652 - case 378: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1653 - case 379: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
10.1654 - case 380: arg13++; // 132 13 1
10.1655 - case 383: gt = 358; continue; // 167 255 231
10.1656 - case 386: stack.push(arg4); // 21 4
10.1657 - case 388: stack.push(arg12); // 21 12
10.1658 - case 390: stack.push(arg10); // 21 10
10.1659 - case 392: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1660 - case 393: stack.push(stack.pop() + stack.pop()); // 96
10.1661 - case 394: arg4 = stack.pop() // 54 4
10.1662 - case 396: gt = 409; continue; // 167 0 13
10.1663 - case 399: stack.push(arg3); // 45
10.1664 - case 400: stack.push(arg11); // 21 11
10.1665 - case 402: stack.push(arg4); // 21 4
10.1666 - case 404: stack.push(stack.pop() + stack.pop()); // 96
10.1667 - case 405: stack.push(arg8); // 21 8
10.1668 - case 407: // number conversion // 146
10.1669 - case 408: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
10.1670 - case 409: stack.push(arg11); // 21 11
10.1671 - case 411: stack.push(arg10); // 21 10
10.1672 - case 413: stack.push(stack.pop() + stack.pop()); // 96
10.1673 - case 414: arg11 = stack.pop() // 54 11
10.1674 - case 416: gt = 157; continue; // 167 254 253
10.1675 - case 419: stack.push(new java_lang_String); // 187 0 200
10.1676 - case 422: stack.push(stack[stack.length - 1]); // 89
10.1677 - case 423: stack.push(0); // 3
10.1678 - case 424: stack.push(arg0); // 42
10.1679 - case 425: stack.push(stack.pop().count); // 180 1 97
10.1680 - case 428: stack.push(arg4); // 21 4
10.1681 - case 430: stack.push(stack.pop() + stack.pop()); // 96
10.1682 - case 431: stack.push(arg3); // 45
10.1683 - case 432: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVIIAC(stack.pop(), v0, v1, v2); } // 183 1 137
10.1684 - case 435: return stack.pop(); // 176
10.1685 - }
10.1686 -}
10.1687 -function java_lang_String_toLowerCaseLjava_lang_String(arg0) {
10.1688 - var arg1;
10.1689 -;
10.1690 - var stack = new Array(2);
10.1691 - var gt = 0;
10.1692 - for(;;) switch(gt) {
10.1693 - case 0: stack.push(arg0); // 42
10.1694 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
10.1695 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toLowerCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 158
10.1696 - case 7: return stack.pop(); // 176
10.1697 - }
10.1698 -}
10.1699 -function java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
10.1700 - var arg2;
10.1701 - var arg3;
10.1702 - var arg4;
10.1703 - var arg5;
10.1704 - var arg6;
10.1705 - var arg7;
10.1706 - var arg8;
10.1707 - var arg9;
10.1708 - var arg10;
10.1709 - var arg11;
10.1710 - var arg12;
10.1711 - var arg13;
10.1712 - var arg14;
10.1713 -;
10.1714 - var stack = new Array(6);
10.1715 - var gt = 0;
10.1716 - for(;;) switch(gt) {
10.1717 - case 0: stack.push(arg1); // 43
10.1718 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
10.1719 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
10.1720 - case 7: stack.push(stack[stack.length - 1]); // 89
10.1721 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
10.1722 - case 11: // 191
10.1723 - case 12: stack.push(0); // 3
10.1724 - case 13: arg2 = stack.pop(); // 61
10.1725 - case 14: stack.push(arg2); // 28
10.1726 - case 15: stack.push(arg0); // 42
10.1727 - case 16: stack.push(stack.pop().count); // 180 1 97
10.1728 - case 19: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 74
10.1729 - case 22: stack.push(arg0); // 42
10.1730 - case 23: stack.push(stack.pop().value); // 180 1 100
10.1731 - case 26: stack.push(arg0); // 42
10.1732 - case 27: stack.push(stack.pop().offset); // 180 1 99
10.1733 - case 30: stack.push(arg2); // 28
10.1734 - case 31: stack.push(stack.pop() + stack.pop()); // 96
10.1735 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1736 - case 33: arg3 = stack.pop(); // 62
10.1737 - case 34: stack.push(arg3); // 29
10.1738 - case 35: stack.push(55296); // 18 1
10.1739 - case 37: if (stack.pop() > stack.pop()) { gt = 61; continue; } // 161 0 24
10.1740 - case 40: stack.push(arg3); // 29
10.1741 - case 41: stack.push(56319); // 18 2
10.1742 - case 43: if (stack.pop() < stack.pop()) { gt = 61; continue; } // 163 0 18
10.1743 - case 46: stack.push(arg0); // 42
10.1744 - case 47: stack.push(arg2); // 28
10.1745 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
10.1746 - case 51: arg3 = stack.pop(); // 62
10.1747 - case 52: stack.push(arg3); // 29
10.1748 - case 53: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
10.1749 - case 56: arg4 = stack.pop() // 54 4
10.1750 - case 58: gt = 64; continue; // 167 0 6
10.1751 - case 61: stack.push(1); // 4
10.1752 - case 62: arg4 = stack.pop() // 54 4
10.1753 - case 64: stack.push(arg3); // 29
10.1754 - case 65: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
10.1755 - case 68: arg5 = stack.pop() // 54 5
10.1756 - case 70: stack.push(arg5); // 21 5
10.1757 - case 72: // 2
10.1758 - case 73: if (stack.pop() == stack.pop()) { gt = 95; continue; } // 159 0 22
10.1759 - case 76: stack.push(arg3); // 29
10.1760 - case 77: stack.push(arg5); // 21 5
10.1761 - case 79: if (stack.pop() == stack.pop()) { gt = 85; continue; } // 159 0 6
10.1762 - case 82: gt = 95; continue; // 167 0 13
10.1763 - case 85: stack.push(arg2); // 28
10.1764 - case 86: stack.push(arg4); // 21 4
10.1765 - case 88: stack.push(stack.pop() + stack.pop()); // 96
10.1766 - case 89: arg2 = stack.pop(); // 61
10.1767 - case 90: gt = 14; continue; // 167 255 180
10.1768 - case 93: stack.push(arg0); // 42
10.1769 - case 94: return stack.pop(); // 176
10.1770 - case 95: stack.push(arg0); // 42
10.1771 - case 96: stack.push(stack.pop().count); // 180 1 97
10.1772 - case 99: stack.push(new Array(stack.pop())); // 188 5
10.1773 - case 101: arg3 = stack.pop(); // 78
10.1774 - case 102: stack.push(0); // 3
10.1775 - case 103: arg4 = stack.pop() // 54 4
10.1776 - case 105: stack.push(arg0); // 42
10.1777 - case 106: stack.push(stack.pop().value); // 180 1 100
10.1778 - case 109: stack.push(arg0); // 42
10.1779 - case 110: stack.push(stack.pop().offset); // 180 1 99
10.1780 - case 113: stack.push(arg3); // 45
10.1781 - case 114: stack.push(0); // 3
10.1782 - case 115: stack.push(arg2); // 28
10.1783 - case 116: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_System_arraycopyVLjava_lang_ObjectILjava_lang_ObjectII(v0, v1, v2, v3, v4); } // 184 1 171
10.1784 - case 119: stack.push(arg1); // 43
10.1785 - case 120: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
10.1786 - case 123: arg5 = stack.pop() // 58 5
10.1787 - case 125: stack.push(arg5); // 25 5
10.1788 - case 127: stack.push("tr"); // 18 11
10.1789 - case 129: // 165
10.1790 - case 130: // 0
10.1791 - case 131: stack.push(6405); // 17 25 5
10.1792 - case 134: stack.push("az"); // 18 5
10.1793 - case 136: // 165
10.1794 - case 137: // 0
10.1795 - case 138: stack.push(1); // 10
10.1796 - case 139: stack.push(arg5); // 25 5
10.1797 - case 141: stack.push("lt"); // 18 9
10.1798 - case 143: // 166
10.1799 - case 144: // 0
10.1800 - case 145: stack.push(4); // 7
10.1801 - case 146: stack.push(1); // 4
10.1802 - case 147: gt = 151; continue; // 167 0 4
10.1803 - case 150: stack.push(0); // 3
10.1804 - case 151: arg6 = stack.pop() // 54 6
10.1805 - case 153: stack.push(arg2); // 28
10.1806 - case 154: arg11 = stack.pop() // 54 11
10.1807 - case 156: stack.push(arg11); // 21 11
10.1808 - case 158: stack.push(arg0); // 42
10.1809 - case 159: stack.push(stack.pop().count); // 180 1 97
10.1810 - case 162: if (stack.pop() <= stack.pop()) { gt = 425; continue; } // 162 1 7
10.1811 - case 165: stack.push(arg0); // 42
10.1812 - case 166: stack.push(stack.pop().value); // 180 1 100
10.1813 - case 169: stack.push(arg0); // 42
10.1814 - case 170: stack.push(stack.pop().offset); // 180 1 99
10.1815 - case 173: stack.push(arg11); // 21 11
10.1816 - case 175: stack.push(stack.pop() + stack.pop()); // 96
10.1817 - case 176: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1818 - case 177: arg9 = stack.pop() // 54 9
10.1819 - case 179: stack.push(arg9); // 21 9
10.1820 - case 181: // number conversion // 146
10.1821 - case 182: stack.push(55296); // 18 1
10.1822 - case 184: if (stack.pop() > stack.pop()) { gt = 213; continue; } // 161 0 29
10.1823 - case 187: stack.push(arg9); // 21 9
10.1824 - case 189: // number conversion // 146
10.1825 - case 190: stack.push(56319); // 18 2
10.1826 - case 192: if (stack.pop() < stack.pop()) { gt = 213; continue; } // 163 0 21
10.1827 - case 195: stack.push(arg0); // 42
10.1828 - case 196: stack.push(arg11); // 21 11
10.1829 - case 198: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
10.1830 - case 201: arg9 = stack.pop() // 54 9
10.1831 - case 203: stack.push(arg9); // 21 9
10.1832 - case 205: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
10.1833 - case 208: arg10 = stack.pop() // 54 10
10.1834 - case 210: gt = 216; continue; // 167 0 6
10.1835 - case 213: stack.push(1); // 4
10.1836 - case 214: arg10 = stack.pop() // 54 10
10.1837 - case 216: stack.push(arg6); // 21 6
10.1838 - case 218: if (stack.pop() == 0) { gt = 233; continue; } // 153 0 15
10.1839 - case 221: stack.push(arg0); // 42
10.1840 - case 222: stack.push(arg11); // 21 11
10.1841 - case 224: stack.push(arg1); // 43
10.1842 - case 225: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_ConditionalSpecialCasing_toUpperCaseExILjava_lang_StringILjava_util_Locale(v0, v1, v2)); } // 184 1 118
10.1843 - case 228: arg8 = stack.pop() // 54 8
10.1844 - case 230: gt = 240; continue; // 167 0 10
10.1845 - case 233: stack.push(arg9); // 21 9
10.1846 - case 235: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
10.1847 - case 238: arg8 = stack.pop() // 54 8
10.1848 - case 240: stack.push(arg8); // 21 8
10.1849 - case 242: // 2
10.1850 - case 243: if (stack.pop() == stack.pop()) { gt = 253; continue; } // 159 0 10
10.1851 - case 246: stack.push(arg8); // 21 8
10.1852 - case 248: stack.push(65536); // 18 3
10.1853 - case 250: if (stack.pop() > stack.pop()) { gt = 405; continue; } // 161 0 155
10.1854 - case 253: stack.push(arg8); // 21 8
10.1855 - case 255: // 2
10.1856 - case 256: if (stack.pop() != stack.pop()) { gt = 286; continue; } // 160 0 30
10.1857 - case 259: stack.push(arg6); // 21 6
10.1858 - case 261: if (stack.pop() == 0) { gt = 276; continue; } // 153 0 15
10.1859 - case 264: stack.push(arg0); // 42
10.1860 - case 265: stack.push(arg11); // 21 11
10.1861 - case 267: stack.push(arg1); // 43
10.1862 - case 268: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_ConditionalSpecialCasing_toUpperCaseCharArrayACLjava_lang_StringILjava_util_Locale(v0, v1, v2)); } // 184 1 120
10.1863 - case 271: arg7 = stack.pop() // 58 7
10.1864 - case 273: gt = 321; continue; // 167 0 48
10.1865 - case 276: stack.push(arg9); // 21 9
10.1866 - case 278: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCharArrayACI(v0)); } // 184 1 110
10.1867 - case 281: arg7 = stack.pop() // 58 7
10.1868 - case 283: gt = 321; continue; // 167 0 38
10.1869 - case 286: stack.push(arg10); // 21 10
10.1870 - case 288: stack.push(2); // 5
10.1871 - case 289: if (stack.pop() != stack.pop()) { gt = 314; continue; } // 160 0 25
10.1872 - case 292: stack.push(arg4); // 21 4
10.1873 - case 294: stack.push(arg8); // 21 8
10.1874 - case 296: stack.push(arg3); // 45
10.1875 - case 297: stack.push(arg11); // 21 11
10.1876 - case 299: stack.push(arg4); // 21 4
10.1877 - case 301: stack.push(stack.pop() + stack.pop()); // 96
10.1878 - case 302: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Character_toCharsAIIACAI(v0, v1, v2)); } // 184 1 111
10.1879 - case 305: stack.push(arg10); // 21 10
10.1880 - case 307: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1881 - case 308: stack.push(stack.pop() + stack.pop()); // 96
10.1882 - case 309: arg4 = stack.pop() // 54 4
10.1883 - case 311: gt = 415; continue; // 167 0 104
10.1884 - case 314: stack.push(arg8); // 21 8
10.1885 - case 316: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
10.1886 - case 319: arg7 = stack.pop() // 58 7
10.1887 - case 321: stack.push(arg7); // 25 7
10.1888 - case 323: stack.push(stack.pop().length); // 190
10.1889 - case 324: arg12 = stack.pop() // 54 12
10.1890 - case 326: stack.push(arg12); // 21 12
10.1891 - case 328: stack.push(arg10); // 21 10
10.1892 - case 330: if (stack.pop() >= stack.pop()) { gt = 361; continue; } // 164 0 31
10.1893 - case 333: stack.push(arg3); // 45
10.1894 - case 334: stack.push(stack.pop().length); // 190
10.1895 - case 335: stack.push(arg12); // 21 12
10.1896 - case 337: stack.push(stack.pop() + stack.pop()); // 96
10.1897 - case 338: stack.push(arg10); // 21 10
10.1898 - case 340: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1899 - case 341: stack.push(new Array(stack.pop())); // 188 5
10.1900 - case 343: arg13 = stack.pop() // 58 13
10.1901 - case 345: stack.push(arg3); // 45
10.1902 - case 346: stack.push(0); // 3
10.1903 - case 347: stack.push(arg13); // 25 13
10.1904 - case 349: stack.push(0); // 3
10.1905 - case 350: stack.push(arg11); // 21 11
10.1906 - case 352: stack.push(arg4); // 21 4
10.1907 - case 354: stack.push(stack.pop() + stack.pop()); // 96
10.1908 - case 355: { var v4 = stack.pop(); var v3 = stack.pop(); var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_System_arraycopyVLjava_lang_ObjectILjava_lang_ObjectII(v0, v1, v2, v3, v4); } // 184 1 171
10.1909 - case 358: stack.push(arg13); // 25 13
10.1910 - case 360: arg3 = stack.pop(); // 78
10.1911 - case 361: stack.push(0); // 3
10.1912 - case 362: arg13 = stack.pop() // 54 13
10.1913 - case 364: stack.push(arg13); // 21 13
10.1914 - case 366: stack.push(arg12); // 21 12
10.1915 - case 368: if (stack.pop() <= stack.pop()) { gt = 392; continue; } // 162 0 24
10.1916 - case 371: stack.push(arg3); // 45
10.1917 - case 372: stack.push(arg11); // 21 11
10.1918 - case 374: stack.push(arg4); // 21 4
10.1919 - case 376: stack.push(stack.pop() + stack.pop()); // 96
10.1920 - case 377: stack.push(arg13); // 21 13
10.1921 - case 379: stack.push(stack.pop() + stack.pop()); // 96
10.1922 - case 380: stack.push(arg7); // 25 7
10.1923 - case 382: stack.push(arg13); // 21 13
10.1924 - case 384: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.1925 - case 385: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
10.1926 - case 386: arg13++; // 132 13 1
10.1927 - case 389: gt = 364; continue; // 167 255 231
10.1928 - case 392: stack.push(arg4); // 21 4
10.1929 - case 394: stack.push(arg12); // 21 12
10.1930 - case 396: stack.push(arg10); // 21 10
10.1931 - case 398: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.1932 - case 399: stack.push(stack.pop() + stack.pop()); // 96
10.1933 - case 400: arg4 = stack.pop() // 54 4
10.1934 - case 402: gt = 415; continue; // 167 0 13
10.1935 - case 405: stack.push(arg3); // 45
10.1936 - case 406: stack.push(arg11); // 21 11
10.1937 - case 408: stack.push(arg4); // 21 4
10.1938 - case 410: stack.push(stack.pop() + stack.pop()); // 96
10.1939 - case 411: stack.push(arg8); // 21 8
10.1940 - case 413: // number conversion // 146
10.1941 - case 414: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
10.1942 - case 415: stack.push(arg11); // 21 11
10.1943 - case 417: stack.push(arg10); // 21 10
10.1944 - case 419: stack.push(stack.pop() + stack.pop()); // 96
10.1945 - case 420: arg11 = stack.pop() // 54 11
10.1946 - case 422: gt = 156; continue; // 167 254 246
10.1947 - case 425: stack.push(new java_lang_String); // 187 0 200
10.1948 - case 428: stack.push(stack[stack.length - 1]); // 89
10.1949 - case 429: stack.push(0); // 3
10.1950 - case 430: stack.push(arg0); // 42
10.1951 - case 431: stack.push(stack.pop().count); // 180 1 97
10.1952 - case 434: stack.push(arg4); // 21 4
10.1953 - case 436: stack.push(stack.pop() + stack.pop()); // 96
10.1954 - case 437: stack.push(arg3); // 45
10.1955 - case 438: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVIIAC(stack.pop(), v0, v1, v2); } // 183 1 137
10.1956 - case 441: return stack.pop(); // 176
10.1957 - }
10.1958 -}
10.1959 -function java_lang_String_toUpperCaseLjava_lang_String(arg0) {
10.1960 - var arg1;
10.1961 -;
10.1962 - var stack = new Array(2);
10.1963 - var gt = 0;
10.1964 - for(;;) switch(gt) {
10.1965 - case 0: stack.push(arg0); // 42
10.1966 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
10.1967 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toUpperCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 159
10.1968 - case 7: return stack.pop(); // 176
10.1969 - }
10.1970 -}
10.1971 -function java_lang_String_trimLjava_lang_String(arg0) {
10.1972 - var arg1;
10.1973 - var arg2;
10.1974 - var arg3;
10.1975 - var arg4;
10.1976 - var arg5;
10.1977 -;
10.1978 - var stack = new Array(3);
10.1979 - var gt = 0;
10.1980 - for(;;) switch(gt) {
10.1981 - case 0: stack.push(arg0); // 42
10.1982 - case 1: stack.push(stack.pop().count); // 180 1 97
10.1983 - case 4: arg1 = stack.pop(); // 60
10.1984 - case 5: stack.push(0); // 3
10.1985 - case 6: arg2 = stack.pop(); // 61
10.1986 - case 7: stack.push(arg0); // 42
10.1987 - case 8: stack.push(stack.pop().offset); // 180 1 99
10.1988 - case 11: arg3 = stack.pop(); // 62
10.1989 - case 12: stack.push(arg0); // 42
10.1990 - case 13: stack.push(stack.pop().value); // 180 1 100
10.1991 - case 16: arg4 = stack.pop() // 58 4
10.1992 - case 18: stack.push(arg2); // 28
10.1993 - case 19: stack.push(arg1); // 27
10.1994 - case 20: if (stack.pop() <= stack.pop()) { gt = 40; continue; } // 162 0 20
10.1995 - case 23: stack.push(arg4); // 25 4
10.1996 - case 25: stack.push(arg3); // 29
10.1997 - case 26: stack.push(arg2); // 28
10.1998 - case 27: stack.push(stack.pop() + stack.pop()); // 96
10.1999 - case 28: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.2000 - case 29: stack.push(32); // 16 32
10.2001 - case 31: if (stack.pop() < stack.pop()) { gt = 40; continue; } // 163 0 9
10.2002 - case 34: arg2++; // 132 2 1
10.2003 - case 37: gt = 18; continue; // 167 255 237
10.2004 - case 40: stack.push(arg2); // 28
10.2005 - case 41: stack.push(arg1); // 27
10.2006 - case 42: if (stack.pop() <= stack.pop()) { gt = 64; continue; } // 162 0 22
10.2007 - case 45: stack.push(arg4); // 25 4
10.2008 - case 47: stack.push(arg3); // 29
10.2009 - case 48: stack.push(arg1); // 27
10.2010 - case 49: stack.push(stack.pop() + stack.pop()); // 96
10.2011 - case 50: stack.push(1); // 4
10.2012 - case 51: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
10.2013 - case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
10.2014 - case 53: stack.push(32); // 16 32
10.2015 - case 55: if (stack.pop() < stack.pop()) { gt = 64; continue; } // 163 0 9
10.2016 - case 58: arg1 += 255; // 132 1 255
10.2017 - case 61: gt = 40; continue; // 167 255 235
10.2018 - case 64: stack.push(arg2); // 28
10.2019 - case 65: if (stack.pop() > 0) { gt = 76; continue; } // 157 0 11
10.2020 - case 68: stack.push(arg1); // 27
10.2021 - case 69: stack.push(arg0); // 42
10.2022 - case 70: stack.push(stack.pop().count); // 180 1 97
10.2023 - case 73: if (stack.pop() <= stack.pop()) { gt = 85; continue; } // 162 0 12
10.2024 - case 76: stack.push(arg0); // 42
10.2025 - case 77: stack.push(arg2); // 28
10.2026 - case 78: stack.push(arg1); // 27
10.2027 - case 79: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.substringLjava_lang_StringII(self, v0, v1)); } // 182 1 147
10.2028 - case 82: gt = 86; continue; // 167 0 4
10.2029 - case 85: stack.push(arg0); // 42
10.2030 - case 86: return stack.pop(); // 176
10.2031 - }
10.2032 -}
10.2033 -*/
10.2034 -function java_lang_String_toStringLjava_lang_String(arg0) {
10.2035 - return arg0.toString();
10.2036 -}
10.2037 -function java_lang_String_toCharArrayAC(arg0) {
10.2038 - return arg0.toString().split('');
10.2039 -}
10.2040 -/*
10.2041 -function java_lang_String_formatLjava_lang_StringLjava_lang_StringLjava_lang_Object(arg0,arg1) {
10.2042 - var stack = new Array();
10.2043 - var gt = 0;
10.2044 - for(;;) switch(gt) {
10.2045 - case 0: stack.push(new java_util_Formatter); // 187 0 211
10.2046 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2047 - case 4: { java_util_Formatter_consV(stack.pop()); } // 183 1 174
10.2048 - case 7: stack.push(arg0); // 42
10.2049 - case 8: stack.push(arg1); // 43
10.2050 - case 9: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.formatALjava_util_FormatterLjava_lang_StringALjava_lang_Object(self, v0, v1)); } // 182 1 177
10.2051 - case 12: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
10.2052 - case 15: return stack.pop(); // 176
10.2053 - }
10.2054 -}
10.2055 -function java_lang_String_formatLjava_lang_StringLjava_util_LocaleLjava_lang_StringLjava_lang_Object(arg0,arg1,arg2) {
10.2056 - var stack = new Array();
10.2057 - var gt = 0;
10.2058 - for(;;) switch(gt) {
10.2059 - case 0: stack.push(new java_util_Formatter); // 187 0 211
10.2060 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2061 - case 4: stack.push(arg0); // 42
10.2062 - case 5: { var v0 = stack.pop(); java_util_Formatter_consVLjava_util_Locale(stack.pop(), v0); } // 183 1 176
10.2063 - case 8: stack.push(arg1); // 43
10.2064 - case 9: stack.push(arg2); // 44
10.2065 - case 10: { var v1 = stack.pop(); var v0 = stack.pop(); var self = stack.pop(); stack.push(self.formatALjava_util_FormatterLjava_lang_StringALjava_lang_Object(self, v0, v1)); } // 182 1 177
10.2066 - case 13: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
10.2067 - case 16: return stack.pop(); // 176
10.2068 - }
10.2069 -}
10.2070 -function java_lang_String_valueOfLjava_lang_StringLjava_lang_Object(arg0) {
10.2071 - var stack = new Array();
10.2072 - var gt = 0;
10.2073 - for(;;) switch(gt) {
10.2074 - case 0: stack.push(arg0); // 42
10.2075 - case 1: if (stack.pop()) { gt = 9; continue; } // 199 0 8
10.2076 - case 4: stack.push("null"); // 18 10
10.2077 - case 6: gt = 13; continue; // 167 0 7
10.2078 - case 9: stack.push(arg0); // 42
10.2079 - case 10: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
10.2080 - case 13: return stack.pop(); // 176
10.2081 - }
10.2082 -}
10.2083 -function java_lang_String_valueOfLjava_lang_StringAC(arg0) {
10.2084 - var stack = new Array();
10.2085 - var gt = 0;
10.2086 - for(;;) switch(gt) {
10.2087 - case 0: stack.push(new java_lang_String); // 187 0 200
10.2088 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2089 - case 4: stack.push(arg0); // 42
10.2090 - case 5: { var v0 = stack.pop(); java_lang_String_consVAC(stack.pop(), v0); } // 183 1 142
10.2091 - case 8: return stack.pop(); // 176
10.2092 - }
10.2093 -}
10.2094 -function java_lang_String_valueOfLjava_lang_StringACII(arg0,arg1,arg2) {
10.2095 - var stack = new Array();
10.2096 - var gt = 0;
10.2097 - for(;;) switch(gt) {
10.2098 - case 0: stack.push(new java_lang_String); // 187 0 200
10.2099 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2100 - case 4: stack.push(arg0); // 42
10.2101 - case 5: stack.push(arg1); // 27
10.2102 - case 6: stack.push(arg2); // 28
10.2103 - case 7: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVACAIAI(stack.pop(), v0, v1, v2); } // 183 1 143
10.2104 - case 10: return stack.pop(); // 176
10.2105 - }
10.2106 -}
10.2107 -function java_lang_String_copyValueOfLjava_lang_StringACII(arg0,arg1,arg2) {
10.2108 - var stack = new Array();
10.2109 - var gt = 0;
10.2110 - for(;;) switch(gt) {
10.2111 - case 0: stack.push(new java_lang_String); // 187 0 200
10.2112 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2113 - case 4: stack.push(arg0); // 42
10.2114 - case 5: stack.push(arg1); // 27
10.2115 - case 6: stack.push(arg2); // 28
10.2116 - case 7: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVACAIAI(stack.pop(), v0, v1, v2); } // 183 1 143
10.2117 - case 10: return stack.pop(); // 176
10.2118 - }
10.2119 -}
10.2120 -function java_lang_String_copyValueOfLjava_lang_StringAC(arg0) {
10.2121 - var stack = new Array();
10.2122 - var gt = 0;
10.2123 - for(;;) switch(gt) {
10.2124 - case 0: stack.push(arg0); // 42
10.2125 - case 1: stack.push(0); // 3
10.2126 - case 2: stack.push(arg0); // 42
10.2127 - case 3: stack.push(stack.pop().length); // 190
10.2128 - case 4: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_String_copyValueOfALjava_lang_StringACAIAI(v0, v1, v2)); } // 184 1 155
10.2129 - case 7: return stack.pop(); // 176
10.2130 - }
10.2131 -}
10.2132 -function java_lang_String_valueOfLjava_lang_StringZ(arg0) {
10.2133 - var stack = new Array();
10.2134 - var gt = 0;
10.2135 - for(;;) switch(gt) {
10.2136 - case 0: stack.push(arg0); // 26
10.2137 - case 1: if (stack.pop() == 0) { gt = 9; continue; } // 153 0 8
10.2138 - case 4: stack.push("true"); // 18 12
10.2139 - case 6: gt = 11; continue; // 167 0 5
10.2140 - case 9: stack.push("false"); // 18 8
10.2141 - case 11: return stack.pop(); // 176
10.2142 - }
10.2143 -}
10.2144 -function java_lang_String_valueOfLjava_lang_StringC(arg0) {
10.2145 - var arg1;
10.2146 - var stack = new Array();
10.2147 - var gt = 0;
10.2148 - for(;;) switch(gt) {
10.2149 - case 0: stack.push(1); // 4
10.2150 - case 1: stack.push(new Array(stack.pop())); // 188 5
10.2151 - case 3: stack.push(stack[stack.length - 1]); // 89
10.2152 - case 4: stack.push(0); // 3
10.2153 - case 5: stack.push(arg0); // 26
10.2154 - case 6: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
10.2155 - case 7: arg1 = stack.pop(); // 76
10.2156 - case 8: stack.push(new java_lang_String); // 187 0 200
10.2157 - case 11: stack.push(stack[stack.length - 1]); // 89
10.2158 - case 12: stack.push(0); // 3
10.2159 - case 13: stack.push(1); // 4
10.2160 - case 14: stack.push(arg1); // 43
10.2161 - case 15: { var v2 = stack.pop(); var v1 = stack.pop(); var v0 = stack.pop(); java_lang_String_consVIIAC(stack.pop(), v0, v1, v2); } // 183 1 137
10.2162 - case 18: return stack.pop(); // 176
10.2163 - }
10.2164 -}
10.2165 -function java_lang_String_valueOfLjava_lang_StringJ(arg0) {
10.2166 - var arg1;
10.2167 - var stack = new Array();
10.2168 - var gt = 0;
10.2169 - for(;;) switch(gt) {
10.2170 - case 0: stack.push(arg0); // 30
10.2171 - case 1: stack.push(10); // 16 10
10.2172 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Long_toStringLjava_lang_StringJI(v0, v1)); } // 184 1 126
10.2173 - case 6: return stack.pop(); // 176
10.2174 - }
10.2175 -}
10.2176 -function java_lang_String_valueOfLjava_lang_StringF(arg0) {
10.2177 - var stack = new Array();
10.2178 - var gt = 0;
10.2179 - for(;;) switch(gt) {
10.2180 - case 0: stack.push(arg0); // 34
10.2181 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Float_toStringLjava_lang_StringF(v0)); } // 184 1 122
10.2182 - case 4: return stack.pop(); // 176
10.2183 - }
10.2184 -}
10.2185 -function java_lang_String_valueOfLjava_lang_StringD(arg0) {
10.2186 - var arg1;
10.2187 - var stack = new Array();
10.2188 - var gt = 0;
10.2189 - for(;;) switch(gt) {
10.2190 - case 0: stack.push(arg0); // 38
10.2191 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Double_toStringLjava_lang_StringD(v0)); } // 184 1 121
10.2192 - case 4: return stack.pop(); // 176
10.2193 - }
10.2194 -}
10.2195 -function java_lang_String_internLjava_lang_String(arg0) {
10.2196 - // no code found for null
10.2197 -}
10.2198 -function java_lang_String_compareToILjava_lang_Object(arg0,arg1) {
10.2199 - var arg2;
10.2200 -;
10.2201 - var stack = new Array(2);
10.2202 - var gt = 0;
10.2203 - for(;;) switch(gt) {
10.2204 - case 0: stack.push(arg0); // 42
10.2205 - case 1: stack.push(arg1); // 43
10.2206 - case 2: if(stack[stack.length - 1].$instOf_java_lang_String != 1) throw {}; // 192 0 200
10.2207 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareToILjava_lang_String(self, v0)); } // 182 1 148
10.2208 - case 8: return stack.pop(); // 172
10.2209 - }
10.2210 -}
10.2211 -function java_lang_String_classV() {
10.2212 - var stack = new Array();
10.2213 - var gt = 0;
10.2214 - for(;;) switch(gt) {
10.2215 - case 0: stack.push(0); // 3
10.2216 - case 1: stack.push(new Array(stack.pop())); // 189 0 183
10.2217 - case 4: java_lang_String_serialPersistentFields = stack.pop(); // 179 1 101
10.2218 - case 7: stack.push(new java_lang_String$CaseInsensitiveComparator); // 187 0 202
10.2219 - case 10: stack.push(stack[stack.length - 1]); // 89
10.2220 - case 11: // 1
10.2221 - case 12: { var v0 = stack.pop(); java_lang_String$CaseInsensitiveComparator_consVLjava_lang_String$1(stack.pop(), v0); } // 183 1 160
10.2222 - case 15: java_lang_String_CASE_INSENSITIVE_ORDER = stack.pop(); // 179 1 102
10.2223 - case 18: return; // 177
10.2224 - }
10.2225 -}
10.2226 -*/
10.2227 -var java_lang_String_serialVersionUID = 0;
10.2228 -var java_lang_String_serialPersistentFields = 0;
10.2229 -var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
10.2230 -function java_lang_String() {
10.2231 - /** the real value of this 'string' we delegate to */
10.2232 - this.r = '';
10.2233 -}
10.2234 -java_lang_String.prototype = new String;
10.2235 -java_lang_String.prototype.toString = function() { return this.r; };;
10.2236 -//java_lang_String_classV();
10.2237 -
10.2238 -/* new method for JavaScript String */
10.2239 -String.prototype.consVAC = java_lang_String_consVAC;
10.2240 -String.prototype.consVACII = java_lang_String_consVACII;
10.2241 -String.prototype.charAtCI = java_lang_String_charAtCI;
10.2242 -String.prototype.lengthI = java_lang_String_lengthI;
10.2243 -String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
10.2244 -String.prototype.getCharsVIIACI = java_lang_String_getCharsVIIACAI;
10.2245 -String.prototype.getCharsVACI = java_lang_String_getCharsVACI;
10.2246 -String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
10.2247 -String.prototype.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
10.2248 -String.prototype.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
10.2249 -String.prototype.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
10.2250 -String.prototype.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
10.2251 -String.prototype.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
10.2252 -String.prototype.hashCodeI = java_lang_String_hashCodeI;
10.2253 -String.prototype.toCharArrayAC = java_lang_String_toCharArrayAC;
10.2254 -String.prototype.valueOfLjava_lang_StringI=java_lang_String_valueOfLjava_lang_StringI;
10.2255 -String.prototype.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
10.2256 -String.prototype.startsWithZLjava_lang_String=java_lang_String_startsWithZLjava_lang_String;
10.2257 -String.prototype.endsWithZLjava_lang_String=java_lang_String_endsWithZLjava_lang_String;
10.2258 -String.prototype.indexOfII=java_lang_String_indexOfII;
10.2259 -String.prototype.indexOfIII=java_lang_String_indexOfIII;
10.2260 -
10.2261 -String.prototype.$instOf_java_lang_String = true;
10.2262 -String.prototype.$instOf_java_io_Serializable = true;
10.2263 -String.prototype.$instOf_java_lang_Comparable = true;
10.2264 -String.prototype.$instOf_java_lang_CharSequence = true;
10.2265 -
10.2266 -/*
10.2267 - this.lengthI = java_lang_String_lengthI;
10.2268 - this.isEmptyZ = java_lang_String_isEmptyZ;
10.2269 - this.charAtCI = java_lang_String_charAtCI;
10.2270 - this.codePointAtII = java_lang_String_codePointAtII;
10.2271 - this.codePointBeforeII = java_lang_String_codePointBeforeII;
10.2272 - this.codePointCountIII = java_lang_String_codePointCountIII;
10.2273 - this.offsetByCodePointsIII = java_lang_String_offsetByCodePointsIII;
10.2274 - this.getCharsVACI = java_lang_String_getCharsVACI;
10.2275 - this.getCharsVIIACI = java_lang_String_getCharsVIIACI;
10.2276 - this.getBytesVIIABI = java_lang_String_getBytesVIIABI;
10.2277 - this.getBytesABLjava_lang_String = java_lang_String_getBytesABLjava_lang_String;
10.2278 - this.getBytesABLjava_nio_charset_Charset = java_lang_String_getBytesABLjava_nio_charset_Charset;
10.2279 - this.getBytesAB = java_lang_String_getBytesAB;
10.2280 - this.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
10.2281 - this.contentEqualsZLjava_lang_StringBuffer = java_lang_String_contentEqualsZLjava_lang_StringBuffer;
10.2282 - this.contentEqualsZLjava_lang_CharSequence = java_lang_String_contentEqualsZLjava_lang_CharSequence;
10.2283 - this.equalsIgnoreCaseZLjava_lang_String = java_lang_String_equalsIgnoreCaseZLjava_lang_String;
10.2284 - this.compareToILjava_lang_String = java_lang_String_compareToILjava_lang_String;
10.2285 - this.compareToIgnoreCaseILjava_lang_String = java_lang_String_compareToIgnoreCaseILjava_lang_String;
10.2286 - this.regionMatchesZILjava_lang_StringII = java_lang_String_regionMatchesZILjava_lang_StringII;
10.2287 - this.regionMatchesZZILjava_lang_StringII = java_lang_String_regionMatchesZZILjava_lang_StringII;
10.2288 - this.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
10.2289 - this.startsWithZLjava_lang_String = java_lang_String_startsWithZLjava_lang_String;
10.2290 - this.endsWithZLjava_lang_String = java_lang_String_endsWithZLjava_lang_String;
10.2291 - this.hashCodeI = java_lang_String_hashCodeI;
10.2292 - this.indexOfII = java_lang_String_indexOfII;
10.2293 - this.indexOfIII = java_lang_String_indexOfIII;
10.2294 - this.lastIndexOfII = java_lang_String_lastIndexOfII;
10.2295 - this.lastIndexOfIII = java_lang_String_lastIndexOfIII;
10.2296 - this.indexOfILjava_lang_String = java_lang_String_indexOfILjava_lang_String;
10.2297 - this.indexOfILjava_lang_StringI = java_lang_String_indexOfILjava_lang_StringI;
10.2298 - this.lastIndexOfILjava_lang_String = java_lang_String_lastIndexOfILjava_lang_String;
10.2299 - this.lastIndexOfILjava_lang_StringI = java_lang_String_lastIndexOfILjava_lang_StringI;
10.2300 - this.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
10.2301 - this.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
10.2302 - this.subSequenceLjava_lang_CharSequenceII = java_lang_String_subSequenceLjava_lang_CharSequenceII;
10.2303 - this.concatLjava_lang_StringLjava_lang_String = java_lang_String_concatLjava_lang_StringLjava_lang_String;
10.2304 - this.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
10.2305 - this.matchesZLjava_lang_String = java_lang_String_matchesZLjava_lang_String;
10.2306 - this.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
10.2307 - this.replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String;
10.2308 - this.replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String;
10.2309 - this.replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence = java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence;
10.2310 - this.splitALjava_lang_StringLjava_lang_StringI = java_lang_String_splitALjava_lang_StringLjava_lang_StringI;
10.2311 - this.splitALjava_lang_StringLjava_lang_String = java_lang_String_splitALjava_lang_StringLjava_lang_String;
10.2312 - this.toLowerCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale;
10.2313 - this.toLowerCaseLjava_lang_String = java_lang_String_toLowerCaseLjava_lang_String;
10.2314 - this.toUpperCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale;
10.2315 - this.toUpperCaseLjava_lang_String = java_lang_String_toUpperCaseLjava_lang_String;
10.2316 - this.trimLjava_lang_String = java_lang_String_trimLjava_lang_String;
10.2317 - this.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
10.2318 - this.internLjava_lang_String = java_lang_String_internLjava_lang_String;
10.2319 - this.compareToILjava_lang_Object = java_lang_String_compareToILjava_lang_Object;
10.2320 - */
10.2321 -
10.2322 -
10.2323 -
10.2324 +// initialize methods on String constants
10.2325 +java_lang_String(false)
11.1 --- a/javap/pom.xml Thu Nov 29 20:19:00 2012 +0100
11.2 +++ b/javap/pom.xml Mon Dec 03 14:44:49 2012 +0100
11.3 @@ -5,11 +5,11 @@
11.4 <parent>
11.5 <groupId>org.apidesign</groupId>
11.6 <artifactId>bck2brwsr</artifactId>
11.7 - <version>1.0-SNAPSHOT</version>
11.8 + <version>0.3-SNAPSHOT</version>
11.9 </parent>
11.10 <groupId>org.apidesign.bck2brwsr</groupId>
11.11 <artifactId>javap</artifactId>
11.12 - <version>1.0-SNAPSHOT</version>
11.13 + <version>0.3-SNAPSHOT</version>
11.14 <name>javap</name>
11.15 <url>http://maven.apache.org</url>
11.16 <properties>
11.17 @@ -35,7 +35,7 @@
11.18 <dependency>
11.19 <groupId>org.apidesign.bck2brwsr</groupId>
11.20 <artifactId>emul</artifactId>
11.21 - <version>1.0-SNAPSHOT</version>
11.22 + <version>0.3-SNAPSHOT</version>
11.23 </dependency>
11.24 </dependencies>
11.25 </project>
12.1 --- a/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Thu Nov 29 20:19:00 2012 +0100
12.2 +++ b/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Mon Dec 03 14:44:49 2012 +0100
12.3 @@ -71,6 +71,9 @@
12.4 String attrName = cd.StringValue(dis.readUnsignedShort());
12.5 readValue(dis, cd, typeName, attrName);
12.6 }
12.7 + if (cnt == 0) {
12.8 + visitAttr(typeName, null, null);
12.9 + }
12.10 }
12.11
12.12 private void readValue(DataInputStream dis, ClassData cd, String typeName, String attrName)
13.1 --- a/javap/src/main/java/org/apidesign/javap/FieldData.java Thu Nov 29 20:19:00 2012 +0100
13.2 +++ b/javap/src/main/java/org/apidesign/javap/FieldData.java Mon Dec 03 14:44:49 2012 +0100
13.3 @@ -163,4 +163,13 @@
13.4 public Vector getAttributes(){
13.5 return attrs;
13.6 }
13.7 +
13.8 + public byte[] findAnnotationData(boolean classRetention) {
13.9 + String n = classRetention ?
13.10 + "RuntimeInvisibleAnnotations" : // NOI18N
13.11 + "RuntimeVisibleAnnotations"; // NOI18N
13.12 + AttrData[] arr = new AttrData[attrs.size()];
13.13 + attrs.copyInto(arr);
13.14 + return ClassData.findAttr(n, arr);
13.15 + }
13.16 }
14.1 --- a/javaquery/api/pom.xml Thu Nov 29 20:19:00 2012 +0100
14.2 +++ b/javaquery/api/pom.xml Mon Dec 03 14:44:49 2012 +0100
14.3 @@ -5,11 +5,11 @@
14.4 <parent>
14.5 <groupId>org.apidesign.bck2brwsr</groupId>
14.6 <artifactId>javaquery</artifactId>
14.7 - <version>1.0-SNAPSHOT</version>
14.8 + <version>0.3-SNAPSHOT</version>
14.9 </parent>
14.10 <groupId>org.apidesign.bck2brwsr</groupId>
14.11 <artifactId>javaquery.api</artifactId>
14.12 - <version>1.0-SNAPSHOT</version>
14.13 + <version>0.3-SNAPSHOT</version>
14.14 <name>JavaQuery API</name>
14.15 <url>http://maven.apache.org</url>
14.16 <build>
14.17 @@ -47,20 +47,20 @@
14.18 <dependency>
14.19 <groupId>org.apidesign.bck2brwsr</groupId>
14.20 <artifactId>core</artifactId>
14.21 - <version>1.0-SNAPSHOT</version>
14.22 + <version>0.3-SNAPSHOT</version>
14.23 <type>jar</type>
14.24 </dependency>
14.25 <dependency>
14.26 <groupId>org.apidesign.bck2brwsr</groupId>
14.27 <artifactId>emul</artifactId>
14.28 - <version>1.0-SNAPSHOT</version>
14.29 + <version>0.3-SNAPSHOT</version>
14.30 <type>jar</type>
14.31 <scope>runtime</scope>
14.32 </dependency>
14.33 <dependency>
14.34 <groupId>org.apidesign.bck2brwsr</groupId>
14.35 <artifactId>vm4brwsr</artifactId>
14.36 - <version>0.1-SNAPSHOT</version>
14.37 + <version>0.3-SNAPSHOT</version>
14.38 <type>jar</type>
14.39 <scope>test</scope>
14.40 </dependency>
15.1 --- a/javaquery/demo-calculator/pom.xml Thu Nov 29 20:19:00 2012 +0100
15.2 +++ b/javaquery/demo-calculator/pom.xml Mon Dec 03 14:44:49 2012 +0100
15.3 @@ -5,7 +5,7 @@
15.4
15.5 <groupId>org.apidesign.bck2brwsr</groupId>
15.6 <artifactId>demo.calculator</artifactId>
15.7 - <version>1.0-SNAPSHOT</version>
15.8 + <version>0.3-SNAPSHOT</version>
15.9 <packaging>jar</packaging>
15.10
15.11 <name>JavaQuery Demo - Calculator</name>
15.12 @@ -19,7 +19,7 @@
15.13 <plugin>
15.14 <groupId>org.apidesign.bck2brwsr</groupId>
15.15 <artifactId>mojo</artifactId>
15.16 - <version>1.0-SNAPSHOT</version>
15.17 + <version>0.3-SNAPSHOT</version>
15.18 <executions>
15.19 <execution>
15.20 <goals>
15.21 @@ -62,12 +62,12 @@
15.22 <dependency>
15.23 <groupId>org.apidesign.bck2brwsr</groupId>
15.24 <artifactId>emul</artifactId>
15.25 - <version>1.0-SNAPSHOT</version>
15.26 + <version>0.3-SNAPSHOT</version>
15.27 </dependency>
15.28 <dependency>
15.29 <groupId>org.apidesign.bck2brwsr</groupId>
15.30 <artifactId>javaquery.api</artifactId>
15.31 - <version>1.0-SNAPSHOT</version>
15.32 + <version>0.3-SNAPSHOT</version>
15.33 </dependency>
15.34 </dependencies>
15.35 </project>
16.1 --- a/javaquery/pom.xml Thu Nov 29 20:19:00 2012 +0100
16.2 +++ b/javaquery/pom.xml Mon Dec 03 14:44:49 2012 +0100
16.3 @@ -4,11 +4,11 @@
16.4 <parent>
16.5 <artifactId>bck2brwsr</artifactId>
16.6 <groupId>org.apidesign</groupId>
16.7 - <version>1.0-SNAPSHOT</version>
16.8 + <version>0.3-SNAPSHOT</version>
16.9 </parent>
16.10 <groupId>org.apidesign.bck2brwsr</groupId>
16.11 <artifactId>javaquery</artifactId>
16.12 - <version>1.0-SNAPSHOT</version>
16.13 + <version>0.3-SNAPSHOT</version>
16.14 <packaging>pom</packaging>
16.15 <name>JavaQuery API and Demo</name>
16.16 <modules>
17.1 --- a/mojo/pom.xml Thu Nov 29 20:19:00 2012 +0100
17.2 +++ b/mojo/pom.xml Mon Dec 03 14:44:49 2012 +0100
17.3 @@ -5,11 +5,11 @@
17.4 <parent>
17.5 <groupId>org.apidesign</groupId>
17.6 <artifactId>bck2brwsr</artifactId>
17.7 - <version>1.0-SNAPSHOT</version>
17.8 + <version>0.3-SNAPSHOT</version>
17.9 </parent>
17.10 <groupId>org.apidesign.bck2brwsr</groupId>
17.11 <artifactId>mojo</artifactId>
17.12 - <version>1.0-SNAPSHOT</version>
17.13 + <version>0.3-SNAPSHOT</version>
17.14 <packaging>maven-plugin</packaging>
17.15 <name>Maven Mojo to Compile to JavaScript</name>
17.16 <url>http://maven.apache.org</url>
17.17 @@ -63,7 +63,7 @@
17.18 <dependency>
17.19 <groupId>${project.groupId}</groupId>
17.20 <artifactId>vm4brwsr</artifactId>
17.21 - <version>0.1-SNAPSHOT</version>
17.22 + <version>0.3-SNAPSHOT</version>
17.23 <exclusions>
17.24 <exclusion>
17.25 <artifactId>emul</artifactId>
18.1 --- a/pom.xml Thu Nov 29 20:19:00 2012 +0100
18.2 +++ b/pom.xml Mon Dec 03 14:44:49 2012 +0100
18.3 @@ -3,7 +3,7 @@
18.4 <modelVersion>4.0.0</modelVersion>
18.5 <groupId>org.apidesign</groupId>
18.6 <artifactId>bck2brwsr</artifactId>
18.7 - <version>1.0-SNAPSHOT</version>
18.8 + <version>0.3-SNAPSHOT</version>
18.9 <packaging>pom</packaging>
18.10 <name>Back 2 Browser</name>
18.11 <modules>
19.1 --- a/vm/nb-configuration.xml Thu Nov 29 20:19:00 2012 +0100
19.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
19.3 @@ -1,37 +0,0 @@
19.4 -<?xml version="1.0" encoding="UTF-8"?>
19.5 -<!--
19.6 -
19.7 - Back 2 Browser Bytecode Translator
19.8 - Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
19.9 -
19.10 - This program is free software: you can redistribute it and/or modify
19.11 - it under the terms of the GNU General Public License as published by
19.12 - the Free Software Foundation, version 2 of the License.
19.13 -
19.14 - This program is distributed in the hope that it will be useful,
19.15 - but WITHOUT ANY WARRANTY; without even the implied warranty of
19.16 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19.17 - GNU General Public License for more details.
19.18 -
19.19 - You should have received a copy of the GNU General Public License
19.20 - along with this program. Look for COPYING file in the top folder.
19.21 - If not, see http://opensource.org/licenses/GPL-2.0.
19.22 -
19.23 --->
19.24 -<project-shared-configuration>
19.25 - <!--
19.26 -This file contains additional configuration written by modules in the NetBeans IDE.
19.27 -The configuration is intended to be shared among all the users of project and
19.28 -therefore it is assumed to be part of version control checkout.
19.29 -Without this configuration present, some functionality in the IDE may be limited or fail altogether.
19.30 --->
19.31 - <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
19.32 - <!--
19.33 -Properties that influence various parts of the IDE, especially code formatting and the like.
19.34 -You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
19.35 -That way multiple projects can share the same settings (useful for formatting rules for example).
19.36 -Any value defined here will override the pom.xml file value but is only applicable to the current project.
19.37 --->
19.38 - <netbeans.compile.on.save>all</netbeans.compile.on.save>
19.39 - </properties>
19.40 -</project-shared-configuration>
20.1 --- a/vm/pom.xml Thu Nov 29 20:19:00 2012 +0100
20.2 +++ b/vm/pom.xml Mon Dec 03 14:44:49 2012 +0100
20.3 @@ -4,12 +4,12 @@
20.4 <parent>
20.5 <groupId>org.apidesign</groupId>
20.6 <artifactId>bck2brwsr</artifactId>
20.7 - <version>1.0-SNAPSHOT</version>
20.8 + <version>0.3-SNAPSHOT</version>
20.9 </parent>
20.10
20.11 <groupId>org.apidesign.bck2brwsr</groupId>
20.12 <artifactId>vm4brwsr</artifactId>
20.13 - <version>0.1-SNAPSHOT</version>
20.14 + <version>0.3-SNAPSHOT</version>
20.15 <packaging>jar</packaging>
20.16
20.17 <name>Java VM for Browser</name>
20.18 @@ -83,21 +83,21 @@
20.19 </exclusions>
20.20 </dependency>
20.21 <dependency>
20.22 - <groupId>org.apidesign.bck2brwsr</groupId>
20.23 + <groupId>${project.groupId}</groupId>
20.24 <artifactId>core</artifactId>
20.25 - <version>1.0-SNAPSHOT</version>
20.26 + <version>0.3-SNAPSHOT</version>
20.27 <type>jar</type>
20.28 </dependency>
20.29 <dependency>
20.30 - <groupId>org.apidesign.bck2brwsr</groupId>
20.31 + <groupId>${project.groupId}</groupId>
20.32 <artifactId>emul</artifactId>
20.33 - <version>1.0-SNAPSHOT</version>
20.34 + <version>0.3-SNAPSHOT</version>
20.35 <scope>test</scope>
20.36 </dependency>
20.37 <dependency>
20.38 <groupId>${project.groupId}</groupId>
20.39 <artifactId>javap</artifactId>
20.40 - <version>1.0-SNAPSHOT</version>
20.41 + <version>0.3-SNAPSHOT</version>
20.42 </dependency>
20.43 </dependencies>
20.44 </project>
21.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Nov 29 20:19:00 2012 +0100
21.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 03 14:44:49 2012 +0100
21.3 @@ -19,7 +19,6 @@
21.4
21.5 import java.io.IOException;
21.6 import java.io.InputStream;
21.7 -import org.apidesign.bck2brwsr.core.JavaScriptBody;
21.8 import org.apidesign.javap.AnnotationParser;
21.9 import org.apidesign.javap.ClassData;
21.10 import org.apidesign.javap.FieldData;
21.11 @@ -51,6 +50,16 @@
21.12 * @param resourcePath name of resources to read
21.13 */
21.14 protected abstract void requireScript(String resourcePath);
21.15 +
21.16 + /** Allows subclasses to redefine what field a function representing a
21.17 + * class gets assigned. By default it returns the suggested name followed
21.18 + * by <code>" = "</code>;
21.19 + *
21.20 + * @param className suggested name of the class
21.21 + */
21.22 + protected String assignClass(String className) {
21.23 + return className + " = ";
21.24 + }
21.25
21.26 /**
21.27 * Converts a given class file to a JavaScript version.
21.28 @@ -74,71 +83,95 @@
21.29 return null;
21.30 }
21.31 }
21.32 + String[] proto = findAnnotation(arrData, jc,
21.33 + "org.apidesign.bck2brwsr.core.JavaScriptPrototype",
21.34 + "container", "prototype"
21.35 + );
21.36 StringArray toInitilize = new StringArray();
21.37 - for (MethodData m : jc.getMethods()) {
21.38 - if (m.isStatic()) {
21.39 - generateStaticMethod(m, toInitilize);
21.40 - } else {
21.41 - generateInstanceMethod(m);
21.42 + final String className = className(jc);
21.43 + out.append("\n\n").append(assignClass(className));
21.44 + out.append("function CLS() {");
21.45 + out.append("\n if (!CLS.prototype.$instOf_").append(className).append(") {");
21.46 + for (FieldData v : jc.getFields()) {
21.47 + if (v.isStatic()) {
21.48 + out.append("\n CLS.").append(v.getName()).append(initField(v));
21.49 }
21.50 }
21.51 - final String className = className(jc);
21.52 - out.append("\nfunction ").append(className);
21.53 - out.append("() {");
21.54 + if (proto == null) {
21.55 + String sc = jc.getSuperClassName(); // with _
21.56 + out.append("\n var p = CLS.prototype = ").
21.57 + append(sc.replace('/', '_')).append("(true);");
21.58 + out.append("\n var c = p;");
21.59 + } else {
21.60 + out.append("\n var p = CLS.prototype = ").append(proto[1]).append(";");
21.61 + out.append("\n var c = ").append(proto[0]).append(";");
21.62 + }
21.63 + for (MethodData m : jc.getMethods()) {
21.64 + byte[] onlyArr = m.findAnnotationData(true);
21.65 + String[] only = findAnnotation(onlyArr, jc,
21.66 + "org.apidesign.bck2brwsr.core.JavaScriptOnly",
21.67 + "name", "value"
21.68 + );
21.69 + if (only != null) {
21.70 + if (only[0] != null && only[1] != null) {
21.71 + out.append("\n p.").append(only[0]).append(" = ")
21.72 + .append(only[1]).append(";");
21.73 + }
21.74 + continue;
21.75 + }
21.76 + if (m.isStatic()) {
21.77 + generateStaticMethod("\n c.", m, toInitilize);
21.78 + } else {
21.79 + generateInstanceMethod("\n c.", m);
21.80 + }
21.81 + }
21.82 + out.append("\n c.constructor = CLS;");
21.83 + out.append("\n c.$instOf_").append(className).append(" = true;");
21.84 + for (String superInterface : jc.getSuperInterfaces()) {
21.85 + out.append("\n c.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
21.86 + }
21.87 + out.append("\n }");
21.88 + out.append("\n if (arguments.length === 0) {");
21.89 + out.append("\n if (!(this instanceof CLS)) {");
21.90 + out.append("\n return new CLS();");
21.91 + out.append("\n }");
21.92 for (FieldData v : jc.getFields()) {
21.93 + byte[] onlyArr = v.findAnnotationData(true);
21.94 + String[] only = findAnnotation(onlyArr, jc,
21.95 + "org.apidesign.bck2brwsr.core.JavaScriptOnly",
21.96 + "name", "value"
21.97 + );
21.98 + if (only != null) {
21.99 + if (only[0] != null && only[1] != null) {
21.100 + out.append("\n p.").append(only[0]).append(" = ")
21.101 + .append(only[1]).append(";");
21.102 + }
21.103 + continue;
21.104 + }
21.105 if (!v.isStatic()) {
21.106 - out.append("\n this.fld_").
21.107 + out.append("\n this.fld_").
21.108 append(v.getName()).append(initField(v));
21.109 }
21.110 }
21.111 - out.append("\n}\n\nfunction ").append(className).append("_proto() {");
21.112 - out.append("\n if (").append(className).
21.113 - append(".prototype.$instOf_").append(className).append(") {");
21.114 - out.append("\n return new ").append(className).append(";");
21.115 + out.append("\n return this;");
21.116 out.append("\n }");
21.117 - for (FieldData v : jc.getFields()) {
21.118 - if (v.isStatic()) {
21.119 - generateStaticField(v);
21.120 - }
21.121 - }
21.122 - // ClassName sc = jc.getSuperClass();
21.123 - String sc = jc.getSuperClassName(); // with _
21.124 - if (sc != null) {
21.125 - out.append("\n var p = ").append(className)
21.126 - .append(".prototype = ").
21.127 - append(sc.replace('/', '_')).append("_proto();");
21.128 - } else {
21.129 - out.append("\n var p = ").append(className).append(".prototype;");
21.130 - }
21.131 - for (MethodData m : jc.getMethods()) {
21.132 - if (!m.getName().contains("<cinit>")) {
21.133 - generateMethodReference("\n p.", m);
21.134 - }
21.135 - }
21.136 - out.append("\n p.$instOf_").append(className).append(" = true;");
21.137 - for (String superInterface : jc.getSuperInterfaces()) {
21.138 - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
21.139 - }
21.140 - out.append("\n return new ").append(className).append(";");
21.141 + out.append("\n return arguments[0] ? new CLS() : CLS.prototype;");
21.142 out.append("\n}");
21.143 - out.append("\n").append(className).append("_proto();");
21.144 StringBuilder sb = new StringBuilder();
21.145 for (String init : toInitilize.toArray()) {
21.146 sb.append("\n").append(init).append("();");
21.147 }
21.148 return sb.toString();
21.149 }
21.150 - private void generateStaticMethod(MethodData m, StringArray toInitilize) throws IOException {
21.151 - if (javaScriptBody(m, true)) {
21.152 + private void generateStaticMethod(String prefix, MethodData m, StringArray toInitilize) throws IOException {
21.153 + if (javaScriptBody(prefix, m, true)) {
21.154 return;
21.155 }
21.156 StringBuilder argsCnt = new StringBuilder();
21.157 final String mn = findMethodName(m, argsCnt);
21.158 - out.append("\nfunction ").append(
21.159 - className(jc)
21.160 - ).append('_').append(mn);
21.161 + out.append(prefix).append(mn).append(" = function");
21.162 if (mn.equals("classV")) {
21.163 - toInitilize.add(className(jc) + '_' + mn);
21.164 + toInitilize.add(className(jc) + "(false)." + mn);
21.165 }
21.166 out.append('(');
21.167 String space = "";
21.168 @@ -162,26 +195,18 @@
21.169 }
21.170 produceCode(m);
21.171 } else {
21.172 - out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n");
21.173 + out.append(" throw 'no code found for ").append(m.getInternalSig()).append("';\n");
21.174 }
21.175 - out.append("}");
21.176 + out.append("};");
21.177 }
21.178
21.179 - private void generateMethodReference(String prefix, MethodData m) throws IOException {
21.180 - final String name = findMethodName(m, new StringBuilder());
21.181 - out.append(prefix).append(name).append(" = ")
21.182 - .append(className(jc))
21.183 - .append('_').append(name).append(";");
21.184 - }
21.185 -
21.186 - private void generateInstanceMethod(MethodData m) throws IOException {
21.187 - if (javaScriptBody(m, false)) {
21.188 + private void generateInstanceMethod(String prefix, MethodData m) throws IOException {
21.189 + if (javaScriptBody(prefix, m, false)) {
21.190 return;
21.191 }
21.192 StringBuilder argsCnt = new StringBuilder();
21.193 - out.append("\nfunction ").append(
21.194 - className(jc)
21.195 - ).append('_').append(findMethodName(m, argsCnt));
21.196 + final String mn = findMethodName(m, argsCnt);
21.197 + out.append(prefix).append(mn).append(" = function");
21.198 out.append("(arg0");
21.199 String space = ",";
21.200 for (int index = 1, i = 0; i < argsCnt.length(); i++) {
21.201 @@ -202,9 +227,9 @@
21.202 }
21.203 produceCode(m);
21.204 } else {
21.205 - out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n");
21.206 + out.append(" throw 'no code found for ").append(m.getInternalSig()).append("';\n");
21.207 }
21.208 - out.append("}");
21.209 + out.append("};");
21.210 }
21.211
21.212 private void produceCode(MethodData m) throws IOException {
21.213 @@ -987,12 +1012,6 @@
21.214 }
21.215 }
21.216
21.217 - private void generateStaticField(FieldData v) throws IOException {
21.218 - out.append("\n ")
21.219 - .append(className(jc))
21.220 - .append('.').append(v.getName()).append(initField(v));
21.221 - }
21.222 -
21.223 private String findMethodName(MethodData m, StringBuilder cnt) {
21.224 StringBuilder name = new StringBuilder();
21.225 if ("<init>".equals(m.getName())) { // NOI18N
21.226 @@ -1038,7 +1057,7 @@
21.227
21.228 final String in = mi[0];
21.229 out.append(in.replace('/', '_'));
21.230 - out.append(".prototype.");
21.231 + out.append("(false).");
21.232 out.append(mn);
21.233 out.append('(');
21.234 if (numArguments > 0) {
21.235 @@ -1113,12 +1132,12 @@
21.236 return d.replace('[', 'A');
21.237 }
21.238
21.239 - private boolean javaScriptBody(MethodData m, boolean isStatic) throws IOException {
21.240 + private boolean javaScriptBody(String prefix, MethodData m, boolean isStatic) throws IOException {
21.241 byte[] arr = m.findAnnotationData(true);
21.242 if (arr == null) {
21.243 return false;
21.244 }
21.245 - final String jvmType = "L" + JavaScriptBody.class.getName().replace('.', '/') + ";";
21.246 + final String jvmType = "Lorg/apidesign/bck2brwsr/core/JavaScriptBody;";
21.247 class P extends AnnotationParser {
21.248 int cnt;
21.249 String[] args = new String[30];
21.250 @@ -1143,9 +1162,8 @@
21.251 return false;
21.252 }
21.253 StringBuilder cnt = new StringBuilder();
21.254 - out.append("\nfunction ").append(className(jc)).append('_').
21.255 - append(findMethodName(m, cnt));
21.256 - out.append("(");
21.257 + out.append(prefix).append(findMethodName(m, cnt));
21.258 + out.append(" = function(");
21.259 String space;
21.260 int index;
21.261 if (!isStatic) {
22.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Thu Nov 29 20:19:00 2012 +0100
22.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Mon Dec 03 14:44:49 2012 +0100
22.3 @@ -101,6 +101,7 @@
22.4 }
22.5 readResource(emul, out);
22.6 }
22.7 + js.scripts = new StringArray();
22.8 }
22.9
22.10 StringArray toInit = StringArray.asList(js.references.toArray());
23.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Thu Nov 29 20:19:00 2012 +0100
23.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Mon Dec 03 14:44:49 2012 +0100
23.3 @@ -29,7 +29,7 @@
23.4 */
23.5 public class ArrayTest {
23.6 @Test public void verifySimpleIntOperation() throws Exception {
23.7 - assertExec("CheckTheSum", "org_apidesign_vm4brwsr_Array_simpleI",
23.8 + assertExec("CheckTheSum", Array.class, "simpleI",
23.9 Double.valueOf(15)
23.10 );
23.11 }
23.12 @@ -39,13 +39,13 @@
23.13 }
23.14
23.15 @Test public void verifyOperationsOnArrays() throws Exception {
23.16 - assertExec("The sum is 105", "org_apidesign_vm4brwsr_Array_sumD",
23.17 + assertExec("The sum is 105", Array.class, "sumD",
23.18 Double.valueOf(105)
23.19 );
23.20 }
23.21
23.22 @Test public void doesCopyArrayWork() throws Exception {
23.23 - assertExec("Returns 'a'", "org_apidesign_vm4brwsr_Array_copyArrayC", Double.valueOf('a'));
23.24 + assertExec("Returns 'a'", Array.class, "copyArrayC", Double.valueOf('a'));
23.25 }
23.26
23.27 private static CharSequence codeSeq;
23.28 @@ -59,21 +59,7 @@
23.29 );
23.30 codeSeq = sb;
23.31 }
23.32 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
23.33 - Object ret = null;
23.34 - try {
23.35 - ret = code.invokeFunction(methodName, args);
23.36 - } catch (ScriptException ex) {
23.37 - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
23.38 - } catch (NoSuchMethodException ex) {
23.39 - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
23.40 - }
23.41 - if (ret == null && expRes == null) {
23.42 - return;
23.43 - }
23.44 - if (expRes.equals(ret)) {
23.45 - return;
23.46 - }
23.47 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
23.48 + private static void assertExec(String msg, Class clazz, String method, Object expRes, Object... args) throws Exception {
23.49 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
23.50 }
23.51 }
24.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Thu Nov 29 20:19:00 2012 +0100
24.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Mon Dec 03 14:44:49 2012 +0100
24.3 @@ -17,6 +17,8 @@
24.4 */
24.5 package org.apidesign.vm4brwsr;
24.6
24.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
24.8 +
24.9 /**
24.10 *
24.11 * @author Jaroslav Tulach <jtulach@netbeans.org>
24.12 @@ -89,4 +91,38 @@
24.13 private static boolean isNull() {
24.14 return createInstance(true) == null;
24.15 }
24.16 +
24.17 + @JavaScriptBody(args = "obj", body = "return obj.constructor;")
24.18 + static Object constructor(Object obj) {
24.19 + return obj;
24.20 + }
24.21 +
24.22 + public static boolean sharedConstructor() {
24.23 + class X {
24.24 + }
24.25 +
24.26 + X x1 = new X();
24.27 + X x2 = new X();
24.28 +
24.29 + return constructor(x1) == constructor(x2);
24.30 + }
24.31 + public static boolean differentConstructor() {
24.32 + class X {
24.33 + }
24.34 + class Y {
24.35 + }
24.36 +
24.37 + X x = new X();
24.38 + Y y = new Y();
24.39 +
24.40 + return constructor(x) == constructor(y);
24.41 + }
24.42 + @JavaScriptBody(args = {}, body = "return {};")
24.43 + private static Object jsObj() {
24.44 + return null;
24.45 + }
24.46 +
24.47 + public static boolean iofObject() {
24.48 + return jsObj() instanceof Object;
24.49 + }
24.50 }
25.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Thu Nov 29 20:19:00 2012 +0100
25.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Mon Dec 03 14:44:49 2012 +0100
25.3 @@ -18,9 +18,7 @@
25.4 package org.apidesign.vm4brwsr;
25.5
25.6 import javax.script.Invocable;
25.7 -import javax.script.ScriptException;
25.8 import org.testng.annotations.Test;
25.9 -import static org.testng.Assert.*;
25.10 import org.testng.annotations.BeforeClass;
25.11
25.12 /**
25.13 @@ -31,42 +29,42 @@
25.14 @Test public void verifyDefaultDoubleValue() throws Exception {
25.15 assertExec(
25.16 "Will be zero",
25.17 - "org_apidesign_vm4brwsr_Instance_defaultDblValueD",
25.18 + Instance.class, "defaultDblValueD",
25.19 Double.valueOf(0)
25.20 );
25.21 }
25.22 @Test public void verifyStaticMethodCall() throws Exception {
25.23 assertExec(
25.24 "Will be zero",
25.25 - "org_apidesign_vm4brwsr_InstanceSub_recallDblD",
25.26 + InstanceSub.class, "recallDblD",
25.27 Double.valueOf(0)
25.28 );
25.29 }
25.30 @Test public void verifyAssignedByteValue() throws Exception {
25.31 assertExec(
25.32 "Will one thirty one",
25.33 - "org_apidesign_vm4brwsr_Instance_assignedByteValueB",
25.34 + Instance.class, "assignedByteValueB",
25.35 Double.valueOf(31)
25.36 );
25.37 }
25.38 @Test public void verifyMagicOne() throws Exception {
25.39 assertExec(
25.40 "Should be three and something",
25.41 - "org_apidesign_vm4brwsr_Instance_magicOneD",
25.42 + Instance.class, "magicOneD",
25.43 Double.valueOf(3.3)
25.44 );
25.45 }
25.46 @Test public void verifyInstanceMethods() throws Exception {
25.47 assertExec(
25.48 "Should be eleven as we invoke overwritten method, plus 44",
25.49 - "org_apidesign_vm4brwsr_Instance_virtualBytesI",
25.50 + Instance.class, "virtualBytesI",
25.51 Double.valueOf(55)
25.52 );
25.53 }
25.54 @Test public void verifyInterfaceMethods() throws Exception {
25.55 assertExec(
25.56 "Retruns default value",
25.57 - "org_apidesign_vm4brwsr_Instance_interfaceBytesF",
25.58 + Instance.class, "interfaceBytesF",
25.59 Double.valueOf(31)
25.60 );
25.61 }
25.62 @@ -74,7 +72,7 @@
25.63 @Test public void isNull() throws Exception {
25.64 assertExec(
25.65 "Yes, we are instance",
25.66 - "org_apidesign_vm4brwsr_Instance_isNullZ",
25.67 + Instance.class, "isNullZ",
25.68 Double.valueOf(0.0)
25.69 );
25.70 }
25.71 @@ -82,7 +80,7 @@
25.72 @Test public void isInstanceOf() throws Exception {
25.73 assertExec(
25.74 "Yes, we are instance",
25.75 - "org_apidesign_vm4brwsr_Instance_instanceOfZZ",
25.76 + Instance.class, "instanceOfZZ",
25.77 Double.valueOf(1.0), true
25.78 );
25.79 }
25.80 @@ -90,7 +88,7 @@
25.81 @Test public void notInstanceOf() throws Exception {
25.82 assertExec(
25.83 "No, we are not an instance",
25.84 - "org_apidesign_vm4brwsr_Instance_instanceOfZZ",
25.85 + Instance.class, "instanceOfZZ",
25.86 Double.valueOf(0.0), false
25.87 );
25.88 }
25.89 @@ -98,18 +96,42 @@
25.90 @Test public void verifyCastToClass() throws Exception {
25.91 assertExec(
25.92 "Five signals all is good",
25.93 - "org_apidesign_vm4brwsr_Instance_castsWorkIZ",
25.94 + Instance.class, "castsWorkIZ",
25.95 Double.valueOf(5.0), false
25.96 );
25.97 }
25.98 @Test public void verifyCastToInterface() throws Exception {
25.99 assertExec(
25.100 "Five signals all is good",
25.101 - "org_apidesign_vm4brwsr_Instance_castsWorkIZ",
25.102 + Instance.class, "castsWorkIZ",
25.103 Double.valueOf(5.0), true
25.104 );
25.105 }
25.106
25.107 + @Test public void sharedConstructor() throws Exception {
25.108 + assertExec(
25.109 + "Constructor of first and 2nd instance should be the same",
25.110 + Instance.class, "sharedConstructorZ",
25.111 + Double.valueOf(1.0)
25.112 + );
25.113 + }
25.114 +
25.115 + @Test public void differentConstructor() throws Exception {
25.116 + assertExec(
25.117 + "Constructor of X and Y should be the different",
25.118 + Instance.class, "differentConstructorZ",
25.119 + Double.valueOf(0)
25.120 + );
25.121 + }
25.122 +
25.123 + @Test public void jsObjectIsLikeJavaObject() throws Exception {
25.124 + assertExec(
25.125 + "JavaScript object is instance of Java Object",
25.126 + Instance.class, "iofObjectZ",
25.127 + Double.valueOf(1)
25.128 + );
25.129 + }
25.130 +
25.131 protected String startCompilationWith() {
25.132 return "org/apidesign/vm4brwsr/Instance";
25.133 }
25.134 @@ -127,25 +149,9 @@
25.135 }
25.136
25.137 private void assertExec(
25.138 - String msg, String methodName, Object expRes, Object... args
25.139 + String msg, Class clazz, String method, Object expRes, Object... args
25.140 ) throws Exception {
25.141 -
25.142 - Object ret = null;
25.143 - try {
25.144 - ret = code.invokeFunction(methodName, args);
25.145 - } catch (ScriptException ex) {
25.146 - fail("Execution failed in\n" + codeSeq, ex);
25.147 - } catch (NoSuchMethodException ex) {
25.148 - fail("Cannot find method in\n" + codeSeq, ex);
25.149 - }
25.150 - if (ret == null && expRes == null) {
25.151 - return;
25.152 - }
25.153 - if (expRes.equals(ret)) {
25.154 - return;
25.155 - }
25.156 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
25.157 -
25.158 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
25.159 }
25.160
25.161 }
26.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Thu Nov 29 20:19:00 2012 +0100
26.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Mon Dec 03 14:44:49 2012 +0100
26.3 @@ -17,11 +17,6 @@
26.4 */
26.5 package org.apidesign.vm4brwsr;
26.6
26.7 -import java.io.ByteArrayInputStream;
26.8 -import java.io.ByteArrayOutputStream;
26.9 -import java.io.DataInputStream;
26.10 -import java.io.DataOutputStream;
26.11 -import java.io.IOException;
26.12 import javax.script.Invocable;
26.13 import javax.script.ScriptException;
26.14 import static org.testng.Assert.*;
26.15 @@ -34,19 +29,19 @@
26.16 */
26.17 public class NumberTest {
26.18 @Test public void integerFromString() throws Exception {
26.19 - assertExec("Can convert string to integer", "java_lang_Integer_parseIntILjava_lang_String",
26.20 + assertExec("Can convert string to integer", Integer.class, "parseIntILjava_lang_String",
26.21 Double.valueOf(333), "333"
26.22 );
26.23 }
26.24
26.25 @Test public void doubleFromString() throws Exception {
26.26 - assertExec("Can convert string to double", "java_lang_Double_parseDoubleDLjava_lang_String",
26.27 + assertExec("Can convert string to double", Double.class, "parseDoubleDLjava_lang_String",
26.28 Double.valueOf(33.3), "33.3"
26.29 );
26.30 }
26.31
26.32 @Test public void autoboxDouble() throws Exception {
26.33 - assertExec("Autoboxing of doubles is OK", "org_apidesign_vm4brwsr_Numbers_autoboxDblToStringLjava_lang_String",
26.34 + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToStringLjava_lang_String",
26.35 "3.3"
26.36 );
26.37 }
26.38 @@ -56,7 +51,7 @@
26.39 }
26.40
26.41 @Test public void jslog1000() throws Exception {
26.42 - assertExec("log_10(1000) == 3", "java_lang_Math_log10DD",
26.43 + assertExec("log_10(1000) == 3", Math.class, "log10DD",
26.44 Double.valueOf(3.0), 1000.0
26.45 );
26.46 }
26.47 @@ -65,20 +60,20 @@
26.48 assertEquals(3, Numbers.rem(303, 10));
26.49 }
26.50 @Test public void jsRem() throws Exception {
26.51 - assertExec("Should be three", "org_apidesign_vm4brwsr_Numbers_remIII",
26.52 + assertExec("Should be three", Numbers.class, "remIII",
26.53 Double.valueOf(3.0), 303, 10
26.54 );
26.55 }
26.56
26.57 @Test public void deserializeInt() throws Exception {
26.58 int exp = Numbers.deserInt();
26.59 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserIntI",
26.60 + assertExec("Should be the same", Numbers.class, "deserIntI",
26.61 Double.valueOf(exp)
26.62 );
26.63 }
26.64
26.65 @Test public void deserializeSimpleLong() throws Exception {
26.66 - assertExec("Should be 3454", "org_apidesign_vm4brwsr_Numbers_deserLongJAB",
26.67 + assertExec("Should be 3454", Numbers.class, "deserLongJAB",
26.68 Double.valueOf(3454),
26.69 new byte[] { (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)13, (byte)126 }
26.70 );
26.71 @@ -102,7 +97,7 @@
26.72
26.73 @Test public void deserializeFloatInJS() throws Exception {
26.74 float f = 54324.32423f;
26.75 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserFloatF",
26.76 + assertExec("Should be the same", Numbers.class, "deserFloatF",
26.77 Double.valueOf(f)
26.78 );
26.79 }
26.80 @@ -115,7 +110,7 @@
26.81
26.82 @Test public void deserializeDoubleInJS() throws Exception {
26.83 double f = 3.0;
26.84 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserDoubleD", f);
26.85 + assertExec("Should be the same", Numbers.class, "deserDoubleD", f);
26.86 }
26.87 /*
26.88 @Test public void serDouble() throws IOException {
26.89 @@ -136,7 +131,7 @@
26.90 @Test public void fiveInStringJS() throws Exception {
26.91 String s = Numbers.intToString();
26.92 assertExec("Should be the same: " + s,
26.93 - "org_apidesign_vm4brwsr_Numbers_intToStringLjava_lang_String",
26.94 + Numbers.class, "intToStringLjava_lang_String",
26.95 s
26.96 );
26.97 }
26.98 @@ -144,7 +139,7 @@
26.99 @Test public void sevenInStringJS() throws Exception {
26.100 String s = Numbers.floatToString();
26.101 assertExec("Should be the same: " + s,
26.102 - "org_apidesign_vm4brwsr_Numbers_floatToStringLjava_lang_String",
26.103 + Numbers.class, "floatToStringLjava_lang_String",
26.104 s
26.105 );
26.106 }
26.107 @@ -162,15 +157,16 @@
26.108 }
26.109
26.110 private static void assertExec(
26.111 - String msg, String methodName, Object expRes, Object... args) throws Exception {
26.112 + String msg, Class<?> clazz, String method, Object expRes, Object... args) throws Exception {
26.113
26.114 Object ret = null;
26.115 try {
26.116 - ret = code.invokeFunction(methodName, args);
26.117 + ret = code.invokeFunction(clazz.getName().replace('.', '_'), true);
26.118 + ret = code.invokeMethod(ret, method, args);
26.119 } catch (ScriptException ex) {
26.120 - fail("Execution failed in\n" + codeSeq, ex);
26.121 + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
26.122 } catch (NoSuchMethodException ex) {
26.123 - fail("Cannot find method in\n" + codeSeq, ex);
26.124 + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
26.125 }
26.126 if (ret == null && expRes == null) {
26.127 return;
26.128 @@ -181,10 +177,10 @@
26.129 if (expRes instanceof Double && ret instanceof Double) {
26.130 double expD = ((Double)expRes).doubleValue();
26.131 double retD = ((Double)ret).doubleValue();
26.132 - assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + codeSeq);
26.133 + assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
26.134 return;
26.135 }
26.136 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
26.137 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
26.138 }
26.139
26.140 }
27.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Nov 29 20:19:00 2012 +0100
27.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Mon Dec 03 14:44:49 2012 +0100
27.3 @@ -36,7 +36,7 @@
27.4 @Test public void threePlusFour() throws Exception {
27.5 assertExec(
27.6 "Should be seven",
27.7 - "org_apidesign_vm4brwsr_StaticMethod_sumIII",
27.8 + StaticMethod.class, "sumIII",
27.9 Double.valueOf(7),
27.10 3, 4
27.11 );
27.12 @@ -45,7 +45,7 @@
27.13 @Test public void checkReallyInitializedValues() throws Exception {
27.14 assertExec(
27.15 "Return true",
27.16 - "org_apidesign_vm4brwsr_StaticMethod_isNullZ",
27.17 + StaticMethod.class, "isNullZ",
27.18 Double.valueOf(1)
27.19 );
27.20 }
27.21 @@ -53,7 +53,7 @@
27.22 @Test public void powerOfThree() throws Exception {
27.23 assertExec(
27.24 "Should be nine",
27.25 - "org_apidesign_vm4brwsr_StaticMethod_powerFF",
27.26 + StaticMethod.class, "powerFF",
27.27 Double.valueOf(9),
27.28 3.0f
27.29 );
27.30 @@ -62,7 +62,7 @@
27.31 @Test public void minusOne() throws Exception {
27.32 assertExec(
27.33 "Should be minus one",
27.34 - "org_apidesign_vm4brwsr_StaticMethod_minusOneI",
27.35 + StaticMethod.class, "minusOneI",
27.36 Double.valueOf(-1)
27.37 );
27.38 }
27.39 @@ -70,7 +70,7 @@
27.40 @Test public void doubleWithoutLong() throws Exception {
27.41 assertExec(
27.42 "Should be two",
27.43 - "org_apidesign_vm4brwsr_StaticMethod_minusDDJ",
27.44 + StaticMethod.class, "minusDDJ",
27.45 Double.valueOf(2),
27.46 3.0d, 1l
27.47 );
27.48 @@ -79,7 +79,7 @@
27.49 @Test public void divAndRound() throws Exception {
27.50 assertExec(
27.51 "Should be rounded to one",
27.52 - "org_apidesign_vm4brwsr_StaticMethod_divIBD",
27.53 + StaticMethod.class, "divIBD",
27.54 Double.valueOf(1),
27.55 3, 3.75
27.56 );
27.57 @@ -87,7 +87,7 @@
27.58 @Test public void mixedMethodFourParams() throws Exception {
27.59 assertExec(
27.60 "Should be two",
27.61 - "org_apidesign_vm4brwsr_StaticMethod_mixIIJBD",
27.62 + StaticMethod.class, "mixIIJBD",
27.63 Double.valueOf(20),
27.64 2, 10l, 5, 2.0
27.65 );
27.66 @@ -95,7 +95,7 @@
27.67 @Test public void factRec() throws Exception {
27.68 assertExec(
27.69 "Factorial of 5 is 120",
27.70 - "org_apidesign_vm4brwsr_StaticMethod_factRecJI",
27.71 + StaticMethod.class, "factRecJI",
27.72 Double.valueOf(120),
27.73 5
27.74 );
27.75 @@ -103,7 +103,7 @@
27.76 @Test public void factIter() throws Exception {
27.77 assertExec(
27.78 "Factorial of 5 is 120",
27.79 - "org_apidesign_vm4brwsr_StaticMethod_factIterJI",
27.80 + StaticMethod.class, "factIterJI",
27.81 Double.valueOf(120),
27.82 5
27.83 );
27.84 @@ -112,7 +112,7 @@
27.85 @Test public void xor() throws Exception {
27.86 assertExec(
27.87 "Xor is 4",
27.88 - "org_apidesign_vm4brwsr_StaticMethod_xorJIJ",
27.89 + StaticMethod.class, "xorJIJ",
27.90 Double.valueOf(4),
27.91 7,
27.92 3
27.93 @@ -122,7 +122,7 @@
27.94 @Test public void or() throws Exception {
27.95 assertExec(
27.96 "Or will be 7",
27.97 - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII",
27.98 + StaticMethod.class, "orOrAndJZII",
27.99 Double.valueOf(7),
27.100 true,
27.101 4,
27.102 @@ -132,14 +132,14 @@
27.103 @Test public void nullCheck() throws Exception {
27.104 assertExec(
27.105 "Returns nothing",
27.106 - "org_apidesign_vm4brwsr_StaticMethod_noneLjava_lang_ObjectII",
27.107 + StaticMethod.class, "noneLjava_lang_ObjectII",
27.108 null, 1, 3
27.109 );
27.110 }
27.111 @Test public void and() throws Exception {
27.112 assertExec(
27.113 "And will be 3",
27.114 - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII",
27.115 + StaticMethod.class, "orOrAndJZII",
27.116 Double.valueOf(3),
27.117 false,
27.118 7,
27.119 @@ -149,7 +149,7 @@
27.120 @Test public void inc4() throws Exception {
27.121 assertExec(
27.122 "It will be 4",
27.123 - "org_apidesign_vm4brwsr_StaticMethod_inc4I",
27.124 + StaticMethod.class, "inc4I",
27.125 Double.valueOf(4)
27.126 );
27.127 }
27.128 @@ -162,7 +162,7 @@
27.129 @Test public void shiftLeftInJS() throws Exception {
27.130 assertExec(
27.131 "Setting 9th bit",
27.132 - "org_apidesign_vm4brwsr_StaticMethod_shiftLeftIII",
27.133 + StaticMethod.class, "shiftLeftIII",
27.134 Double.valueOf(256),
27.135 1, 8
27.136 );
27.137 @@ -176,7 +176,7 @@
27.138 @Test public void shiftRightInJS() throws Exception {
27.139 assertExec(
27.140 "Get -1",
27.141 - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ",
27.142 + StaticMethod.class, "shiftArithmRightIIIZ",
27.143 Double.valueOf(-1),
27.144 -8, 3, true
27.145 );
27.146 @@ -189,7 +189,7 @@
27.147 @Test public void unsignedShiftRightInJS() throws Exception {
27.148 assertExec(
27.149 "Get -1",
27.150 - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ",
27.151 + StaticMethod.class, "shiftArithmRightIIIZ",
27.152 Double.valueOf(1),
27.153 8, 3, false
27.154 );
27.155 @@ -198,7 +198,7 @@
27.156 @Test public void javaScriptBody() throws Exception {
27.157 assertExec(
27.158 "JavaScript string",
27.159 - "org_apidesign_vm4brwsr_StaticMethod_i2sLjava_lang_StringII",
27.160 + StaticMethod.class, "i2sLjava_lang_StringII",
27.161 "333",
27.162 330, 3
27.163 );
27.164 @@ -207,7 +207,7 @@
27.165 @Test public void switchJarda() throws Exception {
27.166 assertExec(
27.167 "The expected value",
27.168 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
27.169 + StaticMethod.class, "swtchLjava_lang_StringI",
27.170 "Jarda",
27.171 0
27.172 );
27.173 @@ -216,7 +216,7 @@
27.174 @Test public void switchDarda() throws Exception {
27.175 assertExec(
27.176 "The expected value",
27.177 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
27.178 + StaticMethod.class, "swtchLjava_lang_StringI",
27.179 "Darda",
27.180 1
27.181 );
27.182 @@ -224,7 +224,7 @@
27.183 @Test public void switchParda() throws Exception {
27.184 assertExec(
27.185 "The expected value",
27.186 - "org_apidesign_vm4brwsr_StaticMethod_swtch2Ljava_lang_StringI",
27.187 + StaticMethod.class, "swtch2Ljava_lang_StringI",
27.188 "Parda",
27.189 22
27.190 );
27.191 @@ -232,7 +232,7 @@
27.192 @Test public void switchMarda() throws Exception {
27.193 assertExec(
27.194 "The expected value",
27.195 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
27.196 + StaticMethod.class, "swtchLjava_lang_StringI",
27.197 "Marda",
27.198 -433
27.199 );
27.200 @@ -249,16 +249,25 @@
27.201 }
27.202
27.203
27.204 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
27.205 - StringBuilder sb = new StringBuilder();
27.206 -
27.207 + private static void assertExec(
27.208 + String msg, Class clazz, String method,
27.209 + Object expRes, Object... args
27.210 + ) throws Exception {
27.211 + assertExec(code, codeSeq, msg, clazz, method, expRes, args);
27.212 + }
27.213 + static void assertExec(
27.214 + Invocable toRun, CharSequence theCode,
27.215 + String msg, Class clazz, String method,
27.216 + Object expRes, Object... args
27.217 + ) throws Exception {
27.218 Object ret = null;
27.219 try {
27.220 - ret = code.invokeFunction(methodName, args);
27.221 + ret = toRun.invokeFunction(clazz.getName().replace('.', '_'), true);
27.222 + ret = toRun.invokeMethod(ret, method, args);
27.223 } catch (ScriptException ex) {
27.224 - fail("Execution failed in\n" + codeSeq, ex);
27.225 + fail("Execution failed in\n" + dumpJS(theCode), ex);
27.226 } catch (NoSuchMethodException ex) {
27.227 - fail("Cannot find method in\n" + codeSeq, ex);
27.228 + fail("Cannot find method in\n" + dumpJS(theCode), ex);
27.229 }
27.230 if (ret == null && expRes == null) {
27.231 return;
27.232 @@ -266,17 +275,25 @@
27.233 if (expRes != null && expRes.equals(ret)) {
27.234 return;
27.235 }
27.236 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
27.237 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + dumpJS(theCode));
27.238
27.239 }
27.240
27.241 static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException {
27.242 + return compileClass(sb, null, names);
27.243 + }
27.244 + static Invocable compileClass(
27.245 + StringBuilder sb, ScriptEngine[] eng, String... names
27.246 + ) throws ScriptException, IOException {
27.247 if (sb == null) {
27.248 sb = new StringBuilder();
27.249 }
27.250 GenJS.compile(sb, names);
27.251 ScriptEngineManager sem = new ScriptEngineManager();
27.252 ScriptEngine js = sem.getEngineByExtension("js");
27.253 + if (eng != null) {
27.254 + eng[0] = js;
27.255 + }
27.256 try {
27.257 Object res = js.eval(sb.toString());
27.258 assertTrue(js instanceof Invocable, "It is invocable object: " + res);
27.259 @@ -285,7 +302,7 @@
27.260 if (sb.length() > 2000) {
27.261 sb = dumpJS(sb);
27.262 }
27.263 - fail("Could not compile:\n" + sb, ex);
27.264 + fail("Could not evaluate:\n" + sb, ex);
27.265 return null;
27.266 }
27.267 }
28.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Thu Nov 29 20:19:00 2012 +0100
28.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Mon Dec 03 14:44:49 2012 +0100
28.3 @@ -64,6 +64,10 @@
28.4 return h.hashCode();
28.5 }
28.6
28.7 + public static boolean isStringInstance() {
28.8 + return chars('a', (char)30, 'b') instanceof String;
28.9 + }
28.10 +
28.11 public static String insertBuffer() {
28.12 StringBuilder sb = new StringBuilder();
28.13 sb.append("Jardo!");
29.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Thu Nov 29 20:19:00 2012 +0100
29.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Mon Dec 03 14:44:49 2012 +0100
29.3 @@ -31,7 +31,7 @@
29.4 @Test public void firstChar() throws Exception {
29.5 assertExec(
29.6 "First char in Hello is H",
29.7 - "org_apidesign_vm4brwsr_StringSample_sayHelloCI",
29.8 + StringSample.class, "sayHelloCI",
29.9 72, 0
29.10 );
29.11 }
29.12 @@ -39,7 +39,7 @@
29.13 @Test public void fromChars() throws Exception {
29.14 assertExec(
29.15 "First char in Hello is ABC",
29.16 - "org_apidesign_vm4brwsr_StringSample_fromCharsLjava_lang_StringCCC",
29.17 + StringSample.class, "fromCharsLjava_lang_StringCCC",
29.18 "ABC", 'A', 'B', 'C'
29.19 );
29.20 }
29.21 @@ -47,7 +47,7 @@
29.22 @Test public void concatChars() throws Exception {
29.23 assertExec(
29.24 "Composing yields ABC",
29.25 - "org_apidesign_vm4brwsr_StringSample_charsLjava_lang_StringCCC",
29.26 + StringSample.class, "charsLjava_lang_StringCCC",
29.27 "ABC", 'A', 'B', 'C'
29.28 );
29.29 }
29.30 @@ -55,7 +55,7 @@
29.31 @Test public void concatCharsFromInts() throws Exception {
29.32 assertExec(
29.33 "Composing yields ABC",
29.34 - "org_apidesign_vm4brwsr_StringSample_charsFromNumbersLjava_lang_String",
29.35 + StringSample.class, "charsFromNumbersLjava_lang_String",
29.36 "ABC"
29.37 );
29.38 }
29.39 @@ -63,15 +63,23 @@
29.40 @Test public void concatCharsFromChars() throws Exception {
29.41 assertExec(
29.42 "Composing yields ABC",
29.43 - "org_apidesign_vm4brwsr_StringSample_charsFromCharsLjava_lang_String",
29.44 + StringSample.class, "charsFromCharsLjava_lang_String",
29.45 "ABC"
29.46 );
29.47 }
29.48
29.49 + @Test public void instanceOfWorks() throws Exception {
29.50 + assertExec(
29.51 + "It is string",
29.52 + StringSample.class, "isStringInstanceZ",
29.53 + Double.valueOf(1.0)
29.54 + );
29.55 + }
29.56 +
29.57 @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
29.58 assertExec(
29.59 "Five executions should generate 5Hello World!",
29.60 - "org_apidesign_vm4brwsr_StringSample_toStringTestLjava_lang_StringI",
29.61 + StringSample.class, "toStringTestLjava_lang_StringI",
29.62 "Hello World!5", 5
29.63 );
29.64 }
29.65 @@ -82,7 +90,7 @@
29.66 @Test(timeOut=10000) public void stringStringConcat() throws Exception {
29.67 assertExec(
29.68 "Composes strings OK",
29.69 - "org_apidesign_vm4brwsr_StringSample_concatStringsLjava_lang_String",
29.70 + StringSample.class, "concatStringsLjava_lang_String",
29.71 "Hello World!1" + "\\\n\r\t"
29.72 );
29.73 }
29.74 @@ -90,21 +98,21 @@
29.75 @Test public void equalsAndSubstring() throws Exception {
29.76 assertExec(
29.77 "Composes are OK",
29.78 - "org_apidesign_vm4brwsr_StringSample_equalToHelloZII",
29.79 + StringSample.class, "equalToHelloZII",
29.80 true, 0, 5
29.81 );
29.82 }
29.83 @Test public void replaceChars() throws Exception {
29.84 assertExec(
29.85 "Can replace slashes by underscores",
29.86 - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
29.87 + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
29.88 "x_y_z", "x/y/z", '/', '_'
29.89 );
29.90 }
29.91 @Test public void replaceIntChars() throws Exception {
29.92 assertExec(
29.93 "Can replace slashes by underscores",
29.94 - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
29.95 + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
29.96 "x_y_z", "x/y/z", (int)'/', (int)'_'
29.97 );
29.98 }
29.99 @@ -112,7 +120,7 @@
29.100 @Test public void insertBuilder() throws Exception {
29.101 assertExec(
29.102 "Can insert something into a buffer?",
29.103 - "org_apidesign_vm4brwsr_StringSample_insertBufferLjava_lang_String",
29.104 + StringSample.class, "insertBufferLjava_lang_String",
29.105 "Ahojdo!"
29.106 );
29.107 }
29.108 @@ -122,7 +130,7 @@
29.109 int jh = StringSample.hashCode(j);
29.110 assertExec(
29.111 "Hashcode is the same " +jh,
29.112 - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String",
29.113 + StringSample.class, "hashCodeILjava_lang_String",
29.114 Double.valueOf(jh), j
29.115 );
29.116 }
29.117 @@ -131,28 +139,28 @@
29.118 int jh = StringSample.hashCode(j);
29.119 assertExec(
29.120 "Hashcode is the same " + jh,
29.121 - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String",
29.122 + StringSample.class, "hashCodeILjava_lang_String",
29.123 Double.valueOf(jh), j
29.124 );
29.125 }
29.126 @Test public void stringSwitch1() throws Exception {
29.127 assertExec(
29.128 "Get one",
29.129 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
29.130 + StringSample.class, "stringSwitchILjava_lang_String",
29.131 Double.valueOf(1), "jedna"
29.132 );
29.133 }
29.134 @Test public void stringSwitch2() throws Exception {
29.135 assertExec(
29.136 "Get two",
29.137 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
29.138 + StringSample.class, "stringSwitchILjava_lang_String",
29.139 Double.valueOf(2), "dve"
29.140 );
29.141 }
29.142 @Test public void stringSwitchDefault() throws Exception {
29.143 assertExec(
29.144 "Get -1",
29.145 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
29.146 + StringSample.class, "stringSwitchILjava_lang_String",
29.147 Double.valueOf(-1), "none"
29.148 );
29.149 }
29.150 @@ -161,7 +169,7 @@
29.151 assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane");
29.152 assertExec(
29.153 "One A and one B adds to 3",
29.154 - "org_apidesign_vm4brwsr_StringSample_countABILjava_lang_String",
29.155 + StringSample.class, "countABILjava_lang_String",
29.156 Double.valueOf(3), "Ahoj Bedo!"
29.157 );
29.158
29.159 @@ -180,23 +188,10 @@
29.160 codeSeq = sb;
29.161 }
29.162
29.163 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
29.164 - Object ret = null;
29.165 - try {
29.166 - ret = code.invokeFunction(methodName, args);
29.167 - } catch (ScriptException ex) {
29.168 - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
29.169 - } catch (NoSuchMethodException ex) {
29.170 - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
29.171 - }
29.172 - if (ret == null && expRes == null) {
29.173 - return;
29.174 - }
29.175 - if (expRes.equals(ret)) {
29.176 - return;
29.177 - }
29.178 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
29.179 -
29.180 + private static void assertExec(String msg,
29.181 + Class<?> clazz, String method, Object expRes, Object... args
29.182 + ) throws Exception {
29.183 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
29.184 }
29.185
29.186 }
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
30.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Mon Dec 03 14:44:49 2012 +0100
30.3 @@ -0,0 +1,68 @@
30.4 +/**
30.5 + * Back 2 Browser Bytecode Translator
30.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
30.7 + *
30.8 + * This program is free software: you can redistribute it and/or modify
30.9 + * it under the terms of the GNU General Public License as published by
30.10 + * the Free Software Foundation, version 2 of the License.
30.11 + *
30.12 + * This program is distributed in the hope that it will be useful,
30.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
30.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30.15 + * GNU General Public License for more details.
30.16 + *
30.17 + * You should have received a copy of the GNU General Public License
30.18 + * along with this program. Look for COPYING file in the top folder.
30.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
30.20 + */
30.21 +package org.apidesign.vm4brwsr;
30.22 +
30.23 +import java.io.ByteArrayInputStream;
30.24 +import java.io.IOException;
30.25 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
30.26 +
30.27 +/**
30.28 + *
30.29 + * @author Jaroslav Tulach <jtulach@netbeans.org>
30.30 + */
30.31 +class VMLazy extends ByteCodeToJavaScript {
30.32 + private final Object vm;
30.33 + private final Object global;
30.34 +
30.35 + private VMLazy(Object global, Object vm, Appendable out) {
30.36 + super(out);
30.37 + this.vm = vm;
30.38 + this.global = global;
30.39 + }
30.40 +
30.41 + static String toJavaScript(Object global, Object vm, byte[] is) throws IOException {
30.42 + StringBuilder sb = new StringBuilder();
30.43 + new VMLazy(global, vm, sb).compile(new ByteArrayInputStream(is));
30.44 + return sb.toString().toString();
30.45 + }
30.46 +
30.47 + @JavaScriptBody(args = { "self", "n" },
30.48 + body=
30.49 + "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();"
30.50 + + "var glb = self.fld_global;"
30.51 + + "var vm = self.fld_vm;"
30.52 + + "if (glb[cls]) return false;"
30.53 + + "glb[cls] = function() {"
30.54 + + " return vm.loadClass(n,cls);"
30.55 + + "};"
30.56 + + "return true;"
30.57 + )
30.58 + @Override
30.59 + protected boolean requireReference(String internalClassName) {
30.60 + throw new UnsupportedOperationException();
30.61 + }
30.62 +
30.63 + @Override
30.64 + protected void requireScript(String resourcePath) {
30.65 + }
30.66 +
30.67 + @Override
30.68 + protected String assignClass(String className) {
30.69 + return "arguments[0][arguments[1]]=";
30.70 + }
30.71 +}
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
31.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Mon Dec 03 14:44:49 2012 +0100
31.3 @@ -0,0 +1,132 @@
31.4 +/**
31.5 + * Back 2 Browser Bytecode Translator
31.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
31.7 + *
31.8 + * This program is free software: you can redistribute it and/or modify
31.9 + * it under the terms of the GNU General Public License as published by
31.10 + * the Free Software Foundation, version 2 of the License.
31.11 + *
31.12 + * This program is distributed in the hope that it will be useful,
31.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
31.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31.15 + * GNU General Public License for more details.
31.16 + *
31.17 + * You should have received a copy of the GNU General Public License
31.18 + * along with this program. Look for COPYING file in the top folder.
31.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
31.20 + */
31.21 +package org.apidesign.vm4brwsr;
31.22 +
31.23 +import java.io.IOException;
31.24 +import java.io.InputStream;
31.25 +import javax.script.Invocable;
31.26 +import javax.script.ScriptContext;
31.27 +import javax.script.ScriptEngine;
31.28 +import javax.script.ScriptException;
31.29 +import org.testng.annotations.BeforeClass;
31.30 +import static org.testng.Assert.*;
31.31 +import org.testng.annotations.Test;
31.32 +
31.33 +/** Implements loading class by class.
31.34 + *
31.35 + * @author Jaroslav Tulach <jtulach@netbeans.org>
31.36 + */
31.37 +public class VMLazyTest {
31.38 +
31.39 +
31.40 + private static CharSequence codeSeq;
31.41 + private static Invocable code;
31.42 +
31.43 + @BeforeClass
31.44 + public void compileTheCode() throws Exception {
31.45 + StringBuilder sb = new StringBuilder();
31.46 +
31.47 + sb.append("\nfunction test(clazz, as, method) {");
31.48 + sb.append("\n var l = new lazyVM(this);");
31.49 + sb.append("\n var c = l.loadClass(clazz, as);");
31.50 + sb.append("\n return c[method]();");
31.51 + sb.append("\n}");
31.52 +
31.53 +
31.54 + sb.append("\nfunction lazyVM(global) {");
31.55 + sb.append("\n var self = this;");
31.56 + sb.append("\n var glb = global;");
31.57 + sb.append("\n lazyVM.prototype.loadClass = function(res, name) {");
31.58 + sb.append("\n var script = org_apidesign_vm4brwsr_VMLazy(true)."
31.59 + + "toJavaScriptLjava_lang_StringLjava_lang_ObjectLjava_lang_ObjectAB("
31.60 + + " glb, self,"
31.61 + + " loader.get(res + '.class')"
31.62 + + ");");
31.63 + sb.append("\n try {");
31.64 + sb.append("\n new Function(script)(glb, name);");
31.65 + sb.append("\n } catch (ex) {");
31.66 + sb.append("\n throw 'Cannot compile ' + res + ' error: ' + ex + ' script:\\n' + script;");
31.67 + sb.append("\n };");
31.68 + sb.append("\n return glb[name](true);");
31.69 + sb.append("\n };");
31.70 + sb.append("\n");
31.71 + sb.append("\n}\n");
31.72 +
31.73 + ScriptEngine[] arr = { null };
31.74 + code = StaticMethodTest.compileClass(sb, arr,
31.75 + "org/apidesign/vm4brwsr/VMLazy"
31.76 + );
31.77 + arr[0].getContext().setAttribute("loader", new FindBytes(), ScriptContext.ENGINE_SCOPE);
31.78 + codeSeq = sb;
31.79 + }
31.80 +
31.81 + @Test public void invokeStaticMethod() throws Exception {
31.82 + assertExec("Trying to get -1", "test", Double.valueOf(-1),
31.83 + "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI"
31.84 + );
31.85 + }
31.86 +
31.87 + @Test public void loadDependantClass() throws Exception {
31.88 + assertExec("Trying to get zero", "test", Double.valueOf(0),
31.89 + "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD"
31.90 + );
31.91 + }
31.92 +
31.93 + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
31.94 + Object ret = null;
31.95 + try {
31.96 + ret = code.invokeFunction(methodName, args);
31.97 + } catch (ScriptException ex) {
31.98 + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
31.99 + } catch (NoSuchMethodException ex) {
31.100 + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
31.101 + }
31.102 + if (ret == null && expRes == null) {
31.103 + return;
31.104 + }
31.105 + if (expRes.equals(ret)) {
31.106 + return;
31.107 + }
31.108 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
31.109 + }
31.110 +
31.111 + public static final class FindBytes {
31.112 + public byte[] get(String name) throws IOException {
31.113 + InputStream is = VMLazyTest.class.getClassLoader().getResourceAsStream(name);
31.114 + if (is == null) {
31.115 + throw new IOException("Can't find " + name);
31.116 + }
31.117 + byte[] arr = new byte[is.available()];
31.118 + int len = is.read(arr);
31.119 + if (len != arr.length) {
31.120 + throw new IOException("Read only " + len + " wanting " + arr.length);
31.121 + }
31.122 + /*
31.123 + System.err.print("loader['" + name + "'] = [");
31.124 + for (int i = 0; i < arr.length; i++) {
31.125 + if (i > 0) {
31.126 + System.err.print(", ");
31.127 + }
31.128 + System.err.print(arr[i]);
31.129 + }
31.130 + System.err.println("]");
31.131 + */
31.132 + return arr;
31.133 + }
31.134 + }
31.135 +}
32.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Thu Nov 29 20:19:00 2012 +0100
32.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Mon Dec 03 14:44:49 2012 +0100
32.3 @@ -41,10 +41,8 @@
32.4
32.5 Object ret;
32.6 try {
32.7 - ret = code.invokeFunction(
32.8 - "org_apidesign_vm4brwsr_VMinVM_toJavaScriptLjava_lang_StringAB",
32.9 - arr
32.10 - );
32.11 + ret = code.invokeFunction(VMinVM.class.getName().replace('.', '_'), true);
32.12 + ret = code.invokeMethod(ret, "toJavaScriptLjava_lang_StringAB", arr);
32.13 } catch (Exception ex) {
32.14 File f = File.createTempFile("execution", ".js");
32.15 FileWriter w = new FileWriter(f);