# HG changeset patch # User Jaroslav Tulach # Date 1354121890 -3600 # Node ID 34dfa2becbf23a480d7fb4fd8e04aa6db573c844 # Parent 227bafe6ef52d23fc3f66beab2eec5241dbd3b46# Parent cdd00892d06e338f4dd1a6d597c40c78ab0a8707 Merging work on lazy loading. Seems stable enough to produce a simple demo. diff -r 227bafe6ef52 -r 34dfa2becbf2 emul/src/main/java/java/lang/AbstractStringBuilder.java --- a/emul/src/main/java/java/lang/AbstractStringBuilder.java Sun Nov 25 21:23:06 2012 +0100 +++ b/emul/src/main/java/java/lang/AbstractStringBuilder.java Wed Nov 28 17:58:10 2012 +0100 @@ -602,7 +602,7 @@ */ @JavaScriptBody( args={ "self", "i" }, - body="return java_lang_AbstractStringBuilder_appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());" + body="return java_lang_AbstractStringBuilder(true).appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());" ) public AbstractStringBuilder append(int i) { if (i == Integer.MIN_VALUE) { diff -r 227bafe6ef52 -r 34dfa2becbf2 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 Sun Nov 25 21:23:06 2012 +0100 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Wed Nov 28 17:58:10 2012 +0100 @@ -1,4 +1,20 @@ -/* */ +/** + * 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) { @@ -350,6 +366,1019 @@ 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.$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; @@ -1255,1010 +2284,6 @@ } } */ -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_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_toStringLjava_lang_String(arg0) { - return arg0.toString(); -} -function java_lang_String_toCharArrayAC(arg0) { - return arg0.toString().split(''); -} -/* -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 - } -} -*/ -var java_lang_String_serialVersionUID = 0; -var java_lang_String_serialPersistentFields = 0; -var java_lang_String_CASE_INSENSITIVE_ORDER = 0; -function java_lang_String() { - /** the real value of this 'string' we delegate to */ - this.r = ''; -} -java_lang_String.prototype = new String; -java_lang_String.prototype.toString = function() { return this.r; };; -//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.$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; /* this.lengthI = java_lang_String_lengthI; diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Nov 28 17:58:10 2012 +0100 @@ -19,7 +19,6 @@ import java.io.IOException; import java.io.InputStream; -import org.apidesign.bck2brwsr.core.JavaScriptBody; import org.apidesign.javap.AnnotationParser; import org.apidesign.javap.ClassData; import org.apidesign.javap.FieldData; @@ -50,6 +49,16 @@ * @param resourcePath name of resources to read */ protected abstract void requireScript(String resourcePath); + + /** Allows subclasses to redefine what field a function representing a + * class gets assigned. By default it returns the suggested name followed + * by " = "; + * + * @param className suggested name of the class + */ + protected String assignClass(String className) { + return className + " = "; + } /** * Converts a given class file to a JavaScript version. @@ -74,70 +83,64 @@ } } StringArray toInitilize = new StringArray(); - for (MethodData m : jc.getMethods()) { - if (m.isStatic()) { - generateStaticMethod(m, toInitilize); - } else { - generateInstanceMethod(m); - } - } final String className = className(jc); - out.append("\nfunction ").append(className); - out.append("() {"); - for (FieldData v : jc.getFields()) { - if (!v.isStatic()) { - out.append("\n this.fld_"). - append(v.getName()).append(initField(v)); - } - } - out.append("\n}\n\nfunction ").append(className).append("_proto() {"); - out.append("\n if (").append(className). - append(".prototype.$instOf_").append(className).append(") {"); - out.append("\n return new ").append(className).append(";"); - out.append("\n }"); + out.append("\n\n").append(assignClass(className)); + out.append("function CLS() {"); + out.append("\n if (!CLS.prototype.$instOf_").append(className).append(") {"); for (FieldData v : jc.getFields()) { if (v.isStatic()) { - generateStaticField(v); + out.append("\n CLS.").append(v.getName()).append(initField(v)); } } // ClassName sc = jc.getSuperClass(); String sc = jc.getSuperClassName(); // with _ if (sc != null) { - out.append("\n var p = ").append(className) - .append(".prototype = "). - append(sc.replace('/', '_')).append("_proto();"); + out.append("\n var p = CLS.prototype = "). + append(sc.replace('/', '_')).append("(true);"); } else { - out.append("\n var p = ").append(className).append(".prototype;"); + out.append("\n var p = CLS.prototype;"); } for (MethodData m : jc.getMethods()) { - if (!m.getName().contains("")) { - generateMethodReference("\n p.", m); + if (m.isStatic()) { + generateStaticMethod("\n p.", m, toInitilize); + } else { + generateInstanceMethod("\n p.", m); } } - out.append("\n p.$instOf_").append(className).append(" = true;"); + out.append("\n p.$instOf_").append(className).append(" = true;"); for (String superInterface : jc.getSuperInterfaces()) { - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); + out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); } - out.append("\n return new ").append(className).append(";"); + out.append("\n if (arguments.length === 0) {"); + out.append("\n return new CLS();"); + out.append("\n }"); + out.append("\n }"); + out.append("\n if (arguments.length === 0) {"); + for (FieldData v : jc.getFields()) { + if (!v.isStatic()) { + out.append("\n this.fld_"). + append(v.getName()).append(initField(v)); + } + } + out.append("\n return this;"); + out.append("\n }"); + out.append("\n return new CLS;"); out.append("\n}"); - out.append("\n").append(className).append("_proto();"); StringBuilder sb = new StringBuilder(); for (String init : toInitilize.toArray()) { sb.append("\n").append(init).append("();"); } return sb.toString(); } - private void generateStaticMethod(MethodData m, StringArray toInitilize) throws IOException { - if (javaScriptBody(m, true)) { + private void generateStaticMethod(String prefix, MethodData m, StringArray toInitilize) throws IOException { + if (javaScriptBody(prefix, m, true)) { return; } StringBuilder argsCnt = new StringBuilder(); final String mn = findMethodName(m, argsCnt); - out.append("\nfunction ").append( - className(jc) - ).append('_').append(mn); + out.append(prefix).append(mn).append(" = function"); if (mn.equals("classV")) { - toInitilize.add(className(jc) + '_' + mn); + toInitilize.add(className(jc) + "(true)." + mn); } out.append('('); String space = ""; @@ -165,24 +168,16 @@ } else { out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n"); } - out.append("}"); + out.append("};"); } - private void generateMethodReference(String prefix, MethodData m) throws IOException { - final String name = findMethodName(m, new StringBuilder()); - out.append(prefix).append(name).append(" = ") - .append(className(jc)) - .append('_').append(name).append(";"); - } - - private void generateInstanceMethod(MethodData m) throws IOException { - if (javaScriptBody(m, false)) { + private void generateInstanceMethod(String prefix, MethodData m) throws IOException { + if (javaScriptBody(prefix, m, false)) { return; } StringBuilder argsCnt = new StringBuilder(); - out.append("\nfunction ").append( - className(jc) - ).append('_').append(findMethodName(m, argsCnt)); + final String mn = findMethodName(m, argsCnt); + out.append(prefix).append(mn).append(" = function"); out.append("(arg0"); String space = ","; for (int index = 1, i = 0; i < argsCnt.length(); i++) { @@ -207,7 +202,7 @@ } else { out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n"); } - out.append("}"); + out.append("};"); } private void produceCode(byte[] byteCodes) throws IOException { @@ -846,12 +841,6 @@ } } - private void generateStaticField(FieldData v) throws IOException { - out.append("\n ") - .append(className(jc)) - .append('.').append(v.getName()).append(initField(v)); - } - private String findMethodName(MethodData m, StringBuilder cnt) { StringBuilder name = new StringBuilder(); if ("".equals(m.getName())) { // NOI18N @@ -897,7 +886,7 @@ } final String in = mi[0]; out.append(in.replace('/', '_')); - out.append(".prototype."); + out.append("(true)."); out.append(mn); out.append('('); String sep = ""; @@ -980,7 +969,7 @@ return d.replace('[', 'A'); } - private boolean javaScriptBody(MethodData m, boolean isStatic) throws IOException { + private boolean javaScriptBody(String prefix, MethodData m, boolean isStatic) throws IOException { byte[] arr = m.findAnnotationData(true); if (arr == null) { return false; @@ -1010,9 +999,8 @@ return false; } StringBuilder cnt = new StringBuilder(); - out.append("\nfunction ").append(className(jc)).append('_'). - append(findMethodName(m, cnt)); - out.append("("); + out.append(prefix).append(findMethodName(m, cnt)); + out.append(" = function("); String space; int index; if (!isStatic) { diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -29,7 +29,7 @@ */ public class ArrayTest { @Test public void verifySimpleIntOperation() throws Exception { - assertExec("CheckTheSum", "org_apidesign_vm4brwsr_Array_simpleI", + assertExec("CheckTheSum", Array.class, "simpleI", Double.valueOf(15) ); } @@ -39,13 +39,13 @@ } @Test public void verifyOperationsOnArrays() throws Exception { - assertExec("The sum is 105", "org_apidesign_vm4brwsr_Array_sumD", + assertExec("The sum is 105", Array.class, "sumD", Double.valueOf(105) ); } @Test public void doesCopyArrayWork() throws Exception { - assertExec("Returns 'a'", "org_apidesign_vm4brwsr_Array_copyArrayC", Double.valueOf('a')); + assertExec("Returns 'a'", Array.class, "copyArrayC", Double.valueOf('a')); } private static CharSequence codeSeq; @@ -59,21 +59,7 @@ ); codeSeq = sb; } - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { - Object ret = null; - try { - ret = code.invokeFunction(methodName, args); - } catch (ScriptException ex) { - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } catch (NoSuchMethodException ex) { - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } - if (ret == null && expRes == null) { - return; - } - if (expRes.equals(ret)) { - return; - } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); + private static void assertExec(String msg, Class clazz, String method, Object expRes, Object... args) throws Exception { + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args); } } diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -31,42 +31,42 @@ @Test public void verifyDefaultDoubleValue() throws Exception { assertExec( "Will be zero", - "org_apidesign_vm4brwsr_Instance_defaultDblValueD", + Instance.class, "defaultDblValueD", Double.valueOf(0) ); } @Test public void verifyStaticMethodCall() throws Exception { assertExec( "Will be zero", - "org_apidesign_vm4brwsr_InstanceSub_recallDblD", + InstanceSub.class, "recallDblD", Double.valueOf(0) ); } @Test public void verifyAssignedByteValue() throws Exception { assertExec( "Will one thirty one", - "org_apidesign_vm4brwsr_Instance_assignedByteValueB", + Instance.class, "assignedByteValueB", Double.valueOf(31) ); } @Test public void verifyMagicOne() throws Exception { assertExec( "Should be three and something", - "org_apidesign_vm4brwsr_Instance_magicOneD", + Instance.class, "magicOneD", Double.valueOf(3.3) ); } @Test public void verifyInstanceMethods() throws Exception { assertExec( "Should be eleven as we invoke overwritten method, plus 44", - "org_apidesign_vm4brwsr_Instance_virtualBytesI", + Instance.class, "virtualBytesI", Double.valueOf(55) ); } @Test public void verifyInterfaceMethods() throws Exception { assertExec( "Retruns default value", - "org_apidesign_vm4brwsr_Instance_interfaceBytesF", + Instance.class, "interfaceBytesF", Double.valueOf(31) ); } @@ -74,7 +74,7 @@ @Test public void isNull() throws Exception { assertExec( "Yes, we are instance", - "org_apidesign_vm4brwsr_Instance_isNullZ", + Instance.class, "isNullZ", Double.valueOf(0.0) ); } @@ -82,7 +82,7 @@ @Test public void isInstanceOf() throws Exception { assertExec( "Yes, we are instance", - "org_apidesign_vm4brwsr_Instance_instanceOfZZ", + Instance.class, "instanceOfZZ", Double.valueOf(1.0), true ); } @@ -90,7 +90,7 @@ @Test public void notInstanceOf() throws Exception { assertExec( "No, we are not an instance", - "org_apidesign_vm4brwsr_Instance_instanceOfZZ", + Instance.class, "instanceOfZZ", Double.valueOf(0.0), false ); } @@ -98,14 +98,14 @@ @Test public void verifyCastToClass() throws Exception { assertExec( "Five signals all is good", - "org_apidesign_vm4brwsr_Instance_castsWorkIZ", + Instance.class, "castsWorkIZ", Double.valueOf(5.0), false ); } @Test public void verifyCastToInterface() throws Exception { assertExec( "Five signals all is good", - "org_apidesign_vm4brwsr_Instance_castsWorkIZ", + Instance.class, "castsWorkIZ", Double.valueOf(5.0), true ); } @@ -127,25 +127,9 @@ } private void assertExec( - String msg, String methodName, Object expRes, Object... args + String msg, Class clazz, String method, Object expRes, Object... args ) throws Exception { - - Object ret = null; - try { - ret = code.invokeFunction(methodName, args); - } catch (ScriptException ex) { - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } catch (NoSuchMethodException ex) { - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } - if (ret == null && expRes == null) { - return; - } - if (expRes.equals(ret)) { - return; - } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq)); - + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args); } } diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -17,11 +17,6 @@ */ package org.apidesign.vm4brwsr; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; import javax.script.Invocable; import javax.script.ScriptException; import static org.testng.Assert.*; @@ -34,19 +29,19 @@ */ public class NumberTest { @Test public void integerFromString() throws Exception { - assertExec("Can convert string to integer", "java_lang_Integer_parseIntILjava_lang_String", + assertExec("Can convert string to integer", Integer.class, "parseIntILjava_lang_String", Double.valueOf(333), "333" ); } @Test public void doubleFromString() throws Exception { - assertExec("Can convert string to double", "java_lang_Double_parseDoubleDLjava_lang_String", + assertExec("Can convert string to double", Double.class, "parseDoubleDLjava_lang_String", Double.valueOf(33.3), "33.3" ); } @Test public void autoboxDouble() throws Exception { - assertExec("Autoboxing of doubles is OK", "org_apidesign_vm4brwsr_Numbers_autoboxDblToStringLjava_lang_String", + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToStringLjava_lang_String", "3.3" ); } @@ -56,7 +51,7 @@ } @Test public void jslog1000() throws Exception { - assertExec("log_10(1000) == 3", "java_lang_Math_log10DD", + assertExec("log_10(1000) == 3", Math.class, "log10DD", Double.valueOf(3.0), 1000.0 ); } @@ -65,20 +60,20 @@ assertEquals(3, Numbers.rem(303, 10)); } @Test public void jsRem() throws Exception { - assertExec("Should be three", "org_apidesign_vm4brwsr_Numbers_remIII", + assertExec("Should be three", Numbers.class, "remIII", Double.valueOf(3.0), 303, 10 ); } @Test public void deserializeInt() throws Exception { int exp = Numbers.deserInt(); - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserIntI", + assertExec("Should be the same", Numbers.class, "deserIntI", Double.valueOf(exp) ); } @Test public void deserializeSimpleLong() throws Exception { - assertExec("Should be 3454", "org_apidesign_vm4brwsr_Numbers_deserLongJAB", + assertExec("Should be 3454", Numbers.class, "deserLongJAB", Double.valueOf(3454), new byte[] { (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)13, (byte)126 } ); @@ -102,7 +97,7 @@ @Test public void deserializeFloatInJS() throws Exception { float f = 54324.32423f; - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserFloatF", + assertExec("Should be the same", Numbers.class, "deserFloatF", Double.valueOf(f) ); } @@ -115,7 +110,7 @@ @Test public void deserializeDoubleInJS() throws Exception { double f = 3.0; - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserDoubleD", f); + assertExec("Should be the same", Numbers.class, "deserDoubleD", f); } /* @Test public void serDouble() throws IOException { @@ -136,7 +131,7 @@ @Test public void fiveInStringJS() throws Exception { String s = Numbers.intToString(); assertExec("Should be the same: " + s, - "org_apidesign_vm4brwsr_Numbers_intToStringLjava_lang_String", + Numbers.class, "intToStringLjava_lang_String", s ); } @@ -144,7 +139,7 @@ @Test public void sevenInStringJS() throws Exception { String s = Numbers.floatToString(); assertExec("Should be the same: " + s, - "org_apidesign_vm4brwsr_Numbers_floatToStringLjava_lang_String", + Numbers.class, "floatToStringLjava_lang_String", s ); } @@ -162,15 +157,16 @@ } private static void assertExec( - String msg, String methodName, Object expRes, Object... args) throws Exception { + String msg, Class clazz, String method, Object expRes, Object... args) throws Exception { Object ret = null; try { - ret = code.invokeFunction(methodName, args); + ret = code.invokeFunction(clazz.getName().replace('.', '_'), true); + ret = code.invokeMethod(ret, method, args); } catch (ScriptException ex) { - fail("Execution failed in\n" + codeSeq, ex); + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in\n" + codeSeq, ex); + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex); } if (ret == null && expRes == null) { return; @@ -181,10 +177,10 @@ if (expRes instanceof Double && ret instanceof Double) { double expD = ((Double)expRes).doubleValue(); double retD = ((Double)ret).doubleValue(); - assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + codeSeq); + assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq)); return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq)); } } diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -36,7 +36,7 @@ @Test public void threePlusFour() throws Exception { assertExec( "Should be seven", - "org_apidesign_vm4brwsr_StaticMethod_sumIII", + StaticMethod.class, "sumIII", Double.valueOf(7), 3, 4 ); @@ -45,7 +45,7 @@ @Test public void checkReallyInitializedValues() throws Exception { assertExec( "Return true", - "org_apidesign_vm4brwsr_StaticMethod_isNullZ", + StaticMethod.class, "isNullZ", Double.valueOf(1) ); } @@ -53,7 +53,7 @@ @Test public void powerOfThree() throws Exception { assertExec( "Should be nine", - "org_apidesign_vm4brwsr_StaticMethod_powerFF", + StaticMethod.class, "powerFF", Double.valueOf(9), 3.0f ); @@ -62,7 +62,7 @@ @Test public void minusOne() throws Exception { assertExec( "Should be minus one", - "org_apidesign_vm4brwsr_StaticMethod_minusOneI", + StaticMethod.class, "minusOneI", Double.valueOf(-1) ); } @@ -70,7 +70,7 @@ @Test public void doubleWithoutLong() throws Exception { assertExec( "Should be two", - "org_apidesign_vm4brwsr_StaticMethod_minusDDJ", + StaticMethod.class, "minusDDJ", Double.valueOf(2), 3.0d, 1l ); @@ -79,7 +79,7 @@ @Test public void divAndRound() throws Exception { assertExec( "Should be rounded to one", - "org_apidesign_vm4brwsr_StaticMethod_divIBD", + StaticMethod.class, "divIBD", Double.valueOf(1), 3, 3.75 ); @@ -87,7 +87,7 @@ @Test public void mixedMethodFourParams() throws Exception { assertExec( "Should be two", - "org_apidesign_vm4brwsr_StaticMethod_mixIIJBD", + StaticMethod.class, "mixIIJBD", Double.valueOf(20), 2, 10l, 5, 2.0 ); @@ -95,7 +95,7 @@ @Test public void factRec() throws Exception { assertExec( "Factorial of 5 is 120", - "org_apidesign_vm4brwsr_StaticMethod_factRecJI", + StaticMethod.class, "factRecJI", Double.valueOf(120), 5 ); @@ -103,7 +103,7 @@ @Test public void factIter() throws Exception { assertExec( "Factorial of 5 is 120", - "org_apidesign_vm4brwsr_StaticMethod_factIterJI", + StaticMethod.class, "factIterJI", Double.valueOf(120), 5 ); @@ -112,7 +112,7 @@ @Test public void xor() throws Exception { assertExec( "Xor is 4", - "org_apidesign_vm4brwsr_StaticMethod_xorJIJ", + StaticMethod.class, "xorJIJ", Double.valueOf(4), 7, 3 @@ -122,7 +122,7 @@ @Test public void or() throws Exception { assertExec( "Or will be 7", - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII", + StaticMethod.class, "orOrAndJZII", Double.valueOf(7), true, 4, @@ -132,14 +132,14 @@ @Test public void nullCheck() throws Exception { assertExec( "Returns nothing", - "org_apidesign_vm4brwsr_StaticMethod_noneLjava_lang_ObjectII", + StaticMethod.class, "noneLjava_lang_ObjectII", null, 1, 3 ); } @Test public void and() throws Exception { assertExec( "And will be 3", - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII", + StaticMethod.class, "orOrAndJZII", Double.valueOf(3), false, 7, @@ -149,7 +149,7 @@ @Test public void inc4() throws Exception { assertExec( "It will be 4", - "org_apidesign_vm4brwsr_StaticMethod_inc4I", + StaticMethod.class, "inc4I", Double.valueOf(4) ); } @@ -162,7 +162,7 @@ @Test public void shiftLeftInJS() throws Exception { assertExec( "Setting 9th bit", - "org_apidesign_vm4brwsr_StaticMethod_shiftLeftIII", + StaticMethod.class, "shiftLeftIII", Double.valueOf(256), 1, 8 ); @@ -176,7 +176,7 @@ @Test public void shiftRightInJS() throws Exception { assertExec( "Get -1", - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ", + StaticMethod.class, "shiftArithmRightIIIZ", Double.valueOf(-1), -8, 3, true ); @@ -189,7 +189,7 @@ @Test public void unsignedShiftRightInJS() throws Exception { assertExec( "Get -1", - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ", + StaticMethod.class, "shiftArithmRightIIIZ", Double.valueOf(1), 8, 3, false ); @@ -198,7 +198,7 @@ @Test public void javaScriptBody() throws Exception { assertExec( "JavaScript string", - "org_apidesign_vm4brwsr_StaticMethod_i2sLjava_lang_StringII", + StaticMethod.class, "i2sLjava_lang_StringII", "333", 330, 3 ); @@ -207,7 +207,7 @@ @Test public void switchJarda() throws Exception { assertExec( "The expected value", - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI", + StaticMethod.class, "swtchLjava_lang_StringI", "Jarda", 0 ); @@ -216,7 +216,7 @@ @Test public void switchDarda() throws Exception { assertExec( "The expected value", - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI", + StaticMethod.class, "swtchLjava_lang_StringI", "Darda", 1 ); @@ -224,7 +224,7 @@ @Test public void switchParda() throws Exception { assertExec( "The expected value", - "org_apidesign_vm4brwsr_StaticMethod_swtch2Ljava_lang_StringI", + StaticMethod.class, "swtch2Ljava_lang_StringI", "Parda", 22 ); @@ -232,7 +232,7 @@ @Test public void switchMarda() throws Exception { assertExec( "The expected value", - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI", + StaticMethod.class, "swtchLjava_lang_StringI", "Marda", -433 ); @@ -249,16 +249,25 @@ } - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { - StringBuilder sb = new StringBuilder(); - + private static void assertExec( + String msg, Class clazz, String method, + Object expRes, Object... args + ) throws Exception { + assertExec(code, codeSeq, msg, clazz, method, expRes, args); + } + static void assertExec( + Invocable toRun, CharSequence theCode, + String msg, Class clazz, String method, + Object expRes, Object... args + ) throws Exception { Object ret = null; try { - ret = code.invokeFunction(methodName, args); + ret = toRun.invokeFunction(clazz.getName().replace('.', '_'), true); + ret = toRun.invokeMethod(ret, method, args); } catch (ScriptException ex) { - fail("Execution failed in\n" + codeSeq, ex); + fail("Execution failed in\n" + dumpJS(theCode), ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in\n" + codeSeq, ex); + fail("Cannot find method in\n" + dumpJS(theCode), ex); } if (ret == null && expRes == null) { return; @@ -266,17 +275,25 @@ if (expRes != null && expRes.equals(ret)) { return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + dumpJS(theCode)); } static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException { + return compileClass(sb, null, names); + } + static Invocable compileClass( + StringBuilder sb, ScriptEngine[] eng, String... names + ) throws ScriptException, IOException { if (sb == null) { sb = new StringBuilder(); } GenJS.compile(sb, names); ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine js = sem.getEngineByExtension("js"); + if (eng != null) { + eng[0] = js; + } try { Object res = js.eval(sb.toString()); assertTrue(js instanceof Invocable, "It is invocable object: " + res); @@ -285,7 +302,7 @@ if (sb.length() > 2000) { sb = dumpJS(sb); } - fail("Could not compile:\n" + sb, ex); + fail("Could not evaluate:\n" + sb, ex); return null; } } diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Wed Nov 28 17:58:10 2012 +0100 @@ -64,6 +64,10 @@ return h.hashCode(); } + public static boolean isStringInstance() { + return chars('a', (char)30, 'b') instanceof String; + } + public static String insertBuffer() { StringBuilder sb = new StringBuilder(); sb.append("Jardo!"); diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -31,7 +31,7 @@ @Test public void firstChar() throws Exception { assertExec( "First char in Hello is H", - "org_apidesign_vm4brwsr_StringSample_sayHelloCI", + StringSample.class, "sayHelloCI", 72, 0 ); } @@ -39,7 +39,7 @@ @Test public void fromChars() throws Exception { assertExec( "First char in Hello is ABC", - "org_apidesign_vm4brwsr_StringSample_fromCharsLjava_lang_StringCCC", + StringSample.class, "fromCharsLjava_lang_StringCCC", "ABC", 'A', 'B', 'C' ); } @@ -47,7 +47,7 @@ @Test public void concatChars() throws Exception { assertExec( "Composing yields ABC", - "org_apidesign_vm4brwsr_StringSample_charsLjava_lang_StringCCC", + StringSample.class, "charsLjava_lang_StringCCC", "ABC", 'A', 'B', 'C' ); } @@ -55,7 +55,7 @@ @Test public void concatCharsFromInts() throws Exception { assertExec( "Composing yields ABC", - "org_apidesign_vm4brwsr_StringSample_charsFromNumbersLjava_lang_String", + StringSample.class, "charsFromNumbersLjava_lang_String", "ABC" ); } @@ -63,15 +63,23 @@ @Test public void concatCharsFromChars() throws Exception { assertExec( "Composing yields ABC", - "org_apidesign_vm4brwsr_StringSample_charsFromCharsLjava_lang_String", + StringSample.class, "charsFromCharsLjava_lang_String", "ABC" ); } + @Test public void instanceOfWorks() throws Exception { + assertExec( + "It is string", + StringSample.class, "isStringInstanceZ", + Double.valueOf(1.0) + ); + } + @Test(timeOut=10000) public void toStringConcatenation() throws Exception { assertExec( "Five executions should generate 5Hello World!", - "org_apidesign_vm4brwsr_StringSample_toStringTestLjava_lang_StringI", + StringSample.class, "toStringTestLjava_lang_StringI", "Hello World!5", 5 ); } @@ -82,7 +90,7 @@ @Test(timeOut=10000) public void stringStringConcat() throws Exception { assertExec( "Composes strings OK", - "org_apidesign_vm4brwsr_StringSample_concatStringsLjava_lang_String", + StringSample.class, "concatStringsLjava_lang_String", "Hello World!1" + "\\\n\r\t" ); } @@ -90,21 +98,21 @@ @Test public void equalsAndSubstring() throws Exception { assertExec( "Composes are OK", - "org_apidesign_vm4brwsr_StringSample_equalToHelloZII", + StringSample.class, "equalToHelloZII", true, 0, 5 ); } @Test public void replaceChars() throws Exception { assertExec( "Can replace slashes by underscores", - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC", + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC", "x_y_z", "x/y/z", '/', '_' ); } @Test public void replaceIntChars() throws Exception { assertExec( "Can replace slashes by underscores", - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC", + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC", "x_y_z", "x/y/z", (int)'/', (int)'_' ); } @@ -112,7 +120,7 @@ @Test public void insertBuilder() throws Exception { assertExec( "Can insert something into a buffer?", - "org_apidesign_vm4brwsr_StringSample_insertBufferLjava_lang_String", + StringSample.class, "insertBufferLjava_lang_String", "Ahojdo!" ); } @@ -122,7 +130,7 @@ int jh = StringSample.hashCode(j); assertExec( "Hashcode is the same " +jh, - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String", + StringSample.class, "hashCodeILjava_lang_String", Double.valueOf(jh), j ); } @@ -131,28 +139,28 @@ int jh = StringSample.hashCode(j); assertExec( "Hashcode is the same " + jh, - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String", + StringSample.class, "hashCodeILjava_lang_String", Double.valueOf(jh), j ); } @Test public void stringSwitch1() throws Exception { assertExec( "Get one", - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String", + StringSample.class, "stringSwitchILjava_lang_String", Double.valueOf(1), "jedna" ); } @Test public void stringSwitch2() throws Exception { assertExec( "Get two", - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String", + StringSample.class, "stringSwitchILjava_lang_String", Double.valueOf(2), "dve" ); } @Test public void stringSwitchDefault() throws Exception { assertExec( "Get -1", - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String", + StringSample.class, "stringSwitchILjava_lang_String", Double.valueOf(-1), "none" ); } @@ -161,7 +169,7 @@ assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane"); assertExec( "One A and one B adds to 3", - "org_apidesign_vm4brwsr_StringSample_countABILjava_lang_String", + StringSample.class, "countABILjava_lang_String", Double.valueOf(3), "Ahoj Bedo!" ); @@ -180,23 +188,10 @@ codeSeq = sb; } - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { - Object ret = null; - try { - ret = code.invokeFunction(methodName, args); - } catch (ScriptException ex) { - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } catch (NoSuchMethodException ex) { - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex); - } - if (ret == null && expRes == null) { - return; - } - if (expRes.equals(ret)) { - return; - } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq)); - + private static void assertExec(String msg, + Class clazz, String method, Object expRes, Object... args + ) throws Exception { + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args); } } diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Wed Nov 28 17:58:10 2012 +0100 @@ -0,0 +1,68 @@ +/** + * 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 java.io.ByteArrayInputStream; +import java.io.IOException; +import org.apidesign.bck2brwsr.core.JavaScriptBody; + +/** + * + * @author Jaroslav Tulach + */ +class VMLazy extends ByteCodeToJavaScript { + private final Object vm; + private final Object global; + + private VMLazy(Object global, Object vm, Appendable out) { + super(out); + this.vm = vm; + this.global = global; + } + + static String toJavaScript(Object global, Object vm, byte[] is) throws IOException { + StringBuilder sb = new StringBuilder(); + new VMLazy(global, vm, sb).compile(new ByteArrayInputStream(is)); + return sb.toString().toString(); + } + + @JavaScriptBody(args = { "self", "n" }, + body= + "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();" + + "var glb = self.fld_global;" + + "var vm = self.fld_vm;" + + "if (glb[cls]) return false;" + + "glb[cls] = function() {" + + " return vm.loadClass(n,cls);" + + "};" + + "return true;" + ) + @Override + protected boolean requireReference(String internalClassName) { + throw new UnsupportedOperationException(); + } + + @Override + protected void requireScript(String resourcePath) { + } + + @Override + protected String assignClass(String className) { + return "arguments[0][arguments[1]]="; + } +} diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -0,0 +1,132 @@ +/** + * 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 java.io.IOException; +import java.io.InputStream; +import javax.script.Invocable; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptException; +import org.testng.annotations.BeforeClass; +import static org.testng.Assert.*; +import org.testng.annotations.Test; + +/** Implements loading class by class. + * + * @author Jaroslav Tulach + */ +public class VMLazyTest { + + + private static CharSequence codeSeq; + private static Invocable code; + + @BeforeClass + public void compileTheCode() throws Exception { + StringBuilder sb = new StringBuilder(); + + sb.append("\nfunction test(clazz, as, method) {"); + sb.append("\n var l = new lazyVM(this);"); + sb.append("\n var c = l.loadClass(clazz, as);"); + sb.append("\n return c[method]();"); + sb.append("\n}"); + + + sb.append("\nfunction lazyVM(global) {"); + sb.append("\n var self = this;"); + 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(" + + " glb, self," + + " loader.get(res + '.class')" + + ");"); + sb.append("\n try {"); + sb.append("\n new Function(script)(self, name);"); + sb.append("\n } catch (ex) {"); + sb.append("\n throw 'Cannot compile ' + res + ' error: ' + ex + ' script:\\n' + script;"); + sb.append("\n };"); + sb.append("\n return self[name](true);"); + sb.append("\n };"); + sb.append("\n"); + sb.append("\n}\n"); + + ScriptEngine[] arr = { null }; + code = StaticMethodTest.compileClass(sb, arr, + "org/apidesign/vm4brwsr/VMLazy" + ); + arr[0].getContext().setAttribute("loader", new FindBytes(), ScriptContext.ENGINE_SCOPE); + codeSeq = sb; + } + + @Test public void invokeStaticMethod() throws Exception { + assertExec("Trying to get -1", "test", Double.valueOf(-1), + "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI" + ); + } + + @Test public void loadDependantClass() throws Exception { + assertExec("Trying to get zero", "test", Double.valueOf(0), + "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD" + ); + } + + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { + Object ret = null; + try { + ret = code.invokeFunction(methodName, args); + } catch (ScriptException ex) { + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex); + } catch (NoSuchMethodException ex) { + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex); + } + if (ret == null && expRes == null) { + return; + } + if (expRes.equals(ret)) { + return; + } + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq)); + } + + public static final class FindBytes { + public byte[] get(String name) throws IOException { + InputStream is = VMLazyTest.class.getClassLoader().getResourceAsStream(name); + if (is == null) { + throw new IOException("Can't find " + name); + } + byte[] arr = new byte[is.available()]; + int len = is.read(arr); + if (len != arr.length) { + throw new IOException("Read only " + len + " wanting " + arr.length); + } + /* + System.err.print("loader['" + name + "'] = ["); + for (int i = 0; i < arr.length; i++) { + if (i > 0) { + System.err.print(", "); + } + System.err.print(arr[i]); + } + System.err.println("]"); + */ + return arr; + } + } +} diff -r 227bafe6ef52 -r 34dfa2becbf2 vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Sun Nov 25 21:23:06 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Wed Nov 28 17:58:10 2012 +0100 @@ -41,10 +41,8 @@ Object ret; try { - ret = code.invokeFunction( - "org_apidesign_vm4brwsr_VMinVM_toJavaScriptLjava_lang_StringAB", - arr - ); + ret = code.invokeFunction(VMinVM.class.getName().replace('.', '_'), true); + ret = code.invokeMethod(ret, "toJavaScriptLjava_lang_StringAB", arr); } catch (Exception ex) { File f = File.createTempFile("execution", ".js"); FileWriter w = new FileWriter(f);