# HG changeset patch # User Jaroslav Tulach # Date 1354616470 -3600 # Node ID 001389026dbfcdab9a5c27cafe535be062459c63 # Parent 380f7ba7ef706d170a7975d880b285b37d8a1c0c# Parent 0bfcb658529097fe8f86b56265f206ca8229f295 Merging in JNI-like naming scheme from default branch diff -r 380f7ba7ef70 -r 001389026dbf core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptOnly.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptOnly.java Tue Dec 04 11:21:10 2012 +0100 @@ -0,0 +1,37 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.core; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Don't include given field or method in generated JavaScript. Rather + * generate completely independent JavaScript code. + * + * @author Jaroslav Tulach + */ +@Retention(RetentionPolicy.CLASS) +@Target({ ElementType.METHOD, ElementType.FIELD }) +public @interface JavaScriptOnly { + /** name of the variable to assign given value to */ + String name() default ""; + /** value to assign to given field */ + String value() default ""; +} diff -r 380f7ba7ef70 -r 001389026dbf core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptPrototype.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/main/java/org/apidesign/bck2brwsr/core/JavaScriptPrototype.java Tue Dec 04 11:21:10 2012 +0100 @@ -0,0 +1,41 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.core; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** Controls how JavaScript inheritance should be handled. + * @author Jaroslav Tulach + */ +@Retention(RetentionPolicy.CLASS) +@Target({ ElementType.TYPE }) +public @interface JavaScriptPrototype { + /** Expression that identifies the function where all methods + * should be added into. + * @return name of function to contain methods found in given class + */ + String container(); + /** Expression that defines the way to construct prototype for this + * class. + * @return expression to construct prototype + */ + String prototype(); +} diff -r 380f7ba7ef70 -r 001389026dbf core/src/main/java/org/apidesign/bck2brwsr/core/NoJavaScript.java --- a/core/src/main/java/org/apidesign/bck2brwsr/core/NoJavaScript.java Mon Dec 03 22:13:50 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/** - * Back 2 Browser Bytecode Translator - * Copyright (C) 2012 Jaroslav Tulach - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. Look for COPYING file in the top folder. - * If not, see http://opensource.org/licenses/GPL-2.0. - */ -package org.apidesign.bck2brwsr.core; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** Don't include given field or method in generated JavaScript. - * - * @author Jaroslav Tulach - */ -@Retention(RetentionPolicy.CLASS) -@Target({ ElementType.METHOD, ElementType.FIELD }) -public @interface NoJavaScript { - -} diff -r 380f7ba7ef70 -r 001389026dbf emul/src/main/java/java/lang/AbstractStringBuilder.java --- a/emul/src/main/java/java/lang/AbstractStringBuilder.java Mon Dec 03 22:13:50 2012 +0100 +++ b/emul/src/main/java/java/lang/AbstractStringBuilder.java Tue Dec 04 11:21:10 2012 +0100 @@ -25,8 +25,6 @@ package java.lang; -import org.apidesign.bck2brwsr.core.JavaScriptBody; - /** * A mutable sequence of characters. *

