1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptOnly.java Tue Dec 04 11:21:10 2012 +0100
1.3 @@ -0,0 +1,37 @@
1.4 +/**
1.5 + * Back 2 Browser Bytecode Translator
1.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.7 + *
1.8 + * This program is free software: you can redistribute it and/or modify
1.9 + * it under the terms of the GNU General Public License as published by
1.10 + * the Free Software Foundation, version 2 of the License.
1.11 + *
1.12 + * This program is distributed in the hope that it will be useful,
1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 + * GNU General Public License for more details.
1.16 + *
1.17 + * You should have received a copy of the GNU General Public License
1.18 + * along with this program. Look for COPYING file in the top folder.
1.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
1.20 + */
1.21 +package org.apidesign.bck2brwsr.core;
1.22 +
1.23 +import java.lang.annotation.ElementType;
1.24 +import java.lang.annotation.Retention;
1.25 +import java.lang.annotation.RetentionPolicy;
1.26 +import java.lang.annotation.Target;
1.27 +
1.28 +/** Don't include given field or method in generated JavaScript. Rather
1.29 + * generate completely independent JavaScript code.
1.30 + *
1.31 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.32 + */
1.33 +@Retention(RetentionPolicy.CLASS)
1.34 +@Target({ ElementType.METHOD, ElementType.FIELD })
1.35 +public @interface JavaScriptOnly {
1.36 + /** name of the variable to assign given value to */
1.37 + String name() default "";
1.38 + /** value to assign to given field */
1.39 + String value() default "";
1.40 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptPrototype.java Tue Dec 04 11:21:10 2012 +0100
2.3 @@ -0,0 +1,41 @@
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 +/** Controls how JavaScript inheritance should be handled.
2.29 + * @author Jaroslav Tulach <jtulach@netbeans.org>
2.30 + */
2.31 +@Retention(RetentionPolicy.CLASS)
2.32 +@Target({ ElementType.TYPE })
2.33 +public @interface JavaScriptPrototype {
2.34 + /** Expression that identifies the function where all methods
2.35 + * should be added into.
2.36 + * @return name of function to contain methods found in given class
2.37 + */
2.38 + String container();
2.39 + /** Expression that defines the way to construct prototype for this
2.40 + * class.
2.41 + * @return expression to construct prototype
2.42 + */
2.43 + String prototype();
2.44 +}
3.1 --- a/core/src/main/java/org/apidesign/bck2brwsr/core/NoJavaScript.java Mon Dec 03 22:13:50 2012 +0100
3.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
3.3 @@ -1,33 +0,0 @@
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 -/** Don't include given field or method in generated JavaScript.
3.29 - *
3.30 - * @author Jaroslav Tulach <jtulach@netbeans.org>
3.31 - */
3.32 -@Retention(RetentionPolicy.CLASS)
3.33 -@Target({ ElementType.METHOD, ElementType.FIELD })
3.34 -public @interface NoJavaScript {
3.35 -
3.36 -}
4.1 --- a/emul/src/main/java/java/lang/AbstractStringBuilder.java Mon Dec 03 22:13:50 2012 +0100
4.2 +++ b/emul/src/main/java/java/lang/AbstractStringBuilder.java Tue Dec 04 11:21:10 2012 +0100
4.3 @@ -25,8 +25,6 @@
4.4
4.5 package java.lang;
4.6
4.7 -import org.apidesign.bck2brwsr.core.JavaScriptBody;
4.8 -
4.9 /**
4.10 * A mutable sequence of characters.
4.11 * <p>
4.12 @@ -600,22 +598,8 @@
4.13 * @param i an {@code int}.
4.14 * @return a reference to this object.
4.15 */
4.16 - @JavaScriptBody(
4.17 - args={ "self", "i" },
4.18 - body="return java_lang_AbstractStringBuilder(true).appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());"
4.19 - )
4.20 public AbstractStringBuilder append(int i) {
4.21 - if (i == Integer.MIN_VALUE) {
4.22 - append("-2147483648");
4.23 - return this;
4.24 - }
4.25 - int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1
4.26 - : Integer.stringSize(i);
4.27 - int spaceNeeded = count + appendedLength;
4.28 - ensureCapacityInternal(spaceNeeded);
4.29 - Integer.getChars(i, spaceNeeded, value);
4.30 - count = spaceNeeded;
4.31 - return this;
4.32 + return append(Integer.toString(i));
4.33 }
4.34
4.35 /**
5.1 --- a/emul/src/main/java/java/lang/Object.java Mon Dec 03 22:13:50 2012 +0100
5.2 +++ b/emul/src/main/java/java/lang/Object.java Tue Dec 04 11:21:10 2012 +0100
5.3 @@ -26,6 +26,7 @@
5.4 package java.lang;
5.5
5.6 import org.apidesign.bck2brwsr.core.JavaScriptBody;
5.7 +import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
5.8
5.9 /**
5.10 * Class {@code Object} is the root of the class hierarchy.
5.11 @@ -36,6 +37,7 @@
5.12 * @see java.lang.Class
5.13 * @since JDK1.0
5.14 */
5.15 +@JavaScriptPrototype(container = "Object.prototype", prototype = "new Object")
5.16 public class Object {
5.17
5.18 @JavaScriptBody(args = {}, body = "")
6.1 --- a/emul/src/main/java/java/lang/String.java Mon Dec 03 22:13:50 2012 +0100
6.2 +++ b/emul/src/main/java/java/lang/String.java Tue Dec 04 11:21:10 2012 +0100
6.3 @@ -25,8 +25,11 @@
6.4
6.5 package java.lang;
6.6
6.7 +import java.util.Comparator;
6.8 import org.apidesign.bck2brwsr.core.ExtraJavaScript;
6.9 -import java.util.Comparator;
6.10 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
6.11 +import org.apidesign.bck2brwsr.core.JavaScriptOnly;
6.12 +import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
6.13
6.14 /**
6.15 * The <code>String</code> class represents character strings. All
6.16 @@ -99,25 +102,29 @@
6.17
6.18 @ExtraJavaScript(
6.19 resource="/org/apidesign/vm4brwsr/emul/java_lang_String.js",
6.20 - processByteCode=false
6.21 + processByteCode=true
6.22 )
6.23 +@JavaScriptPrototype(container = "String.prototype", prototype = "new String")
6.24 public final class String
6.25 implements java.io.Serializable, Comparable<String>, CharSequence
6.26 {
6.27 - /** The value is used for character storage. */
6.28 - private final char value[];
6.29 -
6.30 - /** The offset is the first index of the storage that is used. */
6.31 - private final int offset;
6.32 -
6.33 - /** The count is the number of characters in the String. */
6.34 - private final int count;
6.35 -
6.36 + @JavaScriptOnly
6.37 /** Cache the hash code for the string */
6.38 private int hash; // Default to 0
6.39 +
6.40 + /** real string to delegate to */
6.41 + private Object r;
6.42
6.43 /** use serialVersionUID from JDK 1.0.2 for interoperability */
6.44 private static final long serialVersionUID = -6849794470754667710L;
6.45 +
6.46 + @JavaScriptOnly(name="toString", value="function() { return this.fld_r; }")
6.47 + private static void jsToString() {
6.48 + }
6.49 +
6.50 + @JavaScriptOnly(name="valueOf", value="function() { return this.toString().valueOf(); }")
6.51 + private static void jsValudOf() {
6.52 + }
6.53
6.54 /**
6.55 * Class String is special cased within the Serialization Stream Protocol.
6.56 @@ -140,9 +147,7 @@
6.57 * unnecessary since Strings are immutable.
6.58 */
6.59 public String() {
6.60 - this.offset = 0;
6.61 - this.count = 0;
6.62 - this.value = new char[0];
6.63 + this.r = "";
6.64 }
6.65
6.66 /**
6.67 @@ -156,23 +161,7 @@
6.68 * A {@code String}
6.69 */
6.70 public String(String original) {
6.71 - int size = original.count;
6.72 - char[] originalValue = original.value;
6.73 - char[] v;
6.74 - if (originalValue.length > size) {
6.75 - // The array representing the String is bigger than the new
6.76 - // String itself. Perhaps this constructor is being called
6.77 - // in order to trim the baggage, so make a copy of the array.
6.78 - int off = original.offset;
6.79 - v = AbstractStringBuilder.copyOfRange(originalValue, off, off+size);
6.80 - } else {
6.81 - // The array representing the String is the same
6.82 - // size as the String, so no point in making a copy.
6.83 - v = originalValue;
6.84 - }
6.85 - this.offset = 0;
6.86 - this.count = size;
6.87 - this.value = v;
6.88 + this.r = original.toString();
6.89 }
6.90
6.91 /**
6.92 @@ -184,11 +173,13 @@
6.93 * @param value
6.94 * The initial value of the string
6.95 */
6.96 + @JavaScriptBody(args = { "self", "charArr" }, body=
6.97 + "for (var i = 0; i < charArr.length; i++) {\n"
6.98 + + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n"
6.99 + + "}\n"
6.100 + + "self.fld_r = charArr.join('');\n"
6.101 + )
6.102 public String(char value[]) {
6.103 - int size = value.length;
6.104 - this.offset = 0;
6.105 - this.count = size;
6.106 - this.value = AbstractStringBuilder.copyOf(value, size);
6.107 }
6.108
6.109 /**
6.110 @@ -212,20 +203,14 @@
6.111 * If the {@code offset} and {@code count} arguments index
6.112 * characters outside the bounds of the {@code value} array
6.113 */
6.114 + @JavaScriptBody(args = { "self", "charArr", "off", "cnt" }, body =
6.115 + "var up = off + cnt;\n" +
6.116 + "for (var i = off; i < up; i++) {\n" +
6.117 + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n" +
6.118 + "}\n" +
6.119 + "self.fld_r = charArr.slice(off, up).join(\"\");\n"
6.120 + )
6.121 public String(char value[], int offset, int count) {
6.122 - if (offset < 0) {
6.123 - throw new StringIndexOutOfBoundsException(offset);
6.124 - }
6.125 - if (count < 0) {
6.126 - throw new StringIndexOutOfBoundsException(count);
6.127 - }
6.128 - // Note: offset or count might be near -1>>>1.
6.129 - if (offset > value.length - count) {
6.130 - throw new StringIndexOutOfBoundsException(offset + count);
6.131 - }
6.132 - this.offset = 0;
6.133 - this.count = count;
6.134 - this.value = AbstractStringBuilder.copyOfRange(value, offset, offset+count);
6.135 }
6.136
6.137 /**
6.138 @@ -292,9 +277,7 @@
6.139 Character.toSurrogates(c, v, j++);
6.140 }
6.141
6.142 - this.value = v;
6.143 - this.count = n;
6.144 - this.offset = 0;
6.145 + this.r = new String(v, 0, n);
6.146 }
6.147
6.148 /**
6.149 @@ -351,9 +334,7 @@
6.150 value[i] = (char) (hibyte | (ascii[i + offset] & 0xff));
6.151 }
6.152 }
6.153 - this.offset = 0;
6.154 - this.count = count;
6.155 - this.value = value;
6.156 + this.r = new String(value, 0, count);
6.157 }
6.158
6.159 /**
6.160 @@ -578,9 +559,7 @@
6.161 for (int i = 0; i < length; i++) {
6.162 v[i] = (char)bytes[offset++];
6.163 }
6.164 - this.offset = 0;
6.165 - this.count = v.length;
6.166 - this.value = v;
6.167 + this.r = new String(v, 0, v.length);
6.168 }
6.169
6.170 /**
6.171 @@ -613,10 +592,7 @@
6.172 * A {@code StringBuffer}
6.173 */
6.174 public String(StringBuffer buffer) {
6.175 - String result = buffer.toString();
6.176 - this.value = result.value;
6.177 - this.count = result.count;
6.178 - this.offset = result.offset;
6.179 + this.r = buffer.toString();
6.180 }
6.181
6.182 /**
6.183 @@ -635,10 +611,7 @@
6.184 * @since 1.5
6.185 */
6.186 public String(StringBuilder builder) {
6.187 - String result = builder.toString();
6.188 - this.value = result.value;
6.189 - this.count = result.count;
6.190 - this.offset = result.offset;
6.191 + this.r = builder.toString();
6.192 }
6.193
6.194 /**
6.195 @@ -649,8 +622,9 @@
6.196 * @return the length of the sequence of characters represented by this
6.197 * object.
6.198 */
6.199 + @JavaScriptBody(args = "self", body = "return self.toString().length;")
6.200 public int length() {
6.201 - return count;
6.202 + throw new UnsupportedOperationException();
6.203 }
6.204
6.205 /**
6.206 @@ -661,8 +635,9 @@
6.207 *
6.208 * @since 1.6
6.209 */
6.210 + @JavaScriptBody(args = "self", body="return self.toString().length === 0;")
6.211 public boolean isEmpty() {
6.212 - return count == 0;
6.213 + return length() == 0;
6.214 }
6.215
6.216 /**
6.217 @@ -683,11 +658,11 @@
6.218 * argument is negative or not less than the length of this
6.219 * string.
6.220 */
6.221 + @JavaScriptBody(args = { "self", "index" },
6.222 + body = "return self.toString().charCodeAt(index);"
6.223 + )
6.224 public char charAt(int index) {
6.225 - if ((index < 0) || (index >= count)) {
6.226 - throw new StringIndexOutOfBoundsException(index);
6.227 - }
6.228 - return value[index + offset];
6.229 + throw new UnsupportedOperationException();
6.230 }
6.231
6.232 /**
6.233 @@ -713,10 +688,10 @@
6.234 * @since 1.5
6.235 */
6.236 public int codePointAt(int index) {
6.237 - if ((index < 0) || (index >= count)) {
6.238 + if ((index < 0) || (index >= length())) {
6.239 throw new StringIndexOutOfBoundsException(index);
6.240 }
6.241 - return Character.codePointAtImpl(value, offset + index, offset + count);
6.242 + return Character.codePointAtImpl(toCharArray(), offset() + index, offset() + length());
6.243 }
6.244
6.245 /**
6.246 @@ -743,10 +718,10 @@
6.247 */
6.248 public int codePointBefore(int index) {
6.249 int i = index - 1;
6.250 - if ((i < 0) || (i >= count)) {
6.251 + if ((i < 0) || (i >= length())) {
6.252 throw new StringIndexOutOfBoundsException(index);
6.253 }
6.254 - return Character.codePointBeforeImpl(value, offset + index, offset);
6.255 + return Character.codePointBeforeImpl(toCharArray(), offset() + index, offset());
6.256 }
6.257
6.258 /**
6.259 @@ -771,10 +746,10 @@
6.260 * @since 1.5
6.261 */
6.262 public int codePointCount(int beginIndex, int endIndex) {
6.263 - if (beginIndex < 0 || endIndex > count || beginIndex > endIndex) {
6.264 + if (beginIndex < 0 || endIndex > length() || beginIndex > endIndex) {
6.265 throw new IndexOutOfBoundsException();
6.266 }
6.267 - return Character.codePointCountImpl(value, offset+beginIndex, endIndex-beginIndex);
6.268 + return Character.codePointCountImpl(toCharArray(), offset()+beginIndex, endIndex-beginIndex);
6.269 }
6.270
6.271 /**
6.272 @@ -798,19 +773,25 @@
6.273 * @since 1.5
6.274 */
6.275 public int offsetByCodePoints(int index, int codePointOffset) {
6.276 - if (index < 0 || index > count) {
6.277 + if (index < 0 || index > length()) {
6.278 throw new IndexOutOfBoundsException();
6.279 }
6.280 - return Character.offsetByCodePointsImpl(value, offset, count,
6.281 - offset+index, codePointOffset) - offset;
6.282 + return Character.offsetByCodePointsImpl(toCharArray(), offset(), length(),
6.283 + offset()+index, codePointOffset) - offset();
6.284 }
6.285
6.286 /**
6.287 * Copy characters from this string into dst starting at dstBegin.
6.288 * This method doesn't perform any range checking.
6.289 */
6.290 + @JavaScriptBody(args = { "self", "arr", "to" }, body =
6.291 + "var s = self.toString();\n" +
6.292 + "for (var i = 0; i < s.length; i++) {\n" +
6.293 + " arr[to++] = s[i];\n" +
6.294 + "}"
6.295 + )
6.296 void getChars(char dst[], int dstBegin) {
6.297 - AbstractStringBuilder.arraycopy(value, offset, dst, dstBegin, count);
6.298 + AbstractStringBuilder.arraycopy(toCharArray(), offset(), dst, dstBegin, length());
6.299 }
6.300
6.301 /**
6.302 @@ -843,17 +824,23 @@
6.303 * <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than
6.304 * <code>dst.length</code></ul>
6.305 */
6.306 + @JavaScriptBody(args = { "self", "beg", "end", "arr", "dst" }, body=
6.307 + "var s = self.toString();\n" +
6.308 + "while (beg < end) {\n" +
6.309 + " arr[dst++] = s[beg++];\n" +
6.310 + "}\n"
6.311 + )
6.312 public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
6.313 if (srcBegin < 0) {
6.314 throw new StringIndexOutOfBoundsException(srcBegin);
6.315 }
6.316 - if (srcEnd > count) {
6.317 + if (srcEnd > length()) {
6.318 throw new StringIndexOutOfBoundsException(srcEnd);
6.319 }
6.320 if (srcBegin > srcEnd) {
6.321 throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
6.322 }
6.323 - AbstractStringBuilder.arraycopy(value, offset + srcBegin, dst, dstBegin,
6.324 + AbstractStringBuilder.arraycopy(toCharArray(), offset() + srcBegin, dst, dstBegin,
6.325 srcEnd - srcBegin);
6.326 }
6.327
6.328 @@ -905,16 +892,16 @@
6.329 if (srcBegin < 0) {
6.330 throw new StringIndexOutOfBoundsException(srcBegin);
6.331 }
6.332 - if (srcEnd > count) {
6.333 + if (srcEnd > length()) {
6.334 throw new StringIndexOutOfBoundsException(srcEnd);
6.335 }
6.336 if (srcBegin > srcEnd) {
6.337 throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
6.338 }
6.339 int j = dstBegin;
6.340 - int n = offset + srcEnd;
6.341 - int i = offset + srcBegin;
6.342 - char[] val = value; /* avoid getfield opcode */
6.343 + int n = offset() + srcEnd;
6.344 + int i = offset() + srcBegin;
6.345 + char[] val = toCharArray(); /* avoid getfield opcode */
6.346
6.347 while (i < n) {
6.348 dst[j++] = (byte)val[i++];
6.349 @@ -1010,18 +997,22 @@
6.350 * @see #compareTo(String)
6.351 * @see #equalsIgnoreCase(String)
6.352 */
6.353 + @JavaScriptBody(args = { "self", "obj" }, body =
6.354 + "return obj.$instOf_java_lang_String && "
6.355 + + "self.toString() === obj.toString();"
6.356 + )
6.357 public boolean equals(Object anObject) {
6.358 if (this == anObject) {
6.359 return true;
6.360 }
6.361 if (anObject instanceof String) {
6.362 String anotherString = (String)anObject;
6.363 - int n = count;
6.364 - if (n == anotherString.count) {
6.365 - char v1[] = value;
6.366 - char v2[] = anotherString.value;
6.367 - int i = offset;
6.368 - int j = anotherString.offset;
6.369 + int n = length();
6.370 + if (n == anotherString.length()) {
6.371 + char v1[] = toCharArray();
6.372 + char v2[] = anotherString.toCharArray();
6.373 + int i = offset();
6.374 + int j = anotherString.offset();
6.375 while (n-- != 0) {
6.376 if (v1[i++] != v2[j++])
6.377 return false;
6.378 @@ -1067,15 +1058,15 @@
6.379 * @since 1.5
6.380 */
6.381 public boolean contentEquals(CharSequence cs) {
6.382 - if (count != cs.length())
6.383 + if (length() != cs.length())
6.384 return false;
6.385 // Argument is a StringBuffer, StringBuilder
6.386 if (cs instanceof AbstractStringBuilder) {
6.387 - char v1[] = value;
6.388 + char v1[] = toCharArray();
6.389 char v2[] = ((AbstractStringBuilder)cs).getValue();
6.390 - int i = offset;
6.391 + int i = offset();
6.392 int j = 0;
6.393 - int n = count;
6.394 + int n = length();
6.395 while (n-- != 0) {
6.396 if (v1[i++] != v2[j++])
6.397 return false;
6.398 @@ -1086,10 +1077,10 @@
6.399 if (cs.equals(this))
6.400 return true;
6.401 // Argument is a generic CharSequence
6.402 - char v1[] = value;
6.403 - int i = offset;
6.404 + char v1[] = toCharArray();
6.405 + int i = offset();
6.406 int j = 0;
6.407 - int n = count;
6.408 + int n = length();
6.409 while (n-- != 0) {
6.410 if (v1[i++] != cs.charAt(j++))
6.411 return false;
6.412 @@ -1127,8 +1118,8 @@
6.413 */
6.414 public boolean equalsIgnoreCase(String anotherString) {
6.415 return (this == anotherString) ? true :
6.416 - (anotherString != null) && (anotherString.count == count) &&
6.417 - regionMatches(true, 0, anotherString, 0, count);
6.418 + (anotherString != null) && (anotherString.length() == length()) &&
6.419 + regionMatches(true, 0, anotherString, 0, length());
6.420 }
6.421
6.422 /**
6.423 @@ -1173,13 +1164,13 @@
6.424 * lexicographically greater than the string argument.
6.425 */
6.426 public int compareTo(String anotherString) {
6.427 - int len1 = count;
6.428 - int len2 = anotherString.count;
6.429 + int len1 = length();
6.430 + int len2 = anotherString.length();
6.431 int n = Math.min(len1, len2);
6.432 - char v1[] = value;
6.433 - char v2[] = anotherString.value;
6.434 - int i = offset;
6.435 - int j = anotherString.offset;
6.436 + char v1[] = toCharArray();
6.437 + char v2[] = anotherString.toCharArray();
6.438 + int i = offset();
6.439 + int j = anotherString.offset();
6.440
6.441 if (i == j) {
6.442 int k = i;
6.443 @@ -1218,6 +1209,11 @@
6.444 */
6.445 public static final Comparator<String> CASE_INSENSITIVE_ORDER
6.446 = new CaseInsensitiveComparator();
6.447 +
6.448 + private static int offset() {
6.449 + return 0;
6.450 + }
6.451 +
6.452 private static class CaseInsensitiveComparator
6.453 implements Comparator<String>, java.io.Serializable {
6.454 // use serialVersionUID from JDK 1.2.2 for interoperability
6.455 @@ -1304,13 +1300,13 @@
6.456 */
6.457 public boolean regionMatches(int toffset, String other, int ooffset,
6.458 int len) {
6.459 - char ta[] = value;
6.460 - int to = offset + toffset;
6.461 - char pa[] = other.value;
6.462 - int po = other.offset + ooffset;
6.463 + char ta[] = toCharArray();
6.464 + int to = offset() + toffset;
6.465 + char pa[] = other.toCharArray();
6.466 + int po = other.offset() + ooffset;
6.467 // Note: toffset, ooffset, or len might be near -1>>>1.
6.468 - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len)
6.469 - || (ooffset > (long)other.count - len)) {
6.470 + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len)
6.471 + || (ooffset > (long)other.length() - len)) {
6.472 return false;
6.473 }
6.474 while (len-- > 0) {
6.475 @@ -1373,13 +1369,13 @@
6.476 */
6.477 public boolean regionMatches(boolean ignoreCase, int toffset,
6.478 String other, int ooffset, int len) {
6.479 - char ta[] = value;
6.480 - int to = offset + toffset;
6.481 - char pa[] = other.value;
6.482 - int po = other.offset + ooffset;
6.483 + char ta[] = toCharArray();
6.484 + int to = offset() + toffset;
6.485 + char pa[] = other.toCharArray();
6.486 + int po = other.offset() + ooffset;
6.487 // Note: toffset, ooffset, or len might be near -1>>>1.
6.488 - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) ||
6.489 - (ooffset > (long)other.count - len)) {
6.490 + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len) ||
6.491 + (ooffset > (long)other.length() - len)) {
6.492 return false;
6.493 }
6.494 while (len-- > 0) {
6.495 @@ -1428,14 +1424,18 @@
6.496 * this.substring(toffset).startsWith(prefix)
6.497 * </pre>
6.498 */
6.499 + @JavaScriptBody(args = { "self", "find", "from" }, body=
6.500 + "find = find.toString();\n" +
6.501 + "return self.toString().substring(from, find.length) === find;\n"
6.502 + )
6.503 public boolean startsWith(String prefix, int toffset) {
6.504 - char ta[] = value;
6.505 - int to = offset + toffset;
6.506 - char pa[] = prefix.value;
6.507 - int po = prefix.offset;
6.508 - int pc = prefix.count;
6.509 + char ta[] = toCharArray();
6.510 + int to = offset() + toffset;
6.511 + char pa[] = prefix.toCharArray();
6.512 + int po = prefix.offset();
6.513 + int pc = prefix.length();
6.514 // Note: toffset might be near -1>>>1.
6.515 - if ((toffset < 0) || (toffset > count - pc)) {
6.516 + if ((toffset < 0) || (toffset > length() - pc)) {
6.517 return false;
6.518 }
6.519 while (--pc >= 0) {
6.520 @@ -1475,7 +1475,7 @@
6.521 * as determined by the {@link #equals(Object)} method.
6.522 */
6.523 public boolean endsWith(String suffix) {
6.524 - return startsWith(suffix, count - suffix.count);
6.525 + return startsWith(suffix, length() - suffix.length());
6.526 }
6.527
6.528 /**
6.529 @@ -1491,12 +1491,21 @@
6.530 *
6.531 * @return a hash code value for this object.
6.532 */
6.533 + @JavaScriptBody(args = "self", body =
6.534 + "var h = 0;\n" +
6.535 + "var s = self.toString();\n" +
6.536 + "for (var i = 0; i < s.length; i++) {\n" +
6.537 + " var high = (h >> 16) & 0xffff, low = h & 0xffff;\n" +
6.538 + " h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;\n" +
6.539 + "}\n" +
6.540 + "return h;\n"
6.541 + )
6.542 public int hashCode() {
6.543 int h = hash;
6.544 - if (h == 0 && count > 0) {
6.545 - int off = offset;
6.546 - char val[] = value;
6.547 - int len = count;
6.548 + if (h == 0 && length() > 0) {
6.549 + int off = offset();
6.550 + char val[] = toCharArray();
6.551 + int len = length();
6.552
6.553 for (int i = 0; i < len; i++) {
6.554 h = 31*h + val[off++];
6.555 @@ -1573,10 +1582,14 @@
6.556 * than or equal to <code>fromIndex</code>, or <code>-1</code>
6.557 * if the character does not occur.
6.558 */
6.559 + @JavaScriptBody(args = { "self", "ch", "from" }, body =
6.560 + "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" +
6.561 + "return self.toString().indexOf(ch, from);\n"
6.562 + )
6.563 public int indexOf(int ch, int fromIndex) {
6.564 if (fromIndex < 0) {
6.565 fromIndex = 0;
6.566 - } else if (fromIndex >= count) {
6.567 + } else if (fromIndex >= length()) {
6.568 // Note: fromIndex might be near -1>>>1.
6.569 return -1;
6.570 }
6.571 @@ -1584,9 +1597,9 @@
6.572 if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
6.573 // handle most cases here (ch is a BMP code point or a
6.574 // negative value (invalid code point))
6.575 - final char[] value = this.value;
6.576 - final int offset = this.offset;
6.577 - final int max = offset + count;
6.578 + final char[] value = this.toCharArray();
6.579 + final int offset = this.offset();
6.580 + final int max = offset + length();
6.581 for (int i = offset + fromIndex; i < max ; i++) {
6.582 if (value[i] == ch) {
6.583 return i - offset;
6.584 @@ -1603,11 +1616,11 @@
6.585 */
6.586 private int indexOfSupplementary(int ch, int fromIndex) {
6.587 if (Character.isValidCodePoint(ch)) {
6.588 - final char[] value = this.value;
6.589 - final int offset = this.offset;
6.590 + final char[] value = this.toCharArray();
6.591 + final int offset = this.offset();
6.592 final char hi = Character.highSurrogate(ch);
6.593 final char lo = Character.lowSurrogate(ch);
6.594 - final int max = offset + count - 1;
6.595 + final int max = offset + length() - 1;
6.596 for (int i = offset + fromIndex; i < max; i++) {
6.597 if (value[i] == hi && value[i+1] == lo) {
6.598 return i - offset;
6.599 @@ -1641,7 +1654,7 @@
6.600 * <code>-1</code> if the character does not occur.
6.601 */
6.602 public int lastIndexOf(int ch) {
6.603 - return lastIndexOf(ch, count - 1);
6.604 + return lastIndexOf(ch, length() - 1);
6.605 }
6.606
6.607 /**
6.608 @@ -1678,13 +1691,17 @@
6.609 * than or equal to <code>fromIndex</code>, or <code>-1</code>
6.610 * if the character does not occur before that point.
6.611 */
6.612 + @JavaScriptBody(args = { "self", "ch", "from" }, body =
6.613 + "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" +
6.614 + "return self.toString().lastIndexOf(ch, from);"
6.615 + )
6.616 public int lastIndexOf(int ch, int fromIndex) {
6.617 if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
6.618 // handle most cases here (ch is a BMP code point or a
6.619 // negative value (invalid code point))
6.620 - final char[] value = this.value;
6.621 - final int offset = this.offset;
6.622 - int i = offset + Math.min(fromIndex, count - 1);
6.623 + final char[] value = this.toCharArray();
6.624 + final int offset = this.offset();
6.625 + int i = offset + Math.min(fromIndex, length() - 1);
6.626 for (; i >= offset ; i--) {
6.627 if (value[i] == ch) {
6.628 return i - offset;
6.629 @@ -1701,11 +1718,11 @@
6.630 */
6.631 private int lastIndexOfSupplementary(int ch, int fromIndex) {
6.632 if (Character.isValidCodePoint(ch)) {
6.633 - final char[] value = this.value;
6.634 - final int offset = this.offset;
6.635 + final char[] value = this.toCharArray();
6.636 + final int offset = this.offset();
6.637 char hi = Character.highSurrogate(ch);
6.638 char lo = Character.lowSurrogate(ch);
6.639 - int i = offset + Math.min(fromIndex, count - 2);
6.640 + int i = offset + Math.min(fromIndex, length() - 2);
6.641 for (; i >= offset; i--) {
6.642 if (value[i] == hi && value[i+1] == lo) {
6.643 return i - offset;
6.644 @@ -1749,9 +1766,11 @@
6.645 * starting at the specified index,
6.646 * or {@code -1} if there is no such occurrence.
6.647 */
6.648 + @JavaScriptBody(args = { "self", "str", "fromIndex" }, body =
6.649 + "return self.toString().indexOf(str.toString(), fromIndex) >= 0;"
6.650 + )
6.651 public int indexOf(String str, int fromIndex) {
6.652 - return indexOf(value, offset, count,
6.653 - str.value, str.offset, str.count, fromIndex);
6.654 + return indexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex);
6.655 }
6.656
6.657 /**
6.658 @@ -1821,7 +1840,7 @@
6.659 * or {@code -1} if there is no such occurrence.
6.660 */
6.661 public int lastIndexOf(String str) {
6.662 - return lastIndexOf(str, count);
6.663 + return lastIndexOf(str, length());
6.664 }
6.665
6.666 /**
6.667 @@ -1840,9 +1859,11 @@
6.668 * searching backward from the specified index,
6.669 * or {@code -1} if there is no such occurrence.
6.670 */
6.671 + @JavaScriptBody(args = { "self", "s", "from" }, body =
6.672 + "return self.toString().lastIndexOf(s.toString(), from);"
6.673 + )
6.674 public int lastIndexOf(String str, int fromIndex) {
6.675 - return lastIndexOf(value, offset, count,
6.676 - str.value, str.offset, str.count, fromIndex);
6.677 + return lastIndexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex);
6.678 }
6.679
6.680 /**
6.681 @@ -1922,7 +1943,7 @@
6.682 * length of this <code>String</code> object.
6.683 */
6.684 public String substring(int beginIndex) {
6.685 - return substring(beginIndex, count);
6.686 + return substring(beginIndex, length());
6.687 }
6.688
6.689 /**
6.690 @@ -1947,18 +1968,21 @@
6.691 * <code>beginIndex</code> is larger than
6.692 * <code>endIndex</code>.
6.693 */
6.694 + @JavaScriptBody(args = { "self", "beginIndex", "endIndex" }, body =
6.695 + "return self.toString().substring(beginIndex, endIndex);"
6.696 + )
6.697 public String substring(int beginIndex, int endIndex) {
6.698 if (beginIndex < 0) {
6.699 throw new StringIndexOutOfBoundsException(beginIndex);
6.700 }
6.701 - if (endIndex > count) {
6.702 + if (endIndex > length()) {
6.703 throw new StringIndexOutOfBoundsException(endIndex);
6.704 }
6.705 if (beginIndex > endIndex) {
6.706 throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
6.707 }
6.708 - return ((beginIndex == 0) && (endIndex == count)) ? this :
6.709 - new String(value, offset + beginIndex, endIndex - beginIndex);
6.710 + return ((beginIndex == 0) && (endIndex == length())) ? this :
6.711 + new String(toCharArray(), offset() + beginIndex, endIndex - beginIndex);
6.712 }
6.713
6.714 /**
6.715 @@ -2018,10 +2042,10 @@
6.716 if (otherLen == 0) {
6.717 return this;
6.718 }
6.719 - char buf[] = new char[count + otherLen];
6.720 - getChars(0, count, buf, 0);
6.721 - str.getChars(0, otherLen, buf, count);
6.722 - return new String(buf, 0, count + otherLen);
6.723 + char buf[] = new char[length() + otherLen];
6.724 + getChars(0, length(), buf, 0);
6.725 + str.getChars(0, otherLen, buf, length());
6.726 + return new String(buf, 0, length() + otherLen);
6.727 }
6.728
6.729 /**
6.730 @@ -2053,12 +2077,24 @@
6.731 * @return a string derived from this string by replacing every
6.732 * occurrence of <code>oldChar</code> with <code>newChar</code>.
6.733 */
6.734 + @JavaScriptBody(args = { "self", "arg1", "arg2" }, body =
6.735 + "if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);\n" +
6.736 + "if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);\n" +
6.737 + "var s = self.toString();\n" +
6.738 + "for (;;) {\n" +
6.739 + " var ret = s.replace(arg1, arg2);\n" +
6.740 + " if (ret === s) {\n" +
6.741 + " return ret;\n" +
6.742 + " }\n" +
6.743 + " s = ret;\n" +
6.744 + "}"
6.745 + )
6.746 public String replace(char oldChar, char newChar) {
6.747 if (oldChar != newChar) {
6.748 - int len = count;
6.749 + int len = length();
6.750 int i = -1;
6.751 - char[] val = value; /* avoid getfield opcode */
6.752 - int off = offset; /* avoid getfield opcode */
6.753 + char[] val = toCharArray(); /* avoid getfield opcode */
6.754 + int off = offset(); /* avoid getfield opcode */
6.755
6.756 while (++i < len) {
6.757 if (val[off + i] == oldChar) {
6.758 @@ -2720,10 +2756,10 @@
6.759 * trailing white space.
6.760 */
6.761 public String trim() {
6.762 - int len = count;
6.763 + int len = length();
6.764 int st = 0;
6.765 - int off = offset; /* avoid getfield opcode */
6.766 - char[] val = value; /* avoid getfield opcode */
6.767 + int off = offset(); /* avoid getfield opcode */
6.768 + char[] val = toCharArray(); /* avoid getfield opcode */
6.769
6.770 while ((st < len) && (val[off + st] <= ' ')) {
6.771 st++;
6.772 @@ -2731,7 +2767,7 @@
6.773 while ((st < len) && (val[off + len - 1] <= ' ')) {
6.774 len--;
6.775 }
6.776 - return ((st > 0) || (len < count)) ? substring(st, len) : this;
6.777 + return ((st > 0) || (len < length())) ? substring(st, len) : this;
6.778 }
6.779
6.780 /**
6.781 @@ -2739,6 +2775,7 @@
6.782 *
6.783 * @return the string itself.
6.784 */
6.785 + @JavaScriptBody(args = "self", body = "return self.toString();")
6.786 public String toString() {
6.787 return this;
6.788 }
6.789 @@ -2750,9 +2787,10 @@
6.790 * of this string and whose contents are initialized to contain
6.791 * the character sequence represented by this string.
6.792 */
6.793 + @JavaScriptBody(args = "self", body = "return self.toString().split('');")
6.794 public char[] toCharArray() {
6.795 - char result[] = new char[count];
6.796 - getChars(0, count, result, 0);
6.797 + char result[] = new char[length()];
6.798 + getChars(0, length(), result, 0);
6.799 return result;
6.800 }
6.801
7.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Mon Dec 03 22:13:50 2012 +0100
7.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Tue Dec 04 11:21:10 2012 +0100
7.3 @@ -1,2213 +1,2 @@
7.4 -/**
7.5 - * Back 2 Browser Bytecode Translator
7.6 - * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
7.7 - *
7.8 - * This program is free software: you can redistribute it and/or modify
7.9 - * it under the terms of the GNU General Public License as published by
7.10 - * the Free Software Foundation, version 2 of the License.
7.11 - *
7.12 - * This program is distributed in the hope that it will be useful,
7.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
7.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7.15 - * GNU General Public License for more details.
7.16 - *
7.17 - * You should have received a copy of the GNU General Public License
7.18 - * along with this program. Look for COPYING file in the top folder.
7.19 - * If not, see http://opensource.org/licenses/GPL-2.0.
7.20 - */
7.21 -
7.22 -
7.23 -function java_lang_String_consVAC(self,charArr) {
7.24 - for (var i = 0; i < charArr.length; i++) {
7.25 - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
7.26 - }
7.27 - self.r = charArr.join("");
7.28 -}
7.29 -
7.30 -function java_lang_String_consVACII(self, charArr, off, cnt) {
7.31 - var up = off + cnt;
7.32 - for (var i = off; i < up; i++) {
7.33 - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
7.34 - }
7.35 - self.r = charArr.slice(off, up).join("");
7.36 -}
7.37 -
7.38 -function java_lang_String_charAtCI(arg0,arg1) {
7.39 - return arg0.toString().charCodeAt(arg1);
7.40 -}
7.41 -function java_lang_String_lengthI(arg0) {
7.42 - return arg0.toString().length;
7.43 -}
7.44 -function java_lang_String_isEmptyZ(arg0) {
7.45 - return arg0.toString().length === 0;
7.46 -}
7.47 -function java_lang_String_valueOfLjava_lang_StringI(n) {
7.48 - return n.toString();
7.49 -}
7.50 -
7.51 -function java_lang_String_startsWithZLjava_lang_StringI(self,find,from) {
7.52 - find = find.toString();
7.53 - return self.toString().substring(from, find.length) === find;
7.54 -}
7.55 -function java_lang_String_startsWithZLjava_lang_String(self,find) {
7.56 - find = find.toString();
7.57 - return self.toString().substring(0, find.length) === find;
7.58 -}
7.59 -function java_lang_String_endsWithZLjava_lang_String(self,find) {
7.60 - self = self.toString();
7.61 - find = find.toString();
7.62 - if (find.length > self.length) {
7.63 - return false;
7.64 - }
7.65 - return self.substring(self.length - find.length) === find;
7.66 -}
7.67 -
7.68 -function java_lang_String_indexOfII(arg0,ch) {
7.69 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
7.70 - return arg0.toString().indexOf(ch);
7.71 -}
7.72 -function java_lang_String_indexOfIII(arg0,ch,from) {
7.73 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
7.74 - return arg0.toString().indexOf(ch, from);
7.75 -}
7.76 -
7.77 -function java_lang_String_lastIndexOfII(arg0,ch) {
7.78 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
7.79 - return arg0.toString().lastIndexOf(ch);
7.80 -}
7.81 -function java_lang_String_lastIndexOfIII(arg0,ch,from) {
7.82 - if (typeof ch === 'number') ch = String.fromCharCode(ch);
7.83 - return arg0.toString().lastIndexOf(ch, from);
7.84 -}
7.85 -function java_lang_String_lastIndexOfILjava_lang_String(arg0,s) {
7.86 - return arg0.toString().lastIndexOf(s.toString());
7.87 -}
7.88 -function java_lang_String_lastIndexOfILjava_lang_StringI(arg0,s,from) {
7.89 - return arg0.toString().lastIndexOf(s.toString(), from);
7.90 -}
7.91 -
7.92 -
7.93 -function java_lang_String_getCharsVACI(self, arr, to) {
7.94 - var s = self.toString();
7.95 - for (var i = 0; i < s.length; i++) {
7.96 - arr[to++] = s[i];
7.97 - }
7.98 -}
7.99 -
7.100 -/*
7.101 -function java_lang_String_codePointAtII(arg0,arg1) {
7.102 - var arg2;
7.103 -;
7.104 - var stack = new Array(4);
7.105 - var gt = 0;
7.106 - for(;;) switch(gt) {
7.107 - case 0: stack.push(arg1); // 27
7.108 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11
7.109 - case 4: stack.push(arg1); // 27
7.110 - case 5: stack.push(arg0); // 42
7.111 - case 6: stack.push(stack.pop().count); // 180 1 97
7.112 - case 9: if (stack.pop() > stack.pop()) { gt = 21; continue; } // 161 0 12
7.113 - case 12: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
7.114 - case 15: stack.push(stack[stack.length - 1]); // 89
7.115 - case 16: stack.push(arg1); // 27
7.116 - case 17: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
7.117 - case 20: // 191
7.118 - case 21: stack.push(arg0); // 42
7.119 - case 22: stack.push(stack.pop().value); // 180 1 100
7.120 - case 25: stack.push(arg0); // 42
7.121 - case 26: stack.push(stack.pop().offset); // 180 1 99
7.122 - case 29: stack.push(arg1); // 27
7.123 - case 30: stack.push(stack.pop() + stack.pop()); // 96
7.124 - case 31: stack.push(arg0); // 42
7.125 - case 32: stack.push(stack.pop().offset); // 180 1 99
7.126 - case 35: stack.push(arg0); // 42
7.127 - case 36: stack.push(stack.pop().count); // 180 1 97
7.128 - case 39: stack.push(stack.pop() + stack.pop()); // 96
7.129 - 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
7.130 - case 43: return stack.pop(); // 172
7.131 - }
7.132 -}
7.133 -function java_lang_String_codePointBeforeII(arg0,arg1) {
7.134 - var arg2;
7.135 - var arg3;
7.136 -;
7.137 - var stack = new Array(3);
7.138 - var gt = 0;
7.139 - for(;;) switch(gt) {
7.140 - case 0: stack.push(arg1); // 27
7.141 - case 1: stack.push(1); // 4
7.142 - case 2: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.143 - case 3: arg2 = stack.pop(); // 61
7.144 - case 4: stack.push(arg2); // 28
7.145 - case 5: if (stack.pop() < 0) { gt = 16; continue; } // 155 0 11
7.146 - case 8: stack.push(arg2); // 28
7.147 - case 9: stack.push(arg0); // 42
7.148 - case 10: stack.push(stack.pop().count); // 180 1 97
7.149 - case 13: if (stack.pop() > stack.pop()) { gt = 25; continue; } // 161 0 12
7.150 - case 16: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
7.151 - case 19: stack.push(stack[stack.length - 1]); // 89
7.152 - case 20: stack.push(arg1); // 27
7.153 - case 21: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
7.154 - case 24: // 191
7.155 - case 25: stack.push(arg0); // 42
7.156 - case 26: stack.push(stack.pop().value); // 180 1 100
7.157 - case 29: stack.push(arg0); // 42
7.158 - case 30: stack.push(stack.pop().offset); // 180 1 99
7.159 - case 33: stack.push(arg1); // 27
7.160 - case 34: stack.push(stack.pop() + stack.pop()); // 96
7.161 - case 35: stack.push(arg0); // 42
7.162 - case 36: stack.push(stack.pop().offset); // 180 1 99
7.163 - 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
7.164 - case 42: return stack.pop(); // 172
7.165 - }
7.166 -}
7.167 -function java_lang_String_codePointCountIII(arg0,arg1,arg2) {
7.168 - var arg3;
7.169 -;
7.170 - var stack = new Array(4);
7.171 - var gt = 0;
7.172 - for(;;) switch(gt) {
7.173 - case 0: stack.push(arg1); // 27
7.174 - case 1: if (stack.pop() < 0) { gt = 17; continue; } // 155 0 16
7.175 - case 4: stack.push(arg2); // 28
7.176 - case 5: stack.push(arg0); // 42
7.177 - case 6: stack.push(stack.pop().count); // 180 1 97
7.178 - case 9: if (stack.pop() < stack.pop()) { gt = 17; continue; } // 163 0 8
7.179 - case 12: stack.push(arg1); // 27
7.180 - case 13: stack.push(arg2); // 28
7.181 - case 14: if (stack.pop() >= stack.pop()) { gt = 25; continue; } // 164 0 11
7.182 - case 17: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194
7.183 - case 20: stack.push(stack[stack.length - 1]); // 89
7.184 - case 21: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124
7.185 - case 24: // 191
7.186 - case 25: stack.push(arg0); // 42
7.187 - case 26: stack.push(stack.pop().value); // 180 1 100
7.188 - case 29: stack.push(arg0); // 42
7.189 - case 30: stack.push(stack.pop().offset); // 180 1 99
7.190 - case 33: stack.push(arg1); // 27
7.191 - case 34: stack.push(stack.pop() + stack.pop()); // 96
7.192 - case 35: stack.push(arg2); // 28
7.193 - case 36: stack.push(arg1); // 27
7.194 - case 37: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.195 - 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
7.196 - case 41: return stack.pop(); // 172
7.197 - }
7.198 -}
7.199 -function java_lang_String_offsetByCodePointsIII(arg0,arg1,arg2) {
7.200 - var arg3;
7.201 -;
7.202 - var stack = new Array(5);
7.203 - var gt = 0;
7.204 - for(;;) switch(gt) {
7.205 - case 0: stack.push(arg1); // 27
7.206 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11
7.207 - case 4: stack.push(arg1); // 27
7.208 - case 5: stack.push(arg0); // 42
7.209 - case 6: stack.push(stack.pop().count); // 180 1 97
7.210 - case 9: if (stack.pop() >= stack.pop()) { gt = 20; continue; } // 164 0 11
7.211 - case 12: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194
7.212 - case 15: stack.push(stack[stack.length - 1]); // 89
7.213 - case 16: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124
7.214 - case 19: // 191
7.215 - case 20: stack.push(arg0); // 42
7.216 - case 21: stack.push(stack.pop().value); // 180 1 100
7.217 - case 24: stack.push(arg0); // 42
7.218 - case 25: stack.push(stack.pop().offset); // 180 1 99
7.219 - case 28: stack.push(arg0); // 42
7.220 - case 29: stack.push(stack.pop().count); // 180 1 97
7.221 - case 32: stack.push(arg0); // 42
7.222 - case 33: stack.push(stack.pop().offset); // 180 1 99
7.223 - case 36: stack.push(arg1); // 27
7.224 - case 37: stack.push(stack.pop() + stack.pop()); // 96
7.225 - case 38: stack.push(arg2); // 28
7.226 - 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
7.227 - case 42: stack.push(arg0); // 42
7.228 - case 43: stack.push(stack.pop().offset); // 180 1 99
7.229 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.230 - case 47: return stack.pop(); // 172
7.231 - }
7.232 -}
7.233 -*/
7.234 -
7.235 -// public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
7.236 -function java_lang_String_getCharsVIIACAI(arg0,arg1,arg2,arg3,arg4) {
7.237 - var s = arg0.toString();
7.238 - while (arg1 < arg2) {
7.239 - arg3[arg4++] = s[arg1++];
7.240 - }
7.241 -}
7.242 -
7.243 -/*
7.244 -function java_lang_String_getBytesVIIABI(arg0,arg1,arg2,arg3,arg4) {
7.245 - var arg5;
7.246 - var arg6;
7.247 - var arg7;
7.248 - var arg8;
7.249 - var arg9;
7.250 -;
7.251 - var stack = new Array(4);
7.252 - var gt = 0;
7.253 - for(;;) switch(gt) {
7.254 - case 0: stack.push(arg1); // 27
7.255 - case 1: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 12
7.256 - case 4: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
7.257 - case 7: stack.push(stack[stack.length - 1]); // 89
7.258 - case 8: stack.push(arg1); // 27
7.259 - case 9: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
7.260 - case 12: // 191
7.261 - case 13: stack.push(arg2); // 28
7.262 - case 14: stack.push(arg0); // 42
7.263 - case 15: stack.push(stack.pop().count); // 180 1 97
7.264 - case 18: if (stack.pop() >= stack.pop()) { gt = 30; continue; } // 164 0 12
7.265 - case 21: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
7.266 - case 24: stack.push(stack[stack.length - 1]); // 89
7.267 - case 25: stack.push(arg2); // 28
7.268 - case 26: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
7.269 - case 29: // 191
7.270 - case 30: stack.push(arg1); // 27
7.271 - case 31: stack.push(arg2); // 28
7.272 - case 32: if (stack.pop() >= stack.pop()) { gt = 46; continue; } // 164 0 14
7.273 - case 35: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206
7.274 - case 38: stack.push(stack[stack.length - 1]); // 89
7.275 - case 39: stack.push(arg2); // 28
7.276 - case 40: stack.push(arg1); // 27
7.277 - case 41: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.278 - case 42: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169
7.279 - case 45: // 191
7.280 - case 46: stack.push(arg4); // 21 4
7.281 - case 48: arg5 = stack.pop() // 54 5
7.282 - case 50: stack.push(arg0); // 42
7.283 - case 51: stack.push(stack.pop().offset); // 180 1 99
7.284 - case 54: stack.push(arg2); // 28
7.285 - case 55: stack.push(stack.pop() + stack.pop()); // 96
7.286 - case 56: arg6 = stack.pop() // 54 6
7.287 - case 58: stack.push(arg0); // 42
7.288 - case 59: stack.push(stack.pop().offset); // 180 1 99
7.289 - case 62: stack.push(arg1); // 27
7.290 - case 63: stack.push(stack.pop() + stack.pop()); // 96
7.291 - case 64: arg7 = stack.pop() // 54 7
7.292 - case 66: stack.push(arg0); // 42
7.293 - case 67: stack.push(stack.pop().value); // 180 1 100
7.294 - case 70: arg8 = stack.pop() // 58 8
7.295 - case 72: stack.push(arg7); // 21 7
7.296 - case 74: stack.push(arg6); // 21 6
7.297 - case 76: if (stack.pop() <= stack.pop()) { gt = 98; continue; } // 162 0 22
7.298 - case 79: stack.push(arg3); // 45
7.299 - case 80: stack.push(arg5); // 21 5
7.300 - case 82: arg5++; // 132 5 1
7.301 - case 85: stack.push(arg8); // 25 8
7.302 - case 87: stack.push(arg7); // 21 7
7.303 - case 89: arg7++; // 132 7 1
7.304 - case 92: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.305 - case 93: // number conversion // 145
7.306 - case 94: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 84
7.307 - case 95: gt = 72; continue; // 167 255 233
7.308 - case 98: return; // 177
7.309 - }
7.310 -}
7.311 -function java_lang_String_getBytesABLjava_lang_String(arg0,arg1) {
7.312 - var arg2;
7.313 -;
7.314 - var stack = new Array(4);
7.315 - var gt = 0;
7.316 - for(;;) switch(gt) {
7.317 - case 0: stack.push(arg1); // 43
7.318 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
7.319 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
7.320 - case 7: stack.push(stack[stack.length - 1]); // 89
7.321 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
7.322 - case 11: // 191
7.323 - case 12: stack.push(arg1); // 43
7.324 - case 13: stack.push(arg0); // 42
7.325 - case 14: stack.push(stack.pop().value); // 180 1 100
7.326 - case 17: stack.push(arg0); // 42
7.327 - case 18: stack.push(stack.pop().offset); // 180 1 99
7.328 - case 21: stack.push(arg0); // 42
7.329 - case 22: stack.push(stack.pop().count); // 180 1 97
7.330 - 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
7.331 - case 28: return stack.pop(); // 176
7.332 - }
7.333 -}
7.334 -function java_lang_String_getBytesABLjava_nio_charset_Charset(arg0,arg1) {
7.335 - var arg2;
7.336 -;
7.337 - var stack = new Array(4);
7.338 - var gt = 0;
7.339 - for(;;) switch(gt) {
7.340 - case 0: stack.push(arg1); // 43
7.341 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
7.342 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
7.343 - case 7: stack.push(stack[stack.length - 1]); // 89
7.344 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
7.345 - case 11: // 191
7.346 - case 12: stack.push(arg1); // 43
7.347 - case 13: stack.push(arg0); // 42
7.348 - case 14: stack.push(stack.pop().value); // 180 1 100
7.349 - case 17: stack.push(arg0); // 42
7.350 - case 18: stack.push(stack.pop().offset); // 180 1 99
7.351 - case 21: stack.push(arg0); // 42
7.352 - case 22: stack.push(stack.pop().count); // 180 1 97
7.353 - 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
7.354 - case 28: return stack.pop(); // 176
7.355 - }
7.356 -}
7.357 -function java_lang_String_getBytesAB(arg0) {
7.358 - var arg1;
7.359 -;
7.360 - var stack = new Array(3);
7.361 - var gt = 0;
7.362 - for(;;) switch(gt) {
7.363 - case 0: stack.push(arg0); // 42
7.364 - case 1: stack.push(stack.pop().value); // 180 1 100
7.365 - case 4: stack.push(arg0); // 42
7.366 - case 5: stack.push(stack.pop().offset); // 180 1 99
7.367 - case 8: stack.push(arg0); // 42
7.368 - case 9: stack.push(stack.pop().count); // 180 1 97
7.369 - 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
7.370 - case 15: return stack.pop(); // 176
7.371 - }
7.372 -}
7.373 -*/
7.374 -function java_lang_String_equalsZLjava_lang_Object(arg0,arg1) {
7.375 - return arg0.toString() === arg1.toString();
7.376 -}
7.377 -
7.378 -function java_lang_String_hashCodeI(self) {
7.379 - var h = 0;
7.380 - var s = self.toString();
7.381 - for (var i = 0; i < s.length; i++) {
7.382 - var high = (h >> 16) & 0xffff, low = h & 0xffff;
7.383 - h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;
7.384 - }
7.385 - return h;
7.386 -}
7.387 -
7.388 -function java_lang_String_substringLjava_lang_StringI(arg0,arg1) {
7.389 - return arg0.toString().substring(arg1);
7.390 -}
7.391 -function java_lang_String_substringLjava_lang_StringII(arg0,arg1,arg2) {
7.392 - return arg0.toString().substring(arg1, arg2);
7.393 -}
7.394 -
7.395 -function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
7.396 - if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
7.397 - if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
7.398 - var s = arg0.toString();
7.399 - for (;;) {
7.400 - var ret = s.replace(arg1, arg2);
7.401 - if (ret === s) {
7.402 - return ret;
7.403 - }
7.404 - s = ret;
7.405 - }
7.406 -}
7.407 -function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
7.408 - return arg0.toString().indexOf(arg1.toString()) >= 0;
7.409 -}
7.410 -
7.411 -function java_lang_String_toStringLjava_lang_String(arg0) {
7.412 - return arg0.toString();
7.413 -}
7.414 -function java_lang_String_toCharArrayAC(arg0) {
7.415 - return arg0.toString().split('');
7.416 -}
7.417 -var java_lang_String_serialVersionUID = 0;
7.418 -var java_lang_String_serialPersistentFields = 0;
7.419 -var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
7.420 -function java_lang_String() {
7.421 - if (arguments.length === 0) {
7.422 - /** the real value of this 'string' we delegate to */
7.423 - this.r = '';
7.424 - return this;
7.425 - } else {
7.426 - return new java_lang_String;
7.427 - }
7.428 -}
7.429 -java_lang_String.prototype = new String;
7.430 -java_lang_String.prototype.toString = function() { return this.r; };;
7.431 -java_lang_String.prototype.valueOf = function() { return this.toString().valueOf(); };;
7.432 -//java_lang_String_classV();
7.433 -
7.434 -/* new method for JavaScript String */
7.435 -String.prototype.consVAC = java_lang_String_consVAC;
7.436 -String.prototype.consVACII = java_lang_String_consVACII;
7.437 -String.prototype.charAtCI = java_lang_String_charAtCI;
7.438 -String.prototype.lengthI = java_lang_String_lengthI;
7.439 -String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
7.440 -String.prototype.getCharsVIIACI = java_lang_String_getCharsVIIACAI;
7.441 -String.prototype.getCharsVACI = java_lang_String_getCharsVACI;
7.442 -String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
7.443 -String.prototype.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
7.444 -String.prototype.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
7.445 -String.prototype.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
7.446 -String.prototype.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
7.447 -String.prototype.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
7.448 -String.prototype.hashCodeI = java_lang_String_hashCodeI;
7.449 -String.prototype.toCharArrayAC = java_lang_String_toCharArrayAC;
7.450 -String.prototype.valueOfLjava_lang_StringI=java_lang_String_valueOfLjava_lang_StringI;
7.451 -String.prototype.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
7.452 -String.prototype.startsWithZLjava_lang_String=java_lang_String_startsWithZLjava_lang_String;
7.453 -String.prototype.endsWithZLjava_lang_String=java_lang_String_endsWithZLjava_lang_String;
7.454 -String.prototype.indexOfII=java_lang_String_indexOfII;
7.455 -String.prototype.indexOfIII=java_lang_String_indexOfIII;
7.456 -String.prototype.lastIndexOfII=java_lang_String_lastIndexOfII;
7.457 -String.prototype.lastIndexOfIII=java_lang_String_lastIndexOfIII;
7.458 -String.prototype.lastIndexOfILjava_lang_String=java_lang_String_lastIndexOfILjava_lang_String;
7.459 -String.prototype.lastIndexOfILjava_lang_StringI=java_lang_String_lastIndexOfILjava_lang_StringI;
7.460 -
7.461 -String.prototype.$instOf_java_lang_String = true;
7.462 -String.prototype.$instOf_java_io_Serializable = true;
7.463 -String.prototype.$instOf_java_lang_Comparable = true;
7.464 -String.prototype.$instOf_java_lang_CharSequence = true;
7.465 -
7.466 -/*
7.467 -function java_lang_String_subSequenceLjava_lang_CharSequenceII(arg0,arg1,arg2) {
7.468 - var arg3;
7.469 -;
7.470 - var stack = new Array(3);
7.471 - var gt = 0;
7.472 - for(;;) switch(gt) {
7.473 - case 0: stack.push(arg0); // 42
7.474 - case 1: stack.push(arg1); // 27
7.475 - case 2: stack.push(arg2); // 28
7.476 - 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
7.477 - case 6: return stack.pop(); // 176
7.478 - }
7.479 -}
7.480 -function java_lang_String_concatLjava_lang_StringLjava_lang_String(arg0,arg1) {
7.481 - var arg2;
7.482 - var arg3;
7.483 - var arg4;
7.484 -;
7.485 - var stack = new Array(5);
7.486 - var gt = 0;
7.487 - for(;;) switch(gt) {
7.488 - case 0: stack.push(arg1); // 43
7.489 - case 1: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 182 1 133
7.490 - case 4: arg2 = stack.pop(); // 61
7.491 - case 5: stack.push(arg2); // 28
7.492 - case 6: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 5
7.493 - case 9: stack.push(arg0); // 42
7.494 - case 10: return stack.pop(); // 176
7.495 - case 11: stack.push(arg0); // 42
7.496 - case 12: stack.push(stack.pop().count); // 180 1 97
7.497 - case 15: stack.push(arg2); // 28
7.498 - case 16: stack.push(stack.pop() + stack.pop()); // 96
7.499 - case 17: stack.push(new Array(stack.pop())); // 188 5
7.500 - case 19: arg3 = stack.pop(); // 78
7.501 - case 20: stack.push(arg0); // 42
7.502 - case 21: stack.push(0); // 3
7.503 - case 22: stack.push(arg0); // 42
7.504 - case 23: stack.push(stack.pop().count); // 180 1 97
7.505 - case 26: stack.push(arg3); // 45
7.506 - case 27: stack.push(0); // 3
7.507 - 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
7.508 - case 31: stack.push(arg1); // 43
7.509 - case 32: stack.push(0); // 3
7.510 - case 33: stack.push(arg2); // 28
7.511 - case 34: stack.push(arg3); // 45
7.512 - case 35: stack.push(arg0); // 42
7.513 - case 36: stack.push(stack.pop().count); // 180 1 97
7.514 - 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
7.515 - case 42: stack.push(new java_lang_String); // 187 0 200
7.516 - case 45: stack.push(stack[stack.length - 1]); // 89
7.517 - case 46: stack.push(0); // 3
7.518 - case 47: stack.push(arg0); // 42
7.519 - case 48: stack.push(stack.pop().count); // 180 1 97
7.520 - case 51: stack.push(arg2); // 28
7.521 - case 52: stack.push(stack.pop() + stack.pop()); // 96
7.522 - case 53: stack.push(arg3); // 45
7.523 - 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
7.524 - case 57: return stack.pop(); // 176
7.525 - }
7.526 -}
7.527 -function java_lang_String_matchesZLjava_lang_String(arg0,arg1) {
7.528 - var arg2;
7.529 -;
7.530 - var stack = new Array(2);
7.531 - var gt = 0;
7.532 - for(;;) switch(gt) {
7.533 - case 0: stack.push(arg1); // 43
7.534 - case 1: stack.push(arg0); // 42
7.535 - 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
7.536 - case 5: return stack.pop(); // 172
7.537 - }
7.538 -}
7.539 -function java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
7.540 - var arg3;
7.541 -;
7.542 - var stack = new Array(2);
7.543 - var gt = 0;
7.544 - for(;;) switch(gt) {
7.545 - case 0: stack.push(arg1); // 43
7.546 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
7.547 - case 4: stack.push(arg0); // 42
7.548 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
7.549 - case 8: stack.push(arg2); // 44
7.550 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceFirstLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 182
7.551 - case 12: return stack.pop(); // 176
7.552 - }
7.553 -}
7.554 -function java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
7.555 - var arg3;
7.556 -;
7.557 - var stack = new Array(2);
7.558 - var gt = 0;
7.559 - for(;;) switch(gt) {
7.560 - case 0: stack.push(arg1); // 43
7.561 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
7.562 - case 4: stack.push(arg0); // 42
7.563 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
7.564 - case 8: stack.push(arg2); // 44
7.565 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
7.566 - case 12: return stack.pop(); // 176
7.567 - }
7.568 -}
7.569 -function java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence(arg0,arg1,arg2) {
7.570 - var arg3;
7.571 -;
7.572 - var stack = new Array(2);
7.573 - var gt = 0;
7.574 - for(;;) switch(gt) {
7.575 - case 0: stack.push(arg1); // 43
7.576 - case 1: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
7.577 - case 4: stack.push(16); // 16 16
7.578 - 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
7.579 - case 9: stack.push(arg0); // 42
7.580 - case 10: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
7.581 - case 13: stack.push(arg2); // 44
7.582 - case 14: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
7.583 - case 17: { var v0 = stack.pop(); stack.push(java_util_regex_Matcher_quoteReplacementLjava_lang_StringLjava_lang_String(v0)); } // 184 1 180
7.584 - case 20: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
7.585 - case 23: return stack.pop(); // 176
7.586 - }
7.587 -}
7.588 -function java_lang_String_splitALjava_lang_StringLjava_lang_StringI(arg0,arg1,arg2) {
7.589 - var arg3;
7.590 -;
7.591 - var stack = new Array(3);
7.592 - var gt = 0;
7.593 - for(;;) switch(gt) {
7.594 - case 0: stack.push(arg1); // 43
7.595 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
7.596 - case 4: stack.push(arg0); // 42
7.597 - case 5: stack.push(arg2); // 28
7.598 - 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
7.599 - case 9: return stack.pop(); // 176
7.600 - }
7.601 -}
7.602 -function java_lang_String_splitALjava_lang_StringLjava_lang_String(arg0,arg1) {
7.603 - var arg2;
7.604 -;
7.605 - var stack = new Array(3);
7.606 - var gt = 0;
7.607 - for(;;) switch(gt) {
7.608 - case 0: stack.push(arg0); // 42
7.609 - case 1: stack.push(arg1); // 43
7.610 - case 2: stack.push(0); // 3
7.611 - 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
7.612 - case 6: return stack.pop(); // 176
7.613 - }
7.614 -}
7.615 -function java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
7.616 - var arg2;
7.617 - var arg3;
7.618 - var arg4;
7.619 - var arg5;
7.620 - var arg6;
7.621 - var arg7;
7.622 - var arg8;
7.623 - var arg9;
7.624 - var arg10;
7.625 - var arg11;
7.626 - var arg12;
7.627 - var arg13;
7.628 - var arg14;
7.629 -;
7.630 - var stack = new Array(6);
7.631 - var gt = 0;
7.632 - for(;;) switch(gt) {
7.633 - case 0: stack.push(arg1); // 43
7.634 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
7.635 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
7.636 - case 7: stack.push(stack[stack.length - 1]); // 89
7.637 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
7.638 - case 11: // 191
7.639 - case 12: stack.push(0); // 3
7.640 - case 13: arg2 = stack.pop(); // 61
7.641 - case 14: stack.push(arg2); // 28
7.642 - case 15: stack.push(arg0); // 42
7.643 - case 16: stack.push(stack.pop().count); // 180 1 97
7.644 - case 19: if (stack.pop() <= stack.pop()) { gt = 94; continue; } // 162 0 75
7.645 - case 22: stack.push(arg0); // 42
7.646 - case 23: stack.push(stack.pop().value); // 180 1 100
7.647 - case 26: stack.push(arg0); // 42
7.648 - case 27: stack.push(stack.pop().offset); // 180 1 99
7.649 - case 30: stack.push(arg2); // 28
7.650 - case 31: stack.push(stack.pop() + stack.pop()); // 96
7.651 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.652 - case 33: arg3 = stack.pop(); // 62
7.653 - case 34: stack.push(arg3); // 29
7.654 - case 35: stack.push(55296); // 18 1
7.655 - case 37: if (stack.pop() > stack.pop()) { gt = 77; continue; } // 161 0 40
7.656 - case 40: stack.push(arg3); // 29
7.657 - case 41: stack.push(56319); // 18 2
7.658 - case 43: if (stack.pop() < stack.pop()) { gt = 77; continue; } // 163 0 34
7.659 - case 46: stack.push(arg0); // 42
7.660 - case 47: stack.push(arg2); // 28
7.661 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
7.662 - case 51: arg4 = stack.pop() // 54 4
7.663 - case 53: stack.push(arg4); // 21 4
7.664 - case 55: stack.push(arg4); // 21 4
7.665 - case 57: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
7.666 - case 60: if (stack.pop() == stack.pop()) { gt = 66; continue; } // 159 0 6
7.667 - case 63: gt = 96; continue; // 167 0 33
7.668 - case 66: stack.push(arg2); // 28
7.669 - case 67: stack.push(arg4); // 21 4
7.670 - case 69: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
7.671 - case 72: stack.push(stack.pop() + stack.pop()); // 96
7.672 - case 73: arg2 = stack.pop(); // 61
7.673 - case 74: gt = 91; continue; // 167 0 17
7.674 - case 77: stack.push(arg3); // 29
7.675 - case 78: stack.push(arg3); // 29
7.676 - case 79: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
7.677 - case 82: if (stack.pop() == stack.pop()) { gt = 88; continue; } // 159 0 6
7.678 - case 85: gt = 96; continue; // 167 0 11
7.679 - case 88: arg2++; // 132 2 1
7.680 - case 91: gt = 14; continue; // 167 255 179
7.681 - case 94: stack.push(arg0); // 42
7.682 - case 95: return stack.pop(); // 176
7.683 - case 96: stack.push(arg0); // 42
7.684 - case 97: stack.push(stack.pop().count); // 180 1 97
7.685 - case 100: stack.push(new Array(stack.pop())); // 188 5
7.686 - case 102: arg3 = stack.pop(); // 78
7.687 - case 103: stack.push(0); // 3
7.688 - case 104: arg4 = stack.pop() // 54 4
7.689 - case 106: stack.push(arg0); // 42
7.690 - case 107: stack.push(stack.pop().value); // 180 1 100
7.691 - case 110: stack.push(arg0); // 42
7.692 - case 111: stack.push(stack.pop().offset); // 180 1 99
7.693 - case 114: stack.push(arg3); // 45
7.694 - case 115: stack.push(0); // 3
7.695 - case 116: stack.push(arg2); // 28
7.696 - 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
7.697 - case 120: stack.push(arg1); // 43
7.698 - case 121: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
7.699 - case 124: arg5 = stack.pop() // 58 5
7.700 - case 126: stack.push(arg5); // 25 5
7.701 - case 128: stack.push("tr"); // 18 11
7.702 - case 130: // 165
7.703 - case 131: // 0
7.704 - case 132: stack.push(6405); // 17 25 5
7.705 - case 135: stack.push("az"); // 18 5
7.706 - case 137: // 165
7.707 - case 138: // 0
7.708 - case 139: stack.push(1); // 10
7.709 - case 140: stack.push(arg5); // 25 5
7.710 - case 142: stack.push("lt"); // 18 9
7.711 - case 144: // 166
7.712 - case 145: // 0
7.713 - case 146: stack.push(4); // 7
7.714 - case 147: stack.push(1); // 4
7.715 - case 148: gt = 152; continue; // 167 0 4
7.716 - case 151: stack.push(0); // 3
7.717 - case 152: arg6 = stack.pop() // 54 6
7.718 - case 154: stack.push(arg2); // 28
7.719 - case 155: arg11 = stack.pop() // 54 11
7.720 - case 157: stack.push(arg11); // 21 11
7.721 - case 159: stack.push(arg0); // 42
7.722 - case 160: stack.push(stack.pop().count); // 180 1 97
7.723 - case 163: if (stack.pop() <= stack.pop()) { gt = 419; continue; } // 162 1 0
7.724 - case 166: stack.push(arg0); // 42
7.725 - case 167: stack.push(stack.pop().value); // 180 1 100
7.726 - case 170: stack.push(arg0); // 42
7.727 - case 171: stack.push(stack.pop().offset); // 180 1 99
7.728 - case 174: stack.push(arg11); // 21 11
7.729 - case 176: stack.push(stack.pop() + stack.pop()); // 96
7.730 - case 177: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.731 - case 178: arg9 = stack.pop() // 54 9
7.732 - case 180: stack.push(arg9); // 21 9
7.733 - case 182: // number conversion // 146
7.734 - case 183: stack.push(55296); // 18 1
7.735 - case 185: if (stack.pop() > stack.pop()) { gt = 214; continue; } // 161 0 29
7.736 - case 188: stack.push(arg9); // 21 9
7.737 - case 190: // number conversion // 146
7.738 - case 191: stack.push(56319); // 18 2
7.739 - case 193: if (stack.pop() < stack.pop()) { gt = 214; continue; } // 163 0 21
7.740 - case 196: stack.push(arg0); // 42
7.741 - case 197: stack.push(arg11); // 21 11
7.742 - case 199: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
7.743 - case 202: arg9 = stack.pop() // 54 9
7.744 - case 204: stack.push(arg9); // 21 9
7.745 - case 206: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
7.746 - case 209: arg10 = stack.pop() // 54 10
7.747 - case 211: gt = 217; continue; // 167 0 6
7.748 - case 214: stack.push(1); // 4
7.749 - case 215: arg10 = stack.pop() // 54 10
7.750 - case 217: stack.push(arg6); // 21 6
7.751 - case 219: if (stack.pop() != 0) { gt = 230; continue; } // 154 0 11
7.752 - case 222: stack.push(arg9); // 21 9
7.753 - case 224: stack.push(931); // 17 3 163
7.754 - case 227: if (stack.pop() != stack.pop()) { gt = 242; continue; } // 160 0 15
7.755 - case 230: stack.push(arg0); // 42
7.756 - case 231: stack.push(arg11); // 21 11
7.757 - case 233: stack.push(arg1); // 43
7.758 - 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
7.759 - case 237: arg8 = stack.pop() // 54 8
7.760 - case 239: gt = 249; continue; // 167 0 10
7.761 - case 242: stack.push(arg9); // 21 9
7.762 - case 244: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
7.763 - case 247: arg8 = stack.pop() // 54 8
7.764 - case 249: stack.push(arg8); // 21 8
7.765 - case 251: // 2
7.766 - case 252: if (stack.pop() == stack.pop()) { gt = 262; continue; } // 159 0 10
7.767 - case 255: stack.push(arg8); // 21 8
7.768 - case 257: stack.push(65536); // 18 3
7.769 - case 259: if (stack.pop() > stack.pop()) { gt = 399; continue; } // 161 0 140
7.770 - case 262: stack.push(arg8); // 21 8
7.771 - case 264: // 2
7.772 - case 265: if (stack.pop() != stack.pop()) { gt = 280; continue; } // 160 0 15
7.773 - case 268: stack.push(arg0); // 42
7.774 - case 269: stack.push(arg11); // 21 11
7.775 - case 271: stack.push(arg1); // 43
7.776 - 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
7.777 - case 275: arg7 = stack.pop() // 58 7
7.778 - case 277: gt = 315; continue; // 167 0 38
7.779 - case 280: stack.push(arg10); // 21 10
7.780 - case 282: stack.push(2); // 5
7.781 - case 283: if (stack.pop() != stack.pop()) { gt = 308; continue; } // 160 0 25
7.782 - case 286: stack.push(arg4); // 21 4
7.783 - case 288: stack.push(arg8); // 21 8
7.784 - case 290: stack.push(arg3); // 45
7.785 - case 291: stack.push(arg11); // 21 11
7.786 - case 293: stack.push(arg4); // 21 4
7.787 - case 295: stack.push(stack.pop() + stack.pop()); // 96
7.788 - 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
7.789 - case 299: stack.push(arg10); // 21 10
7.790 - case 301: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.791 - case 302: stack.push(stack.pop() + stack.pop()); // 96
7.792 - case 303: arg4 = stack.pop() // 54 4
7.793 - case 305: gt = 409; continue; // 167 0 104
7.794 - case 308: stack.push(arg8); // 21 8
7.795 - case 310: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
7.796 - case 313: arg7 = stack.pop() // 58 7
7.797 - case 315: stack.push(arg7); // 25 7
7.798 - case 317: stack.push(stack.pop().length); // 190
7.799 - case 318: arg12 = stack.pop() // 54 12
7.800 - case 320: stack.push(arg12); // 21 12
7.801 - case 322: stack.push(arg10); // 21 10
7.802 - case 324: if (stack.pop() >= stack.pop()) { gt = 355; continue; } // 164 0 31
7.803 - case 327: stack.push(arg3); // 45
7.804 - case 328: stack.push(stack.pop().length); // 190
7.805 - case 329: stack.push(arg12); // 21 12
7.806 - case 331: stack.push(stack.pop() + stack.pop()); // 96
7.807 - case 332: stack.push(arg10); // 21 10
7.808 - case 334: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.809 - case 335: stack.push(new Array(stack.pop())); // 188 5
7.810 - case 337: arg13 = stack.pop() // 58 13
7.811 - case 339: stack.push(arg3); // 45
7.812 - case 340: stack.push(0); // 3
7.813 - case 341: stack.push(arg13); // 25 13
7.814 - case 343: stack.push(0); // 3
7.815 - case 344: stack.push(arg11); // 21 11
7.816 - case 346: stack.push(arg4); // 21 4
7.817 - case 348: stack.push(stack.pop() + stack.pop()); // 96
7.818 - 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
7.819 - case 352: stack.push(arg13); // 25 13
7.820 - case 354: arg3 = stack.pop(); // 78
7.821 - case 355: stack.push(0); // 3
7.822 - case 356: arg13 = stack.pop() // 54 13
7.823 - case 358: stack.push(arg13); // 21 13
7.824 - case 360: stack.push(arg12); // 21 12
7.825 - case 362: if (stack.pop() <= stack.pop()) { gt = 386; continue; } // 162 0 24
7.826 - case 365: stack.push(arg3); // 45
7.827 - case 366: stack.push(arg11); // 21 11
7.828 - case 368: stack.push(arg4); // 21 4
7.829 - case 370: stack.push(stack.pop() + stack.pop()); // 96
7.830 - case 371: stack.push(arg13); // 21 13
7.831 - case 373: stack.push(stack.pop() + stack.pop()); // 96
7.832 - case 374: stack.push(arg7); // 25 7
7.833 - case 376: stack.push(arg13); // 21 13
7.834 - case 378: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.835 - case 379: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
7.836 - case 380: arg13++; // 132 13 1
7.837 - case 383: gt = 358; continue; // 167 255 231
7.838 - case 386: stack.push(arg4); // 21 4
7.839 - case 388: stack.push(arg12); // 21 12
7.840 - case 390: stack.push(arg10); // 21 10
7.841 - case 392: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.842 - case 393: stack.push(stack.pop() + stack.pop()); // 96
7.843 - case 394: arg4 = stack.pop() // 54 4
7.844 - case 396: gt = 409; continue; // 167 0 13
7.845 - case 399: stack.push(arg3); // 45
7.846 - case 400: stack.push(arg11); // 21 11
7.847 - case 402: stack.push(arg4); // 21 4
7.848 - case 404: stack.push(stack.pop() + stack.pop()); // 96
7.849 - case 405: stack.push(arg8); // 21 8
7.850 - case 407: // number conversion // 146
7.851 - case 408: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
7.852 - case 409: stack.push(arg11); // 21 11
7.853 - case 411: stack.push(arg10); // 21 10
7.854 - case 413: stack.push(stack.pop() + stack.pop()); // 96
7.855 - case 414: arg11 = stack.pop() // 54 11
7.856 - case 416: gt = 157; continue; // 167 254 253
7.857 - case 419: stack.push(new java_lang_String); // 187 0 200
7.858 - case 422: stack.push(stack[stack.length - 1]); // 89
7.859 - case 423: stack.push(0); // 3
7.860 - case 424: stack.push(arg0); // 42
7.861 - case 425: stack.push(stack.pop().count); // 180 1 97
7.862 - case 428: stack.push(arg4); // 21 4
7.863 - case 430: stack.push(stack.pop() + stack.pop()); // 96
7.864 - case 431: stack.push(arg3); // 45
7.865 - 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
7.866 - case 435: return stack.pop(); // 176
7.867 - }
7.868 -}
7.869 -function java_lang_String_toLowerCaseLjava_lang_String(arg0) {
7.870 - var arg1;
7.871 -;
7.872 - var stack = new Array(2);
7.873 - var gt = 0;
7.874 - for(;;) switch(gt) {
7.875 - case 0: stack.push(arg0); // 42
7.876 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
7.877 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toLowerCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 158
7.878 - case 7: return stack.pop(); // 176
7.879 - }
7.880 -}
7.881 -function java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
7.882 - var arg2;
7.883 - var arg3;
7.884 - var arg4;
7.885 - var arg5;
7.886 - var arg6;
7.887 - var arg7;
7.888 - var arg8;
7.889 - var arg9;
7.890 - var arg10;
7.891 - var arg11;
7.892 - var arg12;
7.893 - var arg13;
7.894 - var arg14;
7.895 -;
7.896 - var stack = new Array(6);
7.897 - var gt = 0;
7.898 - for(;;) switch(gt) {
7.899 - case 0: stack.push(arg1); // 43
7.900 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
7.901 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
7.902 - case 7: stack.push(stack[stack.length - 1]); // 89
7.903 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
7.904 - case 11: // 191
7.905 - case 12: stack.push(0); // 3
7.906 - case 13: arg2 = stack.pop(); // 61
7.907 - case 14: stack.push(arg2); // 28
7.908 - case 15: stack.push(arg0); // 42
7.909 - case 16: stack.push(stack.pop().count); // 180 1 97
7.910 - case 19: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 74
7.911 - case 22: stack.push(arg0); // 42
7.912 - case 23: stack.push(stack.pop().value); // 180 1 100
7.913 - case 26: stack.push(arg0); // 42
7.914 - case 27: stack.push(stack.pop().offset); // 180 1 99
7.915 - case 30: stack.push(arg2); // 28
7.916 - case 31: stack.push(stack.pop() + stack.pop()); // 96
7.917 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.918 - case 33: arg3 = stack.pop(); // 62
7.919 - case 34: stack.push(arg3); // 29
7.920 - case 35: stack.push(55296); // 18 1
7.921 - case 37: if (stack.pop() > stack.pop()) { gt = 61; continue; } // 161 0 24
7.922 - case 40: stack.push(arg3); // 29
7.923 - case 41: stack.push(56319); // 18 2
7.924 - case 43: if (stack.pop() < stack.pop()) { gt = 61; continue; } // 163 0 18
7.925 - case 46: stack.push(arg0); // 42
7.926 - case 47: stack.push(arg2); // 28
7.927 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
7.928 - case 51: arg3 = stack.pop(); // 62
7.929 - case 52: stack.push(arg3); // 29
7.930 - case 53: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
7.931 - case 56: arg4 = stack.pop() // 54 4
7.932 - case 58: gt = 64; continue; // 167 0 6
7.933 - case 61: stack.push(1); // 4
7.934 - case 62: arg4 = stack.pop() // 54 4
7.935 - case 64: stack.push(arg3); // 29
7.936 - case 65: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
7.937 - case 68: arg5 = stack.pop() // 54 5
7.938 - case 70: stack.push(arg5); // 21 5
7.939 - case 72: // 2
7.940 - case 73: if (stack.pop() == stack.pop()) { gt = 95; continue; } // 159 0 22
7.941 - case 76: stack.push(arg3); // 29
7.942 - case 77: stack.push(arg5); // 21 5
7.943 - case 79: if (stack.pop() == stack.pop()) { gt = 85; continue; } // 159 0 6
7.944 - case 82: gt = 95; continue; // 167 0 13
7.945 - case 85: stack.push(arg2); // 28
7.946 - case 86: stack.push(arg4); // 21 4
7.947 - case 88: stack.push(stack.pop() + stack.pop()); // 96
7.948 - case 89: arg2 = stack.pop(); // 61
7.949 - case 90: gt = 14; continue; // 167 255 180
7.950 - case 93: stack.push(arg0); // 42
7.951 - case 94: return stack.pop(); // 176
7.952 - case 95: stack.push(arg0); // 42
7.953 - case 96: stack.push(stack.pop().count); // 180 1 97
7.954 - case 99: stack.push(new Array(stack.pop())); // 188 5
7.955 - case 101: arg3 = stack.pop(); // 78
7.956 - case 102: stack.push(0); // 3
7.957 - case 103: arg4 = stack.pop() // 54 4
7.958 - case 105: stack.push(arg0); // 42
7.959 - case 106: stack.push(stack.pop().value); // 180 1 100
7.960 - case 109: stack.push(arg0); // 42
7.961 - case 110: stack.push(stack.pop().offset); // 180 1 99
7.962 - case 113: stack.push(arg3); // 45
7.963 - case 114: stack.push(0); // 3
7.964 - case 115: stack.push(arg2); // 28
7.965 - 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
7.966 - case 119: stack.push(arg1); // 43
7.967 - case 120: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
7.968 - case 123: arg5 = stack.pop() // 58 5
7.969 - case 125: stack.push(arg5); // 25 5
7.970 - case 127: stack.push("tr"); // 18 11
7.971 - case 129: // 165
7.972 - case 130: // 0
7.973 - case 131: stack.push(6405); // 17 25 5
7.974 - case 134: stack.push("az"); // 18 5
7.975 - case 136: // 165
7.976 - case 137: // 0
7.977 - case 138: stack.push(1); // 10
7.978 - case 139: stack.push(arg5); // 25 5
7.979 - case 141: stack.push("lt"); // 18 9
7.980 - case 143: // 166
7.981 - case 144: // 0
7.982 - case 145: stack.push(4); // 7
7.983 - case 146: stack.push(1); // 4
7.984 - case 147: gt = 151; continue; // 167 0 4
7.985 - case 150: stack.push(0); // 3
7.986 - case 151: arg6 = stack.pop() // 54 6
7.987 - case 153: stack.push(arg2); // 28
7.988 - case 154: arg11 = stack.pop() // 54 11
7.989 - case 156: stack.push(arg11); // 21 11
7.990 - case 158: stack.push(arg0); // 42
7.991 - case 159: stack.push(stack.pop().count); // 180 1 97
7.992 - case 162: if (stack.pop() <= stack.pop()) { gt = 425; continue; } // 162 1 7
7.993 - case 165: stack.push(arg0); // 42
7.994 - case 166: stack.push(stack.pop().value); // 180 1 100
7.995 - case 169: stack.push(arg0); // 42
7.996 - case 170: stack.push(stack.pop().offset); // 180 1 99
7.997 - case 173: stack.push(arg11); // 21 11
7.998 - case 175: stack.push(stack.pop() + stack.pop()); // 96
7.999 - case 176: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1000 - case 177: arg9 = stack.pop() // 54 9
7.1001 - case 179: stack.push(arg9); // 21 9
7.1002 - case 181: // number conversion // 146
7.1003 - case 182: stack.push(55296); // 18 1
7.1004 - case 184: if (stack.pop() > stack.pop()) { gt = 213; continue; } // 161 0 29
7.1005 - case 187: stack.push(arg9); // 21 9
7.1006 - case 189: // number conversion // 146
7.1007 - case 190: stack.push(56319); // 18 2
7.1008 - case 192: if (stack.pop() < stack.pop()) { gt = 213; continue; } // 163 0 21
7.1009 - case 195: stack.push(arg0); // 42
7.1010 - case 196: stack.push(arg11); // 21 11
7.1011 - case 198: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
7.1012 - case 201: arg9 = stack.pop() // 54 9
7.1013 - case 203: stack.push(arg9); // 21 9
7.1014 - case 205: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
7.1015 - case 208: arg10 = stack.pop() // 54 10
7.1016 - case 210: gt = 216; continue; // 167 0 6
7.1017 - case 213: stack.push(1); // 4
7.1018 - case 214: arg10 = stack.pop() // 54 10
7.1019 - case 216: stack.push(arg6); // 21 6
7.1020 - case 218: if (stack.pop() == 0) { gt = 233; continue; } // 153 0 15
7.1021 - case 221: stack.push(arg0); // 42
7.1022 - case 222: stack.push(arg11); // 21 11
7.1023 - case 224: stack.push(arg1); // 43
7.1024 - 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
7.1025 - case 228: arg8 = stack.pop() // 54 8
7.1026 - case 230: gt = 240; continue; // 167 0 10
7.1027 - case 233: stack.push(arg9); // 21 9
7.1028 - case 235: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
7.1029 - case 238: arg8 = stack.pop() // 54 8
7.1030 - case 240: stack.push(arg8); // 21 8
7.1031 - case 242: // 2
7.1032 - case 243: if (stack.pop() == stack.pop()) { gt = 253; continue; } // 159 0 10
7.1033 - case 246: stack.push(arg8); // 21 8
7.1034 - case 248: stack.push(65536); // 18 3
7.1035 - case 250: if (stack.pop() > stack.pop()) { gt = 405; continue; } // 161 0 155
7.1036 - case 253: stack.push(arg8); // 21 8
7.1037 - case 255: // 2
7.1038 - case 256: if (stack.pop() != stack.pop()) { gt = 286; continue; } // 160 0 30
7.1039 - case 259: stack.push(arg6); // 21 6
7.1040 - case 261: if (stack.pop() == 0) { gt = 276; continue; } // 153 0 15
7.1041 - case 264: stack.push(arg0); // 42
7.1042 - case 265: stack.push(arg11); // 21 11
7.1043 - case 267: stack.push(arg1); // 43
7.1044 - 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
7.1045 - case 271: arg7 = stack.pop() // 58 7
7.1046 - case 273: gt = 321; continue; // 167 0 48
7.1047 - case 276: stack.push(arg9); // 21 9
7.1048 - case 278: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCharArrayACI(v0)); } // 184 1 110
7.1049 - case 281: arg7 = stack.pop() // 58 7
7.1050 - case 283: gt = 321; continue; // 167 0 38
7.1051 - case 286: stack.push(arg10); // 21 10
7.1052 - case 288: stack.push(2); // 5
7.1053 - case 289: if (stack.pop() != stack.pop()) { gt = 314; continue; } // 160 0 25
7.1054 - case 292: stack.push(arg4); // 21 4
7.1055 - case 294: stack.push(arg8); // 21 8
7.1056 - case 296: stack.push(arg3); // 45
7.1057 - case 297: stack.push(arg11); // 21 11
7.1058 - case 299: stack.push(arg4); // 21 4
7.1059 - case 301: stack.push(stack.pop() + stack.pop()); // 96
7.1060 - 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
7.1061 - case 305: stack.push(arg10); // 21 10
7.1062 - case 307: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1063 - case 308: stack.push(stack.pop() + stack.pop()); // 96
7.1064 - case 309: arg4 = stack.pop() // 54 4
7.1065 - case 311: gt = 415; continue; // 167 0 104
7.1066 - case 314: stack.push(arg8); // 21 8
7.1067 - case 316: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
7.1068 - case 319: arg7 = stack.pop() // 58 7
7.1069 - case 321: stack.push(arg7); // 25 7
7.1070 - case 323: stack.push(stack.pop().length); // 190
7.1071 - case 324: arg12 = stack.pop() // 54 12
7.1072 - case 326: stack.push(arg12); // 21 12
7.1073 - case 328: stack.push(arg10); // 21 10
7.1074 - case 330: if (stack.pop() >= stack.pop()) { gt = 361; continue; } // 164 0 31
7.1075 - case 333: stack.push(arg3); // 45
7.1076 - case 334: stack.push(stack.pop().length); // 190
7.1077 - case 335: stack.push(arg12); // 21 12
7.1078 - case 337: stack.push(stack.pop() + stack.pop()); // 96
7.1079 - case 338: stack.push(arg10); // 21 10
7.1080 - case 340: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1081 - case 341: stack.push(new Array(stack.pop())); // 188 5
7.1082 - case 343: arg13 = stack.pop() // 58 13
7.1083 - case 345: stack.push(arg3); // 45
7.1084 - case 346: stack.push(0); // 3
7.1085 - case 347: stack.push(arg13); // 25 13
7.1086 - case 349: stack.push(0); // 3
7.1087 - case 350: stack.push(arg11); // 21 11
7.1088 - case 352: stack.push(arg4); // 21 4
7.1089 - case 354: stack.push(stack.pop() + stack.pop()); // 96
7.1090 - 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
7.1091 - case 358: stack.push(arg13); // 25 13
7.1092 - case 360: arg3 = stack.pop(); // 78
7.1093 - case 361: stack.push(0); // 3
7.1094 - case 362: arg13 = stack.pop() // 54 13
7.1095 - case 364: stack.push(arg13); // 21 13
7.1096 - case 366: stack.push(arg12); // 21 12
7.1097 - case 368: if (stack.pop() <= stack.pop()) { gt = 392; continue; } // 162 0 24
7.1098 - case 371: stack.push(arg3); // 45
7.1099 - case 372: stack.push(arg11); // 21 11
7.1100 - case 374: stack.push(arg4); // 21 4
7.1101 - case 376: stack.push(stack.pop() + stack.pop()); // 96
7.1102 - case 377: stack.push(arg13); // 21 13
7.1103 - case 379: stack.push(stack.pop() + stack.pop()); // 96
7.1104 - case 380: stack.push(arg7); // 25 7
7.1105 - case 382: stack.push(arg13); // 21 13
7.1106 - case 384: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1107 - case 385: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
7.1108 - case 386: arg13++; // 132 13 1
7.1109 - case 389: gt = 364; continue; // 167 255 231
7.1110 - case 392: stack.push(arg4); // 21 4
7.1111 - case 394: stack.push(arg12); // 21 12
7.1112 - case 396: stack.push(arg10); // 21 10
7.1113 - case 398: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1114 - case 399: stack.push(stack.pop() + stack.pop()); // 96
7.1115 - case 400: arg4 = stack.pop() // 54 4
7.1116 - case 402: gt = 415; continue; // 167 0 13
7.1117 - case 405: stack.push(arg3); // 45
7.1118 - case 406: stack.push(arg11); // 21 11
7.1119 - case 408: stack.push(arg4); // 21 4
7.1120 - case 410: stack.push(stack.pop() + stack.pop()); // 96
7.1121 - case 411: stack.push(arg8); // 21 8
7.1122 - case 413: // number conversion // 146
7.1123 - case 414: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
7.1124 - case 415: stack.push(arg11); // 21 11
7.1125 - case 417: stack.push(arg10); // 21 10
7.1126 - case 419: stack.push(stack.pop() + stack.pop()); // 96
7.1127 - case 420: arg11 = stack.pop() // 54 11
7.1128 - case 422: gt = 156; continue; // 167 254 246
7.1129 - case 425: stack.push(new java_lang_String); // 187 0 200
7.1130 - case 428: stack.push(stack[stack.length - 1]); // 89
7.1131 - case 429: stack.push(0); // 3
7.1132 - case 430: stack.push(arg0); // 42
7.1133 - case 431: stack.push(stack.pop().count); // 180 1 97
7.1134 - case 434: stack.push(arg4); // 21 4
7.1135 - case 436: stack.push(stack.pop() + stack.pop()); // 96
7.1136 - case 437: stack.push(arg3); // 45
7.1137 - 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
7.1138 - case 441: return stack.pop(); // 176
7.1139 - }
7.1140 -}
7.1141 -function java_lang_String_toUpperCaseLjava_lang_String(arg0) {
7.1142 - var arg1;
7.1143 -;
7.1144 - var stack = new Array(2);
7.1145 - var gt = 0;
7.1146 - for(;;) switch(gt) {
7.1147 - case 0: stack.push(arg0); // 42
7.1148 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
7.1149 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toUpperCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 159
7.1150 - case 7: return stack.pop(); // 176
7.1151 - }
7.1152 -}
7.1153 -function java_lang_String_trimLjava_lang_String(arg0) {
7.1154 - var arg1;
7.1155 - var arg2;
7.1156 - var arg3;
7.1157 - var arg4;
7.1158 - var arg5;
7.1159 -;
7.1160 - var stack = new Array(3);
7.1161 - var gt = 0;
7.1162 - for(;;) switch(gt) {
7.1163 - case 0: stack.push(arg0); // 42
7.1164 - case 1: stack.push(stack.pop().count); // 180 1 97
7.1165 - case 4: arg1 = stack.pop(); // 60
7.1166 - case 5: stack.push(0); // 3
7.1167 - case 6: arg2 = stack.pop(); // 61
7.1168 - case 7: stack.push(arg0); // 42
7.1169 - case 8: stack.push(stack.pop().offset); // 180 1 99
7.1170 - case 11: arg3 = stack.pop(); // 62
7.1171 - case 12: stack.push(arg0); // 42
7.1172 - case 13: stack.push(stack.pop().value); // 180 1 100
7.1173 - case 16: arg4 = stack.pop() // 58 4
7.1174 - case 18: stack.push(arg2); // 28
7.1175 - case 19: stack.push(arg1); // 27
7.1176 - case 20: if (stack.pop() <= stack.pop()) { gt = 40; continue; } // 162 0 20
7.1177 - case 23: stack.push(arg4); // 25 4
7.1178 - case 25: stack.push(arg3); // 29
7.1179 - case 26: stack.push(arg2); // 28
7.1180 - case 27: stack.push(stack.pop() + stack.pop()); // 96
7.1181 - case 28: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1182 - case 29: stack.push(32); // 16 32
7.1183 - case 31: if (stack.pop() < stack.pop()) { gt = 40; continue; } // 163 0 9
7.1184 - case 34: arg2++; // 132 2 1
7.1185 - case 37: gt = 18; continue; // 167 255 237
7.1186 - case 40: stack.push(arg2); // 28
7.1187 - case 41: stack.push(arg1); // 27
7.1188 - case 42: if (stack.pop() <= stack.pop()) { gt = 64; continue; } // 162 0 22
7.1189 - case 45: stack.push(arg4); // 25 4
7.1190 - case 47: stack.push(arg3); // 29
7.1191 - case 48: stack.push(arg1); // 27
7.1192 - case 49: stack.push(stack.pop() + stack.pop()); // 96
7.1193 - case 50: stack.push(1); // 4
7.1194 - case 51: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1195 - case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1196 - case 53: stack.push(32); // 16 32
7.1197 - case 55: if (stack.pop() < stack.pop()) { gt = 64; continue; } // 163 0 9
7.1198 - case 58: arg1 += 255; // 132 1 255
7.1199 - case 61: gt = 40; continue; // 167 255 235
7.1200 - case 64: stack.push(arg2); // 28
7.1201 - case 65: if (stack.pop() > 0) { gt = 76; continue; } // 157 0 11
7.1202 - case 68: stack.push(arg1); // 27
7.1203 - case 69: stack.push(arg0); // 42
7.1204 - case 70: stack.push(stack.pop().count); // 180 1 97
7.1205 - case 73: if (stack.pop() <= stack.pop()) { gt = 85; continue; } // 162 0 12
7.1206 - case 76: stack.push(arg0); // 42
7.1207 - case 77: stack.push(arg2); // 28
7.1208 - case 78: stack.push(arg1); // 27
7.1209 - 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
7.1210 - case 82: gt = 86; continue; // 167 0 4
7.1211 - case 85: stack.push(arg0); // 42
7.1212 - case 86: return stack.pop(); // 176
7.1213 - }
7.1214 -}
7.1215 -*/
7.1216 -
7.1217 -/*
7.1218 -function java_lang_String_formatLjava_lang_StringLjava_lang_StringLjava_lang_Object(arg0,arg1) {
7.1219 - var stack = new Array();
7.1220 - var gt = 0;
7.1221 - for(;;) switch(gt) {
7.1222 - case 0: stack.push(new java_util_Formatter); // 187 0 211
7.1223 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1224 - case 4: { java_util_Formatter_consV(stack.pop()); } // 183 1 174
7.1225 - case 7: stack.push(arg0); // 42
7.1226 - case 8: stack.push(arg1); // 43
7.1227 - 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
7.1228 - case 12: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
7.1229 - case 15: return stack.pop(); // 176
7.1230 - }
7.1231 -}
7.1232 -function java_lang_String_formatLjava_lang_StringLjava_util_LocaleLjava_lang_StringLjava_lang_Object(arg0,arg1,arg2) {
7.1233 - var stack = new Array();
7.1234 - var gt = 0;
7.1235 - for(;;) switch(gt) {
7.1236 - case 0: stack.push(new java_util_Formatter); // 187 0 211
7.1237 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1238 - case 4: stack.push(arg0); // 42
7.1239 - case 5: { var v0 = stack.pop(); java_util_Formatter_consVLjava_util_Locale(stack.pop(), v0); } // 183 1 176
7.1240 - case 8: stack.push(arg1); // 43
7.1241 - case 9: stack.push(arg2); // 44
7.1242 - 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
7.1243 - case 13: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
7.1244 - case 16: return stack.pop(); // 176
7.1245 - }
7.1246 -}
7.1247 -function java_lang_String_valueOfLjava_lang_StringLjava_lang_Object(arg0) {
7.1248 - var stack = new Array();
7.1249 - var gt = 0;
7.1250 - for(;;) switch(gt) {
7.1251 - case 0: stack.push(arg0); // 42
7.1252 - case 1: if (stack.pop()) { gt = 9; continue; } // 199 0 8
7.1253 - case 4: stack.push("null"); // 18 10
7.1254 - case 6: gt = 13; continue; // 167 0 7
7.1255 - case 9: stack.push(arg0); // 42
7.1256 - case 10: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
7.1257 - case 13: return stack.pop(); // 176
7.1258 - }
7.1259 -}
7.1260 -function java_lang_String_valueOfLjava_lang_StringAC(arg0) {
7.1261 - var stack = new Array();
7.1262 - var gt = 0;
7.1263 - for(;;) switch(gt) {
7.1264 - case 0: stack.push(new java_lang_String); // 187 0 200
7.1265 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1266 - case 4: stack.push(arg0); // 42
7.1267 - case 5: { var v0 = stack.pop(); java_lang_String_consVAC(stack.pop(), v0); } // 183 1 142
7.1268 - case 8: return stack.pop(); // 176
7.1269 - }
7.1270 -}
7.1271 -function java_lang_String_valueOfLjava_lang_StringACII(arg0,arg1,arg2) {
7.1272 - var stack = new Array();
7.1273 - var gt = 0;
7.1274 - for(;;) switch(gt) {
7.1275 - case 0: stack.push(new java_lang_String); // 187 0 200
7.1276 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1277 - case 4: stack.push(arg0); // 42
7.1278 - case 5: stack.push(arg1); // 27
7.1279 - case 6: stack.push(arg2); // 28
7.1280 - 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
7.1281 - case 10: return stack.pop(); // 176
7.1282 - }
7.1283 -}
7.1284 -function java_lang_String_copyValueOfLjava_lang_StringACII(arg0,arg1,arg2) {
7.1285 - var stack = new Array();
7.1286 - var gt = 0;
7.1287 - for(;;) switch(gt) {
7.1288 - case 0: stack.push(new java_lang_String); // 187 0 200
7.1289 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1290 - case 4: stack.push(arg0); // 42
7.1291 - case 5: stack.push(arg1); // 27
7.1292 - case 6: stack.push(arg2); // 28
7.1293 - 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
7.1294 - case 10: return stack.pop(); // 176
7.1295 - }
7.1296 -}
7.1297 -function java_lang_String_copyValueOfLjava_lang_StringAC(arg0) {
7.1298 - var stack = new Array();
7.1299 - var gt = 0;
7.1300 - for(;;) switch(gt) {
7.1301 - case 0: stack.push(arg0); // 42
7.1302 - case 1: stack.push(0); // 3
7.1303 - case 2: stack.push(arg0); // 42
7.1304 - case 3: stack.push(stack.pop().length); // 190
7.1305 - 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
7.1306 - case 7: return stack.pop(); // 176
7.1307 - }
7.1308 -}
7.1309 -function java_lang_String_valueOfLjava_lang_StringZ(arg0) {
7.1310 - var stack = new Array();
7.1311 - var gt = 0;
7.1312 - for(;;) switch(gt) {
7.1313 - case 0: stack.push(arg0); // 26
7.1314 - case 1: if (stack.pop() == 0) { gt = 9; continue; } // 153 0 8
7.1315 - case 4: stack.push("true"); // 18 12
7.1316 - case 6: gt = 11; continue; // 167 0 5
7.1317 - case 9: stack.push("false"); // 18 8
7.1318 - case 11: return stack.pop(); // 176
7.1319 - }
7.1320 -}
7.1321 -function java_lang_String_valueOfLjava_lang_StringC(arg0) {
7.1322 - var arg1;
7.1323 - var stack = new Array();
7.1324 - var gt = 0;
7.1325 - for(;;) switch(gt) {
7.1326 - case 0: stack.push(1); // 4
7.1327 - case 1: stack.push(new Array(stack.pop())); // 188 5
7.1328 - case 3: stack.push(stack[stack.length - 1]); // 89
7.1329 - case 4: stack.push(0); // 3
7.1330 - case 5: stack.push(arg0); // 26
7.1331 - case 6: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
7.1332 - case 7: arg1 = stack.pop(); // 76
7.1333 - case 8: stack.push(new java_lang_String); // 187 0 200
7.1334 - case 11: stack.push(stack[stack.length - 1]); // 89
7.1335 - case 12: stack.push(0); // 3
7.1336 - case 13: stack.push(1); // 4
7.1337 - case 14: stack.push(arg1); // 43
7.1338 - 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
7.1339 - case 18: return stack.pop(); // 176
7.1340 - }
7.1341 -}
7.1342 -function java_lang_String_valueOfLjava_lang_StringJ(arg0) {
7.1343 - var arg1;
7.1344 - var stack = new Array();
7.1345 - var gt = 0;
7.1346 - for(;;) switch(gt) {
7.1347 - case 0: stack.push(arg0); // 30
7.1348 - case 1: stack.push(10); // 16 10
7.1349 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Long_toStringLjava_lang_StringJI(v0, v1)); } // 184 1 126
7.1350 - case 6: return stack.pop(); // 176
7.1351 - }
7.1352 -}
7.1353 -function java_lang_String_valueOfLjava_lang_StringF(arg0) {
7.1354 - var stack = new Array();
7.1355 - var gt = 0;
7.1356 - for(;;) switch(gt) {
7.1357 - case 0: stack.push(arg0); // 34
7.1358 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Float_toStringLjava_lang_StringF(v0)); } // 184 1 122
7.1359 - case 4: return stack.pop(); // 176
7.1360 - }
7.1361 -}
7.1362 -function java_lang_String_valueOfLjava_lang_StringD(arg0) {
7.1363 - var arg1;
7.1364 - var stack = new Array();
7.1365 - var gt = 0;
7.1366 - for(;;) switch(gt) {
7.1367 - case 0: stack.push(arg0); // 38
7.1368 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Double_toStringLjava_lang_StringD(v0)); } // 184 1 121
7.1369 - case 4: return stack.pop(); // 176
7.1370 - }
7.1371 -}
7.1372 -function java_lang_String_internLjava_lang_String(arg0) {
7.1373 - // no code found for null
7.1374 -}
7.1375 -function java_lang_String_compareToILjava_lang_Object(arg0,arg1) {
7.1376 - var arg2;
7.1377 -;
7.1378 - var stack = new Array(2);
7.1379 - var gt = 0;
7.1380 - for(;;) switch(gt) {
7.1381 - case 0: stack.push(arg0); // 42
7.1382 - case 1: stack.push(arg1); // 43
7.1383 - case 2: if(stack[stack.length - 1].$instOf_java_lang_String != 1) throw {}; // 192 0 200
7.1384 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareToILjava_lang_String(self, v0)); } // 182 1 148
7.1385 - case 8: return stack.pop(); // 172
7.1386 - }
7.1387 -}
7.1388 -function java_lang_String_classV() {
7.1389 - var stack = new Array();
7.1390 - var gt = 0;
7.1391 - for(;;) switch(gt) {
7.1392 - case 0: stack.push(0); // 3
7.1393 - case 1: stack.push(new Array(stack.pop())); // 189 0 183
7.1394 - case 4: java_lang_String_serialPersistentFields = stack.pop(); // 179 1 101
7.1395 - case 7: stack.push(new java_lang_String$CaseInsensitiveComparator); // 187 0 202
7.1396 - case 10: stack.push(stack[stack.length - 1]); // 89
7.1397 - case 11: // 1
7.1398 - case 12: { var v0 = stack.pop(); java_lang_String$CaseInsensitiveComparator_consVLjava_lang_String$1(stack.pop(), v0); } // 183 1 160
7.1399 - case 15: java_lang_String_CASE_INSENSITIVE_ORDER = stack.pop(); // 179 1 102
7.1400 - case 18: return; // 177
7.1401 - }
7.1402 -}
7.1403 -*/
7.1404 -
7.1405 -/*
7.1406 -function java_lang_String_contentEqualsZLjava_lang_StringBuffer(arg0,arg1) {
7.1407 - var arg2;
7.1408 - var arg3;
7.1409 - var arg4;
7.1410 -;
7.1411 - var stack = new Array(2);
7.1412 - var gt = 0;
7.1413 - for(;;) switch(gt) {
7.1414 - case 0: stack.push(arg1); // 43
7.1415 - case 1: stack.push(stack[stack.length - 1]); // 89
7.1416 - case 2: arg2 = stack.pop(); // 77
7.1417 - case 3: // 194
7.1418 - case 4: stack.push(arg0); // 42
7.1419 - case 5: stack.push(arg1); // 43
7.1420 - case 6: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.contentEqualsZLjava_lang_CharSequence(self, v0)); } // 182 1 146
7.1421 - case 9: stack.push(arg2); // 44
7.1422 - case 10: // 195
7.1423 - case 11: return stack.pop(); // 172
7.1424 - case 12: arg3 = stack.pop(); // 78
7.1425 - case 13: stack.push(arg2); // 44
7.1426 - case 14: // 195
7.1427 - case 15: stack.push(arg3); // 45
7.1428 - case 16: // 191
7.1429 - }
7.1430 -}
7.1431 -function java_lang_String_contentEqualsZLjava_lang_CharSequence(arg0,arg1) {
7.1432 - var arg2;
7.1433 - var arg3;
7.1434 - var arg4;
7.1435 - var arg5;
7.1436 - var arg6;
7.1437 - var arg7;
7.1438 -;
7.1439 - var stack = new Array(3);
7.1440 - var gt = 0;
7.1441 - for(;;) switch(gt) {
7.1442 - case 0: stack.push(arg0); // 42
7.1443 - case 1: stack.push(stack.pop().count); // 180 1 97
7.1444 - case 4: stack.push(arg1); // 43
7.1445 - case 5: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 185 1 188
7.1446 - case 8: // 1
7.1447 - case 9: // 0
7.1448 - case 10: if (stack.pop() == stack.pop()) { gt = 15; continue; } // 159 0 5
7.1449 - case 13: stack.push(0); // 3
7.1450 - case 14: return stack.pop(); // 172
7.1451 - case 15: stack.push(arg1); // 43
7.1452 - case 16: stack.push(stack.pop().$instOf_java_lang_AbstractStringBuilder ? 1 : 0); // 193 0 186
7.1453 - case 19: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 58
7.1454 - case 22: stack.push(arg0); // 42
7.1455 - case 23: stack.push(stack.pop().value); // 180 1 100
7.1456 - case 26: arg2 = stack.pop(); // 77
7.1457 - case 27: stack.push(arg1); // 43
7.1458 - case 28: if(stack[stack.length - 1].$instOf_java_lang_AbstractStringBuilder != 1) throw {}; // 192 0 186
7.1459 - case 31: { var self = stack.pop(); stack.push(self.getValueAC(self)); } // 182 1 103
7.1460 - case 34: arg3 = stack.pop(); // 78
7.1461 - case 35: stack.push(arg0); // 42
7.1462 - case 36: stack.push(stack.pop().offset); // 180 1 99
7.1463 - case 39: arg4 = stack.pop() // 54 4
7.1464 - case 41: stack.push(0); // 3
7.1465 - case 42: arg5 = stack.pop() // 54 5
7.1466 - case 44: stack.push(arg0); // 42
7.1467 - case 45: stack.push(stack.pop().count); // 180 1 97
7.1468 - case 48: arg6 = stack.pop() // 54 6
7.1469 - case 50: stack.push(arg6); // 21 6
7.1470 - case 52: arg6 += 255; // 132 6 255
7.1471 - case 55: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 22
7.1472 - case 58: stack.push(arg2); // 44
7.1473 - case 59: stack.push(arg4); // 21 4
7.1474 - case 61: arg4++; // 132 4 1
7.1475 - case 64: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1476 - case 65: stack.push(arg3); // 45
7.1477 - case 66: stack.push(arg5); // 21 5
7.1478 - case 68: arg5++; // 132 5 1
7.1479 - case 71: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1480 - case 72: if (stack.pop() == stack.pop()) { gt = 50; continue; } // 159 255 234
7.1481 - case 75: stack.push(0); // 3
7.1482 - case 76: return stack.pop(); // 172
7.1483 - case 77: stack.push(arg1); // 43
7.1484 - case 78: stack.push(arg0); // 42
7.1485 - case 79: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.equalsZLjava_lang_Object(self, v0)); } // 182 1 131
7.1486 - case 82: if (stack.pop() == 0) { gt = 87; continue; } // 153 0 5
7.1487 - case 85: stack.push(1); // 4
7.1488 - case 86: return stack.pop(); // 172
7.1489 - case 87: stack.push(arg0); // 42
7.1490 - case 88: stack.push(stack.pop().value); // 180 1 100
7.1491 - case 91: arg2 = stack.pop(); // 77
7.1492 - case 92: stack.push(arg0); // 42
7.1493 - case 93: stack.push(stack.pop().offset); // 180 1 99
7.1494 - case 96: arg3 = stack.pop(); // 62
7.1495 - case 97: stack.push(0); // 3
7.1496 - case 98: arg4 = stack.pop() // 54 4
7.1497 - case 100: stack.push(arg0); // 42
7.1498 - case 101: stack.push(stack.pop().count); // 180 1 97
7.1499 - case 104: arg5 = stack.pop() // 54 5
7.1500 - case 106: stack.push(arg5); // 21 5
7.1501 - case 108: arg5 += 255; // 132 5 255
7.1502 - case 111: if (stack.pop() == 0) { gt = 136; continue; } // 153 0 25
7.1503 - case 114: stack.push(arg2); // 44
7.1504 - case 115: stack.push(arg3); // 29
7.1505 - case 116: arg3++; // 132 3 1
7.1506 - case 119: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1507 - case 120: stack.push(arg1); // 43
7.1508 - case 121: stack.push(arg4); // 21 4
7.1509 - case 123: arg4++; // 132 4 1
7.1510 - case 126: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.charAtCI(self, v0)); } // 185 1 189
7.1511 - case 129: // 2
7.1512 - case 130: // 0
7.1513 - case 131: if (stack.pop() == stack.pop()) { gt = 106; continue; } // 159 255 231
7.1514 - case 134: stack.push(0); // 3
7.1515 - case 135: return stack.pop(); // 172
7.1516 - case 136: stack.push(1); // 4
7.1517 - case 137: return stack.pop(); // 172
7.1518 - }
7.1519 -}
7.1520 -function java_lang_String_equalsIgnoreCaseZLjava_lang_String(arg0,arg1) {
7.1521 - var arg2;
7.1522 -;
7.1523 - var stack = new Array(6);
7.1524 - var gt = 0;
7.1525 - for(;;) switch(gt) {
7.1526 - case 0: stack.push(arg0); // 42
7.1527 - case 1: stack.push(arg1); // 43
7.1528 - case 2: // 166
7.1529 - case 3: // 0
7.1530 - case 4: stack.push(4); // 7
7.1531 - case 5: stack.push(1); // 4
7.1532 - case 6: gt = 44; continue; // 167 0 38
7.1533 - case 9: stack.push(arg1); // 43
7.1534 - case 10: if (!stack.pop()) { gt = 43; continue; } // 198 0 33
7.1535 - case 13: stack.push(arg1); // 43
7.1536 - case 14: stack.push(stack.pop().count); // 180 1 97
7.1537 - case 17: stack.push(arg0); // 42
7.1538 - case 18: stack.push(stack.pop().count); // 180 1 97
7.1539 - case 21: if (stack.pop() != stack.pop()) { gt = 43; continue; } // 160 0 22
7.1540 - case 24: stack.push(arg0); // 42
7.1541 - case 25: stack.push(1); // 4
7.1542 - case 26: stack.push(0); // 3
7.1543 - case 27: stack.push(arg1); // 43
7.1544 - case 28: stack.push(0); // 3
7.1545 - case 29: stack.push(arg0); // 42
7.1546 - case 30: stack.push(stack.pop().count); // 180 1 97
7.1547 - 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
7.1548 - case 36: if (stack.pop() == 0) { gt = 43; continue; } // 153 0 7
7.1549 - case 39: stack.push(1); // 4
7.1550 - case 40: gt = 44; continue; // 167 0 4
7.1551 - case 43: stack.push(0); // 3
7.1552 - case 44: return stack.pop(); // 172
7.1553 - }
7.1554 -}
7.1555 -function java_lang_String_compareToILjava_lang_String(arg0,arg1) {
7.1556 - var arg2;
7.1557 - var arg3;
7.1558 - var arg4;
7.1559 - var arg5;
7.1560 - var arg6;
7.1561 - var arg7;
7.1562 - var arg8;
7.1563 - var arg9;
7.1564 - var arg10;
7.1565 - var arg11;
7.1566 - var arg12;
7.1567 - var arg13;
7.1568 -;
7.1569 - var stack = new Array(2);
7.1570 - var gt = 0;
7.1571 - for(;;) switch(gt) {
7.1572 - case 0: stack.push(arg0); // 42
7.1573 - case 1: stack.push(stack.pop().count); // 180 1 97
7.1574 - case 4: arg2 = stack.pop(); // 61
7.1575 - case 5: stack.push(arg1); // 43
7.1576 - case 6: stack.push(stack.pop().count); // 180 1 97
7.1577 - case 9: arg3 = stack.pop(); // 62
7.1578 - case 10: stack.push(arg2); // 28
7.1579 - case 11: stack.push(arg3); // 29
7.1580 - case 12: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Math_minIII(v0, v1)); } // 184 1 127
7.1581 - case 15: arg4 = stack.pop() // 54 4
7.1582 - case 17: stack.push(arg0); // 42
7.1583 - case 18: stack.push(stack.pop().value); // 180 1 100
7.1584 - case 21: arg5 = stack.pop() // 58 5
7.1585 - case 23: stack.push(arg1); // 43
7.1586 - case 24: stack.push(stack.pop().value); // 180 1 100
7.1587 - case 27: arg6 = stack.pop() // 58 6
7.1588 - case 29: stack.push(arg0); // 42
7.1589 - case 30: stack.push(stack.pop().offset); // 180 1 99
7.1590 - case 33: arg7 = stack.pop() // 54 7
7.1591 - case 35: stack.push(arg1); // 43
7.1592 - case 36: stack.push(stack.pop().offset); // 180 1 99
7.1593 - case 39: arg8 = stack.pop() // 54 8
7.1594 - case 41: stack.push(arg7); // 21 7
7.1595 - case 43: stack.push(arg8); // 21 8
7.1596 - case 45: if (stack.pop() != stack.pop()) { gt = 102; continue; } // 160 0 57
7.1597 - case 48: stack.push(arg7); // 21 7
7.1598 - case 50: arg9 = stack.pop() // 54 9
7.1599 - case 52: stack.push(arg4); // 21 4
7.1600 - case 54: stack.push(arg7); // 21 7
7.1601 - case 56: stack.push(stack.pop() + stack.pop()); // 96
7.1602 - case 57: arg10 = stack.pop() // 54 10
7.1603 - case 59: stack.push(arg9); // 21 9
7.1604 - case 61: stack.push(arg10); // 21 10
7.1605 - case 63: if (stack.pop() <= stack.pop()) { gt = 99; continue; } // 162 0 36
7.1606 - case 66: stack.push(arg5); // 25 5
7.1607 - case 68: stack.push(arg9); // 21 9
7.1608 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1609 - case 71: arg11 = stack.pop() // 54 11
7.1610 - case 73: stack.push(arg6); // 25 6
7.1611 - case 75: stack.push(arg9); // 21 9
7.1612 - case 77: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1613 - case 78: arg12 = stack.pop() // 54 12
7.1614 - case 80: stack.push(arg11); // 21 11
7.1615 - case 82: stack.push(arg12); // 21 12
7.1616 - case 84: if (stack.pop() == stack.pop()) { gt = 93; continue; } // 159 0 9
7.1617 - case 87: stack.push(arg11); // 21 11
7.1618 - case 89: stack.push(arg12); // 21 12
7.1619 - case 91: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1620 - case 92: return stack.pop(); // 172
7.1621 - case 93: arg9++; // 132 9 1
7.1622 - case 96: gt = 59; continue; // 167 255 219
7.1623 - case 99: gt = 146; continue; // 167 0 47
7.1624 - case 102: stack.push(arg4); // 21 4
7.1625 - case 104: arg4 += 255; // 132 4 255
7.1626 - case 107: if (stack.pop() == 0) { gt = 146; continue; } // 153 0 39
7.1627 - case 110: stack.push(arg5); // 25 5
7.1628 - case 112: stack.push(arg7); // 21 7
7.1629 - case 114: arg7++; // 132 7 1
7.1630 - case 117: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1631 - case 118: arg9 = stack.pop() // 54 9
7.1632 - case 120: stack.push(arg6); // 25 6
7.1633 - case 122: stack.push(arg8); // 21 8
7.1634 - case 124: arg8++; // 132 8 1
7.1635 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1636 - case 128: arg10 = stack.pop() // 54 10
7.1637 - case 130: stack.push(arg9); // 21 9
7.1638 - case 132: stack.push(arg10); // 21 10
7.1639 - case 134: if (stack.pop() == stack.pop()) { gt = 143; continue; } // 159 0 9
7.1640 - case 137: stack.push(arg9); // 21 9
7.1641 - case 139: stack.push(arg10); // 21 10
7.1642 - case 141: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1643 - case 142: return stack.pop(); // 172
7.1644 - case 143: gt = 102; continue; // 167 255 215
7.1645 - case 146: stack.push(arg2); // 28
7.1646 - case 147: stack.push(arg3); // 29
7.1647 - case 148: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1648 - case 149: return stack.pop(); // 172
7.1649 - }
7.1650 -}
7.1651 -function java_lang_String_compareToIgnoreCaseILjava_lang_String(arg0,arg1) {
7.1652 - var arg2;
7.1653 -;
7.1654 - var stack = new Array(3);
7.1655 - var gt = 0;
7.1656 - for(;;) switch(gt) {
7.1657 - case 0: stack.push(java_lang_String_CASE_INSENSITIVE_ORDER); // 178 1 102
7.1658 - case 3: stack.push(arg0); // 42
7.1659 - case 4: stack.push(arg1); // 43
7.1660 - 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
7.1661 - case 8: stack.push(0); // 3
7.1662 - case 9: // 0
7.1663 - case 10: return stack.pop(); // 172
7.1664 - }
7.1665 -}
7.1666 -function java_lang_String_regionMatchesZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4) {
7.1667 - var arg5;
7.1668 - var arg6;
7.1669 - var arg7;
7.1670 - var arg8;
7.1671 - var arg9;
7.1672 -;
7.1673 - var stack = new Array(6);
7.1674 - var gt = 0;
7.1675 - for(;;) switch(gt) {
7.1676 - case 0: stack.push(arg0); // 42
7.1677 - case 1: stack.push(stack.pop().value); // 180 1 100
7.1678 - case 4: arg5 = stack.pop() // 58 5
7.1679 - case 6: stack.push(arg0); // 42
7.1680 - case 7: stack.push(stack.pop().offset); // 180 1 99
7.1681 - case 10: stack.push(arg1); // 27
7.1682 - case 11: stack.push(stack.pop() + stack.pop()); // 96
7.1683 - case 12: arg6 = stack.pop() // 54 6
7.1684 - case 14: stack.push(arg2); // 44
7.1685 - case 15: stack.push(stack.pop().value); // 180 1 100
7.1686 - case 18: arg7 = stack.pop() // 58 7
7.1687 - case 20: stack.push(arg2); // 44
7.1688 - case 21: stack.push(stack.pop().offset); // 180 1 99
7.1689 - case 24: stack.push(arg3); // 29
7.1690 - case 25: stack.push(stack.pop() + stack.pop()); // 96
7.1691 - case 26: arg8 = stack.pop() // 54 8
7.1692 - case 28: stack.push(arg3); // 29
7.1693 - case 29: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 37
7.1694 - case 32: stack.push(arg1); // 27
7.1695 - case 33: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 33
7.1696 - case 36: stack.push(arg1); // 27
7.1697 - case 37: // number conversion // 133
7.1698 - case 38: stack.push(arg0); // 42
7.1699 - case 39: stack.push(stack.pop().count); // 180 1 97
7.1700 - case 42: // number conversion // 133
7.1701 - case 43: stack.push(arg4); // 21 4
7.1702 - case 45: // number conversion // 133
7.1703 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
7.1704 - case 47: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
7.1705 - case 48: if (stack.pop() > 0) { gt = 66; continue; } // 157 0 18
7.1706 - case 51: stack.push(arg3); // 29
7.1707 - case 52: // number conversion // 133
7.1708 - case 53: stack.push(arg2); // 44
7.1709 - case 54: stack.push(stack.pop().count); // 180 1 97
7.1710 - case 57: // number conversion // 133
7.1711 - case 58: stack.push(arg4); // 21 4
7.1712 - case 60: // number conversion // 133
7.1713 - case 61: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
7.1714 - case 62: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
7.1715 - case 63: if (stack.pop() <= 0) { gt = 68; continue; } // 158 0 5
7.1716 - case 66: stack.push(0); // 3
7.1717 - case 67: return stack.pop(); // 172
7.1718 - case 68: stack.push(arg4); // 21 4
7.1719 - case 70: arg4 += 255; // 132 4 255
7.1720 - case 73: if (stack.pop() <= 0) { gt = 97; continue; } // 158 0 24
7.1721 - case 76: stack.push(arg5); // 25 5
7.1722 - case 78: stack.push(arg6); // 21 6
7.1723 - case 80: arg6++; // 132 6 1
7.1724 - case 83: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1725 - case 84: stack.push(arg7); // 25 7
7.1726 - case 86: stack.push(arg8); // 21 8
7.1727 - case 88: arg8++; // 132 8 1
7.1728 - case 91: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1729 - case 92: if (stack.pop() == stack.pop()) { gt = 68; continue; } // 159 255 232
7.1730 - case 95: stack.push(0); // 3
7.1731 - case 96: return stack.pop(); // 172
7.1732 - case 97: stack.push(1); // 4
7.1733 - case 98: return stack.pop(); // 172
7.1734 - }
7.1735 -}
7.1736 -function java_lang_String_regionMatchesZZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4,arg5) {
7.1737 - var arg6;
7.1738 - var arg7;
7.1739 - var arg8;
7.1740 - var arg9;
7.1741 - var arg10;
7.1742 - var arg11;
7.1743 - var arg12;
7.1744 - var arg13;
7.1745 - var arg14;
7.1746 -;
7.1747 - var stack = new Array(6);
7.1748 - var gt = 0;
7.1749 - for(;;) switch(gt) {
7.1750 - case 0: stack.push(arg0); // 42
7.1751 - case 1: stack.push(stack.pop().value); // 180 1 100
7.1752 - case 4: arg6 = stack.pop() // 58 6
7.1753 - case 6: stack.push(arg0); // 42
7.1754 - case 7: stack.push(stack.pop().offset); // 180 1 99
7.1755 - case 10: stack.push(arg2); // 28
7.1756 - case 11: stack.push(stack.pop() + stack.pop()); // 96
7.1757 - case 12: arg7 = stack.pop() // 54 7
7.1758 - case 14: stack.push(arg3); // 45
7.1759 - case 15: stack.push(stack.pop().value); // 180 1 100
7.1760 - case 18: arg8 = stack.pop() // 58 8
7.1761 - case 20: stack.push(arg3); // 45
7.1762 - case 21: stack.push(stack.pop().offset); // 180 1 99
7.1763 - case 24: stack.push(arg4); // 21 4
7.1764 - case 26: stack.push(stack.pop() + stack.pop()); // 96
7.1765 - case 27: arg9 = stack.pop() // 54 9
7.1766 - case 29: stack.push(arg4); // 21 4
7.1767 - case 31: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 38
7.1768 - case 34: stack.push(arg2); // 28
7.1769 - case 35: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 34
7.1770 - case 38: stack.push(arg2); // 28
7.1771 - case 39: // number conversion // 133
7.1772 - case 40: stack.push(arg0); // 42
7.1773 - case 41: stack.push(stack.pop().count); // 180 1 97
7.1774 - case 44: // number conversion // 133
7.1775 - case 45: stack.push(arg5); // 21 5
7.1776 - case 47: // number conversion // 133
7.1777 - case 48: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
7.1778 - case 49: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
7.1779 - case 50: if (stack.pop() > 0) { gt = 69; continue; } // 157 0 19
7.1780 - case 53: stack.push(arg4); // 21 4
7.1781 - case 55: // number conversion // 133
7.1782 - case 56: stack.push(arg3); // 45
7.1783 - case 57: stack.push(stack.pop().count); // 180 1 97
7.1784 - case 60: // number conversion // 133
7.1785 - case 61: stack.push(arg5); // 21 5
7.1786 - case 63: // number conversion // 133
7.1787 - case 64: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101
7.1788 - case 65: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148
7.1789 - case 66: if (stack.pop() <= 0) { gt = 71; continue; } // 158 0 5
7.1790 - case 69: stack.push(0); // 3
7.1791 - case 70: return stack.pop(); // 172
7.1792 - case 71: stack.push(arg5); // 21 5
7.1793 - case 73: arg5 += 255; // 132 5 255
7.1794 - case 76: if (stack.pop() <= 0) { gt = 155; continue; } // 158 0 79
7.1795 - case 79: stack.push(arg6); // 25 6
7.1796 - case 81: stack.push(arg7); // 21 7
7.1797 - case 83: arg7++; // 132 7 1
7.1798 - case 86: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1799 - case 87: arg10 = stack.pop() // 54 10
7.1800 - case 89: stack.push(arg8); // 25 8
7.1801 - case 91: stack.push(arg9); // 21 9
7.1802 - case 93: arg9++; // 132 9 1
7.1803 - case 96: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1804 - case 97: arg11 = stack.pop() // 54 11
7.1805 - case 99: stack.push(arg10); // 21 10
7.1806 - case 101: stack.push(arg11); // 21 11
7.1807 - case 103: if (stack.pop() != stack.pop()) { gt = 109; continue; } // 160 0 6
7.1808 - case 106: gt = 71; continue; // 167 255 221
7.1809 - case 109: stack.push(arg1); // 27
7.1810 - case 110: if (stack.pop() == 0) { gt = 153; continue; } // 153 0 43
7.1811 - case 113: stack.push(arg10); // 21 10
7.1812 - case 115: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105
7.1813 - case 118: arg12 = stack.pop() // 54 12
7.1814 - case 120: stack.push(arg11); // 21 11
7.1815 - case 122: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105
7.1816 - case 125: arg13 = stack.pop() // 54 13
7.1817 - case 127: stack.push(arg12); // 21 12
7.1818 - case 129: stack.push(arg13); // 21 13
7.1819 - case 131: if (stack.pop() != stack.pop()) { gt = 137; continue; } // 160 0 6
7.1820 - case 134: gt = 71; continue; // 167 255 193
7.1821 - case 137: stack.push(arg12); // 21 12
7.1822 - case 139: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
7.1823 - case 142: stack.push(arg13); // 21 13
7.1824 - case 144: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
7.1825 - case 147: if (stack.pop() != stack.pop()) { gt = 153; continue; } // 160 0 6
7.1826 - case 150: gt = 71; continue; // 167 255 177
7.1827 - case 153: stack.push(0); // 3
7.1828 - case 154: return stack.pop(); // 172
7.1829 - case 155: stack.push(1); // 4
7.1830 - case 156: return stack.pop(); // 172
7.1831 - }
7.1832 -}
7.1833 -function java_lang_String_startsWithZLjava_lang_StringI(arg0,arg1,arg2) {
7.1834 - var arg3;
7.1835 - var arg4;
7.1836 - var arg5;
7.1837 - var arg6;
7.1838 - var arg7;
7.1839 - var arg8;
7.1840 -;
7.1841 - var stack = new Array(3);
7.1842 - var gt = 0;
7.1843 - for(;;) switch(gt) {
7.1844 - case 0: stack.push(arg0); // 42
7.1845 - case 1: stack.push(stack.pop().value); // 180 1 100
7.1846 - case 4: arg3 = stack.pop(); // 78
7.1847 - case 5: stack.push(arg0); // 42
7.1848 - case 6: stack.push(stack.pop().offset); // 180 1 99
7.1849 - case 9: stack.push(arg2); // 28
7.1850 - case 10: stack.push(stack.pop() + stack.pop()); // 96
7.1851 - case 11: arg4 = stack.pop() // 54 4
7.1852 - case 13: stack.push(arg1); // 43
7.1853 - case 14: stack.push(stack.pop().value); // 180 1 100
7.1854 - case 17: arg5 = stack.pop() // 58 5
7.1855 - case 19: stack.push(arg1); // 43
7.1856 - case 20: stack.push(stack.pop().offset); // 180 1 99
7.1857 - case 23: arg6 = stack.pop() // 54 6
7.1858 - case 25: stack.push(arg1); // 43
7.1859 - case 26: stack.push(stack.pop().count); // 180 1 97
7.1860 - case 29: arg7 = stack.pop() // 54 7
7.1861 - case 31: stack.push(arg2); // 28
7.1862 - case 32: if (stack.pop() < 0) { gt = 46; continue; } // 155 0 14
7.1863 - case 35: stack.push(arg2); // 28
7.1864 - case 36: stack.push(arg0); // 42
7.1865 - case 37: stack.push(stack.pop().count); // 180 1 97
7.1866 - case 40: stack.push(arg7); // 21 7
7.1867 - case 42: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1868 - case 43: if (stack.pop() >= stack.pop()) { gt = 48; continue; } // 164 0 5
7.1869 - case 46: stack.push(0); // 3
7.1870 - case 47: return stack.pop(); // 172
7.1871 - case 48: arg7 += 255; // 132 7 255
7.1872 - case 51: stack.push(arg7); // 21 7
7.1873 - case 53: if (stack.pop() < 0) { gt = 76; continue; } // 155 0 23
7.1874 - case 56: stack.push(arg3); // 45
7.1875 - case 57: stack.push(arg4); // 21 4
7.1876 - case 59: arg4++; // 132 4 1
7.1877 - case 62: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1878 - case 63: stack.push(arg5); // 25 5
7.1879 - case 65: stack.push(arg6); // 21 6
7.1880 - case 67: arg6++; // 132 6 1
7.1881 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1882 - case 71: if (stack.pop() == stack.pop()) { gt = 48; continue; } // 159 255 233
7.1883 - case 74: stack.push(0); // 3
7.1884 - case 75: return stack.pop(); // 172
7.1885 - case 76: stack.push(1); // 4
7.1886 - case 77: return stack.pop(); // 172
7.1887 - }
7.1888 -}
7.1889 -function java_lang_String_startsWithZLjava_lang_String(arg0,arg1) {
7.1890 - var arg2;
7.1891 -;
7.1892 - var stack = new Array(3);
7.1893 - var gt = 0;
7.1894 - for(;;) switch(gt) {
7.1895 - case 0: stack.push(arg0); // 42
7.1896 - case 1: stack.push(arg1); // 43
7.1897 - case 2: stack.push(0); // 3
7.1898 - 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
7.1899 - case 6: return stack.pop(); // 172
7.1900 - }
7.1901 -}
7.1902 -function java_lang_String_endsWithZLjava_lang_String(arg0,arg1) {
7.1903 - var arg2;
7.1904 -;
7.1905 - var stack = new Array(4);
7.1906 - var gt = 0;
7.1907 - for(;;) switch(gt) {
7.1908 - case 0: stack.push(arg0); // 42
7.1909 - case 1: stack.push(arg1); // 43
7.1910 - case 2: stack.push(arg0); // 42
7.1911 - case 3: stack.push(stack.pop().count); // 180 1 97
7.1912 - case 6: stack.push(arg1); // 43
7.1913 - case 7: stack.push(stack.pop().count); // 180 1 97
7.1914 - case 10: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1915 - 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
7.1916 - case 14: return stack.pop(); // 172
7.1917 - }
7.1918 -}
7.1919 -function java_lang_String_indexOfILjava_lang_String(arg0,arg1) {
7.1920 - var arg2;
7.1921 -;
7.1922 - var stack = new Array(3);
7.1923 - var gt = 0;
7.1924 - for(;;) switch(gt) {
7.1925 - case 0: stack.push(arg0); // 42
7.1926 - case 1: stack.push(arg1); // 43
7.1927 - case 2: stack.push(0); // 3
7.1928 - 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
7.1929 - case 6: return stack.pop(); // 172
7.1930 - }
7.1931 -}
7.1932 -function java_lang_String_indexOfILjava_lang_StringI(arg0,arg1,arg2) {
7.1933 - var arg3;
7.1934 -;
7.1935 - var stack = new Array(7);
7.1936 - var gt = 0;
7.1937 - for(;;) switch(gt) {
7.1938 - case 0: stack.push(arg0); // 42
7.1939 - case 1: stack.push(stack.pop().value); // 180 1 100
7.1940 - case 4: stack.push(arg0); // 42
7.1941 - case 5: stack.push(stack.pop().offset); // 180 1 99
7.1942 - case 8: stack.push(arg0); // 42
7.1943 - case 9: stack.push(stack.pop().count); // 180 1 97
7.1944 - case 12: stack.push(arg1); // 43
7.1945 - case 13: stack.push(stack.pop().value); // 180 1 100
7.1946 - case 16: stack.push(arg1); // 43
7.1947 - case 17: stack.push(stack.pop().offset); // 180 1 99
7.1948 - case 20: stack.push(arg1); // 43
7.1949 - case 21: stack.push(stack.pop().count); // 180 1 97
7.1950 - case 24: stack.push(arg2); // 28
7.1951 - 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
7.1952 - case 28: return stack.pop(); // 172
7.1953 - }
7.1954 -}
7.1955 -function java_lang_String_indexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) {
7.1956 - var arg7;
7.1957 - var arg8;
7.1958 - var arg9;
7.1959 - var arg10;
7.1960 - var arg11;
7.1961 - var arg12;
7.1962 - var stack = new Array();
7.1963 - var gt = 0;
7.1964 - for(;;) switch(gt) {
7.1965 - case 0: stack.push(arg6); // 21 6
7.1966 - case 2: stack.push(arg2); // 28
7.1967 - case 3: if (stack.pop() > stack.pop()) { gt = 17; continue; } // 161 0 14
7.1968 - case 6: stack.push(arg5); // 21 5
7.1969 - case 8: if (stack.pop() != 0) { gt = 15; continue; } // 154 0 7
7.1970 - case 11: stack.push(arg2); // 28
7.1971 - case 12: gt = 16; continue; // 167 0 4
7.1972 - case 15: // 2
7.1973 - case 16: return stack.pop(); // 172
7.1974 - case 17: stack.push(arg6); // 21 6
7.1975 - case 19: if (stack.pop() >= 0) { gt = 25; continue; } // 156 0 6
7.1976 - case 22: stack.push(0); // 3
7.1977 - case 23: arg6 = stack.pop() // 54 6
7.1978 - case 25: stack.push(arg5); // 21 5
7.1979 - case 27: if (stack.pop() != 0) { gt = 33; continue; } // 154 0 6
7.1980 - case 30: stack.push(arg6); // 21 6
7.1981 - case 32: return stack.pop(); // 172
7.1982 - case 33: stack.push(arg3); // 45
7.1983 - case 34: stack.push(arg4); // 21 4
7.1984 - case 36: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.1985 - case 37: arg7 = stack.pop() // 54 7
7.1986 - case 39: stack.push(arg1); // 27
7.1987 - case 40: stack.push(arg2); // 28
7.1988 - case 41: stack.push(arg5); // 21 5
7.1989 - case 43: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.1990 - case 44: stack.push(stack.pop() + stack.pop()); // 96
7.1991 - case 45: arg8 = stack.pop() // 54 8
7.1992 - case 47: stack.push(arg1); // 27
7.1993 - case 48: stack.push(arg6); // 21 6
7.1994 - case 50: stack.push(stack.pop() + stack.pop()); // 96
7.1995 - case 51: arg9 = stack.pop() // 54 9
7.1996 - case 53: stack.push(arg9); // 21 9
7.1997 - case 55: stack.push(arg8); // 21 8
7.1998 - case 57: if (stack.pop() < stack.pop()) { gt = 164; continue; } // 163 0 107
7.1999 - case 60: stack.push(arg0); // 42
7.2000 - case 61: stack.push(arg9); // 21 9
7.2001 - case 63: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2002 - case 64: stack.push(arg7); // 21 7
7.2003 - case 66: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 25
7.2004 - case 69: arg9++; // 132 9 1
7.2005 - case 72: stack.push(arg9); // 21 9
7.2006 - case 74: stack.push(arg8); // 21 8
7.2007 - case 76: if (stack.pop() < stack.pop()) { gt = 91; continue; } // 163 0 15
7.2008 - case 79: stack.push(arg0); // 42
7.2009 - case 80: stack.push(arg9); // 21 9
7.2010 - case 82: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2011 - case 83: stack.push(arg7); // 21 7
7.2012 - case 85: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 6
7.2013 - case 88: gt = 69; continue; // 167 255 237
7.2014 - case 91: stack.push(arg9); // 21 9
7.2015 - case 93: stack.push(arg8); // 21 8
7.2016 - case 95: if (stack.pop() < stack.pop()) { gt = 158; continue; } // 163 0 63
7.2017 - case 98: stack.push(arg9); // 21 9
7.2018 - case 100: stack.push(1); // 4
7.2019 - case 101: stack.push(stack.pop() + stack.pop()); // 96
7.2020 - case 102: arg10 = stack.pop() // 54 10
7.2021 - case 104: stack.push(arg10); // 21 10
7.2022 - case 106: stack.push(arg5); // 21 5
7.2023 - case 108: stack.push(stack.pop() + stack.pop()); // 96
7.2024 - case 109: stack.push(1); // 4
7.2025 - case 110: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2026 - case 111: arg11 = stack.pop() // 54 11
7.2027 - case 113: stack.push(arg4); // 21 4
7.2028 - case 115: stack.push(1); // 4
7.2029 - case 116: stack.push(stack.pop() + stack.pop()); // 96
7.2030 - case 117: arg12 = stack.pop() // 54 12
7.2031 - case 119: stack.push(arg10); // 21 10
7.2032 - case 121: stack.push(arg11); // 21 11
7.2033 - case 123: if (stack.pop() <= stack.pop()) { gt = 146; continue; } // 162 0 23
7.2034 - case 126: stack.push(arg0); // 42
7.2035 - case 127: stack.push(arg10); // 21 10
7.2036 - case 129: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2037 - case 130: stack.push(arg3); // 45
7.2038 - case 131: stack.push(arg12); // 21 12
7.2039 - case 133: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2040 - case 134: if (stack.pop() != stack.pop()) { gt = 146; continue; } // 160 0 12
7.2041 - case 137: arg10++; // 132 10 1
7.2042 - case 140: arg12++; // 132 12 1
7.2043 - case 143: gt = 119; continue; // 167 255 232
7.2044 - case 146: stack.push(arg10); // 21 10
7.2045 - case 148: stack.push(arg11); // 21 11
7.2046 - case 150: if (stack.pop() != stack.pop()) { gt = 158; continue; } // 160 0 8
7.2047 - case 153: stack.push(arg9); // 21 9
7.2048 - case 155: stack.push(arg1); // 27
7.2049 - case 156: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2050 - case 157: return stack.pop(); // 172
7.2051 - case 158: arg9++; // 132 9 1
7.2052 - case 161: gt = 53; continue; // 167 255 148
7.2053 - case 164: // 2
7.2054 - case 165: return stack.pop(); // 172
7.2055 - }
7.2056 -}
7.2057 -function java_lang_String_lastIndexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) {
7.2058 - var arg7;
7.2059 - var arg8;
7.2060 - var arg9;
7.2061 - var arg10;
7.2062 - var arg11;
7.2063 - var arg12;
7.2064 - var arg13;
7.2065 - var arg14;
7.2066 - var stack = new Array();
7.2067 - var gt = 0;
7.2068 - for(;;) switch(gt) {
7.2069 - case 0: stack.push(arg2); // 28
7.2070 - case 1: stack.push(arg5); // 21 5
7.2071 - case 3: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2072 - case 4: arg7 = stack.pop() // 54 7
7.2073 - case 6: stack.push(arg6); // 21 6
7.2074 - case 8: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 5
7.2075 - case 11: // 2
7.2076 - case 12: return stack.pop(); // 172
7.2077 - case 13: stack.push(arg6); // 21 6
7.2078 - case 15: stack.push(arg7); // 21 7
7.2079 - case 17: if (stack.pop() >= stack.pop()) { gt = 24; continue; } // 164 0 7
7.2080 - case 20: stack.push(arg7); // 21 7
7.2081 - case 22: arg6 = stack.pop() // 54 6
7.2082 - case 24: stack.push(arg5); // 21 5
7.2083 - case 26: if (stack.pop() != 0) { gt = 32; continue; } // 154 0 6
7.2084 - case 29: stack.push(arg6); // 21 6
7.2085 - case 31: return stack.pop(); // 172
7.2086 - case 32: stack.push(arg4); // 21 4
7.2087 - case 34: stack.push(arg5); // 21 5
7.2088 - case 36: stack.push(stack.pop() + stack.pop()); // 96
7.2089 - case 37: stack.push(1); // 4
7.2090 - case 38: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2091 - case 39: arg8 = stack.pop() // 54 8
7.2092 - case 41: stack.push(arg3); // 45
7.2093 - case 42: stack.push(arg8); // 21 8
7.2094 - case 44: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2095 - case 45: arg9 = stack.pop() // 54 9
7.2096 - case 47: stack.push(arg1); // 27
7.2097 - case 48: stack.push(arg5); // 21 5
7.2098 - case 50: stack.push(stack.pop() + stack.pop()); // 96
7.2099 - case 51: stack.push(1); // 4
7.2100 - case 52: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2101 - case 53: arg10 = stack.pop() // 54 10
7.2102 - case 55: stack.push(arg10); // 21 10
7.2103 - case 57: stack.push(arg6); // 21 6
7.2104 - case 59: stack.push(stack.pop() + stack.pop()); // 96
7.2105 - case 60: arg11 = stack.pop() // 54 11
7.2106 - case 62: stack.push(arg11); // 21 11
7.2107 - case 64: stack.push(arg10); // 21 10
7.2108 - case 66: if (stack.pop() > stack.pop()) { gt = 84; continue; } // 161 0 18
7.2109 - case 69: stack.push(arg0); // 42
7.2110 - case 70: stack.push(arg11); // 21 11
7.2111 - case 72: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2112 - case 73: stack.push(arg9); // 21 9
7.2113 - case 75: if (stack.pop() == stack.pop()) { gt = 84; continue; } // 159 0 9
7.2114 - case 78: arg11 += 255; // 132 11 255
7.2115 - case 81: gt = 62; continue; // 167 255 237
7.2116 - case 84: stack.push(arg11); // 21 11
7.2117 - case 86: stack.push(arg10); // 21 10
7.2118 - case 88: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 5
7.2119 - case 91: // 2
7.2120 - case 92: return stack.pop(); // 172
7.2121 - case 93: stack.push(arg11); // 21 11
7.2122 - case 95: stack.push(1); // 4
7.2123 - case 96: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2124 - case 97: arg12 = stack.pop() // 54 12
7.2125 - case 99: stack.push(arg12); // 21 12
7.2126 - case 101: stack.push(arg5); // 21 5
7.2127 - case 103: stack.push(1); // 4
7.2128 - case 104: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2129 - case 105: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2130 - case 106: arg13 = stack.pop() // 54 13
7.2131 - case 108: stack.push(arg8); // 21 8
7.2132 - case 110: stack.push(1); // 4
7.2133 - case 111: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2134 - case 112: arg14 = stack.pop() // 54 14
7.2135 - case 114: stack.push(arg12); // 21 12
7.2136 - case 116: stack.push(arg13); // 21 13
7.2137 - case 118: if (stack.pop() >= stack.pop()) { gt = 144; continue; } // 164 0 26
7.2138 - case 121: stack.push(arg0); // 42
7.2139 - case 122: stack.push(arg12); // 21 12
7.2140 - case 124: arg12 += 255; // 132 12 255
7.2141 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2142 - case 128: stack.push(arg3); // 45
7.2143 - case 129: stack.push(arg14); // 21 14
7.2144 - case 131: arg14 += 255; // 132 14 255
7.2145 - case 134: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
7.2146 - case 135: if (stack.pop() == stack.pop()) { gt = 114; continue; } // 159 255 235
7.2147 - case 138: arg11 += 255; // 132 11 255
7.2148 - case 141: gt = 62; continue; // 167 255 177
7.2149 - case 144: stack.push(arg13); // 21 13
7.2150 - case 146: stack.push(arg1); // 27
7.2151 - case 147: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
7.2152 - case 148: stack.push(1); // 4
7.2153 - case 149: stack.push(stack.pop() + stack.pop()); // 96
7.2154 - case 150: return stack.pop(); // 172
7.2155 - }
7.2156 -}
7.2157 -*/
7.2158 -
7.2159 -/*
7.2160 - this.lengthI = java_lang_String_lengthI;
7.2161 - this.isEmptyZ = java_lang_String_isEmptyZ;
7.2162 - this.charAtCI = java_lang_String_charAtCI;
7.2163 - this.codePointAtII = java_lang_String_codePointAtII;
7.2164 - this.codePointBeforeII = java_lang_String_codePointBeforeII;
7.2165 - this.codePointCountIII = java_lang_String_codePointCountIII;
7.2166 - this.offsetByCodePointsIII = java_lang_String_offsetByCodePointsIII;
7.2167 - this.getCharsVACI = java_lang_String_getCharsVACI;
7.2168 - this.getCharsVIIACI = java_lang_String_getCharsVIIACI;
7.2169 - this.getBytesVIIABI = java_lang_String_getBytesVIIABI;
7.2170 - this.getBytesABLjava_lang_String = java_lang_String_getBytesABLjava_lang_String;
7.2171 - this.getBytesABLjava_nio_charset_Charset = java_lang_String_getBytesABLjava_nio_charset_Charset;
7.2172 - this.getBytesAB = java_lang_String_getBytesAB;
7.2173 - this.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
7.2174 - this.contentEqualsZLjava_lang_StringBuffer = java_lang_String_contentEqualsZLjava_lang_StringBuffer;
7.2175 - this.contentEqualsZLjava_lang_CharSequence = java_lang_String_contentEqualsZLjava_lang_CharSequence;
7.2176 - this.equalsIgnoreCaseZLjava_lang_String = java_lang_String_equalsIgnoreCaseZLjava_lang_String;
7.2177 - this.compareToILjava_lang_String = java_lang_String_compareToILjava_lang_String;
7.2178 - this.compareToIgnoreCaseILjava_lang_String = java_lang_String_compareToIgnoreCaseILjava_lang_String;
7.2179 - this.regionMatchesZILjava_lang_StringII = java_lang_String_regionMatchesZILjava_lang_StringII;
7.2180 - this.regionMatchesZZILjava_lang_StringII = java_lang_String_regionMatchesZZILjava_lang_StringII;
7.2181 - this.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
7.2182 - this.startsWithZLjava_lang_String = java_lang_String_startsWithZLjava_lang_String;
7.2183 - this.endsWithZLjava_lang_String = java_lang_String_endsWithZLjava_lang_String;
7.2184 - this.hashCodeI = java_lang_String_hashCodeI;
7.2185 - this.indexOfII = java_lang_String_indexOfII;
7.2186 - this.indexOfIII = java_lang_String_indexOfIII;
7.2187 - this.lastIndexOfII = java_lang_String_lastIndexOfII;
7.2188 - this.lastIndexOfIII = java_lang_String_lastIndexOfIII;
7.2189 - this.indexOfILjava_lang_String = java_lang_String_indexOfILjava_lang_String;
7.2190 - this.indexOfILjava_lang_StringI = java_lang_String_indexOfILjava_lang_StringI;
7.2191 - this.lastIndexOfILjava_lang_String = java_lang_String_lastIndexOfILjava_lang_String;
7.2192 - this.lastIndexOfILjava_lang_StringI = java_lang_String_lastIndexOfILjava_lang_StringI;
7.2193 - this.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
7.2194 - this.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
7.2195 - this.subSequenceLjava_lang_CharSequenceII = java_lang_String_subSequenceLjava_lang_CharSequenceII;
7.2196 - this.concatLjava_lang_StringLjava_lang_String = java_lang_String_concatLjava_lang_StringLjava_lang_String;
7.2197 - this.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
7.2198 - this.matchesZLjava_lang_String = java_lang_String_matchesZLjava_lang_String;
7.2199 - this.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
7.2200 - this.replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String;
7.2201 - this.replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String;
7.2202 - this.replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence = java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence;
7.2203 - this.splitALjava_lang_StringLjava_lang_StringI = java_lang_String_splitALjava_lang_StringLjava_lang_StringI;
7.2204 - this.splitALjava_lang_StringLjava_lang_String = java_lang_String_splitALjava_lang_StringLjava_lang_String;
7.2205 - this.toLowerCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale;
7.2206 - this.toLowerCaseLjava_lang_String = java_lang_String_toLowerCaseLjava_lang_String;
7.2207 - this.toUpperCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale;
7.2208 - this.toUpperCaseLjava_lang_String = java_lang_String_toUpperCaseLjava_lang_String;
7.2209 - this.trimLjava_lang_String = java_lang_String_trimLjava_lang_String;
7.2210 - this.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
7.2211 - this.internLjava_lang_String = java_lang_String_internLjava_lang_String;
7.2212 - this.compareToILjava_lang_Object = java_lang_String_compareToILjava_lang_Object;
7.2213 - */
7.2214 -
7.2215 -
7.2216 -
7.2217 +// initialize methods on String constants
7.2218 +java_lang_Object(false);
8.1 --- a/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Mon Dec 03 22:13:50 2012 +0100
8.2 +++ b/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Tue Dec 04 11:21:10 2012 +0100
8.3 @@ -84,6 +84,9 @@
8.4 readValue(dis, cd, typeName, attrName);
8.5 }
8.6 visitAnnotationEnd(typeName);
8.7 + if (cnt == 0) {
8.8 + visitAttr(typeName, null, null, null);
8.9 + }
8.10 }
8.11
8.12 private void readValue(DataInputStream dis, ClassData cd, String typeName, String attrName)
9.1 --- a/javap/src/main/java/org/apidesign/javap/FieldData.java Mon Dec 03 22:13:50 2012 +0100
9.2 +++ b/javap/src/main/java/org/apidesign/javap/FieldData.java Tue Dec 04 11:21:10 2012 +0100
9.3 @@ -156,4 +156,13 @@
9.4 public Vector getAttributes(){
9.5 return attrs;
9.6 }
9.7 +
9.8 + public byte[] findAnnotationData(boolean classRetention) {
9.9 + String n = classRetention ?
9.10 + "RuntimeInvisibleAnnotations" : // NOI18N
9.11 + "RuntimeVisibleAnnotations"; // NOI18N
9.12 + AttrData[] arr = new AttrData[attrs.size()];
9.13 + attrs.copyInto(arr);
9.14 + return ClassData.findAttr(n, arr);
9.15 + }
9.16 }
10.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Mon Dec 03 22:13:50 2012 +0100
10.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Tue Dec 04 11:21:10 2012 +0100
10.3 @@ -57,7 +57,7 @@
10.4 @JavaScriptBody(
10.5 args={"el", "r"},
10.6 body="var e = window.document.getElementById(el.fld_id);\n"
10.7 - + "e.onclick = function() { r.runV(); };\n"
10.8 + + "e.onclick = function() { r.run__V(); };\n"
10.9 )
10.10 public final void addOnClick(Runnable r) {
10.11 throw new UnsupportedOperationException("Needs JavaScript!");
11.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 03 22:13:50 2012 +0100
11.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Dec 04 11:21:10 2012 +0100
11.3 @@ -82,6 +82,10 @@
11.4 return null;
11.5 }
11.6 }
11.7 + String[] proto = findAnnotation(arrData, jc,
11.8 + "org.apidesign.bck2brwsr.core.JavaScriptPrototype",
11.9 + "container", "prototype"
11.10 + );
11.11 StringArray toInitilize = new StringArray();
11.12 final String className = className(jc);
11.13 out.append("\n\n").append(assignClass(className));
11.14 @@ -92,28 +96,41 @@
11.15 out.append("\n CLS.").append(v.getName()).append(initField(v));
11.16 }
11.17 }
11.18 - // ClassName sc = jc.getSuperClass();
11.19 - String sc = jc.getSuperClassName(); // with _
11.20 - if (sc != null) {
11.21 + if (proto == null) {
11.22 + String sc = jc.getSuperClassName(); // with _
11.23 out.append("\n var pp = ").
11.24 append(sc.replace('/', '_')).append("(true);");
11.25 out.append("\n var p = CLS.prototype = pp;");
11.26 + out.append("\n var c = p;");
11.27 out.append("\n var sprcls = pp.constructor.$class;");
11.28 } else {
11.29 - out.append("\n var p = CLS.prototype;");
11.30 + out.append("\n var p = CLS.prototype = ").append(proto[1]).append(";");
11.31 + out.append("\n var c = ").append(proto[0]).append(";");
11.32 out.append("\n var sprcls = null;");
11.33 }
11.34 for (MethodData m : jc.getMethods()) {
11.35 + byte[] onlyArr = m.findAnnotationData(true);
11.36 + String[] only = findAnnotation(onlyArr, jc,
11.37 + "org.apidesign.bck2brwsr.core.JavaScriptOnly",
11.38 + "name", "value"
11.39 + );
11.40 + if (only != null) {
11.41 + if (only[0] != null && only[1] != null) {
11.42 + out.append("\n p.").append(only[0]).append(" = ")
11.43 + .append(only[1]).append(";");
11.44 + }
11.45 + continue;
11.46 + }
11.47 if (m.isStatic()) {
11.48 - generateStaticMethod("\n p.", m, toInitilize);
11.49 + generateStaticMethod("\n c.", m, toInitilize);
11.50 } else {
11.51 - generateInstanceMethod("\n p.", m);
11.52 + generateInstanceMethod("\n c.", m);
11.53 }
11.54 }
11.55 - out.append("\n p.constructor = CLS;");
11.56 - out.append("\n p.$instOf_").append(className).append(" = true;");
11.57 + out.append("\n c.constructor = CLS;");
11.58 + out.append("\n c.$instOf_").append(className).append(" = true;");
11.59 for (String superInterface : jc.getSuperInterfaces()) {
11.60 - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
11.61 + out.append("\n c.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
11.62 }
11.63 out.append("\n CLS.$class = java_lang_Class(true);");
11.64 out.append("\n CLS.$class.jvmName = '").append(jc.getClassName()).append("';");
11.65 @@ -131,6 +148,18 @@
11.66 out.append("\n return new CLS();");
11.67 out.append("\n }");
11.68 for (FieldData v : jc.getFields()) {
11.69 + byte[] onlyArr = v.findAnnotationData(true);
11.70 + String[] only = findAnnotation(onlyArr, jc,
11.71 + "org.apidesign.bck2brwsr.core.JavaScriptOnly",
11.72 + "name", "value"
11.73 + );
11.74 + if (only != null) {
11.75 + if (only[0] != null && only[1] != null) {
11.76 + out.append("\n p.").append(only[0]).append(" = ")
11.77 + .append(only[1]).append(";");
11.78 + }
11.79 + continue;
11.80 + }
11.81 if (!v.isStatic()) {
11.82 out.append("\n this.fld_").
11.83 append(v.getName()).append(initField(v));
11.84 @@ -153,7 +182,7 @@
11.85 StringBuilder argsCnt = new StringBuilder();
11.86 final String mn = findMethodName(m, argsCnt);
11.87 out.append(prefix).append(mn).append(" = function");
11.88 - if (mn.equals("classV")) {
11.89 + if (mn.equals("class__V")) {
11.90 toInitilize.add(className(jc) + "(false)." + mn);
11.91 }
11.92 out.append('(');
11.93 @@ -782,6 +811,7 @@
11.94 int i = 0;
11.95 Boolean count = null;
11.96 boolean array = false;
11.97 + sig.append("__");
11.98 int firstPos = sig.length();
11.99 while (i < descriptor.length()) {
11.100 char ch = descriptor.charAt(i++);
11.101 @@ -792,9 +822,6 @@
11.102 case ')':
11.103 count = false;
11.104 continue;
11.105 - case 'A':
11.106 - array = true;
11.107 - break;
11.108 case 'B':
11.109 case 'C':
11.110 case 'D':
11.111 @@ -805,7 +832,7 @@
11.112 case 'Z':
11.113 if (count) {
11.114 if (array) {
11.115 - sig.append('A');
11.116 + sig.append("_3");
11.117 }
11.118 sig.append(ch);
11.119 if (ch == 'J' || ch == 'D') {
11.120 @@ -817,7 +844,7 @@
11.121 hasReturnType[0] = true;
11.122 sig.insert(firstPos, ch);
11.123 if (array) {
11.124 - sig.insert(firstPos, 'A');
11.125 + sig.insert(firstPos, "_3");
11.126 }
11.127 }
11.128 array = false;
11.129 @@ -829,33 +856,47 @@
11.130 continue;
11.131 case 'L':
11.132 int next = descriptor.indexOf(';', i);
11.133 + String realSig = mangleSig(descriptor, i - 1, next + 1);
11.134 if (count) {
11.135 if (array) {
11.136 - sig.append('A');
11.137 + sig.append("_3");
11.138 }
11.139 - sig.append(ch);
11.140 - sig.append(descriptor.substring(i, next).replace('/', '_'));
11.141 + sig.append(realSig);
11.142 cnt.append('0');
11.143 } else {
11.144 - sig.insert(firstPos, descriptor.substring(i, next).replace('/', '_'));
11.145 - sig.insert(firstPos, ch);
11.146 + sig.insert(firstPos, realSig);
11.147 if (array) {
11.148 - sig.insert(firstPos, 'A');
11.149 + sig.insert(firstPos, "_3");
11.150 }
11.151 hasReturnType[0] = true;
11.152 }
11.153 i = next + 1;
11.154 continue;
11.155 case '[':
11.156 - //arrays++;
11.157 + array = true;
11.158 continue;
11.159 default:
11.160 - break; // invalid character
11.161 + throw new IllegalStateException("Invalid char: " + ch);
11.162 }
11.163 }
11.164 }
11.165 +
11.166 + private static String mangleSig(String txt, int first, int last) {
11.167 + StringBuilder sb = new StringBuilder();
11.168 + for (int i = first; i < last; i++) {
11.169 + final char ch = txt.charAt(i);
11.170 + switch (ch) {
11.171 + case '/': sb.append('_'); break;
11.172 + case '_': sb.append("_1"); break;
11.173 + case ';': sb.append("_2"); break;
11.174 + case '[': sb.append("_3"); break;
11.175 + default: sb.append(ch); break;
11.176 + }
11.177 + }
11.178 + return sb.toString();
11.179 + }
11.180
11.181 - private String findMethodName(MethodData m, StringBuilder cnt) {
11.182 + private static String findMethodName(MethodData m, StringBuilder cnt) {
11.183 StringBuilder name = new StringBuilder();
11.184 if ("<init>".equals(m.getName())) { // NOI18N
11.185 name.append("cons"); // NOI18N
11.186 @@ -866,11 +907,11 @@
11.187 }
11.188
11.189 boolean hasReturn[] = { false };
11.190 - countArgs(findDescriptor(m.getInternalSig()), hasReturn, name, cnt);
11.191 + countArgs(m.getInternalSig(), hasReturn, name, cnt);
11.192 return name.toString();
11.193 }
11.194
11.195 - private String findMethodName(String[] mi, StringBuilder cnt, boolean[] hasReturn) {
11.196 + static String findMethodName(String[] mi, StringBuilder cnt, boolean[] hasReturn) {
11.197 StringBuilder name = new StringBuilder();
11.198 String descr = mi[2];//mi.getDescriptor();
11.199 String nm= mi[1];
11.200 @@ -879,7 +920,7 @@
11.201 } else {
11.202 name.append(nm);
11.203 }
11.204 - countArgs(findDescriptor(descr), hasReturn, name, cnt);
11.205 + countArgs(descr, hasReturn, name, cnt);
11.206 return name.toString();
11.207 }
11.208
11.209 @@ -983,10 +1024,6 @@
11.210 return s;
11.211 }
11.212
11.213 - private String findDescriptor(String d) {
11.214 - return d.replace('[', 'A');
11.215 - }
11.216 -
11.217 private boolean javaScriptBody(String prefix, MethodData m, boolean isStatic) throws IOException {
11.218 byte[] arr = m.findAnnotationData(true);
11.219 if (arr == null) {
12.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Mon Dec 03 22:13:50 2012 +0100
12.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Tue Dec 04 11:21:10 2012 +0100
12.3 @@ -73,16 +73,16 @@
12.4 }
12.5
12.6 void delete(int indx) {
12.7 - if (arr == null) {
12.8 + if (arr == null || indx < 0 || indx >= arr.length) {
12.9 return;
12.10 }
12.11 String[] tmp = new String[arr.length - 1];
12.12 for (int i = 0, j = 0; i < arr.length; i++) {
12.13 - tmp[j] = arr[i];
12.14 - if (j == indx) {
12.15 - continue;
12.16 + if (i != indx) {
12.17 + tmp[j++] = arr[i];
12.18 }
12.19 }
12.20 + arr = tmp;
12.21 }
12.22
12.23 int indexOf(String ic) {
13.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Mon Dec 03 22:13:50 2012 +0100
13.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Tue Dec 04 11:21:10 2012 +0100
13.3 @@ -29,7 +29,7 @@
13.4 */
13.5 public class ArrayTest {
13.6 @Test public void verifySimpleIntOperation() throws Exception {
13.7 - assertExec("CheckTheSum", Array.class, "simpleI",
13.8 + assertExec("CheckTheSum", Array.class, "simple__I",
13.9 Double.valueOf(15)
13.10 );
13.11 }
13.12 @@ -39,13 +39,13 @@
13.13 }
13.14
13.15 @Test public void verifyOperationsOnArrays() throws Exception {
13.16 - assertExec("The sum is 105", Array.class, "sumD",
13.17 + assertExec("The sum is 105", Array.class, "sum__D",
13.18 Double.valueOf(105)
13.19 );
13.20 }
13.21
13.22 @Test public void doesCopyArrayWork() throws Exception {
13.23 - assertExec("Returns 'a'", Array.class, "copyArrayC", Double.valueOf('a'));
13.24 + assertExec("Returns 'a'", Array.class, "copyArray__C", Double.valueOf('a'));
13.25 }
13.26
13.27 private static CharSequence codeSeq;
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ByteCodeToJavaScriptTest.java Tue Dec 04 11:21:10 2012 +0100
14.3 @@ -0,0 +1,55 @@
14.4 +/**
14.5 + * Back 2 Browser Bytecode Translator
14.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
14.7 + *
14.8 + * This program is free software: you can redistribute it and/or modify
14.9 + * it under the terms of the GNU General Public License as published by
14.10 + * the Free Software Foundation, version 2 of the License.
14.11 + *
14.12 + * This program is distributed in the hope that it will be useful,
14.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
14.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14.15 + * GNU General Public License for more details.
14.16 + *
14.17 + * You should have received a copy of the GNU General Public License
14.18 + * along with this program. Look for COPYING file in the top folder.
14.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
14.20 + */
14.21 +package org.apidesign.vm4brwsr;
14.22 +
14.23 +import static org.testng.Assert.*;
14.24 +import org.testng.annotations.Test;
14.25 +
14.26 +/**
14.27 + *
14.28 + * @author Jaroslav Tulach <jtulach@netbeans.org>
14.29 + */
14.30 +public class ByteCodeToJavaScriptTest {
14.31 +
14.32 + public ByteCodeToJavaScriptTest() {
14.33 + }
14.34 +
14.35 + @Test
14.36 + public void findMethodNameManglesObjectsCorrectly() {
14.37 + StringBuilder cnt = new StringBuilder();
14.38 + boolean[] hasReturn = { false };
14.39 + String ret = ByteCodeToJavaScript.findMethodName(new String[] {
14.40 + "StringTest", "replace", "(Ljava/lang/String;CC)Ljava/lang/String;"
14.41 + }, cnt, hasReturn);
14.42 + assertEquals(cnt.toString(), "000", "No doubles or longs");
14.43 + assertTrue(hasReturn[0], "Returns string");
14.44 + assertEquals(ret, "replace__Ljava_lang_String_2Ljava_lang_String_2CC");
14.45 + }
14.46 +
14.47 + @Test
14.48 + public void manglingArrays() {
14.49 + StringBuilder cnt = new StringBuilder();
14.50 + boolean[] hasReturn = { false };
14.51 + String ret = ByteCodeToJavaScript.findMethodName(new String[] {
14.52 + "VMinVM", "toJavaScript", "([B)Ljava/lang/String;"
14.53 + }, cnt, hasReturn);
14.54 + assertEquals(cnt.toString(), "0", "No doubles or longs");
14.55 + assertTrue(hasReturn[0], "Returns string");
14.56 + assertEquals(ret, "toJavaScript__Ljava_lang_String_2_3B");
14.57 + }
14.58 +}
15.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Mon Dec 03 22:13:50 2012 +0100
15.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Tue Dec 04 11:21:10 2012 +0100
15.3 @@ -117,4 +117,12 @@
15.4
15.5 return constructor(x) == constructor(y);
15.6 }
15.7 + @JavaScriptBody(args = {}, body = "return {};")
15.8 + private static Object jsObj() {
15.9 + return null;
15.10 + }
15.11 +
15.12 + public static boolean iofObject() {
15.13 + return jsObj() instanceof Object;
15.14 + }
15.15 }
16.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Mon Dec 03 22:13:50 2012 +0100
16.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Tue Dec 04 11:21:10 2012 +0100
16.3 @@ -29,42 +29,42 @@
16.4 @Test public void verifyDefaultDoubleValue() throws Exception {
16.5 assertExec(
16.6 "Will be zero",
16.7 - Instance.class, "defaultDblValueD",
16.8 + Instance.class, "defaultDblValue__D",
16.9 Double.valueOf(0)
16.10 );
16.11 }
16.12 @Test public void verifyStaticMethodCall() throws Exception {
16.13 assertExec(
16.14 "Will be zero",
16.15 - InstanceSub.class, "recallDblD",
16.16 + InstanceSub.class, "recallDbl__D",
16.17 Double.valueOf(0)
16.18 );
16.19 }
16.20 @Test public void verifyAssignedByteValue() throws Exception {
16.21 assertExec(
16.22 "Will one thirty one",
16.23 - Instance.class, "assignedByteValueB",
16.24 + Instance.class, "assignedByteValue__B",
16.25 Double.valueOf(31)
16.26 );
16.27 }
16.28 @Test public void verifyMagicOne() throws Exception {
16.29 assertExec(
16.30 "Should be three and something",
16.31 - Instance.class, "magicOneD",
16.32 + Instance.class, "magicOne__D",
16.33 Double.valueOf(3.3)
16.34 );
16.35 }
16.36 @Test public void verifyInstanceMethods() throws Exception {
16.37 assertExec(
16.38 "Should be eleven as we invoke overwritten method, plus 44",
16.39 - Instance.class, "virtualBytesI",
16.40 + Instance.class, "virtualBytes__I",
16.41 Double.valueOf(55)
16.42 );
16.43 }
16.44 @Test public void verifyInterfaceMethods() throws Exception {
16.45 assertExec(
16.46 "Retruns default value",
16.47 - Instance.class, "interfaceBytesF",
16.48 + Instance.class, "interfaceBytes__F",
16.49 Double.valueOf(31)
16.50 );
16.51 }
16.52 @@ -72,7 +72,7 @@
16.53 @Test public void isNull() throws Exception {
16.54 assertExec(
16.55 "Yes, we are instance",
16.56 - Instance.class, "isNullZ",
16.57 + Instance.class, "isNull__Z",
16.58 Double.valueOf(0.0)
16.59 );
16.60 }
16.61 @@ -80,7 +80,7 @@
16.62 @Test public void isInstanceOf() throws Exception {
16.63 assertExec(
16.64 "Yes, we are instance",
16.65 - Instance.class, "instanceOfZZ",
16.66 + Instance.class, "instanceOf__ZZ",
16.67 Double.valueOf(1.0), true
16.68 );
16.69 }
16.70 @@ -88,7 +88,7 @@
16.71 @Test public void notInstanceOf() throws Exception {
16.72 assertExec(
16.73 "No, we are not an instance",
16.74 - Instance.class, "instanceOfZZ",
16.75 + Instance.class, "instanceOf__ZZ",
16.76 Double.valueOf(0.0), false
16.77 );
16.78 }
16.79 @@ -96,14 +96,14 @@
16.80 @Test public void verifyCastToClass() throws Exception {
16.81 assertExec(
16.82 "Five signals all is good",
16.83 - Instance.class, "castsWorkIZ",
16.84 + Instance.class, "castsWork__IZ",
16.85 Double.valueOf(5.0), false
16.86 );
16.87 }
16.88 @Test public void verifyCastToInterface() throws Exception {
16.89 assertExec(
16.90 "Five signals all is good",
16.91 - Instance.class, "castsWorkIZ",
16.92 + Instance.class, "castsWork__IZ",
16.93 Double.valueOf(5.0), true
16.94 );
16.95 }
16.96 @@ -111,7 +111,7 @@
16.97 @Test public void sharedConstructor() throws Exception {
16.98 assertExec(
16.99 "Constructor of first and 2nd instance should be the same",
16.100 - Instance.class, "sharedConstructorZ",
16.101 + Instance.class, "sharedConstructor__Z",
16.102 Double.valueOf(1.0)
16.103 );
16.104 }
16.105 @@ -119,10 +119,18 @@
16.106 @Test public void differentConstructor() throws Exception {
16.107 assertExec(
16.108 "Constructor of X and Y should be the different",
16.109 - Instance.class, "differentConstructorZ",
16.110 + Instance.class, "differentConstructor__Z",
16.111 Double.valueOf(0)
16.112 );
16.113 }
16.114 +
16.115 + @Test public void jsObjectIsLikeJavaObject() throws Exception {
16.116 + assertExec(
16.117 + "JavaScript object is instance of Java Object",
16.118 + Instance.class, "iofObject__Z",
16.119 + Double.valueOf(1)
16.120 + );
16.121 + }
16.122
16.123 protected String startCompilationWith() {
16.124 return "org/apidesign/vm4brwsr/Instance";
17.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Mon Dec 03 22:13:50 2012 +0100
17.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Tue Dec 04 11:21:10 2012 +0100
17.3 @@ -29,19 +29,19 @@
17.4 */
17.5 public class NumberTest {
17.6 @Test public void integerFromString() throws Exception {
17.7 - assertExec("Can convert string to integer", Integer.class, "parseIntILjava_lang_String",
17.8 + assertExec("Can convert string to integer", Integer.class, "parseInt__ILjava_lang_String_2",
17.9 Double.valueOf(333), "333"
17.10 );
17.11 }
17.12
17.13 @Test public void doubleFromString() throws Exception {
17.14 - assertExec("Can convert string to double", Double.class, "parseDoubleDLjava_lang_String",
17.15 + assertExec("Can convert string to double", Double.class, "parseDouble__DLjava_lang_String_2",
17.16 Double.valueOf(33.3), "33.3"
17.17 );
17.18 }
17.19
17.20 @Test public void autoboxDouble() throws Exception {
17.21 - assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToStringLjava_lang_String",
17.22 + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToString__Ljava_lang_String_2",
17.23 "3.3"
17.24 );
17.25 }
17.26 @@ -51,7 +51,7 @@
17.27 }
17.28
17.29 @Test public void jslog1000() throws Exception {
17.30 - assertExec("log_10(1000) == 3", Math.class, "log10DD",
17.31 + assertExec("log_10(1000) == 3", Math.class, "log10__DD",
17.32 Double.valueOf(3.0), 1000.0
17.33 );
17.34 }
17.35 @@ -60,20 +60,20 @@
17.36 assertEquals(3, Numbers.rem(303, 10));
17.37 }
17.38 @Test public void jsRem() throws Exception {
17.39 - assertExec("Should be three", Numbers.class, "remIII",
17.40 + assertExec("Should be three", Numbers.class, "rem__III",
17.41 Double.valueOf(3.0), 303, 10
17.42 );
17.43 }
17.44
17.45 @Test public void deserializeInt() throws Exception {
17.46 int exp = Numbers.deserInt();
17.47 - assertExec("Should be the same", Numbers.class, "deserIntI",
17.48 + assertExec("Should be the same", Numbers.class, "deserInt__I",
17.49 Double.valueOf(exp)
17.50 );
17.51 }
17.52
17.53 @Test public void deserializeSimpleLong() throws Exception {
17.54 - assertExec("Should be 3454", Numbers.class, "deserLongJAB",
17.55 + assertExec("Should be 3454", Numbers.class, "deserLong__J_3B",
17.56 Double.valueOf(3454),
17.57 new byte[] { (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)13, (byte)126 }
17.58 );
17.59 @@ -84,7 +84,7 @@
17.60 (byte)64, (byte)8, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0
17.61 };
17.62 long exp = Numbers.deserLong(arr);
17.63 - assertExec("Should be " + exp, "org_apidesign_vm4brwsr_Numbers_deserLongJAB",
17.64 + assertExec("Should be " + exp, "org_apidesign_vm4brwsr_Numbers_deserLong__JAB",
17.65 Double.valueOf(exp), arr);
17.66 }
17.67 */
17.68 @@ -97,7 +97,7 @@
17.69
17.70 @Test public void deserializeFloatInJS() throws Exception {
17.71 float f = 54324.32423f;
17.72 - assertExec("Should be the same", Numbers.class, "deserFloatF",
17.73 + assertExec("Should be the same", Numbers.class, "deserFloat__F",
17.74 Double.valueOf(f)
17.75 );
17.76 }
17.77 @@ -110,7 +110,7 @@
17.78
17.79 @Test public void deserializeDoubleInJS() throws Exception {
17.80 double f = 3.0;
17.81 - assertExec("Should be the same", Numbers.class, "deserDoubleD", f);
17.82 + assertExec("Should be the same", Numbers.class, "deserDouble__D", f);
17.83 }
17.84 /*
17.85 @Test public void serDouble() throws IOException {
17.86 @@ -131,7 +131,7 @@
17.87 @Test public void fiveInStringJS() throws Exception {
17.88 String s = Numbers.intToString();
17.89 assertExec("Should be the same: " + s,
17.90 - Numbers.class, "intToStringLjava_lang_String",
17.91 + Numbers.class, "intToString__Ljava_lang_String_2",
17.92 s
17.93 );
17.94 }
17.95 @@ -139,7 +139,7 @@
17.96 @Test public void sevenInStringJS() throws Exception {
17.97 String s = Numbers.floatToString();
17.98 assertExec("Should be the same: " + s,
17.99 - Numbers.class, "floatToStringLjava_lang_String",
17.100 + Numbers.class, "floatToString__Ljava_lang_String_2",
17.101 s
17.102 );
17.103 }
18.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Mon Dec 03 22:13:50 2012 +0100
18.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Tue Dec 04 11:21:10 2012 +0100
18.3 @@ -36,7 +36,7 @@
18.4 @Test public void threePlusFour() throws Exception {
18.5 assertExec(
18.6 "Should be seven",
18.7 - StaticMethod.class, "sumIII",
18.8 + StaticMethod.class, "sum__III",
18.9 Double.valueOf(7),
18.10 3, 4
18.11 );
18.12 @@ -45,7 +45,7 @@
18.13 @Test public void checkReallyInitializedValues() throws Exception {
18.14 assertExec(
18.15 "Return true",
18.16 - StaticMethod.class, "isNullZ",
18.17 + StaticMethod.class, "isNull__Z",
18.18 Double.valueOf(1)
18.19 );
18.20 }
18.21 @@ -53,7 +53,7 @@
18.22 @Test public void powerOfThree() throws Exception {
18.23 assertExec(
18.24 "Should be nine",
18.25 - StaticMethod.class, "powerFF",
18.26 + StaticMethod.class, "power__FF",
18.27 Double.valueOf(9),
18.28 3.0f
18.29 );
18.30 @@ -62,7 +62,7 @@
18.31 @Test public void minusOne() throws Exception {
18.32 assertExec(
18.33 "Should be minus one",
18.34 - StaticMethod.class, "minusOneI",
18.35 + StaticMethod.class, "minusOne__I",
18.36 Double.valueOf(-1)
18.37 );
18.38 }
18.39 @@ -70,7 +70,7 @@
18.40 @Test public void doubleWithoutLong() throws Exception {
18.41 assertExec(
18.42 "Should be two",
18.43 - StaticMethod.class, "minusDDJ",
18.44 + StaticMethod.class, "minus__DDJ",
18.45 Double.valueOf(2),
18.46 3.0d, 1l
18.47 );
18.48 @@ -79,7 +79,7 @@
18.49 @Test public void divAndRound() throws Exception {
18.50 assertExec(
18.51 "Should be rounded to one",
18.52 - StaticMethod.class, "divIBD",
18.53 + StaticMethod.class, "div__IBD",
18.54 Double.valueOf(1),
18.55 3, 3.75
18.56 );
18.57 @@ -87,7 +87,7 @@
18.58 @Test public void mixedMethodFourParams() throws Exception {
18.59 assertExec(
18.60 "Should be two",
18.61 - StaticMethod.class, "mixIIJBD",
18.62 + StaticMethod.class, "mix__IIJBD",
18.63 Double.valueOf(20),
18.64 2, 10l, 5, 2.0
18.65 );
18.66 @@ -95,7 +95,7 @@
18.67 @Test public void factRec() throws Exception {
18.68 assertExec(
18.69 "Factorial of 5 is 120",
18.70 - StaticMethod.class, "factRecJI",
18.71 + StaticMethod.class, "factRec__JI",
18.72 Double.valueOf(120),
18.73 5
18.74 );
18.75 @@ -103,7 +103,7 @@
18.76 @Test public void factIter() throws Exception {
18.77 assertExec(
18.78 "Factorial of 5 is 120",
18.79 - StaticMethod.class, "factIterJI",
18.80 + StaticMethod.class, "factIter__JI",
18.81 Double.valueOf(120),
18.82 5
18.83 );
18.84 @@ -112,7 +112,7 @@
18.85 @Test public void xor() throws Exception {
18.86 assertExec(
18.87 "Xor is 4",
18.88 - StaticMethod.class, "xorJIJ",
18.89 + StaticMethod.class, "xor__JIJ",
18.90 Double.valueOf(4),
18.91 7,
18.92 3
18.93 @@ -122,7 +122,7 @@
18.94 @Test public void or() throws Exception {
18.95 assertExec(
18.96 "Or will be 7",
18.97 - StaticMethod.class, "orOrAndJZII",
18.98 + StaticMethod.class, "orOrAnd__JZII",
18.99 Double.valueOf(7),
18.100 true,
18.101 4,
18.102 @@ -132,14 +132,14 @@
18.103 @Test public void nullCheck() throws Exception {
18.104 assertExec(
18.105 "Returns nothing",
18.106 - StaticMethod.class, "noneLjava_lang_ObjectII",
18.107 + StaticMethod.class, "none__Ljava_lang_Object_2II",
18.108 null, 1, 3
18.109 );
18.110 }
18.111 @Test public void and() throws Exception {
18.112 assertExec(
18.113 "And will be 3",
18.114 - StaticMethod.class, "orOrAndJZII",
18.115 + StaticMethod.class, "orOrAnd__JZII",
18.116 Double.valueOf(3),
18.117 false,
18.118 7,
18.119 @@ -149,7 +149,7 @@
18.120 @Test public void inc4() throws Exception {
18.121 assertExec(
18.122 "It will be 4",
18.123 - StaticMethod.class, "inc4I",
18.124 + StaticMethod.class, "inc4__I",
18.125 Double.valueOf(4)
18.126 );
18.127 }
18.128 @@ -162,7 +162,7 @@
18.129 @Test public void shiftLeftInJS() throws Exception {
18.130 assertExec(
18.131 "Setting 9th bit",
18.132 - StaticMethod.class, "shiftLeftIII",
18.133 + StaticMethod.class, "shiftLeft__III",
18.134 Double.valueOf(256),
18.135 1, 8
18.136 );
18.137 @@ -176,7 +176,7 @@
18.138 @Test public void shiftRightInJS() throws Exception {
18.139 assertExec(
18.140 "Get -1",
18.141 - StaticMethod.class, "shiftArithmRightIIIZ",
18.142 + StaticMethod.class, "shiftArithmRight__IIIZ",
18.143 Double.valueOf(-1),
18.144 -8, 3, true
18.145 );
18.146 @@ -189,7 +189,7 @@
18.147 @Test public void unsignedShiftRightInJS() throws Exception {
18.148 assertExec(
18.149 "Get -1",
18.150 - StaticMethod.class, "shiftArithmRightIIIZ",
18.151 + StaticMethod.class, "shiftArithmRight__IIIZ",
18.152 Double.valueOf(1),
18.153 8, 3, false
18.154 );
18.155 @@ -198,7 +198,7 @@
18.156 @Test public void javaScriptBody() throws Exception {
18.157 assertExec(
18.158 "JavaScript string",
18.159 - StaticMethod.class, "i2sLjava_lang_StringII",
18.160 + StaticMethod.class, "i2s__Ljava_lang_String_2II",
18.161 "333",
18.162 330, 3
18.163 );
18.164 @@ -207,7 +207,7 @@
18.165 @Test public void switchJarda() throws Exception {
18.166 assertExec(
18.167 "The expected value",
18.168 - StaticMethod.class, "swtchLjava_lang_StringI",
18.169 + StaticMethod.class, "swtch__Ljava_lang_String_2I",
18.170 "Jarda",
18.171 0
18.172 );
18.173 @@ -216,7 +216,7 @@
18.174 @Test public void switchDarda() throws Exception {
18.175 assertExec(
18.176 "The expected value",
18.177 - StaticMethod.class, "swtchLjava_lang_StringI",
18.178 + StaticMethod.class, "swtch__Ljava_lang_String_2I",
18.179 "Darda",
18.180 1
18.181 );
18.182 @@ -224,7 +224,7 @@
18.183 @Test public void switchParda() throws Exception {
18.184 assertExec(
18.185 "The expected value",
18.186 - StaticMethod.class, "swtch2Ljava_lang_StringI",
18.187 + StaticMethod.class, "swtch2__Ljava_lang_String_2I",
18.188 "Parda",
18.189 22
18.190 );
18.191 @@ -232,7 +232,7 @@
18.192 @Test public void switchMarda() throws Exception {
18.193 assertExec(
18.194 "The expected value",
18.195 - StaticMethod.class, "swtchLjava_lang_StringI",
18.196 + StaticMethod.class, "swtch__Ljava_lang_String_2I",
18.197 "Marda",
18.198 -433
18.199 );
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringArrayTest.java Tue Dec 04 11:21:10 2012 +0100
19.3 @@ -0,0 +1,50 @@
19.4 +/**
19.5 + * Back 2 Browser Bytecode Translator
19.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
19.7 + *
19.8 + * This program is free software: you can redistribute it and/or modify
19.9 + * it under the terms of the GNU General Public License as published by
19.10 + * the Free Software Foundation, version 2 of the License.
19.11 + *
19.12 + * This program is distributed in the hope that it will be useful,
19.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
19.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19.15 + * GNU General Public License for more details.
19.16 + *
19.17 + * You should have received a copy of the GNU General Public License
19.18 + * along with this program. Look for COPYING file in the top folder.
19.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
19.20 + */
19.21 +package org.apidesign.vm4brwsr;
19.22 +
19.23 +import org.testng.annotations.Test;
19.24 +import static org.testng.Assert.*;
19.25 +
19.26 +public class StringArrayTest {
19.27 + @Test public void deleteMinusIndex() throws Exception {
19.28 + String[] arr = { "Ahoj", "Kluci" };
19.29 + StringArray list = StringArray.asList(arr);
19.30 + list.delete(-1);
19.31 + assertEquals(list.toArray().length, 2, "No element removed");
19.32 + }
19.33 + @Test public void deleteTooHighIndex() throws Exception {
19.34 + String[] arr = { "Ahoj", "Kluci" };
19.35 + StringArray list = StringArray.asList(arr);
19.36 + list.delete(5);
19.37 + assertEquals(list.toArray().length, 2, "No element removed");
19.38 + }
19.39 + @Test public void deleteFirst() throws Exception {
19.40 + String[] arr = { "Ahoj", "Kluci" };
19.41 + StringArray list = StringArray.asList(arr);
19.42 + list.delete(0);
19.43 + assertEquals(list.toArray().length, 1, "First element removed");
19.44 + assertEquals(list.toArray()[0], "Kluci");
19.45 + }
19.46 + @Test public void deleteSecond() throws Exception {
19.47 + String[] arr = { "Ahoj", "Kluci" };
19.48 + StringArray list = StringArray.asList(arr);
19.49 + list.delete(1);
19.50 + assertEquals(list.toArray().length, 1, "Second element removed");
19.51 + assertEquals(list.toArray()[0], "Ahoj");
19.52 + }
19.53 +}
20.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Mon Dec 03 22:13:50 2012 +0100
20.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Tue Dec 04 11:21:10 2012 +0100
20.3 @@ -18,7 +18,6 @@
20.4 package org.apidesign.vm4brwsr;
20.5
20.6 import javax.script.Invocable;
20.7 -import javax.script.ScriptException;
20.8 import org.testng.annotations.Test;
20.9 import static org.testng.Assert.*;
20.10 import org.testng.annotations.BeforeClass;
20.11 @@ -31,7 +30,7 @@
20.12 @Test public void firstChar() throws Exception {
20.13 assertExec(
20.14 "First char in Hello is H",
20.15 - StringSample.class, "sayHelloCI",
20.16 + StringSample.class, "sayHello__CI",
20.17 72, 0
20.18 );
20.19 }
20.20 @@ -39,7 +38,7 @@
20.21 @Test public void fromChars() throws Exception {
20.22 assertExec(
20.23 "First char in Hello is ABC",
20.24 - StringSample.class, "fromCharsLjava_lang_StringCCC",
20.25 + StringSample.class, "fromChars__Ljava_lang_String_2CCC",
20.26 "ABC", 'A', 'B', 'C'
20.27 );
20.28 }
20.29 @@ -47,7 +46,7 @@
20.30 @Test public void concatChars() throws Exception {
20.31 assertExec(
20.32 "Composing yields ABC",
20.33 - StringSample.class, "charsLjava_lang_StringCCC",
20.34 + StringSample.class, "chars__Ljava_lang_String_2CCC",
20.35 "ABC", 'A', 'B', 'C'
20.36 );
20.37 }
20.38 @@ -55,7 +54,7 @@
20.39 @Test public void concatCharsFromInts() throws Exception {
20.40 assertExec(
20.41 "Composing yields ABC",
20.42 - StringSample.class, "charsFromNumbersLjava_lang_String",
20.43 + StringSample.class, "charsFromNumbers__Ljava_lang_String_2",
20.44 "ABC"
20.45 );
20.46 }
20.47 @@ -63,7 +62,7 @@
20.48 @Test public void concatCharsFromChars() throws Exception {
20.49 assertExec(
20.50 "Composing yields ABC",
20.51 - StringSample.class, "charsFromCharsLjava_lang_String",
20.52 + StringSample.class, "charsFromChars__Ljava_lang_String_2",
20.53 "ABC"
20.54 );
20.55 }
20.56 @@ -71,7 +70,7 @@
20.57 @Test public void instanceOfWorks() throws Exception {
20.58 assertExec(
20.59 "It is string",
20.60 - StringSample.class, "isStringInstanceZ",
20.61 + StringSample.class, "isStringInstance__Z",
20.62 Double.valueOf(1.0)
20.63 );
20.64 }
20.65 @@ -79,7 +78,7 @@
20.66 @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
20.67 assertExec(
20.68 "Five executions should generate 5Hello World!",
20.69 - StringSample.class, "toStringTestLjava_lang_StringI",
20.70 + StringSample.class, "toStringTest__Ljava_lang_String_2I",
20.71 "Hello World!5", 5
20.72 );
20.73 }
20.74 @@ -90,7 +89,7 @@
20.75 @Test(timeOut=10000) public void stringStringConcat() throws Exception {
20.76 assertExec(
20.77 "Composes strings OK",
20.78 - StringSample.class, "concatStringsLjava_lang_String",
20.79 + StringSample.class, "concatStrings__Ljava_lang_String_2",
20.80 "Hello World!1" + "\\\n\r\t"
20.81 );
20.82 }
20.83 @@ -98,21 +97,21 @@
20.84 @Test public void equalsAndSubstring() throws Exception {
20.85 assertExec(
20.86 "Composes are OK",
20.87 - StringSample.class, "equalToHelloZII",
20.88 + StringSample.class, "equalToHello__ZII",
20.89 true, 0, 5
20.90 );
20.91 }
20.92 @Test public void replaceChars() throws Exception {
20.93 assertExec(
20.94 "Can replace slashes by underscores",
20.95 - StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
20.96 + StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC",
20.97 "x_y_z", "x/y/z", '/', '_'
20.98 );
20.99 }
20.100 @Test public void replaceIntChars() throws Exception {
20.101 assertExec(
20.102 "Can replace slashes by underscores",
20.103 - StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
20.104 + StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC",
20.105 "x_y_z", "x/y/z", (int)'/', (int)'_'
20.106 );
20.107 }
20.108 @@ -120,7 +119,7 @@
20.109 @Test public void insertBuilder() throws Exception {
20.110 assertExec(
20.111 "Can insert something into a buffer?",
20.112 - StringSample.class, "insertBufferLjava_lang_String",
20.113 + StringSample.class, "insertBuffer__Ljava_lang_String_2",
20.114 "Ahojdo!"
20.115 );
20.116 }
20.117 @@ -130,7 +129,7 @@
20.118 int jh = StringSample.hashCode(j);
20.119 assertExec(
20.120 "Hashcode is the same " +jh,
20.121 - StringSample.class, "hashCodeILjava_lang_String",
20.122 + StringSample.class, "hashCode__ILjava_lang_String_2",
20.123 Double.valueOf(jh), j
20.124 );
20.125 }
20.126 @@ -139,28 +138,28 @@
20.127 int jh = StringSample.hashCode(j);
20.128 assertExec(
20.129 "Hashcode is the same " + jh,
20.130 - StringSample.class, "hashCodeILjava_lang_String",
20.131 + StringSample.class, "hashCode__ILjava_lang_String_2",
20.132 Double.valueOf(jh), j
20.133 );
20.134 }
20.135 @Test public void stringSwitch1() throws Exception {
20.136 assertExec(
20.137 "Get one",
20.138 - StringSample.class, "stringSwitchILjava_lang_String",
20.139 + StringSample.class, "stringSwitch__ILjava_lang_String_2",
20.140 Double.valueOf(1), "jedna"
20.141 );
20.142 }
20.143 @Test public void stringSwitch2() throws Exception {
20.144 assertExec(
20.145 "Get two",
20.146 - StringSample.class, "stringSwitchILjava_lang_String",
20.147 + StringSample.class, "stringSwitch__ILjava_lang_String_2",
20.148 Double.valueOf(2), "dve"
20.149 );
20.150 }
20.151 @Test public void stringSwitchDefault() throws Exception {
20.152 assertExec(
20.153 "Get -1",
20.154 - StringSample.class, "stringSwitchILjava_lang_String",
20.155 + StringSample.class, "stringSwitch__ILjava_lang_String_2",
20.156 Double.valueOf(-1), "none"
20.157 );
20.158 }
20.159 @@ -169,7 +168,7 @@
20.160 assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane");
20.161 assertExec(
20.162 "One A and one B adds to 3",
20.163 - StringSample.class, "countABILjava_lang_String",
20.164 + StringSample.class, "countAB__ILjava_lang_String_2",
20.165 Double.valueOf(3), "Ahoj Bedo!"
20.166 );
20.167
21.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Mon Dec 03 22:13:50 2012 +0100
21.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Tue Dec 04 11:21:10 2012 +0100
21.3 @@ -43,7 +43,7 @@
21.4
21.5 @JavaScriptBody(args = { "self", "n" },
21.6 body=
21.7 - "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();"
21.8 + "var cls = n.replace__Ljava_lang_String_2CC(n,'/','_').toString();"
21.9 + "var glb = self.fld_global;"
21.10 + "var vm = self.fld_vm;"
21.11 + "if (glb[cls]) return false;"
22.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Mon Dec 03 22:13:50 2012 +0100
22.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Tue Dec 04 11:21:10 2012 +0100
22.3 @@ -53,7 +53,7 @@
22.4 sb.append("\n var glb = global;");
22.5 sb.append("\n lazyVM.prototype.loadClass = function(res, name) {");
22.6 sb.append("\n var script = org_apidesign_vm4brwsr_VMLazy(true)."
22.7 - + "toJavaScriptLjava_lang_StringLjava_lang_ObjectLjava_lang_ObjectAB("
22.8 + + "toJavaScript__Ljava_lang_String_2Ljava_lang_Object_2Ljava_lang_Object_2_3B("
22.9 + " glb, self,"
22.10 + " loader.get(res + '.class')"
22.11 + ");");
22.12 @@ -77,13 +77,13 @@
22.13
22.14 @Test public void invokeStaticMethod() throws Exception {
22.15 assertExec("Trying to get -1", "test", Double.valueOf(-1),
22.16 - "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI"
22.17 + "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOne__I"
22.18 );
22.19 }
22.20
22.21 @Test public void loadDependantClass() throws Exception {
22.22 assertExec("Trying to get zero", "test", Double.valueOf(0),
22.23 - "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD"
22.24 + "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDbl__D"
22.25 );
22.26 }
22.27
23.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Mon Dec 03 22:13:50 2012 +0100
23.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Tue Dec 04 11:21:10 2012 +0100
23.3 @@ -42,7 +42,7 @@
23.4 Object ret;
23.5 try {
23.6 ret = code.invokeFunction(VMinVM.class.getName().replace('.', '_'), true);
23.7 - ret = code.invokeMethod(ret, "toJavaScriptLjava_lang_StringAB", arr);
23.8 + ret = code.invokeMethod(ret, "toJavaScript__Ljava_lang_String_2_3B", arr);
23.9 } catch (Exception ex) {
23.10 File f = File.createTempFile("execution", ".js");
23.11 FileWriter w = new FileWriter(f);