@@ -600,22 +598,8 @@ * @param i an {@code int}. * @return a reference to this object. */ - @JavaScriptBody( - args={ "self", "i" }, - body="return java_lang_AbstractStringBuilder(true).appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());" - ) public AbstractStringBuilder append(int i) { - if (i == Integer.MIN_VALUE) { - append("-2147483648"); - return this; - } - int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1 - : Integer.stringSize(i); - int spaceNeeded = count + appendedLength; - ensureCapacityInternal(spaceNeeded); - Integer.getChars(i, spaceNeeded, value); - count = spaceNeeded; - return this; + return append(Integer.toString(i)); } /** diff -r 380f7ba7ef70 -r 001389026dbf emul/src/main/java/java/lang/Object.java --- a/emul/src/main/java/java/lang/Object.java Mon Dec 03 22:13:50 2012 +0100 +++ b/emul/src/main/java/java/lang/Object.java Tue Dec 04 11:21:10 2012 +0100 @@ -26,6 +26,7 @@ package java.lang; import org.apidesign.bck2brwsr.core.JavaScriptBody; +import org.apidesign.bck2brwsr.core.JavaScriptPrototype; /** * Class {@code Object} is the root of the class hierarchy. @@ -36,6 +37,7 @@ * @see java.lang.Class * @since JDK1.0 */ +@JavaScriptPrototype(container = "Object.prototype", prototype = "new Object") public class Object { @JavaScriptBody(args = {}, body = "") diff -r 380f7ba7ef70 -r 001389026dbf emul/src/main/java/java/lang/String.java --- a/emul/src/main/java/java/lang/String.java Mon Dec 03 22:13:50 2012 +0100 +++ b/emul/src/main/java/java/lang/String.java Tue Dec 04 11:21:10 2012 +0100 @@ -25,8 +25,11 @@ package java.lang; +import java.util.Comparator; import org.apidesign.bck2brwsr.core.ExtraJavaScript; -import java.util.Comparator; +import org.apidesign.bck2brwsr.core.JavaScriptBody; +import org.apidesign.bck2brwsr.core.JavaScriptOnly; +import org.apidesign.bck2brwsr.core.JavaScriptPrototype; /** * The String class represents character strings. All @@ -99,25 +102,29 @@ @ExtraJavaScript( resource="/org/apidesign/vm4brwsr/emul/java_lang_String.js", - processByteCode=false + processByteCode=true ) +@JavaScriptPrototype(container = "String.prototype", prototype = "new String") public final class String implements java.io.Serializable, Comparable, CharSequence { - /** The value is used for character storage. */ - private final char value[]; - - /** The offset is the first index of the storage that is used. */ - private final int offset; - - /** The count is the number of characters in the String. */ - private final int count; - + @JavaScriptOnly /** Cache the hash code for the string */ private int hash; // Default to 0 + + /** real string to delegate to */ + private Object r; /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = -6849794470754667710L; + + @JavaScriptOnly(name="toString", value="function() { return this.fld_r; }") + private static void jsToString() { + } + + @JavaScriptOnly(name="valueOf", value="function() { return this.toString().valueOf(); }") + private static void jsValudOf() { + } /** * Class String is special cased within the Serialization Stream Protocol. @@ -140,9 +147,7 @@ * unnecessary since Strings are immutable. */ public String() { - this.offset = 0; - this.count = 0; - this.value = new char[0]; + this.r = ""; } /** @@ -156,23 +161,7 @@ * A {@code String} */ public String(String original) { - int size = original.count; - char[] originalValue = original.value; - char[] v; - if (originalValue.length > size) { - // The array representing the String is bigger than the new - // String itself. Perhaps this constructor is being called - // in order to trim the baggage, so make a copy of the array. - int off = original.offset; - v = AbstractStringBuilder.copyOfRange(originalValue, off, off+size); - } else { - // The array representing the String is the same - // size as the String, so no point in making a copy. - v = originalValue; - } - this.offset = 0; - this.count = size; - this.value = v; + this.r = original.toString(); } /** @@ -184,11 +173,13 @@ * @param value * The initial value of the string */ + @JavaScriptBody(args = { "self", "charArr" }, body= + "for (var i = 0; i < charArr.length; i++) {\n" + + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n" + + "}\n" + + "self.fld_r = charArr.join('');\n" + ) public String(char value[]) { - int size = value.length; - this.offset = 0; - this.count = size; - this.value = AbstractStringBuilder.copyOf(value, size); } /** @@ -212,20 +203,14 @@ * If the {@code offset} and {@code count} arguments index * characters outside the bounds of the {@code value} array */ + @JavaScriptBody(args = { "self", "charArr", "off", "cnt" }, body = + "var up = off + cnt;\n" + + "for (var i = off; i < up; i++) {\n" + + " if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);\n" + + "}\n" + + "self.fld_r = charArr.slice(off, up).join(\"\");\n" + ) public String(char value[], int offset, int count) { - if (offset < 0) { - throw new StringIndexOutOfBoundsException(offset); - } - if (count < 0) { - throw new StringIndexOutOfBoundsException(count); - } - // Note: offset or count might be near -1>>>1. - if (offset > value.length - count) { - throw new StringIndexOutOfBoundsException(offset + count); - } - this.offset = 0; - this.count = count; - this.value = AbstractStringBuilder.copyOfRange(value, offset, offset+count); } /** @@ -292,9 +277,7 @@ Character.toSurrogates(c, v, j++); } - this.value = v; - this.count = n; - this.offset = 0; + this.r = new String(v, 0, n); } /** @@ -351,9 +334,7 @@ value[i] = (char) (hibyte | (ascii[i + offset] & 0xff)); } } - this.offset = 0; - this.count = count; - this.value = value; + this.r = new String(value, 0, count); } /** @@ -578,9 +559,7 @@ for (int i = 0; i < length; i++) { v[i] = (char)bytes[offset++]; } - this.offset = 0; - this.count = v.length; - this.value = v; + this.r = new String(v, 0, v.length); } /** @@ -613,10 +592,7 @@ * A {@code StringBuffer} */ public String(StringBuffer buffer) { - String result = buffer.toString(); - this.value = result.value; - this.count = result.count; - this.offset = result.offset; + this.r = buffer.toString(); } /** @@ -635,10 +611,7 @@ * @since 1.5 */ public String(StringBuilder builder) { - String result = builder.toString(); - this.value = result.value; - this.count = result.count; - this.offset = result.offset; + this.r = builder.toString(); } /** @@ -649,8 +622,9 @@ * @return the length of the sequence of characters represented by this * object. */ + @JavaScriptBody(args = "self", body = "return self.toString().length;") public int length() { - return count; + throw new UnsupportedOperationException(); } /** @@ -661,8 +635,9 @@ * * @since 1.6 */ + @JavaScriptBody(args = "self", body="return self.toString().length === 0;") public boolean isEmpty() { - return count == 0; + return length() == 0; } /** @@ -683,11 +658,11 @@ * argument is negative or not less than the length of this * string. */ + @JavaScriptBody(args = { "self", "index" }, + body = "return self.toString().charCodeAt(index);" + ) public char charAt(int index) { - if ((index < 0) || (index >= count)) { - throw new StringIndexOutOfBoundsException(index); - } - return value[index + offset]; + throw new UnsupportedOperationException(); } /** @@ -713,10 +688,10 @@ * @since 1.5 */ public int codePointAt(int index) { - if ((index < 0) || (index >= count)) { + if ((index < 0) || (index >= length())) { throw new StringIndexOutOfBoundsException(index); } - return Character.codePointAtImpl(value, offset + index, offset + count); + return Character.codePointAtImpl(toCharArray(), offset() + index, offset() + length()); } /** @@ -743,10 +718,10 @@ */ public int codePointBefore(int index) { int i = index - 1; - if ((i < 0) || (i >= count)) { + if ((i < 0) || (i >= length())) { throw new StringIndexOutOfBoundsException(index); } - return Character.codePointBeforeImpl(value, offset + index, offset); + return Character.codePointBeforeImpl(toCharArray(), offset() + index, offset()); } /** @@ -771,10 +746,10 @@ * @since 1.5 */ public int codePointCount(int beginIndex, int endIndex) { - if (beginIndex < 0 || endIndex > count || beginIndex > endIndex) { + if (beginIndex < 0 || endIndex > length() || beginIndex > endIndex) { throw new IndexOutOfBoundsException(); } - return Character.codePointCountImpl(value, offset+beginIndex, endIndex-beginIndex); + return Character.codePointCountImpl(toCharArray(), offset()+beginIndex, endIndex-beginIndex); } /** @@ -798,19 +773,25 @@ * @since 1.5 */ public int offsetByCodePoints(int index, int codePointOffset) { - if (index < 0 || index > count) { + if (index < 0 || index > length()) { throw new IndexOutOfBoundsException(); } - return Character.offsetByCodePointsImpl(value, offset, count, - offset+index, codePointOffset) - offset; + return Character.offsetByCodePointsImpl(toCharArray(), offset(), length(), + offset()+index, codePointOffset) - offset(); } /** * Copy characters from this string into dst starting at dstBegin. * This method doesn't perform any range checking. */ + @JavaScriptBody(args = { "self", "arr", "to" }, body = + "var s = self.toString();\n" + + "for (var i = 0; i < s.length; i++) {\n" + + " arr[to++] = s[i];\n" + + "}" + ) void getChars(char dst[], int dstBegin) { - AbstractStringBuilder.arraycopy(value, offset, dst, dstBegin, count); + AbstractStringBuilder.arraycopy(toCharArray(), offset(), dst, dstBegin, length()); } /** @@ -843,17 +824,23 @@ *

  • dstBegin+(srcEnd-srcBegin) is larger than * dst.length */ + @JavaScriptBody(args = { "self", "beg", "end", "arr", "dst" }, body= + "var s = self.toString();\n" + + "while (beg < end) {\n" + + " arr[dst++] = s[beg++];\n" + + "}\n" + ) public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) { if (srcBegin < 0) { throw new StringIndexOutOfBoundsException(srcBegin); } - if (srcEnd > count) { + if (srcEnd > length()) { throw new StringIndexOutOfBoundsException(srcEnd); } if (srcBegin > srcEnd) { throw new StringIndexOutOfBoundsException(srcEnd - srcBegin); } - AbstractStringBuilder.arraycopy(value, offset + srcBegin, dst, dstBegin, + AbstractStringBuilder.arraycopy(toCharArray(), offset() + srcBegin, dst, dstBegin, srcEnd - srcBegin); } @@ -905,16 +892,16 @@ if (srcBegin < 0) { throw new StringIndexOutOfBoundsException(srcBegin); } - if (srcEnd > count) { + if (srcEnd > length()) { throw new StringIndexOutOfBoundsException(srcEnd); } if (srcBegin > srcEnd) { throw new StringIndexOutOfBoundsException(srcEnd - srcBegin); } int j = dstBegin; - int n = offset + srcEnd; - int i = offset + srcBegin; - char[] val = value; /* avoid getfield opcode */ + int n = offset() + srcEnd; + int i = offset() + srcBegin; + char[] val = toCharArray(); /* avoid getfield opcode */ while (i < n) { dst[j++] = (byte)val[i++]; @@ -1010,18 +997,22 @@ * @see #compareTo(String) * @see #equalsIgnoreCase(String) */ + @JavaScriptBody(args = { "self", "obj" }, body = + "return obj.$instOf_java_lang_String && " + + "self.toString() === obj.toString();" + ) public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; - int n = count; - if (n == anotherString.count) { - char v1[] = value; - char v2[] = anotherString.value; - int i = offset; - int j = anotherString.offset; + int n = length(); + if (n == anotherString.length()) { + char v1[] = toCharArray(); + char v2[] = anotherString.toCharArray(); + int i = offset(); + int j = anotherString.offset(); while (n-- != 0) { if (v1[i++] != v2[j++]) return false; @@ -1067,15 +1058,15 @@ * @since 1.5 */ public boolean contentEquals(CharSequence cs) { - if (count != cs.length()) + if (length() != cs.length()) return false; // Argument is a StringBuffer, StringBuilder if (cs instanceof AbstractStringBuilder) { - char v1[] = value; + char v1[] = toCharArray(); char v2[] = ((AbstractStringBuilder)cs).getValue(); - int i = offset; + int i = offset(); int j = 0; - int n = count; + int n = length(); while (n-- != 0) { if (v1[i++] != v2[j++]) return false; @@ -1086,10 +1077,10 @@ if (cs.equals(this)) return true; // Argument is a generic CharSequence - char v1[] = value; - int i = offset; + char v1[] = toCharArray(); + int i = offset(); int j = 0; - int n = count; + int n = length(); while (n-- != 0) { if (v1[i++] != cs.charAt(j++)) return false; @@ -1127,8 +1118,8 @@ */ public boolean equalsIgnoreCase(String anotherString) { return (this == anotherString) ? true : - (anotherString != null) && (anotherString.count == count) && - regionMatches(true, 0, anotherString, 0, count); + (anotherString != null) && (anotherString.length() == length()) && + regionMatches(true, 0, anotherString, 0, length()); } /** @@ -1173,13 +1164,13 @@ * lexicographically greater than the string argument. */ public int compareTo(String anotherString) { - int len1 = count; - int len2 = anotherString.count; + int len1 = length(); + int len2 = anotherString.length(); int n = Math.min(len1, len2); - char v1[] = value; - char v2[] = anotherString.value; - int i = offset; - int j = anotherString.offset; + char v1[] = toCharArray(); + char v2[] = anotherString.toCharArray(); + int i = offset(); + int j = anotherString.offset(); if (i == j) { int k = i; @@ -1218,6 +1209,11 @@ */ public static final Comparator CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator(); + + private static int offset() { + return 0; + } + private static class CaseInsensitiveComparator implements Comparator, java.io.Serializable { // use serialVersionUID from JDK 1.2.2 for interoperability @@ -1304,13 +1300,13 @@ */ public boolean regionMatches(int toffset, String other, int ooffset, int len) { - char ta[] = value; - int to = offset + toffset; - char pa[] = other.value; - int po = other.offset + ooffset; + char ta[] = toCharArray(); + int to = offset() + toffset; + char pa[] = other.toCharArray(); + int po = other.offset() + ooffset; // Note: toffset, ooffset, or len might be near -1>>>1. - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) - || (ooffset > (long)other.count - len)) { + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len) + || (ooffset > (long)other.length() - len)) { return false; } while (len-- > 0) { @@ -1373,13 +1369,13 @@ */ public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) { - char ta[] = value; - int to = offset + toffset; - char pa[] = other.value; - int po = other.offset + ooffset; + char ta[] = toCharArray(); + int to = offset() + toffset; + char pa[] = other.toCharArray(); + int po = other.offset() + ooffset; // Note: toffset, ooffset, or len might be near -1>>>1. - if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) || - (ooffset > (long)other.count - len)) { + if ((ooffset < 0) || (toffset < 0) || (toffset > (long)length() - len) || + (ooffset > (long)other.length() - len)) { return false; } while (len-- > 0) { @@ -1428,14 +1424,18 @@ * this.substring(toffset).startsWith(prefix) * */ + @JavaScriptBody(args = { "self", "find", "from" }, body= + "find = find.toString();\n" + + "return self.toString().substring(from, find.length) === find;\n" + ) public boolean startsWith(String prefix, int toffset) { - char ta[] = value; - int to = offset + toffset; - char pa[] = prefix.value; - int po = prefix.offset; - int pc = prefix.count; + char ta[] = toCharArray(); + int to = offset() + toffset; + char pa[] = prefix.toCharArray(); + int po = prefix.offset(); + int pc = prefix.length(); // Note: toffset might be near -1>>>1. - if ((toffset < 0) || (toffset > count - pc)) { + if ((toffset < 0) || (toffset > length() - pc)) { return false; } while (--pc >= 0) { @@ -1475,7 +1475,7 @@ * as determined by the {@link #equals(Object)} method. */ public boolean endsWith(String suffix) { - return startsWith(suffix, count - suffix.count); + return startsWith(suffix, length() - suffix.length()); } /** @@ -1491,12 +1491,21 @@ * * @return a hash code value for this object. */ + @JavaScriptBody(args = "self", body = + "var h = 0;\n" + + "var s = self.toString();\n" + + "for (var i = 0; i < s.length; i++) {\n" + + " var high = (h >> 16) & 0xffff, low = h & 0xffff;\n" + + " h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;\n" + + "}\n" + + "return h;\n" + ) public int hashCode() { int h = hash; - if (h == 0 && count > 0) { - int off = offset; - char val[] = value; - int len = count; + if (h == 0 && length() > 0) { + int off = offset(); + char val[] = toCharArray(); + int len = length(); for (int i = 0; i < len; i++) { h = 31*h + val[off++]; @@ -1573,10 +1582,14 @@ * than or equal to fromIndex, or -1 * if the character does not occur. */ + @JavaScriptBody(args = { "self", "ch", "from" }, body = + "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" + + "return self.toString().indexOf(ch, from);\n" + ) public int indexOf(int ch, int fromIndex) { if (fromIndex < 0) { fromIndex = 0; - } else if (fromIndex >= count) { + } else if (fromIndex >= length()) { // Note: fromIndex might be near -1>>>1. return -1; } @@ -1584,9 +1597,9 @@ if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) { // handle most cases here (ch is a BMP code point or a // negative value (invalid code point)) - final char[] value = this.value; - final int offset = this.offset; - final int max = offset + count; + final char[] value = this.toCharArray(); + final int offset = this.offset(); + final int max = offset + length(); for (int i = offset + fromIndex; i < max ; i++) { if (value[i] == ch) { return i - offset; @@ -1603,11 +1616,11 @@ */ private int indexOfSupplementary(int ch, int fromIndex) { if (Character.isValidCodePoint(ch)) { - final char[] value = this.value; - final int offset = this.offset; + final char[] value = this.toCharArray(); + final int offset = this.offset(); final char hi = Character.highSurrogate(ch); final char lo = Character.lowSurrogate(ch); - final int max = offset + count - 1; + final int max = offset + length() - 1; for (int i = offset + fromIndex; i < max; i++) { if (value[i] == hi && value[i+1] == lo) { return i - offset; @@ -1641,7 +1654,7 @@ * -1 if the character does not occur. */ public int lastIndexOf(int ch) { - return lastIndexOf(ch, count - 1); + return lastIndexOf(ch, length() - 1); } /** @@ -1678,13 +1691,17 @@ * than or equal to fromIndex, or -1 * if the character does not occur before that point. */ + @JavaScriptBody(args = { "self", "ch", "from" }, body = + "if (typeof ch === 'number') ch = String.fromCharCode(ch);\n" + + "return self.toString().lastIndexOf(ch, from);" + ) public int lastIndexOf(int ch, int fromIndex) { if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) { // handle most cases here (ch is a BMP code point or a // negative value (invalid code point)) - final char[] value = this.value; - final int offset = this.offset; - int i = offset + Math.min(fromIndex, count - 1); + final char[] value = this.toCharArray(); + final int offset = this.offset(); + int i = offset + Math.min(fromIndex, length() - 1); for (; i >= offset ; i--) { if (value[i] == ch) { return i - offset; @@ -1701,11 +1718,11 @@ */ private int lastIndexOfSupplementary(int ch, int fromIndex) { if (Character.isValidCodePoint(ch)) { - final char[] value = this.value; - final int offset = this.offset; + final char[] value = this.toCharArray(); + final int offset = this.offset(); char hi = Character.highSurrogate(ch); char lo = Character.lowSurrogate(ch); - int i = offset + Math.min(fromIndex, count - 2); + int i = offset + Math.min(fromIndex, length() - 2); for (; i >= offset; i--) { if (value[i] == hi && value[i+1] == lo) { return i - offset; @@ -1749,9 +1766,11 @@ * starting at the specified index, * or {@code -1} if there is no such occurrence. */ + @JavaScriptBody(args = { "self", "str", "fromIndex" }, body = + "return self.toString().indexOf(str.toString(), fromIndex) >= 0;" + ) public int indexOf(String str, int fromIndex) { - return indexOf(value, offset, count, - str.value, str.offset, str.count, fromIndex); + return indexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex); } /** @@ -1821,7 +1840,7 @@ * or {@code -1} if there is no such occurrence. */ public int lastIndexOf(String str) { - return lastIndexOf(str, count); + return lastIndexOf(str, length()); } /** @@ -1840,9 +1859,11 @@ * searching backward from the specified index, * or {@code -1} if there is no such occurrence. */ + @JavaScriptBody(args = { "self", "s", "from" }, body = + "return self.toString().lastIndexOf(s.toString(), from);" + ) public int lastIndexOf(String str, int fromIndex) { - return lastIndexOf(value, offset, count, - str.value, str.offset, str.count, fromIndex); + return lastIndexOf(toCharArray(), offset(), length(), str.toCharArray(), str.offset(), str.length(), fromIndex); } /** @@ -1922,7 +1943,7 @@ * length of this String object. */ public String substring(int beginIndex) { - return substring(beginIndex, count); + return substring(beginIndex, length()); } /** @@ -1947,18 +1968,21 @@ * beginIndex is larger than * endIndex. */ + @JavaScriptBody(args = { "self", "beginIndex", "endIndex" }, body = + "return self.toString().substring(beginIndex, endIndex);" + ) public String substring(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } - if (endIndex > count) { + if (endIndex > length()) { throw new StringIndexOutOfBoundsException(endIndex); } if (beginIndex > endIndex) { throw new StringIndexOutOfBoundsException(endIndex - beginIndex); } - return ((beginIndex == 0) && (endIndex == count)) ? this : - new String(value, offset + beginIndex, endIndex - beginIndex); + return ((beginIndex == 0) && (endIndex == length())) ? this : + new String(toCharArray(), offset() + beginIndex, endIndex - beginIndex); } /** @@ -2018,10 +2042,10 @@ if (otherLen == 0) { return this; } - char buf[] = new char[count + otherLen]; - getChars(0, count, buf, 0); - str.getChars(0, otherLen, buf, count); - return new String(buf, 0, count + otherLen); + char buf[] = new char[length() + otherLen]; + getChars(0, length(), buf, 0); + str.getChars(0, otherLen, buf, length()); + return new String(buf, 0, length() + otherLen); } /** @@ -2053,12 +2077,24 @@ * @return a string derived from this string by replacing every * occurrence of oldChar with newChar. */ + @JavaScriptBody(args = { "self", "arg1", "arg2" }, body = + "if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);\n" + + "if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);\n" + + "var s = self.toString();\n" + + "for (;;) {\n" + + " var ret = s.replace(arg1, arg2);\n" + + " if (ret === s) {\n" + + " return ret;\n" + + " }\n" + + " s = ret;\n" + + "}" + ) public String replace(char oldChar, char newChar) { if (oldChar != newChar) { - int len = count; + int len = length(); int i = -1; - char[] val = value; /* avoid getfield opcode */ - int off = offset; /* avoid getfield opcode */ + char[] val = toCharArray(); /* avoid getfield opcode */ + int off = offset(); /* avoid getfield opcode */ while (++i < len) { if (val[off + i] == oldChar) { @@ -2720,10 +2756,10 @@ * trailing white space. */ public String trim() { - int len = count; + int len = length(); int st = 0; - int off = offset; /* avoid getfield opcode */ - char[] val = value; /* avoid getfield opcode */ + int off = offset(); /* avoid getfield opcode */ + char[] val = toCharArray(); /* avoid getfield opcode */ while ((st < len) && (val[off + st] <= ' ')) { st++; @@ -2731,7 +2767,7 @@ while ((st < len) && (val[off + len - 1] <= ' ')) { len--; } - return ((st > 0) || (len < count)) ? substring(st, len) : this; + return ((st > 0) || (len < length())) ? substring(st, len) : this; } /** @@ -2739,6 +2775,7 @@ * * @return the string itself. */ + @JavaScriptBody(args = "self", body = "return self.toString();") public String toString() { return this; } @@ -2750,9 +2787,10 @@ * of this string and whose contents are initialized to contain * the character sequence represented by this string. */ + @JavaScriptBody(args = "self", body = "return self.toString().split('');") public char[] toCharArray() { - char result[] = new char[count]; - getChars(0, count, result, 0); + char result[] = new char[length()]; + getChars(0, length(), result, 0); return result; } diff -r 380f7ba7ef70 -r 001389026dbf emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Mon Dec 03 22:13:50 2012 +0100 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Tue Dec 04 11:21:10 2012 +0100 @@ -1,2213 +1,2 @@ -/** - * Back 2 Browser Bytecode Translator - * Copyright (C) 2012 Jaroslav Tulach - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. Look for COPYING file in the top folder. - * If not, see http://opensource.org/licenses/GPL-2.0. - */ - - -function java_lang_String_consVAC(self,charArr) { - for (var i = 0; i < charArr.length; i++) { - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]); - } - self.r = charArr.join(""); -} - -function java_lang_String_consVACII(self, charArr, off, cnt) { - var up = off + cnt; - for (var i = off; i < up; i++) { - if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]); - } - self.r = charArr.slice(off, up).join(""); -} - -function java_lang_String_charAtCI(arg0,arg1) { - return arg0.toString().charCodeAt(arg1); -} -function java_lang_String_lengthI(arg0) { - return arg0.toString().length; -} -function java_lang_String_isEmptyZ(arg0) { - return arg0.toString().length === 0; -} -function java_lang_String_valueOfLjava_lang_StringI(n) { - return n.toString(); -} - -function java_lang_String_startsWithZLjava_lang_StringI(self,find,from) { - find = find.toString(); - return self.toString().substring(from, find.length) === find; -} -function java_lang_String_startsWithZLjava_lang_String(self,find) { - find = find.toString(); - return self.toString().substring(0, find.length) === find; -} -function java_lang_String_endsWithZLjava_lang_String(self,find) { - self = self.toString(); - find = find.toString(); - if (find.length > self.length) { - return false; - } - return self.substring(self.length - find.length) === find; -} - -function java_lang_String_indexOfII(arg0,ch) { - if (typeof ch === 'number') ch = String.fromCharCode(ch); - return arg0.toString().indexOf(ch); -} -function java_lang_String_indexOfIII(arg0,ch,from) { - if (typeof ch === 'number') ch = String.fromCharCode(ch); - return arg0.toString().indexOf(ch, from); -} - -function java_lang_String_lastIndexOfII(arg0,ch) { - if (typeof ch === 'number') ch = String.fromCharCode(ch); - return arg0.toString().lastIndexOf(ch); -} -function java_lang_String_lastIndexOfIII(arg0,ch,from) { - if (typeof ch === 'number') ch = String.fromCharCode(ch); - return arg0.toString().lastIndexOf(ch, from); -} -function java_lang_String_lastIndexOfILjava_lang_String(arg0,s) { - return arg0.toString().lastIndexOf(s.toString()); -} -function java_lang_String_lastIndexOfILjava_lang_StringI(arg0,s,from) { - return arg0.toString().lastIndexOf(s.toString(), from); -} - - -function java_lang_String_getCharsVACI(self, arr, to) { - var s = self.toString(); - for (var i = 0; i < s.length; i++) { - arr[to++] = s[i]; - } -} - -/* -function java_lang_String_codePointAtII(arg0,arg1) { - var arg2; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 27 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11 - case 4: stack.push(arg1); // 27 - case 5: stack.push(arg0); // 42 - case 6: stack.push(stack.pop().count); // 180 1 97 - case 9: if (stack.pop() > stack.pop()) { gt = 21; continue; } // 161 0 12 - case 12: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206 - case 15: stack.push(stack[stack.length - 1]); // 89 - case 16: stack.push(arg1); // 27 - case 17: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169 - case 20: // 191 - case 21: stack.push(arg0); // 42 - case 22: stack.push(stack.pop().value); // 180 1 100 - case 25: stack.push(arg0); // 42 - case 26: stack.push(stack.pop().offset); // 180 1 99 - case 29: stack.push(arg1); // 27 - case 30: stack.push(stack.pop() + stack.pop()); // 96 - case 31: stack.push(arg0); // 42 - case 32: stack.push(stack.pop().offset); // 180 1 99 - case 35: stack.push(arg0); // 42 - case 36: stack.push(stack.pop().count); // 180 1 97 - case 39: stack.push(stack.pop() + stack.pop()); // 96 - 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 - case 43: return stack.pop(); // 172 - } -} -function java_lang_String_codePointBeforeII(arg0,arg1) { - var arg2; - var arg3; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 27 - case 1: stack.push(1); // 4 - case 2: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 3: arg2 = stack.pop(); // 61 - case 4: stack.push(arg2); // 28 - case 5: if (stack.pop() < 0) { gt = 16; continue; } // 155 0 11 - case 8: stack.push(arg2); // 28 - case 9: stack.push(arg0); // 42 - case 10: stack.push(stack.pop().count); // 180 1 97 - case 13: if (stack.pop() > stack.pop()) { gt = 25; continue; } // 161 0 12 - case 16: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206 - case 19: stack.push(stack[stack.length - 1]); // 89 - case 20: stack.push(arg1); // 27 - case 21: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169 - case 24: // 191 - case 25: stack.push(arg0); // 42 - case 26: stack.push(stack.pop().value); // 180 1 100 - case 29: stack.push(arg0); // 42 - case 30: stack.push(stack.pop().offset); // 180 1 99 - case 33: stack.push(arg1); // 27 - case 34: stack.push(stack.pop() + stack.pop()); // 96 - case 35: stack.push(arg0); // 42 - case 36: stack.push(stack.pop().offset); // 180 1 99 - 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 - case 42: return stack.pop(); // 172 - } -} -function java_lang_String_codePointCountIII(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 27 - case 1: if (stack.pop() < 0) { gt = 17; continue; } // 155 0 16 - case 4: stack.push(arg2); // 28 - case 5: stack.push(arg0); // 42 - case 6: stack.push(stack.pop().count); // 180 1 97 - case 9: if (stack.pop() < stack.pop()) { gt = 17; continue; } // 163 0 8 - case 12: stack.push(arg1); // 27 - case 13: stack.push(arg2); // 28 - case 14: if (stack.pop() >= stack.pop()) { gt = 25; continue; } // 164 0 11 - case 17: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194 - case 20: stack.push(stack[stack.length - 1]); // 89 - case 21: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124 - case 24: // 191 - case 25: stack.push(arg0); // 42 - case 26: stack.push(stack.pop().value); // 180 1 100 - case 29: stack.push(arg0); // 42 - case 30: stack.push(stack.pop().offset); // 180 1 99 - case 33: stack.push(arg1); // 27 - case 34: stack.push(stack.pop() + stack.pop()); // 96 - case 35: stack.push(arg2); // 28 - case 36: stack.push(arg1); // 27 - case 37: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - 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 - case 41: return stack.pop(); // 172 - } -} -function java_lang_String_offsetByCodePointsIII(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(5); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 27 - case 1: if (stack.pop() < 0) { gt = 12; continue; } // 155 0 11 - case 4: stack.push(arg1); // 27 - case 5: stack.push(arg0); // 42 - case 6: stack.push(stack.pop().count); // 180 1 97 - case 9: if (stack.pop() >= stack.pop()) { gt = 20; continue; } // 164 0 11 - case 12: stack.push(new java_lang_IndexOutOfBoundsException); // 187 0 194 - case 15: stack.push(stack[stack.length - 1]); // 89 - case 16: { java_lang_IndexOutOfBoundsException_consV(stack.pop()); } // 183 1 124 - case 19: // 191 - case 20: stack.push(arg0); // 42 - case 21: stack.push(stack.pop().value); // 180 1 100 - case 24: stack.push(arg0); // 42 - case 25: stack.push(stack.pop().offset); // 180 1 99 - case 28: stack.push(arg0); // 42 - case 29: stack.push(stack.pop().count); // 180 1 97 - case 32: stack.push(arg0); // 42 - case 33: stack.push(stack.pop().offset); // 180 1 99 - case 36: stack.push(arg1); // 27 - case 37: stack.push(stack.pop() + stack.pop()); // 96 - case 38: stack.push(arg2); // 28 - 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 - case 42: stack.push(arg0); // 42 - case 43: stack.push(stack.pop().offset); // 180 1 99 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 47: return stack.pop(); // 172 - } -} -*/ - -// public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) { -function java_lang_String_getCharsVIIACAI(arg0,arg1,arg2,arg3,arg4) { - var s = arg0.toString(); - while (arg1 < arg2) { - arg3[arg4++] = s[arg1++]; - } -} - -/* -function java_lang_String_getBytesVIIABI(arg0,arg1,arg2,arg3,arg4) { - var arg5; - var arg6; - var arg7; - var arg8; - var arg9; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 27 - case 1: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 12 - case 4: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206 - case 7: stack.push(stack[stack.length - 1]); // 89 - case 8: stack.push(arg1); // 27 - case 9: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169 - case 12: // 191 - case 13: stack.push(arg2); // 28 - case 14: stack.push(arg0); // 42 - case 15: stack.push(stack.pop().count); // 180 1 97 - case 18: if (stack.pop() >= stack.pop()) { gt = 30; continue; } // 164 0 12 - case 21: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206 - case 24: stack.push(stack[stack.length - 1]); // 89 - case 25: stack.push(arg2); // 28 - case 26: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169 - case 29: // 191 - case 30: stack.push(arg1); // 27 - case 31: stack.push(arg2); // 28 - case 32: if (stack.pop() >= stack.pop()) { gt = 46; continue; } // 164 0 14 - case 35: stack.push(new java_lang_StringIndexOutOfBoundsException); // 187 0 206 - case 38: stack.push(stack[stack.length - 1]); // 89 - case 39: stack.push(arg2); // 28 - case 40: stack.push(arg1); // 27 - case 41: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 42: { var v0 = stack.pop(); java_lang_StringIndexOutOfBoundsException_consVI(stack.pop(), v0); } // 183 1 169 - case 45: // 191 - case 46: stack.push(arg4); // 21 4 - case 48: arg5 = stack.pop() // 54 5 - case 50: stack.push(arg0); // 42 - case 51: stack.push(stack.pop().offset); // 180 1 99 - case 54: stack.push(arg2); // 28 - case 55: stack.push(stack.pop() + stack.pop()); // 96 - case 56: arg6 = stack.pop() // 54 6 - case 58: stack.push(arg0); // 42 - case 59: stack.push(stack.pop().offset); // 180 1 99 - case 62: stack.push(arg1); // 27 - case 63: stack.push(stack.pop() + stack.pop()); // 96 - case 64: arg7 = stack.pop() // 54 7 - case 66: stack.push(arg0); // 42 - case 67: stack.push(stack.pop().value); // 180 1 100 - case 70: arg8 = stack.pop() // 58 8 - case 72: stack.push(arg7); // 21 7 - case 74: stack.push(arg6); // 21 6 - case 76: if (stack.pop() <= stack.pop()) { gt = 98; continue; } // 162 0 22 - case 79: stack.push(arg3); // 45 - case 80: stack.push(arg5); // 21 5 - case 82: arg5++; // 132 5 1 - case 85: stack.push(arg8); // 25 8 - case 87: stack.push(arg7); // 21 7 - case 89: arg7++; // 132 7 1 - case 92: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 93: // number conversion // 145 - case 94: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 84 - case 95: gt = 72; continue; // 167 255 233 - case 98: return; // 177 - } -} -function java_lang_String_getBytesABLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198 - case 7: stack.push(stack[stack.length - 1]); // 89 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128 - case 11: // 191 - case 12: stack.push(arg1); // 43 - case 13: stack.push(arg0); // 42 - case 14: stack.push(stack.pop().value); // 180 1 100 - case 17: stack.push(arg0); // 42 - case 18: stack.push(stack.pop().offset); // 180 1 99 - case 21: stack.push(arg0); // 42 - case 22: stack.push(stack.pop().count); // 180 1 97 - 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 - case 28: return stack.pop(); // 176 - } -} -function java_lang_String_getBytesABLjava_nio_charset_Charset(arg0,arg1) { - var arg2; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198 - case 7: stack.push(stack[stack.length - 1]); // 89 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128 - case 11: // 191 - case 12: stack.push(arg1); // 43 - case 13: stack.push(arg0); // 42 - case 14: stack.push(stack.pop().value); // 180 1 100 - case 17: stack.push(arg0); // 42 - case 18: stack.push(stack.pop().offset); // 180 1 99 - case 21: stack.push(arg0); // 42 - case 22: stack.push(stack.pop().count); // 180 1 97 - 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 - case 28: return stack.pop(); // 176 - } -} -function java_lang_String_getBytesAB(arg0) { - var arg1; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().value); // 180 1 100 - case 4: stack.push(arg0); // 42 - case 5: stack.push(stack.pop().offset); // 180 1 99 - case 8: stack.push(arg0); // 42 - case 9: stack.push(stack.pop().count); // 180 1 97 - 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 - case 15: return stack.pop(); // 176 - } -} -*/ -function java_lang_String_equalsZLjava_lang_Object(arg0,arg1) { - return arg0.toString() === arg1.toString(); -} - -function java_lang_String_hashCodeI(self) { - var h = 0; - var s = self.toString(); - for (var i = 0; i < s.length; i++) { - var high = (h >> 16) & 0xffff, low = h & 0xffff; - h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff; - } - return h; -} - -function java_lang_String_substringLjava_lang_StringI(arg0,arg1) { - return arg0.toString().substring(arg1); -} -function java_lang_String_substringLjava_lang_StringII(arg0,arg1,arg2) { - return arg0.toString().substring(arg1, arg2); -} - -function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) { - if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1); - if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2); - var s = arg0.toString(); - for (;;) { - var ret = s.replace(arg1, arg2); - if (ret === s) { - return ret; - } - s = ret; - } -} -function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) { - return arg0.toString().indexOf(arg1.toString()) >= 0; -} - -function java_lang_String_toStringLjava_lang_String(arg0) { - return arg0.toString(); -} -function java_lang_String_toCharArrayAC(arg0) { - return arg0.toString().split(''); -} -var java_lang_String_serialVersionUID = 0; -var java_lang_String_serialPersistentFields = 0; -var java_lang_String_CASE_INSENSITIVE_ORDER = 0; -function java_lang_String() { - if (arguments.length === 0) { - /** the real value of this 'string' we delegate to */ - this.r = ''; - return this; - } else { - return new java_lang_String; - } -} -java_lang_String.prototype = new String; -java_lang_String.prototype.toString = function() { return this.r; };; -java_lang_String.prototype.valueOf = function() { return this.toString().valueOf(); };; -//java_lang_String_classV(); - -/* new method for JavaScript String */ -String.prototype.consVAC = java_lang_String_consVAC; -String.prototype.consVACII = java_lang_String_consVACII; -String.prototype.charAtCI = java_lang_String_charAtCI; -String.prototype.lengthI = java_lang_String_lengthI; -String.prototype.isEmptyZ = java_lang_String_isEmptyZ; -String.prototype.getCharsVIIACI = java_lang_String_getCharsVIIACAI; -String.prototype.getCharsVACI = java_lang_String_getCharsVACI; -String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String; -String.prototype.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI; -String.prototype.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII; -String.prototype.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC; -String.prototype.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence; -String.prototype.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object; -String.prototype.hashCodeI = java_lang_String_hashCodeI; -String.prototype.toCharArrayAC = java_lang_String_toCharArrayAC; -String.prototype.valueOfLjava_lang_StringI=java_lang_String_valueOfLjava_lang_StringI; -String.prototype.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI; -String.prototype.startsWithZLjava_lang_String=java_lang_String_startsWithZLjava_lang_String; -String.prototype.endsWithZLjava_lang_String=java_lang_String_endsWithZLjava_lang_String; -String.prototype.indexOfII=java_lang_String_indexOfII; -String.prototype.indexOfIII=java_lang_String_indexOfIII; -String.prototype.lastIndexOfII=java_lang_String_lastIndexOfII; -String.prototype.lastIndexOfIII=java_lang_String_lastIndexOfIII; -String.prototype.lastIndexOfILjava_lang_String=java_lang_String_lastIndexOfILjava_lang_String; -String.prototype.lastIndexOfILjava_lang_StringI=java_lang_String_lastIndexOfILjava_lang_StringI; - -String.prototype.$instOf_java_lang_String = true; -String.prototype.$instOf_java_io_Serializable = true; -String.prototype.$instOf_java_lang_Comparable = true; -String.prototype.$instOf_java_lang_CharSequence = true; - -/* -function java_lang_String_subSequenceLjava_lang_CharSequenceII(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 27 - case 2: stack.push(arg2); // 28 - 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 - case 6: return stack.pop(); // 176 - } -} -function java_lang_String_concatLjava_lang_StringLjava_lang_String(arg0,arg1) { - var arg2; - var arg3; - var arg4; -; - var stack = new Array(5); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 182 1 133 - case 4: arg2 = stack.pop(); // 61 - case 5: stack.push(arg2); // 28 - case 6: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 5 - case 9: stack.push(arg0); // 42 - case 10: return stack.pop(); // 176 - case 11: stack.push(arg0); // 42 - case 12: stack.push(stack.pop().count); // 180 1 97 - case 15: stack.push(arg2); // 28 - case 16: stack.push(stack.pop() + stack.pop()); // 96 - case 17: stack.push(new Array(stack.pop())); // 188 5 - case 19: arg3 = stack.pop(); // 78 - case 20: stack.push(arg0); // 42 - case 21: stack.push(0); // 3 - case 22: stack.push(arg0); // 42 - case 23: stack.push(stack.pop().count); // 180 1 97 - case 26: stack.push(arg3); // 45 - case 27: stack.push(0); // 3 - 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 - case 31: stack.push(arg1); // 43 - case 32: stack.push(0); // 3 - case 33: stack.push(arg2); // 28 - case 34: stack.push(arg3); // 45 - case 35: stack.push(arg0); // 42 - case 36: stack.push(stack.pop().count); // 180 1 97 - 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 - case 42: stack.push(new java_lang_String); // 187 0 200 - case 45: stack.push(stack[stack.length - 1]); // 89 - case 46: stack.push(0); // 3 - case 47: stack.push(arg0); // 42 - case 48: stack.push(stack.pop().count); // 180 1 97 - case 51: stack.push(arg2); // 28 - case 52: stack.push(stack.pop() + stack.pop()); // 96 - case 53: stack.push(arg3); // 45 - 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 - case 57: return stack.pop(); // 176 - } -} -function java_lang_String_matchesZLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: stack.push(arg0); // 42 - 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 - case 5: return stack.pop(); // 172 - } -} -function java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186 - case 4: stack.push(arg0); // 42 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185 - case 8: stack.push(arg2); // 44 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceFirstLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 182 - case 12: return stack.pop(); // 176 - } -} -function java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186 - case 4: stack.push(arg0); // 42 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185 - case 8: stack.push(arg2); // 44 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181 - case 12: return stack.pop(); // 176 - } -} -function java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132 - case 4: stack.push(16); // 16 16 - 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 - case 9: stack.push(arg0); // 42 - case 10: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185 - case 13: stack.push(arg2); // 44 - case 14: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132 - case 17: { var v0 = stack.pop(); stack.push(java_util_regex_Matcher_quoteReplacementLjava_lang_StringLjava_lang_String(v0)); } // 184 1 180 - case 20: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181 - case 23: return stack.pop(); // 176 - } -} -function java_lang_String_splitALjava_lang_StringLjava_lang_StringI(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186 - case 4: stack.push(arg0); // 42 - case 5: stack.push(arg2); // 28 - 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 - case 9: return stack.pop(); // 176 - } -} -function java_lang_String_splitALjava_lang_StringLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: stack.push(0); // 3 - 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 - case 6: return stack.pop(); // 176 - } -} -function java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) { - var arg2; - var arg3; - var arg4; - var arg5; - var arg6; - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var arg13; - var arg14; -; - var stack = new Array(6); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198 - case 7: stack.push(stack[stack.length - 1]); // 89 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128 - case 11: // 191 - case 12: stack.push(0); // 3 - case 13: arg2 = stack.pop(); // 61 - case 14: stack.push(arg2); // 28 - case 15: stack.push(arg0); // 42 - case 16: stack.push(stack.pop().count); // 180 1 97 - case 19: if (stack.pop() <= stack.pop()) { gt = 94; continue; } // 162 0 75 - case 22: stack.push(arg0); // 42 - case 23: stack.push(stack.pop().value); // 180 1 100 - case 26: stack.push(arg0); // 42 - case 27: stack.push(stack.pop().offset); // 180 1 99 - case 30: stack.push(arg2); // 28 - case 31: stack.push(stack.pop() + stack.pop()); // 96 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 33: arg3 = stack.pop(); // 62 - case 34: stack.push(arg3); // 29 - case 35: stack.push(55296); // 18 1 - case 37: if (stack.pop() > stack.pop()) { gt = 77; continue; } // 161 0 40 - case 40: stack.push(arg3); // 29 - case 41: stack.push(56319); // 18 2 - case 43: if (stack.pop() < stack.pop()) { gt = 77; continue; } // 163 0 34 - case 46: stack.push(arg0); // 42 - case 47: stack.push(arg2); // 28 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134 - case 51: arg4 = stack.pop() // 54 4 - case 53: stack.push(arg4); // 21 4 - case 55: stack.push(arg4); // 21 4 - case 57: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107 - case 60: if (stack.pop() == stack.pop()) { gt = 66; continue; } // 159 0 6 - case 63: gt = 96; continue; // 167 0 33 - case 66: stack.push(arg2); // 28 - case 67: stack.push(arg4); // 21 4 - case 69: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106 - case 72: stack.push(stack.pop() + stack.pop()); // 96 - case 73: arg2 = stack.pop(); // 61 - case 74: gt = 91; continue; // 167 0 17 - case 77: stack.push(arg3); // 29 - case 78: stack.push(arg3); // 29 - case 79: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104 - case 82: if (stack.pop() == stack.pop()) { gt = 88; continue; } // 159 0 6 - case 85: gt = 96; continue; // 167 0 11 - case 88: arg2++; // 132 2 1 - case 91: gt = 14; continue; // 167 255 179 - case 94: stack.push(arg0); // 42 - case 95: return stack.pop(); // 176 - case 96: stack.push(arg0); // 42 - case 97: stack.push(stack.pop().count); // 180 1 97 - case 100: stack.push(new Array(stack.pop())); // 188 5 - case 102: arg3 = stack.pop(); // 78 - case 103: stack.push(0); // 3 - case 104: arg4 = stack.pop() // 54 4 - case 106: stack.push(arg0); // 42 - case 107: stack.push(stack.pop().value); // 180 1 100 - case 110: stack.push(arg0); // 42 - case 111: stack.push(stack.pop().offset); // 180 1 99 - case 114: stack.push(arg3); // 45 - case 115: stack.push(0); // 3 - case 116: stack.push(arg2); // 28 - 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 - case 120: stack.push(arg1); // 43 - case 121: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178 - case 124: arg5 = stack.pop() // 58 5 - case 126: stack.push(arg5); // 25 5 - case 128: stack.push("tr"); // 18 11 - case 130: // 165 - case 131: // 0 - case 132: stack.push(6405); // 17 25 5 - case 135: stack.push("az"); // 18 5 - case 137: // 165 - case 138: // 0 - case 139: stack.push(1); // 10 - case 140: stack.push(arg5); // 25 5 - case 142: stack.push("lt"); // 18 9 - case 144: // 166 - case 145: // 0 - case 146: stack.push(4); // 7 - case 147: stack.push(1); // 4 - case 148: gt = 152; continue; // 167 0 4 - case 151: stack.push(0); // 3 - case 152: arg6 = stack.pop() // 54 6 - case 154: stack.push(arg2); // 28 - case 155: arg11 = stack.pop() // 54 11 - case 157: stack.push(arg11); // 21 11 - case 159: stack.push(arg0); // 42 - case 160: stack.push(stack.pop().count); // 180 1 97 - case 163: if (stack.pop() <= stack.pop()) { gt = 419; continue; } // 162 1 0 - case 166: stack.push(arg0); // 42 - case 167: stack.push(stack.pop().value); // 180 1 100 - case 170: stack.push(arg0); // 42 - case 171: stack.push(stack.pop().offset); // 180 1 99 - case 174: stack.push(arg11); // 21 11 - case 176: stack.push(stack.pop() + stack.pop()); // 96 - case 177: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 178: arg9 = stack.pop() // 54 9 - case 180: stack.push(arg9); // 21 9 - case 182: // number conversion // 146 - case 183: stack.push(55296); // 18 1 - case 185: if (stack.pop() > stack.pop()) { gt = 214; continue; } // 161 0 29 - case 188: stack.push(arg9); // 21 9 - case 190: // number conversion // 146 - case 191: stack.push(56319); // 18 2 - case 193: if (stack.pop() < stack.pop()) { gt = 214; continue; } // 163 0 21 - case 196: stack.push(arg0); // 42 - case 197: stack.push(arg11); // 21 11 - case 199: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134 - case 202: arg9 = stack.pop() // 54 9 - case 204: stack.push(arg9); // 21 9 - case 206: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106 - case 209: arg10 = stack.pop() // 54 10 - case 211: gt = 217; continue; // 167 0 6 - case 214: stack.push(1); // 4 - case 215: arg10 = stack.pop() // 54 10 - case 217: stack.push(arg6); // 21 6 - case 219: if (stack.pop() != 0) { gt = 230; continue; } // 154 0 11 - case 222: stack.push(arg9); // 21 9 - case 224: stack.push(931); // 17 3 163 - case 227: if (stack.pop() != stack.pop()) { gt = 242; continue; } // 160 0 15 - case 230: stack.push(arg0); // 42 - case 231: stack.push(arg11); // 21 11 - case 233: stack.push(arg1); // 43 - 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 - case 237: arg8 = stack.pop() // 54 8 - case 239: gt = 249; continue; // 167 0 10 - case 242: stack.push(arg9); // 21 9 - case 244: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107 - case 247: arg8 = stack.pop() // 54 8 - case 249: stack.push(arg8); // 21 8 - case 251: // 2 - case 252: if (stack.pop() == stack.pop()) { gt = 262; continue; } // 159 0 10 - case 255: stack.push(arg8); // 21 8 - case 257: stack.push(65536); // 18 3 - case 259: if (stack.pop() > stack.pop()) { gt = 399; continue; } // 161 0 140 - case 262: stack.push(arg8); // 21 8 - case 264: // 2 - case 265: if (stack.pop() != stack.pop()) { gt = 280; continue; } // 160 0 15 - case 268: stack.push(arg0); // 42 - case 269: stack.push(arg11); // 21 11 - case 271: stack.push(arg1); // 43 - 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 - case 275: arg7 = stack.pop() // 58 7 - case 277: gt = 315; continue; // 167 0 38 - case 280: stack.push(arg10); // 21 10 - case 282: stack.push(2); // 5 - case 283: if (stack.pop() != stack.pop()) { gt = 308; continue; } // 160 0 25 - case 286: stack.push(arg4); // 21 4 - case 288: stack.push(arg8); // 21 8 - case 290: stack.push(arg3); // 45 - case 291: stack.push(arg11); // 21 11 - case 293: stack.push(arg4); // 21 4 - case 295: stack.push(stack.pop() + stack.pop()); // 96 - 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 - case 299: stack.push(arg10); // 21 10 - case 301: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 302: stack.push(stack.pop() + stack.pop()); // 96 - case 303: arg4 = stack.pop() // 54 4 - case 305: gt = 409; continue; // 167 0 104 - case 308: stack.push(arg8); // 21 8 - case 310: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109 - case 313: arg7 = stack.pop() // 58 7 - case 315: stack.push(arg7); // 25 7 - case 317: stack.push(stack.pop().length); // 190 - case 318: arg12 = stack.pop() // 54 12 - case 320: stack.push(arg12); // 21 12 - case 322: stack.push(arg10); // 21 10 - case 324: if (stack.pop() >= stack.pop()) { gt = 355; continue; } // 164 0 31 - case 327: stack.push(arg3); // 45 - case 328: stack.push(stack.pop().length); // 190 - case 329: stack.push(arg12); // 21 12 - case 331: stack.push(stack.pop() + stack.pop()); // 96 - case 332: stack.push(arg10); // 21 10 - case 334: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 335: stack.push(new Array(stack.pop())); // 188 5 - case 337: arg13 = stack.pop() // 58 13 - case 339: stack.push(arg3); // 45 - case 340: stack.push(0); // 3 - case 341: stack.push(arg13); // 25 13 - case 343: stack.push(0); // 3 - case 344: stack.push(arg11); // 21 11 - case 346: stack.push(arg4); // 21 4 - case 348: stack.push(stack.pop() + stack.pop()); // 96 - 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 - case 352: stack.push(arg13); // 25 13 - case 354: arg3 = stack.pop(); // 78 - case 355: stack.push(0); // 3 - case 356: arg13 = stack.pop() // 54 13 - case 358: stack.push(arg13); // 21 13 - case 360: stack.push(arg12); // 21 12 - case 362: if (stack.pop() <= stack.pop()) { gt = 386; continue; } // 162 0 24 - case 365: stack.push(arg3); // 45 - case 366: stack.push(arg11); // 21 11 - case 368: stack.push(arg4); // 21 4 - case 370: stack.push(stack.pop() + stack.pop()); // 96 - case 371: stack.push(arg13); // 21 13 - case 373: stack.push(stack.pop() + stack.pop()); // 96 - case 374: stack.push(arg7); // 25 7 - case 376: stack.push(arg13); // 21 13 - case 378: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 379: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85 - case 380: arg13++; // 132 13 1 - case 383: gt = 358; continue; // 167 255 231 - case 386: stack.push(arg4); // 21 4 - case 388: stack.push(arg12); // 21 12 - case 390: stack.push(arg10); // 21 10 - case 392: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 393: stack.push(stack.pop() + stack.pop()); // 96 - case 394: arg4 = stack.pop() // 54 4 - case 396: gt = 409; continue; // 167 0 13 - case 399: stack.push(arg3); // 45 - case 400: stack.push(arg11); // 21 11 - case 402: stack.push(arg4); // 21 4 - case 404: stack.push(stack.pop() + stack.pop()); // 96 - case 405: stack.push(arg8); // 21 8 - case 407: // number conversion // 146 - case 408: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85 - case 409: stack.push(arg11); // 21 11 - case 411: stack.push(arg10); // 21 10 - case 413: stack.push(stack.pop() + stack.pop()); // 96 - case 414: arg11 = stack.pop() // 54 11 - case 416: gt = 157; continue; // 167 254 253 - case 419: stack.push(new java_lang_String); // 187 0 200 - case 422: stack.push(stack[stack.length - 1]); // 89 - case 423: stack.push(0); // 3 - case 424: stack.push(arg0); // 42 - case 425: stack.push(stack.pop().count); // 180 1 97 - case 428: stack.push(arg4); // 21 4 - case 430: stack.push(stack.pop() + stack.pop()); // 96 - case 431: stack.push(arg3); // 45 - 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 - case 435: return stack.pop(); // 176 - } -} -function java_lang_String_toLowerCaseLjava_lang_String(arg0) { - var arg1; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toLowerCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 158 - case 7: return stack.pop(); // 176 - } -} -function java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) { - var arg2; - var arg3; - var arg4; - var arg5; - var arg6; - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var arg13; - var arg14; -; - var stack = new Array(6); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198 - case 7: stack.push(stack[stack.length - 1]); // 89 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128 - case 11: // 191 - case 12: stack.push(0); // 3 - case 13: arg2 = stack.pop(); // 61 - case 14: stack.push(arg2); // 28 - case 15: stack.push(arg0); // 42 - case 16: stack.push(stack.pop().count); // 180 1 97 - case 19: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 74 - case 22: stack.push(arg0); // 42 - case 23: stack.push(stack.pop().value); // 180 1 100 - case 26: stack.push(arg0); // 42 - case 27: stack.push(stack.pop().offset); // 180 1 99 - case 30: stack.push(arg2); // 28 - case 31: stack.push(stack.pop() + stack.pop()); // 96 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 33: arg3 = stack.pop(); // 62 - case 34: stack.push(arg3); // 29 - case 35: stack.push(55296); // 18 1 - case 37: if (stack.pop() > stack.pop()) { gt = 61; continue; } // 161 0 24 - case 40: stack.push(arg3); // 29 - case 41: stack.push(56319); // 18 2 - case 43: if (stack.pop() < stack.pop()) { gt = 61; continue; } // 163 0 18 - case 46: stack.push(arg0); // 42 - case 47: stack.push(arg2); // 28 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134 - case 51: arg3 = stack.pop(); // 62 - case 52: stack.push(arg3); // 29 - case 53: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106 - case 56: arg4 = stack.pop() // 54 4 - case 58: gt = 64; continue; // 167 0 6 - case 61: stack.push(1); // 4 - case 62: arg4 = stack.pop() // 54 4 - case 64: stack.push(arg3); // 29 - case 65: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108 - case 68: arg5 = stack.pop() // 54 5 - case 70: stack.push(arg5); // 21 5 - case 72: // 2 - case 73: if (stack.pop() == stack.pop()) { gt = 95; continue; } // 159 0 22 - case 76: stack.push(arg3); // 29 - case 77: stack.push(arg5); // 21 5 - case 79: if (stack.pop() == stack.pop()) { gt = 85; continue; } // 159 0 6 - case 82: gt = 95; continue; // 167 0 13 - case 85: stack.push(arg2); // 28 - case 86: stack.push(arg4); // 21 4 - case 88: stack.push(stack.pop() + stack.pop()); // 96 - case 89: arg2 = stack.pop(); // 61 - case 90: gt = 14; continue; // 167 255 180 - case 93: stack.push(arg0); // 42 - case 94: return stack.pop(); // 176 - case 95: stack.push(arg0); // 42 - case 96: stack.push(stack.pop().count); // 180 1 97 - case 99: stack.push(new Array(stack.pop())); // 188 5 - case 101: arg3 = stack.pop(); // 78 - case 102: stack.push(0); // 3 - case 103: arg4 = stack.pop() // 54 4 - case 105: stack.push(arg0); // 42 - case 106: stack.push(stack.pop().value); // 180 1 100 - case 109: stack.push(arg0); // 42 - case 110: stack.push(stack.pop().offset); // 180 1 99 - case 113: stack.push(arg3); // 45 - case 114: stack.push(0); // 3 - case 115: stack.push(arg2); // 28 - 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 - case 119: stack.push(arg1); // 43 - case 120: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178 - case 123: arg5 = stack.pop() // 58 5 - case 125: stack.push(arg5); // 25 5 - case 127: stack.push("tr"); // 18 11 - case 129: // 165 - case 130: // 0 - case 131: stack.push(6405); // 17 25 5 - case 134: stack.push("az"); // 18 5 - case 136: // 165 - case 137: // 0 - case 138: stack.push(1); // 10 - case 139: stack.push(arg5); // 25 5 - case 141: stack.push("lt"); // 18 9 - case 143: // 166 - case 144: // 0 - case 145: stack.push(4); // 7 - case 146: stack.push(1); // 4 - case 147: gt = 151; continue; // 167 0 4 - case 150: stack.push(0); // 3 - case 151: arg6 = stack.pop() // 54 6 - case 153: stack.push(arg2); // 28 - case 154: arg11 = stack.pop() // 54 11 - case 156: stack.push(arg11); // 21 11 - case 158: stack.push(arg0); // 42 - case 159: stack.push(stack.pop().count); // 180 1 97 - case 162: if (stack.pop() <= stack.pop()) { gt = 425; continue; } // 162 1 7 - case 165: stack.push(arg0); // 42 - case 166: stack.push(stack.pop().value); // 180 1 100 - case 169: stack.push(arg0); // 42 - case 170: stack.push(stack.pop().offset); // 180 1 99 - case 173: stack.push(arg11); // 21 11 - case 175: stack.push(stack.pop() + stack.pop()); // 96 - case 176: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 177: arg9 = stack.pop() // 54 9 - case 179: stack.push(arg9); // 21 9 - case 181: // number conversion // 146 - case 182: stack.push(55296); // 18 1 - case 184: if (stack.pop() > stack.pop()) { gt = 213; continue; } // 161 0 29 - case 187: stack.push(arg9); // 21 9 - case 189: // number conversion // 146 - case 190: stack.push(56319); // 18 2 - case 192: if (stack.pop() < stack.pop()) { gt = 213; continue; } // 163 0 21 - case 195: stack.push(arg0); // 42 - case 196: stack.push(arg11); // 21 11 - case 198: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134 - case 201: arg9 = stack.pop() // 54 9 - case 203: stack.push(arg9); // 21 9 - case 205: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106 - case 208: arg10 = stack.pop() // 54 10 - case 210: gt = 216; continue; // 167 0 6 - case 213: stack.push(1); // 4 - case 214: arg10 = stack.pop() // 54 10 - case 216: stack.push(arg6); // 21 6 - case 218: if (stack.pop() == 0) { gt = 233; continue; } // 153 0 15 - case 221: stack.push(arg0); // 42 - case 222: stack.push(arg11); // 21 11 - case 224: stack.push(arg1); // 43 - 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 - case 228: arg8 = stack.pop() // 54 8 - case 230: gt = 240; continue; // 167 0 10 - case 233: stack.push(arg9); // 21 9 - case 235: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108 - case 238: arg8 = stack.pop() // 54 8 - case 240: stack.push(arg8); // 21 8 - case 242: // 2 - case 243: if (stack.pop() == stack.pop()) { gt = 253; continue; } // 159 0 10 - case 246: stack.push(arg8); // 21 8 - case 248: stack.push(65536); // 18 3 - case 250: if (stack.pop() > stack.pop()) { gt = 405; continue; } // 161 0 155 - case 253: stack.push(arg8); // 21 8 - case 255: // 2 - case 256: if (stack.pop() != stack.pop()) { gt = 286; continue; } // 160 0 30 - case 259: stack.push(arg6); // 21 6 - case 261: if (stack.pop() == 0) { gt = 276; continue; } // 153 0 15 - case 264: stack.push(arg0); // 42 - case 265: stack.push(arg11); // 21 11 - case 267: stack.push(arg1); // 43 - 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 - case 271: arg7 = stack.pop() // 58 7 - case 273: gt = 321; continue; // 167 0 48 - case 276: stack.push(arg9); // 21 9 - case 278: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCharArrayACI(v0)); } // 184 1 110 - case 281: arg7 = stack.pop() // 58 7 - case 283: gt = 321; continue; // 167 0 38 - case 286: stack.push(arg10); // 21 10 - case 288: stack.push(2); // 5 - case 289: if (stack.pop() != stack.pop()) { gt = 314; continue; } // 160 0 25 - case 292: stack.push(arg4); // 21 4 - case 294: stack.push(arg8); // 21 8 - case 296: stack.push(arg3); // 45 - case 297: stack.push(arg11); // 21 11 - case 299: stack.push(arg4); // 21 4 - case 301: stack.push(stack.pop() + stack.pop()); // 96 - 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 - case 305: stack.push(arg10); // 21 10 - case 307: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 308: stack.push(stack.pop() + stack.pop()); // 96 - case 309: arg4 = stack.pop() // 54 4 - case 311: gt = 415; continue; // 167 0 104 - case 314: stack.push(arg8); // 21 8 - case 316: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109 - case 319: arg7 = stack.pop() // 58 7 - case 321: stack.push(arg7); // 25 7 - case 323: stack.push(stack.pop().length); // 190 - case 324: arg12 = stack.pop() // 54 12 - case 326: stack.push(arg12); // 21 12 - case 328: stack.push(arg10); // 21 10 - case 330: if (stack.pop() >= stack.pop()) { gt = 361; continue; } // 164 0 31 - case 333: stack.push(arg3); // 45 - case 334: stack.push(stack.pop().length); // 190 - case 335: stack.push(arg12); // 21 12 - case 337: stack.push(stack.pop() + stack.pop()); // 96 - case 338: stack.push(arg10); // 21 10 - case 340: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 341: stack.push(new Array(stack.pop())); // 188 5 - case 343: arg13 = stack.pop() // 58 13 - case 345: stack.push(arg3); // 45 - case 346: stack.push(0); // 3 - case 347: stack.push(arg13); // 25 13 - case 349: stack.push(0); // 3 - case 350: stack.push(arg11); // 21 11 - case 352: stack.push(arg4); // 21 4 - case 354: stack.push(stack.pop() + stack.pop()); // 96 - 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 - case 358: stack.push(arg13); // 25 13 - case 360: arg3 = stack.pop(); // 78 - case 361: stack.push(0); // 3 - case 362: arg13 = stack.pop() // 54 13 - case 364: stack.push(arg13); // 21 13 - case 366: stack.push(arg12); // 21 12 - case 368: if (stack.pop() <= stack.pop()) { gt = 392; continue; } // 162 0 24 - case 371: stack.push(arg3); // 45 - case 372: stack.push(arg11); // 21 11 - case 374: stack.push(arg4); // 21 4 - case 376: stack.push(stack.pop() + stack.pop()); // 96 - case 377: stack.push(arg13); // 21 13 - case 379: stack.push(stack.pop() + stack.pop()); // 96 - case 380: stack.push(arg7); // 25 7 - case 382: stack.push(arg13); // 21 13 - case 384: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 385: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85 - case 386: arg13++; // 132 13 1 - case 389: gt = 364; continue; // 167 255 231 - case 392: stack.push(arg4); // 21 4 - case 394: stack.push(arg12); // 21 12 - case 396: stack.push(arg10); // 21 10 - case 398: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 399: stack.push(stack.pop() + stack.pop()); // 96 - case 400: arg4 = stack.pop() // 54 4 - case 402: gt = 415; continue; // 167 0 13 - case 405: stack.push(arg3); // 45 - case 406: stack.push(arg11); // 21 11 - case 408: stack.push(arg4); // 21 4 - case 410: stack.push(stack.pop() + stack.pop()); // 96 - case 411: stack.push(arg8); // 21 8 - case 413: // number conversion // 146 - case 414: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85 - case 415: stack.push(arg11); // 21 11 - case 417: stack.push(arg10); // 21 10 - case 419: stack.push(stack.pop() + stack.pop()); // 96 - case 420: arg11 = stack.pop() // 54 11 - case 422: gt = 156; continue; // 167 254 246 - case 425: stack.push(new java_lang_String); // 187 0 200 - case 428: stack.push(stack[stack.length - 1]); // 89 - case 429: stack.push(0); // 3 - case 430: stack.push(arg0); // 42 - case 431: stack.push(stack.pop().count); // 180 1 97 - case 434: stack.push(arg4); // 21 4 - case 436: stack.push(stack.pop() + stack.pop()); // 96 - case 437: stack.push(arg3); // 45 - 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 - case 441: return stack.pop(); // 176 - } -} -function java_lang_String_toUpperCaseLjava_lang_String(arg0) { - var arg1; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toUpperCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 159 - case 7: return stack.pop(); // 176 - } -} -function java_lang_String_trimLjava_lang_String(arg0) { - var arg1; - var arg2; - var arg3; - var arg4; - var arg5; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().count); // 180 1 97 - case 4: arg1 = stack.pop(); // 60 - case 5: stack.push(0); // 3 - case 6: arg2 = stack.pop(); // 61 - case 7: stack.push(arg0); // 42 - case 8: stack.push(stack.pop().offset); // 180 1 99 - case 11: arg3 = stack.pop(); // 62 - case 12: stack.push(arg0); // 42 - case 13: stack.push(stack.pop().value); // 180 1 100 - case 16: arg4 = stack.pop() // 58 4 - case 18: stack.push(arg2); // 28 - case 19: stack.push(arg1); // 27 - case 20: if (stack.pop() <= stack.pop()) { gt = 40; continue; } // 162 0 20 - case 23: stack.push(arg4); // 25 4 - case 25: stack.push(arg3); // 29 - case 26: stack.push(arg2); // 28 - case 27: stack.push(stack.pop() + stack.pop()); // 96 - case 28: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 29: stack.push(32); // 16 32 - case 31: if (stack.pop() < stack.pop()) { gt = 40; continue; } // 163 0 9 - case 34: arg2++; // 132 2 1 - case 37: gt = 18; continue; // 167 255 237 - case 40: stack.push(arg2); // 28 - case 41: stack.push(arg1); // 27 - case 42: if (stack.pop() <= stack.pop()) { gt = 64; continue; } // 162 0 22 - case 45: stack.push(arg4); // 25 4 - case 47: stack.push(arg3); // 29 - case 48: stack.push(arg1); // 27 - case 49: stack.push(stack.pop() + stack.pop()); // 96 - case 50: stack.push(1); // 4 - case 51: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 53: stack.push(32); // 16 32 - case 55: if (stack.pop() < stack.pop()) { gt = 64; continue; } // 163 0 9 - case 58: arg1 += 255; // 132 1 255 - case 61: gt = 40; continue; // 167 255 235 - case 64: stack.push(arg2); // 28 - case 65: if (stack.pop() > 0) { gt = 76; continue; } // 157 0 11 - case 68: stack.push(arg1); // 27 - case 69: stack.push(arg0); // 42 - case 70: stack.push(stack.pop().count); // 180 1 97 - case 73: if (stack.pop() <= stack.pop()) { gt = 85; continue; } // 162 0 12 - case 76: stack.push(arg0); // 42 - case 77: stack.push(arg2); // 28 - case 78: stack.push(arg1); // 27 - 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 - case 82: gt = 86; continue; // 167 0 4 - case 85: stack.push(arg0); // 42 - case 86: return stack.pop(); // 176 - } -} -*/ - -/* -function java_lang_String_formatLjava_lang_StringLjava_lang_StringLjava_lang_Object(arg0,arg1) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(new java_util_Formatter); // 187 0 211 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: { java_util_Formatter_consV(stack.pop()); } // 183 1 174 - case 7: stack.push(arg0); // 42 - case 8: stack.push(arg1); // 43 - 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 - case 12: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175 - case 15: return stack.pop(); // 176 - } -} -function java_lang_String_formatLjava_lang_StringLjava_util_LocaleLjava_lang_StringLjava_lang_Object(arg0,arg1,arg2) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(new java_util_Formatter); // 187 0 211 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: stack.push(arg0); // 42 - case 5: { var v0 = stack.pop(); java_util_Formatter_consVLjava_util_Locale(stack.pop(), v0); } // 183 1 176 - case 8: stack.push(arg1); // 43 - case 9: stack.push(arg2); // 44 - 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 - case 13: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175 - case 16: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringLjava_lang_Object(arg0) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: if (stack.pop()) { gt = 9; continue; } // 199 0 8 - case 4: stack.push("null"); // 18 10 - case 6: gt = 13; continue; // 167 0 7 - case 9: stack.push(arg0); // 42 - case 10: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132 - case 13: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringAC(arg0) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(new java_lang_String); // 187 0 200 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: stack.push(arg0); // 42 - case 5: { var v0 = stack.pop(); java_lang_String_consVAC(stack.pop(), v0); } // 183 1 142 - case 8: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringACII(arg0,arg1,arg2) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(new java_lang_String); // 187 0 200 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: stack.push(arg0); // 42 - case 5: stack.push(arg1); // 27 - case 6: stack.push(arg2); // 28 - 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 - case 10: return stack.pop(); // 176 - } -} -function java_lang_String_copyValueOfLjava_lang_StringACII(arg0,arg1,arg2) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(new java_lang_String); // 187 0 200 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: stack.push(arg0); // 42 - case 5: stack.push(arg1); // 27 - case 6: stack.push(arg2); // 28 - 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 - case 10: return stack.pop(); // 176 - } -} -function java_lang_String_copyValueOfLjava_lang_StringAC(arg0) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(0); // 3 - case 2: stack.push(arg0); // 42 - case 3: stack.push(stack.pop().length); // 190 - 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 - case 7: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringZ(arg0) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 26 - case 1: if (stack.pop() == 0) { gt = 9; continue; } // 153 0 8 - case 4: stack.push("true"); // 18 12 - case 6: gt = 11; continue; // 167 0 5 - case 9: stack.push("false"); // 18 8 - case 11: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringC(arg0) { - var arg1; - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(1); // 4 - case 1: stack.push(new Array(stack.pop())); // 188 5 - case 3: stack.push(stack[stack.length - 1]); // 89 - case 4: stack.push(0); // 3 - case 5: stack.push(arg0); // 26 - case 6: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85 - case 7: arg1 = stack.pop(); // 76 - case 8: stack.push(new java_lang_String); // 187 0 200 - case 11: stack.push(stack[stack.length - 1]); // 89 - case 12: stack.push(0); // 3 - case 13: stack.push(1); // 4 - case 14: stack.push(arg1); // 43 - 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 - case 18: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringJ(arg0) { - var arg1; - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 30 - case 1: stack.push(10); // 16 10 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Long_toStringLjava_lang_StringJI(v0, v1)); } // 184 1 126 - case 6: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringF(arg0) { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 34 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Float_toStringLjava_lang_StringF(v0)); } // 184 1 122 - case 4: return stack.pop(); // 176 - } -} -function java_lang_String_valueOfLjava_lang_StringD(arg0) { - var arg1; - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 38 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Double_toStringLjava_lang_StringD(v0)); } // 184 1 121 - case 4: return stack.pop(); // 176 - } -} -function java_lang_String_internLjava_lang_String(arg0) { - // no code found for null -} -function java_lang_String_compareToILjava_lang_Object(arg0,arg1) { - var arg2; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: if(stack[stack.length - 1].$instOf_java_lang_String != 1) throw {}; // 192 0 200 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareToILjava_lang_String(self, v0)); } // 182 1 148 - case 8: return stack.pop(); // 172 - } -} -function java_lang_String_classV() { - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(0); // 3 - case 1: stack.push(new Array(stack.pop())); // 189 0 183 - case 4: java_lang_String_serialPersistentFields = stack.pop(); // 179 1 101 - case 7: stack.push(new java_lang_String$CaseInsensitiveComparator); // 187 0 202 - case 10: stack.push(stack[stack.length - 1]); // 89 - case 11: // 1 - case 12: { var v0 = stack.pop(); java_lang_String$CaseInsensitiveComparator_consVLjava_lang_String$1(stack.pop(), v0); } // 183 1 160 - case 15: java_lang_String_CASE_INSENSITIVE_ORDER = stack.pop(); // 179 1 102 - case 18: return; // 177 - } -} -*/ - -/* -function java_lang_String_contentEqualsZLjava_lang_StringBuffer(arg0,arg1) { - var arg2; - var arg3; - var arg4; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg1); // 43 - case 1: stack.push(stack[stack.length - 1]); // 89 - case 2: arg2 = stack.pop(); // 77 - case 3: // 194 - case 4: stack.push(arg0); // 42 - case 5: stack.push(arg1); // 43 - case 6: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.contentEqualsZLjava_lang_CharSequence(self, v0)); } // 182 1 146 - case 9: stack.push(arg2); // 44 - case 10: // 195 - case 11: return stack.pop(); // 172 - case 12: arg3 = stack.pop(); // 78 - case 13: stack.push(arg2); // 44 - case 14: // 195 - case 15: stack.push(arg3); // 45 - case 16: // 191 - } -} -function java_lang_String_contentEqualsZLjava_lang_CharSequence(arg0,arg1) { - var arg2; - var arg3; - var arg4; - var arg5; - var arg6; - var arg7; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().count); // 180 1 97 - case 4: stack.push(arg1); // 43 - case 5: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 185 1 188 - case 8: // 1 - case 9: // 0 - case 10: if (stack.pop() == stack.pop()) { gt = 15; continue; } // 159 0 5 - case 13: stack.push(0); // 3 - case 14: return stack.pop(); // 172 - case 15: stack.push(arg1); // 43 - case 16: stack.push(stack.pop().$instOf_java_lang_AbstractStringBuilder ? 1 : 0); // 193 0 186 - case 19: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 58 - case 22: stack.push(arg0); // 42 - case 23: stack.push(stack.pop().value); // 180 1 100 - case 26: arg2 = stack.pop(); // 77 - case 27: stack.push(arg1); // 43 - case 28: if(stack[stack.length - 1].$instOf_java_lang_AbstractStringBuilder != 1) throw {}; // 192 0 186 - case 31: { var self = stack.pop(); stack.push(self.getValueAC(self)); } // 182 1 103 - case 34: arg3 = stack.pop(); // 78 - case 35: stack.push(arg0); // 42 - case 36: stack.push(stack.pop().offset); // 180 1 99 - case 39: arg4 = stack.pop() // 54 4 - case 41: stack.push(0); // 3 - case 42: arg5 = stack.pop() // 54 5 - case 44: stack.push(arg0); // 42 - case 45: stack.push(stack.pop().count); // 180 1 97 - case 48: arg6 = stack.pop() // 54 6 - case 50: stack.push(arg6); // 21 6 - case 52: arg6 += 255; // 132 6 255 - case 55: if (stack.pop() == 0) { gt = 77; continue; } // 153 0 22 - case 58: stack.push(arg2); // 44 - case 59: stack.push(arg4); // 21 4 - case 61: arg4++; // 132 4 1 - case 64: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 65: stack.push(arg3); // 45 - case 66: stack.push(arg5); // 21 5 - case 68: arg5++; // 132 5 1 - case 71: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 72: if (stack.pop() == stack.pop()) { gt = 50; continue; } // 159 255 234 - case 75: stack.push(0); // 3 - case 76: return stack.pop(); // 172 - case 77: stack.push(arg1); // 43 - case 78: stack.push(arg0); // 42 - case 79: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.equalsZLjava_lang_Object(self, v0)); } // 182 1 131 - case 82: if (stack.pop() == 0) { gt = 87; continue; } // 153 0 5 - case 85: stack.push(1); // 4 - case 86: return stack.pop(); // 172 - case 87: stack.push(arg0); // 42 - case 88: stack.push(stack.pop().value); // 180 1 100 - case 91: arg2 = stack.pop(); // 77 - case 92: stack.push(arg0); // 42 - case 93: stack.push(stack.pop().offset); // 180 1 99 - case 96: arg3 = stack.pop(); // 62 - case 97: stack.push(0); // 3 - case 98: arg4 = stack.pop() // 54 4 - case 100: stack.push(arg0); // 42 - case 101: stack.push(stack.pop().count); // 180 1 97 - case 104: arg5 = stack.pop() // 54 5 - case 106: stack.push(arg5); // 21 5 - case 108: arg5 += 255; // 132 5 255 - case 111: if (stack.pop() == 0) { gt = 136; continue; } // 153 0 25 - case 114: stack.push(arg2); // 44 - case 115: stack.push(arg3); // 29 - case 116: arg3++; // 132 3 1 - case 119: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 120: stack.push(arg1); // 43 - case 121: stack.push(arg4); // 21 4 - case 123: arg4++; // 132 4 1 - case 126: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.charAtCI(self, v0)); } // 185 1 189 - case 129: // 2 - case 130: // 0 - case 131: if (stack.pop() == stack.pop()) { gt = 106; continue; } // 159 255 231 - case 134: stack.push(0); // 3 - case 135: return stack.pop(); // 172 - case 136: stack.push(1); // 4 - case 137: return stack.pop(); // 172 - } -} -function java_lang_String_equalsIgnoreCaseZLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(6); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: // 166 - case 3: // 0 - case 4: stack.push(4); // 7 - case 5: stack.push(1); // 4 - case 6: gt = 44; continue; // 167 0 38 - case 9: stack.push(arg1); // 43 - case 10: if (!stack.pop()) { gt = 43; continue; } // 198 0 33 - case 13: stack.push(arg1); // 43 - case 14: stack.push(stack.pop().count); // 180 1 97 - case 17: stack.push(arg0); // 42 - case 18: stack.push(stack.pop().count); // 180 1 97 - case 21: if (stack.pop() != stack.pop()) { gt = 43; continue; } // 160 0 22 - case 24: stack.push(arg0); // 42 - case 25: stack.push(1); // 4 - case 26: stack.push(0); // 3 - case 27: stack.push(arg1); // 43 - case 28: stack.push(0); // 3 - case 29: stack.push(arg0); // 42 - case 30: stack.push(stack.pop().count); // 180 1 97 - 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 - case 36: if (stack.pop() == 0) { gt = 43; continue; } // 153 0 7 - case 39: stack.push(1); // 4 - case 40: gt = 44; continue; // 167 0 4 - case 43: stack.push(0); // 3 - case 44: return stack.pop(); // 172 - } -} -function java_lang_String_compareToILjava_lang_String(arg0,arg1) { - var arg2; - var arg3; - var arg4; - var arg5; - var arg6; - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var arg13; -; - var stack = new Array(2); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().count); // 180 1 97 - case 4: arg2 = stack.pop(); // 61 - case 5: stack.push(arg1); // 43 - case 6: stack.push(stack.pop().count); // 180 1 97 - case 9: arg3 = stack.pop(); // 62 - case 10: stack.push(arg2); // 28 - case 11: stack.push(arg3); // 29 - case 12: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Math_minIII(v0, v1)); } // 184 1 127 - case 15: arg4 = stack.pop() // 54 4 - case 17: stack.push(arg0); // 42 - case 18: stack.push(stack.pop().value); // 180 1 100 - case 21: arg5 = stack.pop() // 58 5 - case 23: stack.push(arg1); // 43 - case 24: stack.push(stack.pop().value); // 180 1 100 - case 27: arg6 = stack.pop() // 58 6 - case 29: stack.push(arg0); // 42 - case 30: stack.push(stack.pop().offset); // 180 1 99 - case 33: arg7 = stack.pop() // 54 7 - case 35: stack.push(arg1); // 43 - case 36: stack.push(stack.pop().offset); // 180 1 99 - case 39: arg8 = stack.pop() // 54 8 - case 41: stack.push(arg7); // 21 7 - case 43: stack.push(arg8); // 21 8 - case 45: if (stack.pop() != stack.pop()) { gt = 102; continue; } // 160 0 57 - case 48: stack.push(arg7); // 21 7 - case 50: arg9 = stack.pop() // 54 9 - case 52: stack.push(arg4); // 21 4 - case 54: stack.push(arg7); // 21 7 - case 56: stack.push(stack.pop() + stack.pop()); // 96 - case 57: arg10 = stack.pop() // 54 10 - case 59: stack.push(arg9); // 21 9 - case 61: stack.push(arg10); // 21 10 - case 63: if (stack.pop() <= stack.pop()) { gt = 99; continue; } // 162 0 36 - case 66: stack.push(arg5); // 25 5 - case 68: stack.push(arg9); // 21 9 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 71: arg11 = stack.pop() // 54 11 - case 73: stack.push(arg6); // 25 6 - case 75: stack.push(arg9); // 21 9 - case 77: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 78: arg12 = stack.pop() // 54 12 - case 80: stack.push(arg11); // 21 11 - case 82: stack.push(arg12); // 21 12 - case 84: if (stack.pop() == stack.pop()) { gt = 93; continue; } // 159 0 9 - case 87: stack.push(arg11); // 21 11 - case 89: stack.push(arg12); // 21 12 - case 91: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 92: return stack.pop(); // 172 - case 93: arg9++; // 132 9 1 - case 96: gt = 59; continue; // 167 255 219 - case 99: gt = 146; continue; // 167 0 47 - case 102: stack.push(arg4); // 21 4 - case 104: arg4 += 255; // 132 4 255 - case 107: if (stack.pop() == 0) { gt = 146; continue; } // 153 0 39 - case 110: stack.push(arg5); // 25 5 - case 112: stack.push(arg7); // 21 7 - case 114: arg7++; // 132 7 1 - case 117: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 118: arg9 = stack.pop() // 54 9 - case 120: stack.push(arg6); // 25 6 - case 122: stack.push(arg8); // 21 8 - case 124: arg8++; // 132 8 1 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 128: arg10 = stack.pop() // 54 10 - case 130: stack.push(arg9); // 21 9 - case 132: stack.push(arg10); // 21 10 - case 134: if (stack.pop() == stack.pop()) { gt = 143; continue; } // 159 0 9 - case 137: stack.push(arg9); // 21 9 - case 139: stack.push(arg10); // 21 10 - case 141: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 142: return stack.pop(); // 172 - case 143: gt = 102; continue; // 167 255 215 - case 146: stack.push(arg2); // 28 - case 147: stack.push(arg3); // 29 - case 148: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 149: return stack.pop(); // 172 - } -} -function java_lang_String_compareToIgnoreCaseILjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(java_lang_String_CASE_INSENSITIVE_ORDER); // 178 1 102 - case 3: stack.push(arg0); // 42 - case 4: stack.push(arg1); // 43 - 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 - case 8: stack.push(0); // 3 - case 9: // 0 - case 10: return stack.pop(); // 172 - } -} -function java_lang_String_regionMatchesZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4) { - var arg5; - var arg6; - var arg7; - var arg8; - var arg9; -; - var stack = new Array(6); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().value); // 180 1 100 - case 4: arg5 = stack.pop() // 58 5 - case 6: stack.push(arg0); // 42 - case 7: stack.push(stack.pop().offset); // 180 1 99 - case 10: stack.push(arg1); // 27 - case 11: stack.push(stack.pop() + stack.pop()); // 96 - case 12: arg6 = stack.pop() // 54 6 - case 14: stack.push(arg2); // 44 - case 15: stack.push(stack.pop().value); // 180 1 100 - case 18: arg7 = stack.pop() // 58 7 - case 20: stack.push(arg2); // 44 - case 21: stack.push(stack.pop().offset); // 180 1 99 - case 24: stack.push(arg3); // 29 - case 25: stack.push(stack.pop() + stack.pop()); // 96 - case 26: arg8 = stack.pop() // 54 8 - case 28: stack.push(arg3); // 29 - case 29: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 37 - case 32: stack.push(arg1); // 27 - case 33: if (stack.pop() < 0) { gt = 66; continue; } // 155 0 33 - case 36: stack.push(arg1); // 27 - case 37: // number conversion // 133 - case 38: stack.push(arg0); // 42 - case 39: stack.push(stack.pop().count); // 180 1 97 - case 42: // number conversion // 133 - case 43: stack.push(arg4); // 21 4 - case 45: // number conversion // 133 - case 46: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101 - case 47: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148 - case 48: if (stack.pop() > 0) { gt = 66; continue; } // 157 0 18 - case 51: stack.push(arg3); // 29 - case 52: // number conversion // 133 - case 53: stack.push(arg2); // 44 - case 54: stack.push(stack.pop().count); // 180 1 97 - case 57: // number conversion // 133 - case 58: stack.push(arg4); // 21 4 - case 60: // number conversion // 133 - case 61: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101 - case 62: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148 - case 63: if (stack.pop() <= 0) { gt = 68; continue; } // 158 0 5 - case 66: stack.push(0); // 3 - case 67: return stack.pop(); // 172 - case 68: stack.push(arg4); // 21 4 - case 70: arg4 += 255; // 132 4 255 - case 73: if (stack.pop() <= 0) { gt = 97; continue; } // 158 0 24 - case 76: stack.push(arg5); // 25 5 - case 78: stack.push(arg6); // 21 6 - case 80: arg6++; // 132 6 1 - case 83: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 84: stack.push(arg7); // 25 7 - case 86: stack.push(arg8); // 21 8 - case 88: arg8++; // 132 8 1 - case 91: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 92: if (stack.pop() == stack.pop()) { gt = 68; continue; } // 159 255 232 - case 95: stack.push(0); // 3 - case 96: return stack.pop(); // 172 - case 97: stack.push(1); // 4 - case 98: return stack.pop(); // 172 - } -} -function java_lang_String_regionMatchesZZILjava_lang_StringII(arg0,arg1,arg2,arg3,arg4,arg5) { - var arg6; - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var arg13; - var arg14; -; - var stack = new Array(6); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().value); // 180 1 100 - case 4: arg6 = stack.pop() // 58 6 - case 6: stack.push(arg0); // 42 - case 7: stack.push(stack.pop().offset); // 180 1 99 - case 10: stack.push(arg2); // 28 - case 11: stack.push(stack.pop() + stack.pop()); // 96 - case 12: arg7 = stack.pop() // 54 7 - case 14: stack.push(arg3); // 45 - case 15: stack.push(stack.pop().value); // 180 1 100 - case 18: arg8 = stack.pop() // 58 8 - case 20: stack.push(arg3); // 45 - case 21: stack.push(stack.pop().offset); // 180 1 99 - case 24: stack.push(arg4); // 21 4 - case 26: stack.push(stack.pop() + stack.pop()); // 96 - case 27: arg9 = stack.pop() // 54 9 - case 29: stack.push(arg4); // 21 4 - case 31: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 38 - case 34: stack.push(arg2); // 28 - case 35: if (stack.pop() < 0) { gt = 69; continue; } // 155 0 34 - case 38: stack.push(arg2); // 28 - case 39: // number conversion // 133 - case 40: stack.push(arg0); // 42 - case 41: stack.push(stack.pop().count); // 180 1 97 - case 44: // number conversion // 133 - case 45: stack.push(arg5); // 21 5 - case 47: // number conversion // 133 - case 48: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101 - case 49: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148 - case 50: if (stack.pop() > 0) { gt = 69; continue; } // 157 0 19 - case 53: stack.push(arg4); // 21 4 - case 55: // number conversion // 133 - case 56: stack.push(arg3); // 45 - case 57: stack.push(stack.pop().count); // 180 1 97 - case 60: // number conversion // 133 - case 61: stack.push(arg5); // 21 5 - case 63: // number conversion // 133 - case 64: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 101 - case 65: { var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); } // 148 - case 66: if (stack.pop() <= 0) { gt = 71; continue; } // 158 0 5 - case 69: stack.push(0); // 3 - case 70: return stack.pop(); // 172 - case 71: stack.push(arg5); // 21 5 - case 73: arg5 += 255; // 132 5 255 - case 76: if (stack.pop() <= 0) { gt = 155; continue; } // 158 0 79 - case 79: stack.push(arg6); // 25 6 - case 81: stack.push(arg7); // 21 7 - case 83: arg7++; // 132 7 1 - case 86: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 87: arg10 = stack.pop() // 54 10 - case 89: stack.push(arg8); // 25 8 - case 91: stack.push(arg9); // 21 9 - case 93: arg9++; // 132 9 1 - case 96: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 97: arg11 = stack.pop() // 54 11 - case 99: stack.push(arg10); // 21 10 - case 101: stack.push(arg11); // 21 11 - case 103: if (stack.pop() != stack.pop()) { gt = 109; continue; } // 160 0 6 - case 106: gt = 71; continue; // 167 255 221 - case 109: stack.push(arg1); // 27 - case 110: if (stack.pop() == 0) { gt = 153; continue; } // 153 0 43 - case 113: stack.push(arg10); // 21 10 - case 115: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105 - case 118: arg12 = stack.pop() // 54 12 - case 120: stack.push(arg11); // 21 11 - case 122: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCC(v0)); } // 184 1 105 - case 125: arg13 = stack.pop() // 54 13 - case 127: stack.push(arg12); // 21 12 - case 129: stack.push(arg13); // 21 13 - case 131: if (stack.pop() != stack.pop()) { gt = 137; continue; } // 160 0 6 - case 134: gt = 71; continue; // 167 255 193 - case 137: stack.push(arg12); // 21 12 - case 139: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104 - case 142: stack.push(arg13); // 21 13 - case 144: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104 - case 147: if (stack.pop() != stack.pop()) { gt = 153; continue; } // 160 0 6 - case 150: gt = 71; continue; // 167 255 177 - case 153: stack.push(0); // 3 - case 154: return stack.pop(); // 172 - case 155: stack.push(1); // 4 - case 156: return stack.pop(); // 172 - } -} -function java_lang_String_startsWithZLjava_lang_StringI(arg0,arg1,arg2) { - var arg3; - var arg4; - var arg5; - var arg6; - var arg7; - var arg8; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().value); // 180 1 100 - case 4: arg3 = stack.pop(); // 78 - case 5: stack.push(arg0); // 42 - case 6: stack.push(stack.pop().offset); // 180 1 99 - case 9: stack.push(arg2); // 28 - case 10: stack.push(stack.pop() + stack.pop()); // 96 - case 11: arg4 = stack.pop() // 54 4 - case 13: stack.push(arg1); // 43 - case 14: stack.push(stack.pop().value); // 180 1 100 - case 17: arg5 = stack.pop() // 58 5 - case 19: stack.push(arg1); // 43 - case 20: stack.push(stack.pop().offset); // 180 1 99 - case 23: arg6 = stack.pop() // 54 6 - case 25: stack.push(arg1); // 43 - case 26: stack.push(stack.pop().count); // 180 1 97 - case 29: arg7 = stack.pop() // 54 7 - case 31: stack.push(arg2); // 28 - case 32: if (stack.pop() < 0) { gt = 46; continue; } // 155 0 14 - case 35: stack.push(arg2); // 28 - case 36: stack.push(arg0); // 42 - case 37: stack.push(stack.pop().count); // 180 1 97 - case 40: stack.push(arg7); // 21 7 - case 42: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 43: if (stack.pop() >= stack.pop()) { gt = 48; continue; } // 164 0 5 - case 46: stack.push(0); // 3 - case 47: return stack.pop(); // 172 - case 48: arg7 += 255; // 132 7 255 - case 51: stack.push(arg7); // 21 7 - case 53: if (stack.pop() < 0) { gt = 76; continue; } // 155 0 23 - case 56: stack.push(arg3); // 45 - case 57: stack.push(arg4); // 21 4 - case 59: arg4++; // 132 4 1 - case 62: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 63: stack.push(arg5); // 25 5 - case 65: stack.push(arg6); // 21 6 - case 67: arg6++; // 132 6 1 - case 70: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 71: if (stack.pop() == stack.pop()) { gt = 48; continue; } // 159 255 233 - case 74: stack.push(0); // 3 - case 75: return stack.pop(); // 172 - case 76: stack.push(1); // 4 - case 77: return stack.pop(); // 172 - } -} -function java_lang_String_startsWithZLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: stack.push(0); // 3 - 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 - case 6: return stack.pop(); // 172 - } -} -function java_lang_String_endsWithZLjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(4); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: stack.push(arg0); // 42 - case 3: stack.push(stack.pop().count); // 180 1 97 - case 6: stack.push(arg1); // 43 - case 7: stack.push(stack.pop().count); // 180 1 97 - case 10: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - 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 - case 14: return stack.pop(); // 172 - } -} -function java_lang_String_indexOfILjava_lang_String(arg0,arg1) { - var arg2; -; - var stack = new Array(3); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(arg1); // 43 - case 2: stack.push(0); // 3 - 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 - case 6: return stack.pop(); // 172 - } -} -function java_lang_String_indexOfILjava_lang_StringI(arg0,arg1,arg2) { - var arg3; -; - var stack = new Array(7); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().value); // 180 1 100 - case 4: stack.push(arg0); // 42 - case 5: stack.push(stack.pop().offset); // 180 1 99 - case 8: stack.push(arg0); // 42 - case 9: stack.push(stack.pop().count); // 180 1 97 - case 12: stack.push(arg1); // 43 - case 13: stack.push(stack.pop().value); // 180 1 100 - case 16: stack.push(arg1); // 43 - case 17: stack.push(stack.pop().offset); // 180 1 99 - case 20: stack.push(arg1); // 43 - case 21: stack.push(stack.pop().count); // 180 1 97 - case 24: stack.push(arg2); // 28 - 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 - case 28: return stack.pop(); // 172 - } -} -function java_lang_String_indexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) { - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg6); // 21 6 - case 2: stack.push(arg2); // 28 - case 3: if (stack.pop() > stack.pop()) { gt = 17; continue; } // 161 0 14 - case 6: stack.push(arg5); // 21 5 - case 8: if (stack.pop() != 0) { gt = 15; continue; } // 154 0 7 - case 11: stack.push(arg2); // 28 - case 12: gt = 16; continue; // 167 0 4 - case 15: // 2 - case 16: return stack.pop(); // 172 - case 17: stack.push(arg6); // 21 6 - case 19: if (stack.pop() >= 0) { gt = 25; continue; } // 156 0 6 - case 22: stack.push(0); // 3 - case 23: arg6 = stack.pop() // 54 6 - case 25: stack.push(arg5); // 21 5 - case 27: if (stack.pop() != 0) { gt = 33; continue; } // 154 0 6 - case 30: stack.push(arg6); // 21 6 - case 32: return stack.pop(); // 172 - case 33: stack.push(arg3); // 45 - case 34: stack.push(arg4); // 21 4 - case 36: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 37: arg7 = stack.pop() // 54 7 - case 39: stack.push(arg1); // 27 - case 40: stack.push(arg2); // 28 - case 41: stack.push(arg5); // 21 5 - case 43: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 44: stack.push(stack.pop() + stack.pop()); // 96 - case 45: arg8 = stack.pop() // 54 8 - case 47: stack.push(arg1); // 27 - case 48: stack.push(arg6); // 21 6 - case 50: stack.push(stack.pop() + stack.pop()); // 96 - case 51: arg9 = stack.pop() // 54 9 - case 53: stack.push(arg9); // 21 9 - case 55: stack.push(arg8); // 21 8 - case 57: if (stack.pop() < stack.pop()) { gt = 164; continue; } // 163 0 107 - case 60: stack.push(arg0); // 42 - case 61: stack.push(arg9); // 21 9 - case 63: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 64: stack.push(arg7); // 21 7 - case 66: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 25 - case 69: arg9++; // 132 9 1 - case 72: stack.push(arg9); // 21 9 - case 74: stack.push(arg8); // 21 8 - case 76: if (stack.pop() < stack.pop()) { gt = 91; continue; } // 163 0 15 - case 79: stack.push(arg0); // 42 - case 80: stack.push(arg9); // 21 9 - case 82: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 83: stack.push(arg7); // 21 7 - case 85: if (stack.pop() == stack.pop()) { gt = 91; continue; } // 159 0 6 - case 88: gt = 69; continue; // 167 255 237 - case 91: stack.push(arg9); // 21 9 - case 93: stack.push(arg8); // 21 8 - case 95: if (stack.pop() < stack.pop()) { gt = 158; continue; } // 163 0 63 - case 98: stack.push(arg9); // 21 9 - case 100: stack.push(1); // 4 - case 101: stack.push(stack.pop() + stack.pop()); // 96 - case 102: arg10 = stack.pop() // 54 10 - case 104: stack.push(arg10); // 21 10 - case 106: stack.push(arg5); // 21 5 - case 108: stack.push(stack.pop() + stack.pop()); // 96 - case 109: stack.push(1); // 4 - case 110: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 111: arg11 = stack.pop() // 54 11 - case 113: stack.push(arg4); // 21 4 - case 115: stack.push(1); // 4 - case 116: stack.push(stack.pop() + stack.pop()); // 96 - case 117: arg12 = stack.pop() // 54 12 - case 119: stack.push(arg10); // 21 10 - case 121: stack.push(arg11); // 21 11 - case 123: if (stack.pop() <= stack.pop()) { gt = 146; continue; } // 162 0 23 - case 126: stack.push(arg0); // 42 - case 127: stack.push(arg10); // 21 10 - case 129: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 130: stack.push(arg3); // 45 - case 131: stack.push(arg12); // 21 12 - case 133: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 134: if (stack.pop() != stack.pop()) { gt = 146; continue; } // 160 0 12 - case 137: arg10++; // 132 10 1 - case 140: arg12++; // 132 12 1 - case 143: gt = 119; continue; // 167 255 232 - case 146: stack.push(arg10); // 21 10 - case 148: stack.push(arg11); // 21 11 - case 150: if (stack.pop() != stack.pop()) { gt = 158; continue; } // 160 0 8 - case 153: stack.push(arg9); // 21 9 - case 155: stack.push(arg1); // 27 - case 156: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 157: return stack.pop(); // 172 - case 158: arg9++; // 132 9 1 - case 161: gt = 53; continue; // 167 255 148 - case 164: // 2 - case 165: return stack.pop(); // 172 - } -} -function java_lang_String_lastIndexOfIACIIACIII(arg0,arg1,arg2,arg3,arg4,arg5,arg6) { - var arg7; - var arg8; - var arg9; - var arg10; - var arg11; - var arg12; - var arg13; - var arg14; - var stack = new Array(); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg2); // 28 - case 1: stack.push(arg5); // 21 5 - case 3: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 4: arg7 = stack.pop() // 54 7 - case 6: stack.push(arg6); // 21 6 - case 8: if (stack.pop() >= 0) { gt = 13; continue; } // 156 0 5 - case 11: // 2 - case 12: return stack.pop(); // 172 - case 13: stack.push(arg6); // 21 6 - case 15: stack.push(arg7); // 21 7 - case 17: if (stack.pop() >= stack.pop()) { gt = 24; continue; } // 164 0 7 - case 20: stack.push(arg7); // 21 7 - case 22: arg6 = stack.pop() // 54 6 - case 24: stack.push(arg5); // 21 5 - case 26: if (stack.pop() != 0) { gt = 32; continue; } // 154 0 6 - case 29: stack.push(arg6); // 21 6 - case 31: return stack.pop(); // 172 - case 32: stack.push(arg4); // 21 4 - case 34: stack.push(arg5); // 21 5 - case 36: stack.push(stack.pop() + stack.pop()); // 96 - case 37: stack.push(1); // 4 - case 38: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 39: arg8 = stack.pop() // 54 8 - case 41: stack.push(arg3); // 45 - case 42: stack.push(arg8); // 21 8 - case 44: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 45: arg9 = stack.pop() // 54 9 - case 47: stack.push(arg1); // 27 - case 48: stack.push(arg5); // 21 5 - case 50: stack.push(stack.pop() + stack.pop()); // 96 - case 51: stack.push(1); // 4 - case 52: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 53: arg10 = stack.pop() // 54 10 - case 55: stack.push(arg10); // 21 10 - case 57: stack.push(arg6); // 21 6 - case 59: stack.push(stack.pop() + stack.pop()); // 96 - case 60: arg11 = stack.pop() // 54 11 - case 62: stack.push(arg11); // 21 11 - case 64: stack.push(arg10); // 21 10 - case 66: if (stack.pop() > stack.pop()) { gt = 84; continue; } // 161 0 18 - case 69: stack.push(arg0); // 42 - case 70: stack.push(arg11); // 21 11 - case 72: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 73: stack.push(arg9); // 21 9 - case 75: if (stack.pop() == stack.pop()) { gt = 84; continue; } // 159 0 9 - case 78: arg11 += 255; // 132 11 255 - case 81: gt = 62; continue; // 167 255 237 - case 84: stack.push(arg11); // 21 11 - case 86: stack.push(arg10); // 21 10 - case 88: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 5 - case 91: // 2 - case 92: return stack.pop(); // 172 - case 93: stack.push(arg11); // 21 11 - case 95: stack.push(1); // 4 - case 96: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 97: arg12 = stack.pop() // 54 12 - case 99: stack.push(arg12); // 21 12 - case 101: stack.push(arg5); // 21 5 - case 103: stack.push(1); // 4 - case 104: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 105: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 106: arg13 = stack.pop() // 54 13 - case 108: stack.push(arg8); // 21 8 - case 110: stack.push(1); // 4 - case 111: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 112: arg14 = stack.pop() // 54 14 - case 114: stack.push(arg12); // 21 12 - case 116: stack.push(arg13); // 21 13 - case 118: if (stack.pop() >= stack.pop()) { gt = 144; continue; } // 164 0 26 - case 121: stack.push(arg0); // 42 - case 122: stack.push(arg12); // 21 12 - case 124: arg12 += 255; // 132 12 255 - case 127: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 128: stack.push(arg3); // 45 - case 129: stack.push(arg14); // 21 14 - case 131: arg14 += 255; // 132 14 255 - case 134: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52 - case 135: if (stack.pop() == stack.pop()) { gt = 114; continue; } // 159 255 235 - case 138: arg11 += 255; // 132 11 255 - case 141: gt = 62; continue; // 167 255 177 - case 144: stack.push(arg13); // 21 13 - case 146: stack.push(arg1); // 27 - case 147: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100 - case 148: stack.push(1); // 4 - case 149: stack.push(stack.pop() + stack.pop()); // 96 - case 150: return stack.pop(); // 172 - } -} -*/ - -/* - this.lengthI = java_lang_String_lengthI; - this.isEmptyZ = java_lang_String_isEmptyZ; - this.charAtCI = java_lang_String_charAtCI; - this.codePointAtII = java_lang_String_codePointAtII; - this.codePointBeforeII = java_lang_String_codePointBeforeII; - this.codePointCountIII = java_lang_String_codePointCountIII; - this.offsetByCodePointsIII = java_lang_String_offsetByCodePointsIII; - this.getCharsVACI = java_lang_String_getCharsVACI; - this.getCharsVIIACI = java_lang_String_getCharsVIIACI; - this.getBytesVIIABI = java_lang_String_getBytesVIIABI; - this.getBytesABLjava_lang_String = java_lang_String_getBytesABLjava_lang_String; - this.getBytesABLjava_nio_charset_Charset = java_lang_String_getBytesABLjava_nio_charset_Charset; - this.getBytesAB = java_lang_String_getBytesAB; - this.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object; - this.contentEqualsZLjava_lang_StringBuffer = java_lang_String_contentEqualsZLjava_lang_StringBuffer; - this.contentEqualsZLjava_lang_CharSequence = java_lang_String_contentEqualsZLjava_lang_CharSequence; - this.equalsIgnoreCaseZLjava_lang_String = java_lang_String_equalsIgnoreCaseZLjava_lang_String; - this.compareToILjava_lang_String = java_lang_String_compareToILjava_lang_String; - this.compareToIgnoreCaseILjava_lang_String = java_lang_String_compareToIgnoreCaseILjava_lang_String; - this.regionMatchesZILjava_lang_StringII = java_lang_String_regionMatchesZILjava_lang_StringII; - this.regionMatchesZZILjava_lang_StringII = java_lang_String_regionMatchesZZILjava_lang_StringII; - this.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI; - this.startsWithZLjava_lang_String = java_lang_String_startsWithZLjava_lang_String; - this.endsWithZLjava_lang_String = java_lang_String_endsWithZLjava_lang_String; - this.hashCodeI = java_lang_String_hashCodeI; - this.indexOfII = java_lang_String_indexOfII; - this.indexOfIII = java_lang_String_indexOfIII; - this.lastIndexOfII = java_lang_String_lastIndexOfII; - this.lastIndexOfIII = java_lang_String_lastIndexOfIII; - this.indexOfILjava_lang_String = java_lang_String_indexOfILjava_lang_String; - this.indexOfILjava_lang_StringI = java_lang_String_indexOfILjava_lang_StringI; - this.lastIndexOfILjava_lang_String = java_lang_String_lastIndexOfILjava_lang_String; - this.lastIndexOfILjava_lang_StringI = java_lang_String_lastIndexOfILjava_lang_StringI; - this.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI; - this.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII; - this.subSequenceLjava_lang_CharSequenceII = java_lang_String_subSequenceLjava_lang_CharSequenceII; - this.concatLjava_lang_StringLjava_lang_String = java_lang_String_concatLjava_lang_StringLjava_lang_String; - this.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC; - this.matchesZLjava_lang_String = java_lang_String_matchesZLjava_lang_String; - this.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence; - this.replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String; - this.replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String = java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String; - this.replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence = java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence; - this.splitALjava_lang_StringLjava_lang_StringI = java_lang_String_splitALjava_lang_StringLjava_lang_StringI; - this.splitALjava_lang_StringLjava_lang_String = java_lang_String_splitALjava_lang_StringLjava_lang_String; - this.toLowerCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale; - this.toLowerCaseLjava_lang_String = java_lang_String_toLowerCaseLjava_lang_String; - this.toUpperCaseLjava_lang_StringLjava_util_Locale = java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale; - this.toUpperCaseLjava_lang_String = java_lang_String_toUpperCaseLjava_lang_String; - this.trimLjava_lang_String = java_lang_String_trimLjava_lang_String; - this.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String; - this.internLjava_lang_String = java_lang_String_internLjava_lang_String; - this.compareToILjava_lang_Object = java_lang_String_compareToILjava_lang_Object; - */ - - - +// initialize methods on String constants +java_lang_Object(false); diff -r 380f7ba7ef70 -r 001389026dbf javap/src/main/java/org/apidesign/javap/AnnotationParser.java --- a/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Mon Dec 03 22:13:50 2012 +0100 +++ b/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Tue Dec 04 11:21:10 2012 +0100 @@ -84,6 +84,9 @@ readValue(dis, cd, typeName, attrName); } visitAnnotationEnd(typeName); + if (cnt == 0) { + visitAttr(typeName, null, null, null); + } } private void readValue(DataInputStream dis, ClassData cd, String typeName, String attrName) diff -r 380f7ba7ef70 -r 001389026dbf javap/src/main/java/org/apidesign/javap/FieldData.java --- a/javap/src/main/java/org/apidesign/javap/FieldData.java Mon Dec 03 22:13:50 2012 +0100 +++ b/javap/src/main/java/org/apidesign/javap/FieldData.java Tue Dec 04 11:21:10 2012 +0100 @@ -156,4 +156,13 @@ public Vector getAttributes(){ return attrs; } + + public byte[] findAnnotationData(boolean classRetention) { + String n = classRetention ? + "RuntimeInvisibleAnnotations" : // NOI18N + "RuntimeVisibleAnnotations"; // NOI18N + AttrData[] arr = new AttrData[attrs.size()]; + attrs.copyInto(arr); + return ClassData.findAttr(n, arr); + } } diff -r 380f7ba7ef70 -r 001389026dbf javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Mon Dec 03 22:13:50 2012 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Tue Dec 04 11:21:10 2012 +0100 @@ -57,7 +57,7 @@ @JavaScriptBody( args={"el", "r"}, body="var e = window.document.getElementById(el.fld_id);\n" - + "e.onclick = function() { r.runV(); };\n" + + "e.onclick = function() { r.run__V(); };\n" ) public final void addOnClick(Runnable r) { throw new UnsupportedOperationException("Needs JavaScript!"); diff -r 380f7ba7ef70 -r 001389026dbf vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Dec 04 11:21:10 2012 +0100 @@ -82,6 +82,10 @@ return null; } } + String[] proto = findAnnotation(arrData, jc, + "org.apidesign.bck2brwsr.core.JavaScriptPrototype", + "container", "prototype" + ); StringArray toInitilize = new StringArray(); final String className = className(jc); out.append("\n\n").append(assignClass(className)); @@ -92,28 +96,41 @@ out.append("\n CLS.").append(v.getName()).append(initField(v)); } } - // ClassName sc = jc.getSuperClass(); - String sc = jc.getSuperClassName(); // with _ - if (sc != null) { + if (proto == null) { + String sc = jc.getSuperClassName(); // with _ out.append("\n var pp = "). append(sc.replace('/', '_')).append("(true);"); out.append("\n var p = CLS.prototype = pp;"); + out.append("\n var c = p;"); out.append("\n var sprcls = pp.constructor.$class;"); } else { - out.append("\n var p = CLS.prototype;"); + out.append("\n var p = CLS.prototype = ").append(proto[1]).append(";"); + out.append("\n var c = ").append(proto[0]).append(";"); out.append("\n var sprcls = null;"); } for (MethodData m : jc.getMethods()) { + byte[] onlyArr = m.findAnnotationData(true); + String[] only = findAnnotation(onlyArr, jc, + "org.apidesign.bck2brwsr.core.JavaScriptOnly", + "name", "value" + ); + if (only != null) { + if (only[0] != null && only[1] != null) { + out.append("\n p.").append(only[0]).append(" = ") + .append(only[1]).append(";"); + } + continue; + } if (m.isStatic()) { - generateStaticMethod("\n p.", m, toInitilize); + generateStaticMethod("\n c.", m, toInitilize); } else { - generateInstanceMethod("\n p.", m); + generateInstanceMethod("\n c.", m); } } - out.append("\n p.constructor = CLS;"); - out.append("\n p.$instOf_").append(className).append(" = true;"); + out.append("\n c.constructor = CLS;"); + out.append("\n c.$instOf_").append(className).append(" = true;"); for (String superInterface : jc.getSuperInterfaces()) { - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); + out.append("\n c.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); } out.append("\n CLS.$class = java_lang_Class(true);"); out.append("\n CLS.$class.jvmName = '").append(jc.getClassName()).append("';"); @@ -131,6 +148,18 @@ out.append("\n return new CLS();"); out.append("\n }"); for (FieldData v : jc.getFields()) { + byte[] onlyArr = v.findAnnotationData(true); + String[] only = findAnnotation(onlyArr, jc, + "org.apidesign.bck2brwsr.core.JavaScriptOnly", + "name", "value" + ); + if (only != null) { + if (only[0] != null && only[1] != null) { + out.append("\n p.").append(only[0]).append(" = ") + .append(only[1]).append(";"); + } + continue; + } if (!v.isStatic()) { out.append("\n this.fld_"). append(v.getName()).append(initField(v)); @@ -153,7 +182,7 @@ StringBuilder argsCnt = new StringBuilder(); final String mn = findMethodName(m, argsCnt); out.append(prefix).append(mn).append(" = function"); - if (mn.equals("classV")) { + if (mn.equals("class__V")) { toInitilize.add(className(jc) + "(false)." + mn); } out.append('('); @@ -782,6 +811,7 @@ int i = 0; Boolean count = null; boolean array = false; + sig.append("__"); int firstPos = sig.length(); while (i < descriptor.length()) { char ch = descriptor.charAt(i++); @@ -792,9 +822,6 @@ case ')': count = false; continue; - case 'A': - array = true; - break; case 'B': case 'C': case 'D': @@ -805,7 +832,7 @@ case 'Z': if (count) { if (array) { - sig.append('A'); + sig.append("_3"); } sig.append(ch); if (ch == 'J' || ch == 'D') { @@ -817,7 +844,7 @@ hasReturnType[0] = true; sig.insert(firstPos, ch); if (array) { - sig.insert(firstPos, 'A'); + sig.insert(firstPos, "_3"); } } array = false; @@ -829,33 +856,47 @@ continue; case 'L': int next = descriptor.indexOf(';', i); + String realSig = mangleSig(descriptor, i - 1, next + 1); if (count) { if (array) { - sig.append('A'); + sig.append("_3"); } - sig.append(ch); - sig.append(descriptor.substring(i, next).replace('/', '_')); + sig.append(realSig); cnt.append('0'); } else { - sig.insert(firstPos, descriptor.substring(i, next).replace('/', '_')); - sig.insert(firstPos, ch); + sig.insert(firstPos, realSig); if (array) { - sig.insert(firstPos, 'A'); + sig.insert(firstPos, "_3"); } hasReturnType[0] = true; } i = next + 1; continue; case '[': - //arrays++; + array = true; continue; default: - break; // invalid character + throw new IllegalStateException("Invalid char: " + ch); } } } + + private static String mangleSig(String txt, int first, int last) { + StringBuilder sb = new StringBuilder(); + for (int i = first; i < last; i++) { + final char ch = txt.charAt(i); + switch (ch) { + case '/': sb.append('_'); break; + case '_': sb.append("_1"); break; + case ';': sb.append("_2"); break; + case '[': sb.append("_3"); break; + default: sb.append(ch); break; + } + } + return sb.toString(); + } - private String findMethodName(MethodData m, StringBuilder cnt) { + private static String findMethodName(MethodData m, StringBuilder cnt) { StringBuilder name = new StringBuilder(); if ("".equals(m.getName())) { // NOI18N name.append("cons"); // NOI18N @@ -866,11 +907,11 @@ } boolean hasReturn[] = { false }; - countArgs(findDescriptor(m.getInternalSig()), hasReturn, name, cnt); + countArgs(m.getInternalSig(), hasReturn, name, cnt); return name.toString(); } - private String findMethodName(String[] mi, StringBuilder cnt, boolean[] hasReturn) { + static String findMethodName(String[] mi, StringBuilder cnt, boolean[] hasReturn) { StringBuilder name = new StringBuilder(); String descr = mi[2];//mi.getDescriptor(); String nm= mi[1]; @@ -879,7 +920,7 @@ } else { name.append(nm); } - countArgs(findDescriptor(descr), hasReturn, name, cnt); + countArgs(descr, hasReturn, name, cnt); return name.toString(); } @@ -983,10 +1024,6 @@ return s; } - private String findDescriptor(String d) { - return d.replace('[', 'A'); - } - private boolean javaScriptBody(String prefix, MethodData m, boolean isStatic) throws IOException { byte[] arr = m.findAnnotationData(true); if (arr == null) { diff -r 380f7ba7ef70 -r 001389026dbf vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Tue Dec 04 11:21:10 2012 +0100 @@ -73,16 +73,16 @@ } void delete(int indx) { - if (arr == null) { + if (arr == null || indx < 0 || indx >= arr.length) { return; } String[] tmp = new String[arr.length - 1]; for (int i = 0, j = 0; i < arr.length; i++) { - tmp[j] = arr[i]; - if (j == indx) { - continue; + if (i != indx) { + tmp[j++] = arr[i]; } } + arr = tmp; } int indexOf(String ic) { diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -29,7 +29,7 @@ */ public class ArrayTest { @Test public void verifySimpleIntOperation() throws Exception { - assertExec("CheckTheSum", Array.class, "simpleI", + assertExec("CheckTheSum", Array.class, "simple__I", Double.valueOf(15) ); } @@ -39,13 +39,13 @@ } @Test public void verifyOperationsOnArrays() throws Exception { - assertExec("The sum is 105", Array.class, "sumD", + assertExec("The sum is 105", Array.class, "sum__D", Double.valueOf(105) ); } @Test public void doesCopyArrayWork() throws Exception { - assertExec("Returns 'a'", Array.class, "copyArrayC", Double.valueOf('a')); + assertExec("Returns 'a'", Array.class, "copyArray__C", Double.valueOf('a')); } private static CharSequence codeSeq; diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/ByteCodeToJavaScriptTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ByteCodeToJavaScriptTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -0,0 +1,55 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.vm4brwsr; + +import static org.testng.Assert.*; +import org.testng.annotations.Test; + +/** + * + * @author Jaroslav Tulach + */ +public class ByteCodeToJavaScriptTest { + + public ByteCodeToJavaScriptTest() { + } + + @Test + public void findMethodNameManglesObjectsCorrectly() { + StringBuilder cnt = new StringBuilder(); + boolean[] hasReturn = { false }; + String ret = ByteCodeToJavaScript.findMethodName(new String[] { + "StringTest", "replace", "(Ljava/lang/String;CC)Ljava/lang/String;" + }, cnt, hasReturn); + assertEquals(cnt.toString(), "000", "No doubles or longs"); + assertTrue(hasReturn[0], "Returns string"); + assertEquals(ret, "replace__Ljava_lang_String_2Ljava_lang_String_2CC"); + } + + @Test + public void manglingArrays() { + StringBuilder cnt = new StringBuilder(); + boolean[] hasReturn = { false }; + String ret = ByteCodeToJavaScript.findMethodName(new String[] { + "VMinVM", "toJavaScript", "([B)Ljava/lang/String;" + }, cnt, hasReturn); + assertEquals(cnt.toString(), "0", "No doubles or longs"); + assertTrue(hasReturn[0], "Returns string"); + assertEquals(ret, "toJavaScript__Ljava_lang_String_2_3B"); + } +} diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/Instance.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Instance.java Tue Dec 04 11:21:10 2012 +0100 @@ -117,4 +117,12 @@ return constructor(x) == constructor(y); } + @JavaScriptBody(args = {}, body = "return {};") + private static Object jsObj() { + return null; + } + + public static boolean iofObject() { + return jsObj() instanceof Object; + } } diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -29,42 +29,42 @@ @Test public void verifyDefaultDoubleValue() throws Exception { assertExec( "Will be zero", - Instance.class, "defaultDblValueD", + Instance.class, "defaultDblValue__D", Double.valueOf(0) ); } @Test public void verifyStaticMethodCall() throws Exception { assertExec( "Will be zero", - InstanceSub.class, "recallDblD", + InstanceSub.class, "recallDbl__D", Double.valueOf(0) ); } @Test public void verifyAssignedByteValue() throws Exception { assertExec( "Will one thirty one", - Instance.class, "assignedByteValueB", + Instance.class, "assignedByteValue__B", Double.valueOf(31) ); } @Test public void verifyMagicOne() throws Exception { assertExec( "Should be three and something", - Instance.class, "magicOneD", + Instance.class, "magicOne__D", Double.valueOf(3.3) ); } @Test public void verifyInstanceMethods() throws Exception { assertExec( "Should be eleven as we invoke overwritten method, plus 44", - Instance.class, "virtualBytesI", + Instance.class, "virtualBytes__I", Double.valueOf(55) ); } @Test public void verifyInterfaceMethods() throws Exception { assertExec( "Retruns default value", - Instance.class, "interfaceBytesF", + Instance.class, "interfaceBytes__F", Double.valueOf(31) ); } @@ -72,7 +72,7 @@ @Test public void isNull() throws Exception { assertExec( "Yes, we are instance", - Instance.class, "isNullZ", + Instance.class, "isNull__Z", Double.valueOf(0.0) ); } @@ -80,7 +80,7 @@ @Test public void isInstanceOf() throws Exception { assertExec( "Yes, we are instance", - Instance.class, "instanceOfZZ", + Instance.class, "instanceOf__ZZ", Double.valueOf(1.0), true ); } @@ -88,7 +88,7 @@ @Test public void notInstanceOf() throws Exception { assertExec( "No, we are not an instance", - Instance.class, "instanceOfZZ", + Instance.class, "instanceOf__ZZ", Double.valueOf(0.0), false ); } @@ -96,14 +96,14 @@ @Test public void verifyCastToClass() throws Exception { assertExec( "Five signals all is good", - Instance.class, "castsWorkIZ", + Instance.class, "castsWork__IZ", Double.valueOf(5.0), false ); } @Test public void verifyCastToInterface() throws Exception { assertExec( "Five signals all is good", - Instance.class, "castsWorkIZ", + Instance.class, "castsWork__IZ", Double.valueOf(5.0), true ); } @@ -111,7 +111,7 @@ @Test public void sharedConstructor() throws Exception { assertExec( "Constructor of first and 2nd instance should be the same", - Instance.class, "sharedConstructorZ", + Instance.class, "sharedConstructor__Z", Double.valueOf(1.0) ); } @@ -119,10 +119,18 @@ @Test public void differentConstructor() throws Exception { assertExec( "Constructor of X and Y should be the different", - Instance.class, "differentConstructorZ", + Instance.class, "differentConstructor__Z", Double.valueOf(0) ); } + + @Test public void jsObjectIsLikeJavaObject() throws Exception { + assertExec( + "JavaScript object is instance of Java Object", + Instance.class, "iofObject__Z", + Double.valueOf(1) + ); + } protected String startCompilationWith() { return "org/apidesign/vm4brwsr/Instance"; diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -29,19 +29,19 @@ */ public class NumberTest { @Test public void integerFromString() throws Exception { - assertExec("Can convert string to integer", Integer.class, "parseIntILjava_lang_String", + assertExec("Can convert string to integer", Integer.class, "parseInt__ILjava_lang_String_2", Double.valueOf(333), "333" ); } @Test public void doubleFromString() throws Exception { - assertExec("Can convert string to double", Double.class, "parseDoubleDLjava_lang_String", + assertExec("Can convert string to double", Double.class, "parseDouble__DLjava_lang_String_2", Double.valueOf(33.3), "33.3" ); } @Test public void autoboxDouble() throws Exception { - assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToStringLjava_lang_String", + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToString__Ljava_lang_String_2", "3.3" ); } @@ -51,7 +51,7 @@ } @Test public void jslog1000() throws Exception { - assertExec("log_10(1000) == 3", Math.class, "log10DD", + assertExec("log_10(1000) == 3", Math.class, "log10__DD", Double.valueOf(3.0), 1000.0 ); } @@ -60,20 +60,20 @@ assertEquals(3, Numbers.rem(303, 10)); } @Test public void jsRem() throws Exception { - assertExec("Should be three", Numbers.class, "remIII", + assertExec("Should be three", Numbers.class, "rem__III", Double.valueOf(3.0), 303, 10 ); } @Test public void deserializeInt() throws Exception { int exp = Numbers.deserInt(); - assertExec("Should be the same", Numbers.class, "deserIntI", + assertExec("Should be the same", Numbers.class, "deserInt__I", Double.valueOf(exp) ); } @Test public void deserializeSimpleLong() throws Exception { - assertExec("Should be 3454", Numbers.class, "deserLongJAB", + assertExec("Should be 3454", Numbers.class, "deserLong__J_3B", Double.valueOf(3454), new byte[] { (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)13, (byte)126 } ); @@ -84,7 +84,7 @@ (byte)64, (byte)8, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0 }; long exp = Numbers.deserLong(arr); - assertExec("Should be " + exp, "org_apidesign_vm4brwsr_Numbers_deserLongJAB", + assertExec("Should be " + exp, "org_apidesign_vm4brwsr_Numbers_deserLong__JAB", Double.valueOf(exp), arr); } */ @@ -97,7 +97,7 @@ @Test public void deserializeFloatInJS() throws Exception { float f = 54324.32423f; - assertExec("Should be the same", Numbers.class, "deserFloatF", + assertExec("Should be the same", Numbers.class, "deserFloat__F", Double.valueOf(f) ); } @@ -110,7 +110,7 @@ @Test public void deserializeDoubleInJS() throws Exception { double f = 3.0; - assertExec("Should be the same", Numbers.class, "deserDoubleD", f); + assertExec("Should be the same", Numbers.class, "deserDouble__D", f); } /* @Test public void serDouble() throws IOException { @@ -131,7 +131,7 @@ @Test public void fiveInStringJS() throws Exception { String s = Numbers.intToString(); assertExec("Should be the same: " + s, - Numbers.class, "intToStringLjava_lang_String", + Numbers.class, "intToString__Ljava_lang_String_2", s ); } @@ -139,7 +139,7 @@ @Test public void sevenInStringJS() throws Exception { String s = Numbers.floatToString(); assertExec("Should be the same: " + s, - Numbers.class, "floatToStringLjava_lang_String", + Numbers.class, "floatToString__Ljava_lang_String_2", s ); } diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -36,7 +36,7 @@ @Test public void threePlusFour() throws Exception { assertExec( "Should be seven", - StaticMethod.class, "sumIII", + StaticMethod.class, "sum__III", Double.valueOf(7), 3, 4 ); @@ -45,7 +45,7 @@ @Test public void checkReallyInitializedValues() throws Exception { assertExec( "Return true", - StaticMethod.class, "isNullZ", + StaticMethod.class, "isNull__Z", Double.valueOf(1) ); } @@ -53,7 +53,7 @@ @Test public void powerOfThree() throws Exception { assertExec( "Should be nine", - StaticMethod.class, "powerFF", + StaticMethod.class, "power__FF", Double.valueOf(9), 3.0f ); @@ -62,7 +62,7 @@ @Test public void minusOne() throws Exception { assertExec( "Should be minus one", - StaticMethod.class, "minusOneI", + StaticMethod.class, "minusOne__I", Double.valueOf(-1) ); } @@ -70,7 +70,7 @@ @Test public void doubleWithoutLong() throws Exception { assertExec( "Should be two", - StaticMethod.class, "minusDDJ", + StaticMethod.class, "minus__DDJ", Double.valueOf(2), 3.0d, 1l ); @@ -79,7 +79,7 @@ @Test public void divAndRound() throws Exception { assertExec( "Should be rounded to one", - StaticMethod.class, "divIBD", + StaticMethod.class, "div__IBD", Double.valueOf(1), 3, 3.75 ); @@ -87,7 +87,7 @@ @Test public void mixedMethodFourParams() throws Exception { assertExec( "Should be two", - StaticMethod.class, "mixIIJBD", + StaticMethod.class, "mix__IIJBD", Double.valueOf(20), 2, 10l, 5, 2.0 ); @@ -95,7 +95,7 @@ @Test public void factRec() throws Exception { assertExec( "Factorial of 5 is 120", - StaticMethod.class, "factRecJI", + StaticMethod.class, "factRec__JI", Double.valueOf(120), 5 ); @@ -103,7 +103,7 @@ @Test public void factIter() throws Exception { assertExec( "Factorial of 5 is 120", - StaticMethod.class, "factIterJI", + StaticMethod.class, "factIter__JI", Double.valueOf(120), 5 ); @@ -112,7 +112,7 @@ @Test public void xor() throws Exception { assertExec( "Xor is 4", - StaticMethod.class, "xorJIJ", + StaticMethod.class, "xor__JIJ", Double.valueOf(4), 7, 3 @@ -122,7 +122,7 @@ @Test public void or() throws Exception { assertExec( "Or will be 7", - StaticMethod.class, "orOrAndJZII", + StaticMethod.class, "orOrAnd__JZII", Double.valueOf(7), true, 4, @@ -132,14 +132,14 @@ @Test public void nullCheck() throws Exception { assertExec( "Returns nothing", - StaticMethod.class, "noneLjava_lang_ObjectII", + StaticMethod.class, "none__Ljava_lang_Object_2II", null, 1, 3 ); } @Test public void and() throws Exception { assertExec( "And will be 3", - StaticMethod.class, "orOrAndJZII", + StaticMethod.class, "orOrAnd__JZII", Double.valueOf(3), false, 7, @@ -149,7 +149,7 @@ @Test public void inc4() throws Exception { assertExec( "It will be 4", - StaticMethod.class, "inc4I", + StaticMethod.class, "inc4__I", Double.valueOf(4) ); } @@ -162,7 +162,7 @@ @Test public void shiftLeftInJS() throws Exception { assertExec( "Setting 9th bit", - StaticMethod.class, "shiftLeftIII", + StaticMethod.class, "shiftLeft__III", Double.valueOf(256), 1, 8 ); @@ -176,7 +176,7 @@ @Test public void shiftRightInJS() throws Exception { assertExec( "Get -1", - StaticMethod.class, "shiftArithmRightIIIZ", + StaticMethod.class, "shiftArithmRight__IIIZ", Double.valueOf(-1), -8, 3, true ); @@ -189,7 +189,7 @@ @Test public void unsignedShiftRightInJS() throws Exception { assertExec( "Get -1", - StaticMethod.class, "shiftArithmRightIIIZ", + StaticMethod.class, "shiftArithmRight__IIIZ", Double.valueOf(1), 8, 3, false ); @@ -198,7 +198,7 @@ @Test public void javaScriptBody() throws Exception { assertExec( "JavaScript string", - StaticMethod.class, "i2sLjava_lang_StringII", + StaticMethod.class, "i2s__Ljava_lang_String_2II", "333", 330, 3 ); @@ -207,7 +207,7 @@ @Test public void switchJarda() throws Exception { assertExec( "The expected value", - StaticMethod.class, "swtchLjava_lang_StringI", + StaticMethod.class, "swtch__Ljava_lang_String_2I", "Jarda", 0 ); @@ -216,7 +216,7 @@ @Test public void switchDarda() throws Exception { assertExec( "The expected value", - StaticMethod.class, "swtchLjava_lang_StringI", + StaticMethod.class, "swtch__Ljava_lang_String_2I", "Darda", 1 ); @@ -224,7 +224,7 @@ @Test public void switchParda() throws Exception { assertExec( "The expected value", - StaticMethod.class, "swtch2Ljava_lang_StringI", + StaticMethod.class, "swtch2__Ljava_lang_String_2I", "Parda", 22 ); @@ -232,7 +232,7 @@ @Test public void switchMarda() throws Exception { assertExec( "The expected value", - StaticMethod.class, "swtchLjava_lang_StringI", + StaticMethod.class, "swtch__Ljava_lang_String_2I", "Marda", -433 ); diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/StringArrayTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringArrayTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -0,0 +1,50 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.vm4brwsr; + +import org.testng.annotations.Test; +import static org.testng.Assert.*; + +public class StringArrayTest { + @Test public void deleteMinusIndex() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(-1); + assertEquals(list.toArray().length, 2, "No element removed"); + } + @Test public void deleteTooHighIndex() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(5); + assertEquals(list.toArray().length, 2, "No element removed"); + } + @Test public void deleteFirst() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(0); + assertEquals(list.toArray().length, 1, "First element removed"); + assertEquals(list.toArray()[0], "Kluci"); + } + @Test public void deleteSecond() throws Exception { + String[] arr = { "Ahoj", "Kluci" }; + StringArray list = StringArray.asList(arr); + list.delete(1); + assertEquals(list.toArray().length, 1, "Second element removed"); + assertEquals(list.toArray()[0], "Ahoj"); + } +} diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -18,7 +18,6 @@ package org.apidesign.vm4brwsr; import javax.script.Invocable; -import javax.script.ScriptException; import org.testng.annotations.Test; import static org.testng.Assert.*; import org.testng.annotations.BeforeClass; @@ -31,7 +30,7 @@ @Test public void firstChar() throws Exception { assertExec( "First char in Hello is H", - StringSample.class, "sayHelloCI", + StringSample.class, "sayHello__CI", 72, 0 ); } @@ -39,7 +38,7 @@ @Test public void fromChars() throws Exception { assertExec( "First char in Hello is ABC", - StringSample.class, "fromCharsLjava_lang_StringCCC", + StringSample.class, "fromChars__Ljava_lang_String_2CCC", "ABC", 'A', 'B', 'C' ); } @@ -47,7 +46,7 @@ @Test public void concatChars() throws Exception { assertExec( "Composing yields ABC", - StringSample.class, "charsLjava_lang_StringCCC", + StringSample.class, "chars__Ljava_lang_String_2CCC", "ABC", 'A', 'B', 'C' ); } @@ -55,7 +54,7 @@ @Test public void concatCharsFromInts() throws Exception { assertExec( "Composing yields ABC", - StringSample.class, "charsFromNumbersLjava_lang_String", + StringSample.class, "charsFromNumbers__Ljava_lang_String_2", "ABC" ); } @@ -63,7 +62,7 @@ @Test public void concatCharsFromChars() throws Exception { assertExec( "Composing yields ABC", - StringSample.class, "charsFromCharsLjava_lang_String", + StringSample.class, "charsFromChars__Ljava_lang_String_2", "ABC" ); } @@ -71,7 +70,7 @@ @Test public void instanceOfWorks() throws Exception { assertExec( "It is string", - StringSample.class, "isStringInstanceZ", + StringSample.class, "isStringInstance__Z", Double.valueOf(1.0) ); } @@ -79,7 +78,7 @@ @Test(timeOut=10000) public void toStringConcatenation() throws Exception { assertExec( "Five executions should generate 5Hello World!", - StringSample.class, "toStringTestLjava_lang_StringI", + StringSample.class, "toStringTest__Ljava_lang_String_2I", "Hello World!5", 5 ); } @@ -90,7 +89,7 @@ @Test(timeOut=10000) public void stringStringConcat() throws Exception { assertExec( "Composes strings OK", - StringSample.class, "concatStringsLjava_lang_String", + StringSample.class, "concatStrings__Ljava_lang_String_2", "Hello World!1" + "\\\n\r\t" ); } @@ -98,21 +97,21 @@ @Test public void equalsAndSubstring() throws Exception { assertExec( "Composes are OK", - StringSample.class, "equalToHelloZII", + StringSample.class, "equalToHello__ZII", true, 0, 5 ); } @Test public void replaceChars() throws Exception { assertExec( "Can replace slashes by underscores", - StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC", + StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC", "x_y_z", "x/y/z", '/', '_' ); } @Test public void replaceIntChars() throws Exception { assertExec( "Can replace slashes by underscores", - StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC", + StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC", "x_y_z", "x/y/z", (int)'/', (int)'_' ); } @@ -120,7 +119,7 @@ @Test public void insertBuilder() throws Exception { assertExec( "Can insert something into a buffer?", - StringSample.class, "insertBufferLjava_lang_String", + StringSample.class, "insertBuffer__Ljava_lang_String_2", "Ahojdo!" ); } @@ -130,7 +129,7 @@ int jh = StringSample.hashCode(j); assertExec( "Hashcode is the same " +jh, - StringSample.class, "hashCodeILjava_lang_String", + StringSample.class, "hashCode__ILjava_lang_String_2", Double.valueOf(jh), j ); } @@ -139,28 +138,28 @@ int jh = StringSample.hashCode(j); assertExec( "Hashcode is the same " + jh, - StringSample.class, "hashCodeILjava_lang_String", + StringSample.class, "hashCode__ILjava_lang_String_2", Double.valueOf(jh), j ); } @Test public void stringSwitch1() throws Exception { assertExec( "Get one", - StringSample.class, "stringSwitchILjava_lang_String", + StringSample.class, "stringSwitch__ILjava_lang_String_2", Double.valueOf(1), "jedna" ); } @Test public void stringSwitch2() throws Exception { assertExec( "Get two", - StringSample.class, "stringSwitchILjava_lang_String", + StringSample.class, "stringSwitch__ILjava_lang_String_2", Double.valueOf(2), "dve" ); } @Test public void stringSwitchDefault() throws Exception { assertExec( "Get -1", - StringSample.class, "stringSwitchILjava_lang_String", + StringSample.class, "stringSwitch__ILjava_lang_String_2", Double.valueOf(-1), "none" ); } @@ -169,7 +168,7 @@ assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane"); assertExec( "One A and one B adds to 3", - StringSample.class, "countABILjava_lang_String", + StringSample.class, "countAB__ILjava_lang_String_2", Double.valueOf(3), "Ahoj Bedo!" ); diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Tue Dec 04 11:21:10 2012 +0100 @@ -43,7 +43,7 @@ @JavaScriptBody(args = { "self", "n" }, body= - "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();" + "var cls = n.replace__Ljava_lang_String_2CC(n,'/','_').toString();" + "var glb = self.fld_global;" + "var vm = self.fld_vm;" + "if (glb[cls]) return false;" diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -53,7 +53,7 @@ sb.append("\n var glb = global;"); sb.append("\n lazyVM.prototype.loadClass = function(res, name) {"); sb.append("\n var script = org_apidesign_vm4brwsr_VMLazy(true)." - + "toJavaScriptLjava_lang_StringLjava_lang_ObjectLjava_lang_ObjectAB(" + + "toJavaScript__Ljava_lang_String_2Ljava_lang_Object_2Ljava_lang_Object_2_3B(" + " glb, self," + " loader.get(res + '.class')" + ");"); @@ -77,13 +77,13 @@ @Test public void invokeStaticMethod() throws Exception { assertExec("Trying to get -1", "test", Double.valueOf(-1), - "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI" + "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOne__I" ); } @Test public void loadDependantClass() throws Exception { assertExec("Trying to get zero", "test", Double.valueOf(0), - "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD" + "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDbl__D" ); } diff -r 380f7ba7ef70 -r 001389026dbf vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Mon Dec 03 22:13:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Tue Dec 04 11:21:10 2012 +0100 @@ -42,7 +42,7 @@ Object ret; try { ret = code.invokeFunction(VMinVM.class.getName().replace('.', '_'), true); - ret = code.invokeMethod(ret, "toJavaScriptLjava_lang_StringAB", arr); + ret = code.invokeMethod(ret, "toJavaScript__Ljava_lang_String_2_3B", arr); } catch (Exception ex) { File f = File.createTempFile("execution", ".js"); FileWriter w = new FileWriter(f);