Merging work on lazy loading. Seems stable enough to produce a simple demo.
1.1 --- a/emul/src/main/java/java/lang/AbstractStringBuilder.java Sun Nov 25 21:23:06 2012 +0100
1.2 +++ b/emul/src/main/java/java/lang/AbstractStringBuilder.java Wed Nov 28 17:58:10 2012 +0100
1.3 @@ -602,7 +602,7 @@
1.4 */
1.5 @JavaScriptBody(
1.6 args={ "self", "i" },
1.7 - body="return java_lang_AbstractStringBuilder_appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());"
1.8 + body="return java_lang_AbstractStringBuilder(true).appendLjava_lang_AbstractStringBuilderLjava_lang_String(self,i.toString());"
1.9 )
1.10 public AbstractStringBuilder append(int i) {
1.11 if (i == Integer.MIN_VALUE) {
2.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Sun Nov 25 21:23:06 2012 +0100
2.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Wed Nov 28 17:58:10 2012 +0100
2.3 @@ -1,4 +1,20 @@
2.4 -/* */
2.5 +/**
2.6 + * Back 2 Browser Bytecode Translator
2.7 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
2.8 + *
2.9 + * This program is free software: you can redistribute it and/or modify
2.10 + * it under the terms of the GNU General Public License as published by
2.11 + * the Free Software Foundation, version 2 of the License.
2.12 + *
2.13 + * This program is distributed in the hope that it will be useful,
2.14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2.15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2.16 + * GNU General Public License for more details.
2.17 + *
2.18 + * You should have received a copy of the GNU General Public License
2.19 + * along with this program. Look for COPYING file in the top folder.
2.20 + * If not, see http://opensource.org/licenses/GPL-2.0.
2.21 + */
2.22
2.23
2.24 function java_lang_String_consVAC(self,charArr) {
2.25 @@ -350,6 +366,1019 @@
2.26 return h;
2.27 }
2.28
2.29 +function java_lang_String_substringLjava_lang_StringI(arg0,arg1) {
2.30 + return arg0.toString().substring(arg1);
2.31 +}
2.32 +function java_lang_String_substringLjava_lang_StringII(arg0,arg1,arg2) {
2.33 + return arg0.toString().substring(arg1, arg2);
2.34 +}
2.35 +
2.36 +function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
2.37 + if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
2.38 + if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
2.39 + var s = arg0.toString();
2.40 + for (;;) {
2.41 + var ret = s.replace(arg1, arg2);
2.42 + if (ret === s) {
2.43 + return ret;
2.44 + }
2.45 + s = ret;
2.46 + }
2.47 +}
2.48 +function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
2.49 + return arg0.toString().indexOf(arg1.toString()) >= 0;
2.50 +}
2.51 +
2.52 +function java_lang_String_toStringLjava_lang_String(arg0) {
2.53 + return arg0.toString();
2.54 +}
2.55 +function java_lang_String_toCharArrayAC(arg0) {
2.56 + return arg0.toString().split('');
2.57 +}
2.58 +var java_lang_String_serialVersionUID = 0;
2.59 +var java_lang_String_serialPersistentFields = 0;
2.60 +var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
2.61 +function java_lang_String() {
2.62 + if (arguments.length === 0) {
2.63 + /** the real value of this 'string' we delegate to */
2.64 + this.r = '';
2.65 + return this;
2.66 + } else {
2.67 + return new java_lang_String;
2.68 + }
2.69 +}
2.70 +java_lang_String.prototype = new String;
2.71 +java_lang_String.prototype.toString = function() { return this.r; };;
2.72 +java_lang_String.prototype.valueOf = function() { return this.toString().valueOf(); };;
2.73 +//java_lang_String_classV();
2.74 +
2.75 +/* new method for JavaScript String */
2.76 +String.prototype.consVAC = java_lang_String_consVAC;
2.77 +String.prototype.consVACII = java_lang_String_consVACII;
2.78 +String.prototype.charAtCI = java_lang_String_charAtCI;
2.79 +String.prototype.lengthI = java_lang_String_lengthI;
2.80 +String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
2.81 +String.prototype.getCharsVIIACI = java_lang_String_getCharsVIIACAI;
2.82 +String.prototype.getCharsVACI = java_lang_String_getCharsVACI;
2.83 +String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
2.84 +String.prototype.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
2.85 +String.prototype.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
2.86 +String.prototype.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
2.87 +String.prototype.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
2.88 +String.prototype.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
2.89 +String.prototype.hashCodeI = java_lang_String_hashCodeI;
2.90 +String.prototype.toCharArrayAC = java_lang_String_toCharArrayAC;
2.91 +String.prototype.valueOfLjava_lang_StringI=java_lang_String_valueOfLjava_lang_StringI;
2.92 +String.prototype.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
2.93 +String.prototype.startsWithZLjava_lang_String=java_lang_String_startsWithZLjava_lang_String;
2.94 +String.prototype.endsWithZLjava_lang_String=java_lang_String_endsWithZLjava_lang_String;
2.95 +String.prototype.indexOfII=java_lang_String_indexOfII;
2.96 +String.prototype.indexOfIII=java_lang_String_indexOfIII;
2.97 +
2.98 +String.prototype.$instOf_java_lang_String = true;
2.99 +String.prototype.$instOf_java_io_Serializable = true;
2.100 +String.prototype.$instOf_java_lang_Comparable = true;
2.101 +String.prototype.$instOf_java_lang_CharSequence = true;
2.102 +
2.103 +/*
2.104 +function java_lang_String_subSequenceLjava_lang_CharSequenceII(arg0,arg1,arg2) {
2.105 + var arg3;
2.106 +;
2.107 + var stack = new Array(3);
2.108 + var gt = 0;
2.109 + for(;;) switch(gt) {
2.110 + case 0: stack.push(arg0); // 42
2.111 + case 1: stack.push(arg1); // 27
2.112 + case 2: stack.push(arg2); // 28
2.113 + 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
2.114 + case 6: return stack.pop(); // 176
2.115 + }
2.116 +}
2.117 +function java_lang_String_concatLjava_lang_StringLjava_lang_String(arg0,arg1) {
2.118 + var arg2;
2.119 + var arg3;
2.120 + var arg4;
2.121 +;
2.122 + var stack = new Array(5);
2.123 + var gt = 0;
2.124 + for(;;) switch(gt) {
2.125 + case 0: stack.push(arg1); // 43
2.126 + case 1: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 182 1 133
2.127 + case 4: arg2 = stack.pop(); // 61
2.128 + case 5: stack.push(arg2); // 28
2.129 + case 6: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 5
2.130 + case 9: stack.push(arg0); // 42
2.131 + case 10: return stack.pop(); // 176
2.132 + case 11: stack.push(arg0); // 42
2.133 + case 12: stack.push(stack.pop().count); // 180 1 97
2.134 + case 15: stack.push(arg2); // 28
2.135 + case 16: stack.push(stack.pop() + stack.pop()); // 96
2.136 + case 17: stack.push(new Array(stack.pop())); // 188 5
2.137 + case 19: arg3 = stack.pop(); // 78
2.138 + case 20: stack.push(arg0); // 42
2.139 + case 21: stack.push(0); // 3
2.140 + case 22: stack.push(arg0); // 42
2.141 + case 23: stack.push(stack.pop().count); // 180 1 97
2.142 + case 26: stack.push(arg3); // 45
2.143 + case 27: stack.push(0); // 3
2.144 + 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
2.145 + case 31: stack.push(arg1); // 43
2.146 + case 32: stack.push(0); // 3
2.147 + case 33: stack.push(arg2); // 28
2.148 + case 34: stack.push(arg3); // 45
2.149 + case 35: stack.push(arg0); // 42
2.150 + case 36: stack.push(stack.pop().count); // 180 1 97
2.151 + 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
2.152 + case 42: stack.push(new java_lang_String); // 187 0 200
2.153 + case 45: stack.push(stack[stack.length - 1]); // 89
2.154 + case 46: stack.push(0); // 3
2.155 + case 47: stack.push(arg0); // 42
2.156 + case 48: stack.push(stack.pop().count); // 180 1 97
2.157 + case 51: stack.push(arg2); // 28
2.158 + case 52: stack.push(stack.pop() + stack.pop()); // 96
2.159 + case 53: stack.push(arg3); // 45
2.160 + 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
2.161 + case 57: return stack.pop(); // 176
2.162 + }
2.163 +}
2.164 +function java_lang_String_matchesZLjava_lang_String(arg0,arg1) {
2.165 + var arg2;
2.166 +;
2.167 + var stack = new Array(2);
2.168 + var gt = 0;
2.169 + for(;;) switch(gt) {
2.170 + case 0: stack.push(arg1); // 43
2.171 + case 1: stack.push(arg0); // 42
2.172 + 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
2.173 + case 5: return stack.pop(); // 172
2.174 + }
2.175 +}
2.176 +function java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
2.177 + var arg3;
2.178 +;
2.179 + var stack = new Array(2);
2.180 + var gt = 0;
2.181 + for(;;) switch(gt) {
2.182 + case 0: stack.push(arg1); // 43
2.183 + case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.184 + case 4: stack.push(arg0); // 42
2.185 + case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.186 + case 8: stack.push(arg2); // 44
2.187 + case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceFirstLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 182
2.188 + case 12: return stack.pop(); // 176
2.189 + }
2.190 +}
2.191 +function java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
2.192 + var arg3;
2.193 +;
2.194 + var stack = new Array(2);
2.195 + var gt = 0;
2.196 + for(;;) switch(gt) {
2.197 + case 0: stack.push(arg1); // 43
2.198 + case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.199 + case 4: stack.push(arg0); // 42
2.200 + case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.201 + case 8: stack.push(arg2); // 44
2.202 + case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
2.203 + case 12: return stack.pop(); // 176
2.204 + }
2.205 +}
2.206 +function java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence(arg0,arg1,arg2) {
2.207 + var arg3;
2.208 +;
2.209 + var stack = new Array(2);
2.210 + var gt = 0;
2.211 + for(;;) switch(gt) {
2.212 + case 0: stack.push(arg1); // 43
2.213 + case 1: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.214 + case 4: stack.push(16); // 16 16
2.215 + 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
2.216 + case 9: stack.push(arg0); // 42
2.217 + case 10: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.218 + case 13: stack.push(arg2); // 44
2.219 + case 14: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.220 + case 17: { var v0 = stack.pop(); stack.push(java_util_regex_Matcher_quoteReplacementLjava_lang_StringLjava_lang_String(v0)); } // 184 1 180
2.221 + case 20: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
2.222 + case 23: return stack.pop(); // 176
2.223 + }
2.224 +}
2.225 +function java_lang_String_splitALjava_lang_StringLjava_lang_StringI(arg0,arg1,arg2) {
2.226 + var arg3;
2.227 +;
2.228 + var stack = new Array(3);
2.229 + var gt = 0;
2.230 + for(;;) switch(gt) {
2.231 + case 0: stack.push(arg1); // 43
2.232 + case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.233 + case 4: stack.push(arg0); // 42
2.234 + case 5: stack.push(arg2); // 28
2.235 + 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
2.236 + case 9: return stack.pop(); // 176
2.237 + }
2.238 +}
2.239 +function java_lang_String_splitALjava_lang_StringLjava_lang_String(arg0,arg1) {
2.240 + var arg2;
2.241 +;
2.242 + var stack = new Array(3);
2.243 + var gt = 0;
2.244 + for(;;) switch(gt) {
2.245 + case 0: stack.push(arg0); // 42
2.246 + case 1: stack.push(arg1); // 43
2.247 + case 2: stack.push(0); // 3
2.248 + 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
2.249 + case 6: return stack.pop(); // 176
2.250 + }
2.251 +}
2.252 +function java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
2.253 + var arg2;
2.254 + var arg3;
2.255 + var arg4;
2.256 + var arg5;
2.257 + var arg6;
2.258 + var arg7;
2.259 + var arg8;
2.260 + var arg9;
2.261 + var arg10;
2.262 + var arg11;
2.263 + var arg12;
2.264 + var arg13;
2.265 + var arg14;
2.266 +;
2.267 + var stack = new Array(6);
2.268 + var gt = 0;
2.269 + for(;;) switch(gt) {
2.270 + case 0: stack.push(arg1); // 43
2.271 + case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
2.272 + case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
2.273 + case 7: stack.push(stack[stack.length - 1]); // 89
2.274 + case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
2.275 + case 11: // 191
2.276 + case 12: stack.push(0); // 3
2.277 + case 13: arg2 = stack.pop(); // 61
2.278 + case 14: stack.push(arg2); // 28
2.279 + case 15: stack.push(arg0); // 42
2.280 + case 16: stack.push(stack.pop().count); // 180 1 97
2.281 + case 19: if (stack.pop() <= stack.pop()) { gt = 94; continue; } // 162 0 75
2.282 + case 22: stack.push(arg0); // 42
2.283 + case 23: stack.push(stack.pop().value); // 180 1 100
2.284 + case 26: stack.push(arg0); // 42
2.285 + case 27: stack.push(stack.pop().offset); // 180 1 99
2.286 + case 30: stack.push(arg2); // 28
2.287 + case 31: stack.push(stack.pop() + stack.pop()); // 96
2.288 + case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.289 + case 33: arg3 = stack.pop(); // 62
2.290 + case 34: stack.push(arg3); // 29
2.291 + case 35: stack.push(55296); // 18 1
2.292 + case 37: if (stack.pop() > stack.pop()) { gt = 77; continue; } // 161 0 40
2.293 + case 40: stack.push(arg3); // 29
2.294 + case 41: stack.push(56319); // 18 2
2.295 + case 43: if (stack.pop() < stack.pop()) { gt = 77; continue; } // 163 0 34
2.296 + case 46: stack.push(arg0); // 42
2.297 + case 47: stack.push(arg2); // 28
2.298 + case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.299 + case 51: arg4 = stack.pop() // 54 4
2.300 + case 53: stack.push(arg4); // 21 4
2.301 + case 55: stack.push(arg4); // 21 4
2.302 + case 57: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
2.303 + case 60: if (stack.pop() == stack.pop()) { gt = 66; continue; } // 159 0 6
2.304 + case 63: gt = 96; continue; // 167 0 33
2.305 + case 66: stack.push(arg2); // 28
2.306 + case 67: stack.push(arg4); // 21 4
2.307 + case 69: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.308 + case 72: stack.push(stack.pop() + stack.pop()); // 96
2.309 + case 73: arg2 = stack.pop(); // 61
2.310 + case 74: gt = 91; continue; // 167 0 17
2.311 + case 77: stack.push(arg3); // 29
2.312 + case 78: stack.push(arg3); // 29
2.313 + case 79: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
2.314 + case 82: if (stack.pop() == stack.pop()) { gt = 88; continue; } // 159 0 6
2.315 + case 85: gt = 96; continue; // 167 0 11
2.316 + case 88: arg2++; // 132 2 1
2.317 + case 91: gt = 14; continue; // 167 255 179
2.318 + case 94: stack.push(arg0); // 42
2.319 + case 95: return stack.pop(); // 176
2.320 + case 96: stack.push(arg0); // 42
2.321 + case 97: stack.push(stack.pop().count); // 180 1 97
2.322 + case 100: stack.push(new Array(stack.pop())); // 188 5
2.323 + case 102: arg3 = stack.pop(); // 78
2.324 + case 103: stack.push(0); // 3
2.325 + case 104: arg4 = stack.pop() // 54 4
2.326 + case 106: stack.push(arg0); // 42
2.327 + case 107: stack.push(stack.pop().value); // 180 1 100
2.328 + case 110: stack.push(arg0); // 42
2.329 + case 111: stack.push(stack.pop().offset); // 180 1 99
2.330 + case 114: stack.push(arg3); // 45
2.331 + case 115: stack.push(0); // 3
2.332 + case 116: stack.push(arg2); // 28
2.333 + 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
2.334 + case 120: stack.push(arg1); // 43
2.335 + case 121: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
2.336 + case 124: arg5 = stack.pop() // 58 5
2.337 + case 126: stack.push(arg5); // 25 5
2.338 + case 128: stack.push("tr"); // 18 11
2.339 + case 130: // 165
2.340 + case 131: // 0
2.341 + case 132: stack.push(6405); // 17 25 5
2.342 + case 135: stack.push("az"); // 18 5
2.343 + case 137: // 165
2.344 + case 138: // 0
2.345 + case 139: stack.push(1); // 10
2.346 + case 140: stack.push(arg5); // 25 5
2.347 + case 142: stack.push("lt"); // 18 9
2.348 + case 144: // 166
2.349 + case 145: // 0
2.350 + case 146: stack.push(4); // 7
2.351 + case 147: stack.push(1); // 4
2.352 + case 148: gt = 152; continue; // 167 0 4
2.353 + case 151: stack.push(0); // 3
2.354 + case 152: arg6 = stack.pop() // 54 6
2.355 + case 154: stack.push(arg2); // 28
2.356 + case 155: arg11 = stack.pop() // 54 11
2.357 + case 157: stack.push(arg11); // 21 11
2.358 + case 159: stack.push(arg0); // 42
2.359 + case 160: stack.push(stack.pop().count); // 180 1 97
2.360 + case 163: if (stack.pop() <= stack.pop()) { gt = 419; continue; } // 162 1 0
2.361 + case 166: stack.push(arg0); // 42
2.362 + case 167: stack.push(stack.pop().value); // 180 1 100
2.363 + case 170: stack.push(arg0); // 42
2.364 + case 171: stack.push(stack.pop().offset); // 180 1 99
2.365 + case 174: stack.push(arg11); // 21 11
2.366 + case 176: stack.push(stack.pop() + stack.pop()); // 96
2.367 + case 177: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.368 + case 178: arg9 = stack.pop() // 54 9
2.369 + case 180: stack.push(arg9); // 21 9
2.370 + case 182: // number conversion // 146
2.371 + case 183: stack.push(55296); // 18 1
2.372 + case 185: if (stack.pop() > stack.pop()) { gt = 214; continue; } // 161 0 29
2.373 + case 188: stack.push(arg9); // 21 9
2.374 + case 190: // number conversion // 146
2.375 + case 191: stack.push(56319); // 18 2
2.376 + case 193: if (stack.pop() < stack.pop()) { gt = 214; continue; } // 163 0 21
2.377 + case 196: stack.push(arg0); // 42
2.378 + case 197: stack.push(arg11); // 21 11
2.379 + case 199: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.380 + case 202: arg9 = stack.pop() // 54 9
2.381 + case 204: stack.push(arg9); // 21 9
2.382 + case 206: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.383 + case 209: arg10 = stack.pop() // 54 10
2.384 + case 211: gt = 217; continue; // 167 0 6
2.385 + case 214: stack.push(1); // 4
2.386 + case 215: arg10 = stack.pop() // 54 10
2.387 + case 217: stack.push(arg6); // 21 6
2.388 + case 219: if (stack.pop() != 0) { gt = 230; continue; } // 154 0 11
2.389 + case 222: stack.push(arg9); // 21 9
2.390 + case 224: stack.push(931); // 17 3 163
2.391 + case 227: if (stack.pop() != stack.pop()) { gt = 242; continue; } // 160 0 15
2.392 + case 230: stack.push(arg0); // 42
2.393 + case 231: stack.push(arg11); // 21 11
2.394 + case 233: stack.push(arg1); // 43
2.395 + 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
2.396 + case 237: arg8 = stack.pop() // 54 8
2.397 + case 239: gt = 249; continue; // 167 0 10
2.398 + case 242: stack.push(arg9); // 21 9
2.399 + case 244: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
2.400 + case 247: arg8 = stack.pop() // 54 8
2.401 + case 249: stack.push(arg8); // 21 8
2.402 + case 251: // 2
2.403 + case 252: if (stack.pop() == stack.pop()) { gt = 262; continue; } // 159 0 10
2.404 + case 255: stack.push(arg8); // 21 8
2.405 + case 257: stack.push(65536); // 18 3
2.406 + case 259: if (stack.pop() > stack.pop()) { gt = 399; continue; } // 161 0 140
2.407 + case 262: stack.push(arg8); // 21 8
2.408 + case 264: // 2
2.409 + case 265: if (stack.pop() != stack.pop()) { gt = 280; continue; } // 160 0 15
2.410 + case 268: stack.push(arg0); // 42
2.411 + case 269: stack.push(arg11); // 21 11
2.412 + case 271: stack.push(arg1); // 43
2.413 + 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
2.414 + case 275: arg7 = stack.pop() // 58 7
2.415 + case 277: gt = 315; continue; // 167 0 38
2.416 + case 280: stack.push(arg10); // 21 10
2.417 + case 282: stack.push(2); // 5
2.418 + case 283: if (stack.pop() != stack.pop()) { gt = 308; continue; } // 160 0 25
2.419 + case 286: stack.push(arg4); // 21 4
2.420 + case 288: stack.push(arg8); // 21 8
2.421 + case 290: stack.push(arg3); // 45
2.422 + case 291: stack.push(arg11); // 21 11
2.423 + case 293: stack.push(arg4); // 21 4
2.424 + case 295: stack.push(stack.pop() + stack.pop()); // 96
2.425 + 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
2.426 + case 299: stack.push(arg10); // 21 10
2.427 + case 301: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.428 + case 302: stack.push(stack.pop() + stack.pop()); // 96
2.429 + case 303: arg4 = stack.pop() // 54 4
2.430 + case 305: gt = 409; continue; // 167 0 104
2.431 + case 308: stack.push(arg8); // 21 8
2.432 + case 310: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
2.433 + case 313: arg7 = stack.pop() // 58 7
2.434 + case 315: stack.push(arg7); // 25 7
2.435 + case 317: stack.push(stack.pop().length); // 190
2.436 + case 318: arg12 = stack.pop() // 54 12
2.437 + case 320: stack.push(arg12); // 21 12
2.438 + case 322: stack.push(arg10); // 21 10
2.439 + case 324: if (stack.pop() >= stack.pop()) { gt = 355; continue; } // 164 0 31
2.440 + case 327: stack.push(arg3); // 45
2.441 + case 328: stack.push(stack.pop().length); // 190
2.442 + case 329: stack.push(arg12); // 21 12
2.443 + case 331: stack.push(stack.pop() + stack.pop()); // 96
2.444 + case 332: stack.push(arg10); // 21 10
2.445 + case 334: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.446 + case 335: stack.push(new Array(stack.pop())); // 188 5
2.447 + case 337: arg13 = stack.pop() // 58 13
2.448 + case 339: stack.push(arg3); // 45
2.449 + case 340: stack.push(0); // 3
2.450 + case 341: stack.push(arg13); // 25 13
2.451 + case 343: stack.push(0); // 3
2.452 + case 344: stack.push(arg11); // 21 11
2.453 + case 346: stack.push(arg4); // 21 4
2.454 + case 348: stack.push(stack.pop() + stack.pop()); // 96
2.455 + 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
2.456 + case 352: stack.push(arg13); // 25 13
2.457 + case 354: arg3 = stack.pop(); // 78
2.458 + case 355: stack.push(0); // 3
2.459 + case 356: arg13 = stack.pop() // 54 13
2.460 + case 358: stack.push(arg13); // 21 13
2.461 + case 360: stack.push(arg12); // 21 12
2.462 + case 362: if (stack.pop() <= stack.pop()) { gt = 386; continue; } // 162 0 24
2.463 + case 365: stack.push(arg3); // 45
2.464 + case 366: stack.push(arg11); // 21 11
2.465 + case 368: stack.push(arg4); // 21 4
2.466 + case 370: stack.push(stack.pop() + stack.pop()); // 96
2.467 + case 371: stack.push(arg13); // 21 13
2.468 + case 373: stack.push(stack.pop() + stack.pop()); // 96
2.469 + case 374: stack.push(arg7); // 25 7
2.470 + case 376: stack.push(arg13); // 21 13
2.471 + case 378: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.472 + case 379: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.473 + case 380: arg13++; // 132 13 1
2.474 + case 383: gt = 358; continue; // 167 255 231
2.475 + case 386: stack.push(arg4); // 21 4
2.476 + case 388: stack.push(arg12); // 21 12
2.477 + case 390: stack.push(arg10); // 21 10
2.478 + case 392: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.479 + case 393: stack.push(stack.pop() + stack.pop()); // 96
2.480 + case 394: arg4 = stack.pop() // 54 4
2.481 + case 396: gt = 409; continue; // 167 0 13
2.482 + case 399: stack.push(arg3); // 45
2.483 + case 400: stack.push(arg11); // 21 11
2.484 + case 402: stack.push(arg4); // 21 4
2.485 + case 404: stack.push(stack.pop() + stack.pop()); // 96
2.486 + case 405: stack.push(arg8); // 21 8
2.487 + case 407: // number conversion // 146
2.488 + case 408: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.489 + case 409: stack.push(arg11); // 21 11
2.490 + case 411: stack.push(arg10); // 21 10
2.491 + case 413: stack.push(stack.pop() + stack.pop()); // 96
2.492 + case 414: arg11 = stack.pop() // 54 11
2.493 + case 416: gt = 157; continue; // 167 254 253
2.494 + case 419: stack.push(new java_lang_String); // 187 0 200
2.495 + case 422: stack.push(stack[stack.length - 1]); // 89
2.496 + case 423: stack.push(0); // 3
2.497 + case 424: stack.push(arg0); // 42
2.498 + case 425: stack.push(stack.pop().count); // 180 1 97
2.499 + case 428: stack.push(arg4); // 21 4
2.500 + case 430: stack.push(stack.pop() + stack.pop()); // 96
2.501 + case 431: stack.push(arg3); // 45
2.502 + 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
2.503 + case 435: return stack.pop(); // 176
2.504 + }
2.505 +}
2.506 +function java_lang_String_toLowerCaseLjava_lang_String(arg0) {
2.507 + var arg1;
2.508 +;
2.509 + var stack = new Array(2);
2.510 + var gt = 0;
2.511 + for(;;) switch(gt) {
2.512 + case 0: stack.push(arg0); // 42
2.513 + case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
2.514 + case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toLowerCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 158
2.515 + case 7: return stack.pop(); // 176
2.516 + }
2.517 +}
2.518 +function java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
2.519 + var arg2;
2.520 + var arg3;
2.521 + var arg4;
2.522 + var arg5;
2.523 + var arg6;
2.524 + var arg7;
2.525 + var arg8;
2.526 + var arg9;
2.527 + var arg10;
2.528 + var arg11;
2.529 + var arg12;
2.530 + var arg13;
2.531 + var arg14;
2.532 +;
2.533 + var stack = new Array(6);
2.534 + var gt = 0;
2.535 + for(;;) switch(gt) {
2.536 + case 0: stack.push(arg1); // 43
2.537 + case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
2.538 + case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
2.539 + case 7: stack.push(stack[stack.length - 1]); // 89
2.540 + case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
2.541 + case 11: // 191
2.542 + case 12: stack.push(0); // 3
2.543 + case 13: arg2 = stack.pop(); // 61
2.544 + case 14: stack.push(arg2); // 28
2.545 + case 15: stack.push(arg0); // 42
2.546 + case 16: stack.push(stack.pop().count); // 180 1 97
2.547 + case 19: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 74
2.548 + case 22: stack.push(arg0); // 42
2.549 + case 23: stack.push(stack.pop().value); // 180 1 100
2.550 + case 26: stack.push(arg0); // 42
2.551 + case 27: stack.push(stack.pop().offset); // 180 1 99
2.552 + case 30: stack.push(arg2); // 28
2.553 + case 31: stack.push(stack.pop() + stack.pop()); // 96
2.554 + case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.555 + case 33: arg3 = stack.pop(); // 62
2.556 + case 34: stack.push(arg3); // 29
2.557 + case 35: stack.push(55296); // 18 1
2.558 + case 37: if (stack.pop() > stack.pop()) { gt = 61; continue; } // 161 0 24
2.559 + case 40: stack.push(arg3); // 29
2.560 + case 41: stack.push(56319); // 18 2
2.561 + case 43: if (stack.pop() < stack.pop()) { gt = 61; continue; } // 163 0 18
2.562 + case 46: stack.push(arg0); // 42
2.563 + case 47: stack.push(arg2); // 28
2.564 + case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.565 + case 51: arg3 = stack.pop(); // 62
2.566 + case 52: stack.push(arg3); // 29
2.567 + case 53: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.568 + case 56: arg4 = stack.pop() // 54 4
2.569 + case 58: gt = 64; continue; // 167 0 6
2.570 + case 61: stack.push(1); // 4
2.571 + case 62: arg4 = stack.pop() // 54 4
2.572 + case 64: stack.push(arg3); // 29
2.573 + case 65: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
2.574 + case 68: arg5 = stack.pop() // 54 5
2.575 + case 70: stack.push(arg5); // 21 5
2.576 + case 72: // 2
2.577 + case 73: if (stack.pop() == stack.pop()) { gt = 95; continue; } // 159 0 22
2.578 + case 76: stack.push(arg3); // 29
2.579 + case 77: stack.push(arg5); // 21 5
2.580 + case 79: if (stack.pop() == stack.pop()) { gt = 85; continue; } // 159 0 6
2.581 + case 82: gt = 95; continue; // 167 0 13
2.582 + case 85: stack.push(arg2); // 28
2.583 + case 86: stack.push(arg4); // 21 4
2.584 + case 88: stack.push(stack.pop() + stack.pop()); // 96
2.585 + case 89: arg2 = stack.pop(); // 61
2.586 + case 90: gt = 14; continue; // 167 255 180
2.587 + case 93: stack.push(arg0); // 42
2.588 + case 94: return stack.pop(); // 176
2.589 + case 95: stack.push(arg0); // 42
2.590 + case 96: stack.push(stack.pop().count); // 180 1 97
2.591 + case 99: stack.push(new Array(stack.pop())); // 188 5
2.592 + case 101: arg3 = stack.pop(); // 78
2.593 + case 102: stack.push(0); // 3
2.594 + case 103: arg4 = stack.pop() // 54 4
2.595 + case 105: stack.push(arg0); // 42
2.596 + case 106: stack.push(stack.pop().value); // 180 1 100
2.597 + case 109: stack.push(arg0); // 42
2.598 + case 110: stack.push(stack.pop().offset); // 180 1 99
2.599 + case 113: stack.push(arg3); // 45
2.600 + case 114: stack.push(0); // 3
2.601 + case 115: stack.push(arg2); // 28
2.602 + 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
2.603 + case 119: stack.push(arg1); // 43
2.604 + case 120: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
2.605 + case 123: arg5 = stack.pop() // 58 5
2.606 + case 125: stack.push(arg5); // 25 5
2.607 + case 127: stack.push("tr"); // 18 11
2.608 + case 129: // 165
2.609 + case 130: // 0
2.610 + case 131: stack.push(6405); // 17 25 5
2.611 + case 134: stack.push("az"); // 18 5
2.612 + case 136: // 165
2.613 + case 137: // 0
2.614 + case 138: stack.push(1); // 10
2.615 + case 139: stack.push(arg5); // 25 5
2.616 + case 141: stack.push("lt"); // 18 9
2.617 + case 143: // 166
2.618 + case 144: // 0
2.619 + case 145: stack.push(4); // 7
2.620 + case 146: stack.push(1); // 4
2.621 + case 147: gt = 151; continue; // 167 0 4
2.622 + case 150: stack.push(0); // 3
2.623 + case 151: arg6 = stack.pop() // 54 6
2.624 + case 153: stack.push(arg2); // 28
2.625 + case 154: arg11 = stack.pop() // 54 11
2.626 + case 156: stack.push(arg11); // 21 11
2.627 + case 158: stack.push(arg0); // 42
2.628 + case 159: stack.push(stack.pop().count); // 180 1 97
2.629 + case 162: if (stack.pop() <= stack.pop()) { gt = 425; continue; } // 162 1 7
2.630 + case 165: stack.push(arg0); // 42
2.631 + case 166: stack.push(stack.pop().value); // 180 1 100
2.632 + case 169: stack.push(arg0); // 42
2.633 + case 170: stack.push(stack.pop().offset); // 180 1 99
2.634 + case 173: stack.push(arg11); // 21 11
2.635 + case 175: stack.push(stack.pop() + stack.pop()); // 96
2.636 + case 176: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.637 + case 177: arg9 = stack.pop() // 54 9
2.638 + case 179: stack.push(arg9); // 21 9
2.639 + case 181: // number conversion // 146
2.640 + case 182: stack.push(55296); // 18 1
2.641 + case 184: if (stack.pop() > stack.pop()) { gt = 213; continue; } // 161 0 29
2.642 + case 187: stack.push(arg9); // 21 9
2.643 + case 189: // number conversion // 146
2.644 + case 190: stack.push(56319); // 18 2
2.645 + case 192: if (stack.pop() < stack.pop()) { gt = 213; continue; } // 163 0 21
2.646 + case 195: stack.push(arg0); // 42
2.647 + case 196: stack.push(arg11); // 21 11
2.648 + case 198: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.649 + case 201: arg9 = stack.pop() // 54 9
2.650 + case 203: stack.push(arg9); // 21 9
2.651 + case 205: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.652 + case 208: arg10 = stack.pop() // 54 10
2.653 + case 210: gt = 216; continue; // 167 0 6
2.654 + case 213: stack.push(1); // 4
2.655 + case 214: arg10 = stack.pop() // 54 10
2.656 + case 216: stack.push(arg6); // 21 6
2.657 + case 218: if (stack.pop() == 0) { gt = 233; continue; } // 153 0 15
2.658 + case 221: stack.push(arg0); // 42
2.659 + case 222: stack.push(arg11); // 21 11
2.660 + case 224: stack.push(arg1); // 43
2.661 + 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
2.662 + case 228: arg8 = stack.pop() // 54 8
2.663 + case 230: gt = 240; continue; // 167 0 10
2.664 + case 233: stack.push(arg9); // 21 9
2.665 + case 235: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
2.666 + case 238: arg8 = stack.pop() // 54 8
2.667 + case 240: stack.push(arg8); // 21 8
2.668 + case 242: // 2
2.669 + case 243: if (stack.pop() == stack.pop()) { gt = 253; continue; } // 159 0 10
2.670 + case 246: stack.push(arg8); // 21 8
2.671 + case 248: stack.push(65536); // 18 3
2.672 + case 250: if (stack.pop() > stack.pop()) { gt = 405; continue; } // 161 0 155
2.673 + case 253: stack.push(arg8); // 21 8
2.674 + case 255: // 2
2.675 + case 256: if (stack.pop() != stack.pop()) { gt = 286; continue; } // 160 0 30
2.676 + case 259: stack.push(arg6); // 21 6
2.677 + case 261: if (stack.pop() == 0) { gt = 276; continue; } // 153 0 15
2.678 + case 264: stack.push(arg0); // 42
2.679 + case 265: stack.push(arg11); // 21 11
2.680 + case 267: stack.push(arg1); // 43
2.681 + 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
2.682 + case 271: arg7 = stack.pop() // 58 7
2.683 + case 273: gt = 321; continue; // 167 0 48
2.684 + case 276: stack.push(arg9); // 21 9
2.685 + case 278: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCharArrayACI(v0)); } // 184 1 110
2.686 + case 281: arg7 = stack.pop() // 58 7
2.687 + case 283: gt = 321; continue; // 167 0 38
2.688 + case 286: stack.push(arg10); // 21 10
2.689 + case 288: stack.push(2); // 5
2.690 + case 289: if (stack.pop() != stack.pop()) { gt = 314; continue; } // 160 0 25
2.691 + case 292: stack.push(arg4); // 21 4
2.692 + case 294: stack.push(arg8); // 21 8
2.693 + case 296: stack.push(arg3); // 45
2.694 + case 297: stack.push(arg11); // 21 11
2.695 + case 299: stack.push(arg4); // 21 4
2.696 + case 301: stack.push(stack.pop() + stack.pop()); // 96
2.697 + 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
2.698 + case 305: stack.push(arg10); // 21 10
2.699 + case 307: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.700 + case 308: stack.push(stack.pop() + stack.pop()); // 96
2.701 + case 309: arg4 = stack.pop() // 54 4
2.702 + case 311: gt = 415; continue; // 167 0 104
2.703 + case 314: stack.push(arg8); // 21 8
2.704 + case 316: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
2.705 + case 319: arg7 = stack.pop() // 58 7
2.706 + case 321: stack.push(arg7); // 25 7
2.707 + case 323: stack.push(stack.pop().length); // 190
2.708 + case 324: arg12 = stack.pop() // 54 12
2.709 + case 326: stack.push(arg12); // 21 12
2.710 + case 328: stack.push(arg10); // 21 10
2.711 + case 330: if (stack.pop() >= stack.pop()) { gt = 361; continue; } // 164 0 31
2.712 + case 333: stack.push(arg3); // 45
2.713 + case 334: stack.push(stack.pop().length); // 190
2.714 + case 335: stack.push(arg12); // 21 12
2.715 + case 337: stack.push(stack.pop() + stack.pop()); // 96
2.716 + case 338: stack.push(arg10); // 21 10
2.717 + case 340: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.718 + case 341: stack.push(new Array(stack.pop())); // 188 5
2.719 + case 343: arg13 = stack.pop() // 58 13
2.720 + case 345: stack.push(arg3); // 45
2.721 + case 346: stack.push(0); // 3
2.722 + case 347: stack.push(arg13); // 25 13
2.723 + case 349: stack.push(0); // 3
2.724 + case 350: stack.push(arg11); // 21 11
2.725 + case 352: stack.push(arg4); // 21 4
2.726 + case 354: stack.push(stack.pop() + stack.pop()); // 96
2.727 + 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
2.728 + case 358: stack.push(arg13); // 25 13
2.729 + case 360: arg3 = stack.pop(); // 78
2.730 + case 361: stack.push(0); // 3
2.731 + case 362: arg13 = stack.pop() // 54 13
2.732 + case 364: stack.push(arg13); // 21 13
2.733 + case 366: stack.push(arg12); // 21 12
2.734 + case 368: if (stack.pop() <= stack.pop()) { gt = 392; continue; } // 162 0 24
2.735 + case 371: stack.push(arg3); // 45
2.736 + case 372: stack.push(arg11); // 21 11
2.737 + case 374: stack.push(arg4); // 21 4
2.738 + case 376: stack.push(stack.pop() + stack.pop()); // 96
2.739 + case 377: stack.push(arg13); // 21 13
2.740 + case 379: stack.push(stack.pop() + stack.pop()); // 96
2.741 + case 380: stack.push(arg7); // 25 7
2.742 + case 382: stack.push(arg13); // 21 13
2.743 + case 384: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.744 + case 385: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.745 + case 386: arg13++; // 132 13 1
2.746 + case 389: gt = 364; continue; // 167 255 231
2.747 + case 392: stack.push(arg4); // 21 4
2.748 + case 394: stack.push(arg12); // 21 12
2.749 + case 396: stack.push(arg10); // 21 10
2.750 + case 398: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.751 + case 399: stack.push(stack.pop() + stack.pop()); // 96
2.752 + case 400: arg4 = stack.pop() // 54 4
2.753 + case 402: gt = 415; continue; // 167 0 13
2.754 + case 405: stack.push(arg3); // 45
2.755 + case 406: stack.push(arg11); // 21 11
2.756 + case 408: stack.push(arg4); // 21 4
2.757 + case 410: stack.push(stack.pop() + stack.pop()); // 96
2.758 + case 411: stack.push(arg8); // 21 8
2.759 + case 413: // number conversion // 146
2.760 + case 414: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.761 + case 415: stack.push(arg11); // 21 11
2.762 + case 417: stack.push(arg10); // 21 10
2.763 + case 419: stack.push(stack.pop() + stack.pop()); // 96
2.764 + case 420: arg11 = stack.pop() // 54 11
2.765 + case 422: gt = 156; continue; // 167 254 246
2.766 + case 425: stack.push(new java_lang_String); // 187 0 200
2.767 + case 428: stack.push(stack[stack.length - 1]); // 89
2.768 + case 429: stack.push(0); // 3
2.769 + case 430: stack.push(arg0); // 42
2.770 + case 431: stack.push(stack.pop().count); // 180 1 97
2.771 + case 434: stack.push(arg4); // 21 4
2.772 + case 436: stack.push(stack.pop() + stack.pop()); // 96
2.773 + case 437: stack.push(arg3); // 45
2.774 + 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
2.775 + case 441: return stack.pop(); // 176
2.776 + }
2.777 +}
2.778 +function java_lang_String_toUpperCaseLjava_lang_String(arg0) {
2.779 + var arg1;
2.780 +;
2.781 + var stack = new Array(2);
2.782 + var gt = 0;
2.783 + for(;;) switch(gt) {
2.784 + case 0: stack.push(arg0); // 42
2.785 + case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
2.786 + case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toUpperCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 159
2.787 + case 7: return stack.pop(); // 176
2.788 + }
2.789 +}
2.790 +function java_lang_String_trimLjava_lang_String(arg0) {
2.791 + var arg1;
2.792 + var arg2;
2.793 + var arg3;
2.794 + var arg4;
2.795 + var arg5;
2.796 +;
2.797 + var stack = new Array(3);
2.798 + var gt = 0;
2.799 + for(;;) switch(gt) {
2.800 + case 0: stack.push(arg0); // 42
2.801 + case 1: stack.push(stack.pop().count); // 180 1 97
2.802 + case 4: arg1 = stack.pop(); // 60
2.803 + case 5: stack.push(0); // 3
2.804 + case 6: arg2 = stack.pop(); // 61
2.805 + case 7: stack.push(arg0); // 42
2.806 + case 8: stack.push(stack.pop().offset); // 180 1 99
2.807 + case 11: arg3 = stack.pop(); // 62
2.808 + case 12: stack.push(arg0); // 42
2.809 + case 13: stack.push(stack.pop().value); // 180 1 100
2.810 + case 16: arg4 = stack.pop() // 58 4
2.811 + case 18: stack.push(arg2); // 28
2.812 + case 19: stack.push(arg1); // 27
2.813 + case 20: if (stack.pop() <= stack.pop()) { gt = 40; continue; } // 162 0 20
2.814 + case 23: stack.push(arg4); // 25 4
2.815 + case 25: stack.push(arg3); // 29
2.816 + case 26: stack.push(arg2); // 28
2.817 + case 27: stack.push(stack.pop() + stack.pop()); // 96
2.818 + case 28: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.819 + case 29: stack.push(32); // 16 32
2.820 + case 31: if (stack.pop() < stack.pop()) { gt = 40; continue; } // 163 0 9
2.821 + case 34: arg2++; // 132 2 1
2.822 + case 37: gt = 18; continue; // 167 255 237
2.823 + case 40: stack.push(arg2); // 28
2.824 + case 41: stack.push(arg1); // 27
2.825 + case 42: if (stack.pop() <= stack.pop()) { gt = 64; continue; } // 162 0 22
2.826 + case 45: stack.push(arg4); // 25 4
2.827 + case 47: stack.push(arg3); // 29
2.828 + case 48: stack.push(arg1); // 27
2.829 + case 49: stack.push(stack.pop() + stack.pop()); // 96
2.830 + case 50: stack.push(1); // 4
2.831 + case 51: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.832 + case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.833 + case 53: stack.push(32); // 16 32
2.834 + case 55: if (stack.pop() < stack.pop()) { gt = 64; continue; } // 163 0 9
2.835 + case 58: arg1 += 255; // 132 1 255
2.836 + case 61: gt = 40; continue; // 167 255 235
2.837 + case 64: stack.push(arg2); // 28
2.838 + case 65: if (stack.pop() > 0) { gt = 76; continue; } // 157 0 11
2.839 + case 68: stack.push(arg1); // 27
2.840 + case 69: stack.push(arg0); // 42
2.841 + case 70: stack.push(stack.pop().count); // 180 1 97
2.842 + case 73: if (stack.pop() <= stack.pop()) { gt = 85; continue; } // 162 0 12
2.843 + case 76: stack.push(arg0); // 42
2.844 + case 77: stack.push(arg2); // 28
2.845 + case 78: stack.push(arg1); // 27
2.846 + 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
2.847 + case 82: gt = 86; continue; // 167 0 4
2.848 + case 85: stack.push(arg0); // 42
2.849 + case 86: return stack.pop(); // 176
2.850 + }
2.851 +}
2.852 +*/
2.853 +
2.854 +/*
2.855 +function java_lang_String_formatLjava_lang_StringLjava_lang_StringLjava_lang_Object(arg0,arg1) {
2.856 + var stack = new Array();
2.857 + var gt = 0;
2.858 + for(;;) switch(gt) {
2.859 + case 0: stack.push(new java_util_Formatter); // 187 0 211
2.860 + case 3: stack.push(stack[stack.length - 1]); // 89
2.861 + case 4: { java_util_Formatter_consV(stack.pop()); } // 183 1 174
2.862 + case 7: stack.push(arg0); // 42
2.863 + case 8: stack.push(arg1); // 43
2.864 + 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
2.865 + case 12: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
2.866 + case 15: return stack.pop(); // 176
2.867 + }
2.868 +}
2.869 +function java_lang_String_formatLjava_lang_StringLjava_util_LocaleLjava_lang_StringLjava_lang_Object(arg0,arg1,arg2) {
2.870 + var stack = new Array();
2.871 + var gt = 0;
2.872 + for(;;) switch(gt) {
2.873 + case 0: stack.push(new java_util_Formatter); // 187 0 211
2.874 + case 3: stack.push(stack[stack.length - 1]); // 89
2.875 + case 4: stack.push(arg0); // 42
2.876 + case 5: { var v0 = stack.pop(); java_util_Formatter_consVLjava_util_Locale(stack.pop(), v0); } // 183 1 176
2.877 + case 8: stack.push(arg1); // 43
2.878 + case 9: stack.push(arg2); // 44
2.879 + 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
2.880 + case 13: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
2.881 + case 16: return stack.pop(); // 176
2.882 + }
2.883 +}
2.884 +function java_lang_String_valueOfLjava_lang_StringLjava_lang_Object(arg0) {
2.885 + var stack = new Array();
2.886 + var gt = 0;
2.887 + for(;;) switch(gt) {
2.888 + case 0: stack.push(arg0); // 42
2.889 + case 1: if (stack.pop()) { gt = 9; continue; } // 199 0 8
2.890 + case 4: stack.push("null"); // 18 10
2.891 + case 6: gt = 13; continue; // 167 0 7
2.892 + case 9: stack.push(arg0); // 42
2.893 + case 10: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.894 + case 13: return stack.pop(); // 176
2.895 + }
2.896 +}
2.897 +function java_lang_String_valueOfLjava_lang_StringAC(arg0) {
2.898 + var stack = new Array();
2.899 + var gt = 0;
2.900 + for(;;) switch(gt) {
2.901 + case 0: stack.push(new java_lang_String); // 187 0 200
2.902 + case 3: stack.push(stack[stack.length - 1]); // 89
2.903 + case 4: stack.push(arg0); // 42
2.904 + case 5: { var v0 = stack.pop(); java_lang_String_consVAC(stack.pop(), v0); } // 183 1 142
2.905 + case 8: return stack.pop(); // 176
2.906 + }
2.907 +}
2.908 +function java_lang_String_valueOfLjava_lang_StringACII(arg0,arg1,arg2) {
2.909 + var stack = new Array();
2.910 + var gt = 0;
2.911 + for(;;) switch(gt) {
2.912 + case 0: stack.push(new java_lang_String); // 187 0 200
2.913 + case 3: stack.push(stack[stack.length - 1]); // 89
2.914 + case 4: stack.push(arg0); // 42
2.915 + case 5: stack.push(arg1); // 27
2.916 + case 6: stack.push(arg2); // 28
2.917 + 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
2.918 + case 10: return stack.pop(); // 176
2.919 + }
2.920 +}
2.921 +function java_lang_String_copyValueOfLjava_lang_StringACII(arg0,arg1,arg2) {
2.922 + var stack = new Array();
2.923 + var gt = 0;
2.924 + for(;;) switch(gt) {
2.925 + case 0: stack.push(new java_lang_String); // 187 0 200
2.926 + case 3: stack.push(stack[stack.length - 1]); // 89
2.927 + case 4: stack.push(arg0); // 42
2.928 + case 5: stack.push(arg1); // 27
2.929 + case 6: stack.push(arg2); // 28
2.930 + 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
2.931 + case 10: return stack.pop(); // 176
2.932 + }
2.933 +}
2.934 +function java_lang_String_copyValueOfLjava_lang_StringAC(arg0) {
2.935 + var stack = new Array();
2.936 + var gt = 0;
2.937 + for(;;) switch(gt) {
2.938 + case 0: stack.push(arg0); // 42
2.939 + case 1: stack.push(0); // 3
2.940 + case 2: stack.push(arg0); // 42
2.941 + case 3: stack.push(stack.pop().length); // 190
2.942 + 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
2.943 + case 7: return stack.pop(); // 176
2.944 + }
2.945 +}
2.946 +function java_lang_String_valueOfLjava_lang_StringZ(arg0) {
2.947 + var stack = new Array();
2.948 + var gt = 0;
2.949 + for(;;) switch(gt) {
2.950 + case 0: stack.push(arg0); // 26
2.951 + case 1: if (stack.pop() == 0) { gt = 9; continue; } // 153 0 8
2.952 + case 4: stack.push("true"); // 18 12
2.953 + case 6: gt = 11; continue; // 167 0 5
2.954 + case 9: stack.push("false"); // 18 8
2.955 + case 11: return stack.pop(); // 176
2.956 + }
2.957 +}
2.958 +function java_lang_String_valueOfLjava_lang_StringC(arg0) {
2.959 + var arg1;
2.960 + var stack = new Array();
2.961 + var gt = 0;
2.962 + for(;;) switch(gt) {
2.963 + case 0: stack.push(1); // 4
2.964 + case 1: stack.push(new Array(stack.pop())); // 188 5
2.965 + case 3: stack.push(stack[stack.length - 1]); // 89
2.966 + case 4: stack.push(0); // 3
2.967 + case 5: stack.push(arg0); // 26
2.968 + case 6: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.969 + case 7: arg1 = stack.pop(); // 76
2.970 + case 8: stack.push(new java_lang_String); // 187 0 200
2.971 + case 11: stack.push(stack[stack.length - 1]); // 89
2.972 + case 12: stack.push(0); // 3
2.973 + case 13: stack.push(1); // 4
2.974 + case 14: stack.push(arg1); // 43
2.975 + 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
2.976 + case 18: return stack.pop(); // 176
2.977 + }
2.978 +}
2.979 +function java_lang_String_valueOfLjava_lang_StringJ(arg0) {
2.980 + var arg1;
2.981 + var stack = new Array();
2.982 + var gt = 0;
2.983 + for(;;) switch(gt) {
2.984 + case 0: stack.push(arg0); // 30
2.985 + case 1: stack.push(10); // 16 10
2.986 + case 3: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Long_toStringLjava_lang_StringJI(v0, v1)); } // 184 1 126
2.987 + case 6: return stack.pop(); // 176
2.988 + }
2.989 +}
2.990 +function java_lang_String_valueOfLjava_lang_StringF(arg0) {
2.991 + var stack = new Array();
2.992 + var gt = 0;
2.993 + for(;;) switch(gt) {
2.994 + case 0: stack.push(arg0); // 34
2.995 + case 1: { var v0 = stack.pop(); stack.push(java_lang_Float_toStringLjava_lang_StringF(v0)); } // 184 1 122
2.996 + case 4: return stack.pop(); // 176
2.997 + }
2.998 +}
2.999 +function java_lang_String_valueOfLjava_lang_StringD(arg0) {
2.1000 + var arg1;
2.1001 + var stack = new Array();
2.1002 + var gt = 0;
2.1003 + for(;;) switch(gt) {
2.1004 + case 0: stack.push(arg0); // 38
2.1005 + case 1: { var v0 = stack.pop(); stack.push(java_lang_Double_toStringLjava_lang_StringD(v0)); } // 184 1 121
2.1006 + case 4: return stack.pop(); // 176
2.1007 + }
2.1008 +}
2.1009 +function java_lang_String_internLjava_lang_String(arg0) {
2.1010 + // no code found for null
2.1011 +}
2.1012 +function java_lang_String_compareToILjava_lang_Object(arg0,arg1) {
2.1013 + var arg2;
2.1014 +;
2.1015 + var stack = new Array(2);
2.1016 + var gt = 0;
2.1017 + for(;;) switch(gt) {
2.1018 + case 0: stack.push(arg0); // 42
2.1019 + case 1: stack.push(arg1); // 43
2.1020 + case 2: if(stack[stack.length - 1].$instOf_java_lang_String != 1) throw {}; // 192 0 200
2.1021 + case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareToILjava_lang_String(self, v0)); } // 182 1 148
2.1022 + case 8: return stack.pop(); // 172
2.1023 + }
2.1024 +}
2.1025 +function java_lang_String_classV() {
2.1026 + var stack = new Array();
2.1027 + var gt = 0;
2.1028 + for(;;) switch(gt) {
2.1029 + case 0: stack.push(0); // 3
2.1030 + case 1: stack.push(new Array(stack.pop())); // 189 0 183
2.1031 + case 4: java_lang_String_serialPersistentFields = stack.pop(); // 179 1 101
2.1032 + case 7: stack.push(new java_lang_String$CaseInsensitiveComparator); // 187 0 202
2.1033 + case 10: stack.push(stack[stack.length - 1]); // 89
2.1034 + case 11: // 1
2.1035 + case 12: { var v0 = stack.pop(); java_lang_String$CaseInsensitiveComparator_consVLjava_lang_String$1(stack.pop(), v0); } // 183 1 160
2.1036 + case 15: java_lang_String_CASE_INSENSITIVE_ORDER = stack.pop(); // 179 1 102
2.1037 + case 18: return; // 177
2.1038 + }
2.1039 +}
2.1040 +*/
2.1041 +
2.1042 /*
2.1043 function java_lang_String_contentEqualsZLjava_lang_StringBuffer(arg0,arg1) {
2.1044 var arg2;
2.1045 @@ -1255,1010 +2284,6 @@
2.1046 }
2.1047 }
2.1048 */
2.1049 -function java_lang_String_substringLjava_lang_StringI(arg0,arg1) {
2.1050 - return arg0.toString().substring(arg1);
2.1051 -}
2.1052 -function java_lang_String_substringLjava_lang_StringII(arg0,arg1,arg2) {
2.1053 - return arg0.toString().substring(arg1, arg2);
2.1054 -}
2.1055 -
2.1056 -function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
2.1057 - if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
2.1058 - if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
2.1059 - var s = arg0.toString();
2.1060 - for (;;) {
2.1061 - var ret = s.replace(arg1, arg2);
2.1062 - if (ret === s) {
2.1063 - return ret;
2.1064 - }
2.1065 - s = ret;
2.1066 - }
2.1067 -}
2.1068 -function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
2.1069 - return arg0.toString().indexOf(arg1.toString()) >= 0;
2.1070 -}
2.1071 -
2.1072 -/*
2.1073 -function java_lang_String_subSequenceLjava_lang_CharSequenceII(arg0,arg1,arg2) {
2.1074 - var arg3;
2.1075 -;
2.1076 - var stack = new Array(3);
2.1077 - var gt = 0;
2.1078 - for(;;) switch(gt) {
2.1079 - case 0: stack.push(arg0); // 42
2.1080 - case 1: stack.push(arg1); // 27
2.1081 - case 2: stack.push(arg2); // 28
2.1082 - 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
2.1083 - case 6: return stack.pop(); // 176
2.1084 - }
2.1085 -}
2.1086 -function java_lang_String_concatLjava_lang_StringLjava_lang_String(arg0,arg1) {
2.1087 - var arg2;
2.1088 - var arg3;
2.1089 - var arg4;
2.1090 -;
2.1091 - var stack = new Array(5);
2.1092 - var gt = 0;
2.1093 - for(;;) switch(gt) {
2.1094 - case 0: stack.push(arg1); // 43
2.1095 - case 1: { var self = stack.pop(); stack.push(self.lengthI(self)); } // 182 1 133
2.1096 - case 4: arg2 = stack.pop(); // 61
2.1097 - case 5: stack.push(arg2); // 28
2.1098 - case 6: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 5
2.1099 - case 9: stack.push(arg0); // 42
2.1100 - case 10: return stack.pop(); // 176
2.1101 - case 11: stack.push(arg0); // 42
2.1102 - case 12: stack.push(stack.pop().count); // 180 1 97
2.1103 - case 15: stack.push(arg2); // 28
2.1104 - case 16: stack.push(stack.pop() + stack.pop()); // 96
2.1105 - case 17: stack.push(new Array(stack.pop())); // 188 5
2.1106 - case 19: arg3 = stack.pop(); // 78
2.1107 - case 20: stack.push(arg0); // 42
2.1108 - case 21: stack.push(0); // 3
2.1109 - case 22: stack.push(arg0); // 42
2.1110 - case 23: stack.push(stack.pop().count); // 180 1 97
2.1111 - case 26: stack.push(arg3); // 45
2.1112 - case 27: stack.push(0); // 3
2.1113 - 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
2.1114 - case 31: stack.push(arg1); // 43
2.1115 - case 32: stack.push(0); // 3
2.1116 - case 33: stack.push(arg2); // 28
2.1117 - case 34: stack.push(arg3); // 45
2.1118 - case 35: stack.push(arg0); // 42
2.1119 - case 36: stack.push(stack.pop().count); // 180 1 97
2.1120 - 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
2.1121 - case 42: stack.push(new java_lang_String); // 187 0 200
2.1122 - case 45: stack.push(stack[stack.length - 1]); // 89
2.1123 - case 46: stack.push(0); // 3
2.1124 - case 47: stack.push(arg0); // 42
2.1125 - case 48: stack.push(stack.pop().count); // 180 1 97
2.1126 - case 51: stack.push(arg2); // 28
2.1127 - case 52: stack.push(stack.pop() + stack.pop()); // 96
2.1128 - case 53: stack.push(arg3); // 45
2.1129 - 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
2.1130 - case 57: return stack.pop(); // 176
2.1131 - }
2.1132 -}
2.1133 -function java_lang_String_matchesZLjava_lang_String(arg0,arg1) {
2.1134 - var arg2;
2.1135 -;
2.1136 - var stack = new Array(2);
2.1137 - var gt = 0;
2.1138 - for(;;) switch(gt) {
2.1139 - case 0: stack.push(arg1); // 43
2.1140 - case 1: stack.push(arg0); // 42
2.1141 - 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
2.1142 - case 5: return stack.pop(); // 172
2.1143 - }
2.1144 -}
2.1145 -function java_lang_String_replaceFirstLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
2.1146 - var arg3;
2.1147 -;
2.1148 - var stack = new Array(2);
2.1149 - var gt = 0;
2.1150 - for(;;) switch(gt) {
2.1151 - case 0: stack.push(arg1); // 43
2.1152 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.1153 - case 4: stack.push(arg0); // 42
2.1154 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.1155 - case 8: stack.push(arg2); // 44
2.1156 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceFirstLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 182
2.1157 - case 12: return stack.pop(); // 176
2.1158 - }
2.1159 -}
2.1160 -function java_lang_String_replaceAllLjava_lang_StringLjava_lang_StringLjava_lang_String(arg0,arg1,arg2) {
2.1161 - var arg3;
2.1162 -;
2.1163 - var stack = new Array(2);
2.1164 - var gt = 0;
2.1165 - for(;;) switch(gt) {
2.1166 - case 0: stack.push(arg1); // 43
2.1167 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.1168 - case 4: stack.push(arg0); // 42
2.1169 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.1170 - case 8: stack.push(arg2); // 44
2.1171 - case 9: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
2.1172 - case 12: return stack.pop(); // 176
2.1173 - }
2.1174 -}
2.1175 -function java_lang_String_replaceLjava_lang_StringLjava_lang_CharSequenceLjava_lang_CharSequence(arg0,arg1,arg2) {
2.1176 - var arg3;
2.1177 -;
2.1178 - var stack = new Array(2);
2.1179 - var gt = 0;
2.1180 - for(;;) switch(gt) {
2.1181 - case 0: stack.push(arg1); // 43
2.1182 - case 1: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.1183 - case 4: stack.push(16); // 16 16
2.1184 - 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
2.1185 - case 9: stack.push(arg0); // 42
2.1186 - case 10: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.matcherLjava_util_regex_MatcherLjava_lang_CharSequence(self, v0)); } // 182 1 185
2.1187 - case 13: stack.push(arg2); // 44
2.1188 - case 14: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.1189 - case 17: { var v0 = stack.pop(); stack.push(java_util_regex_Matcher_quoteReplacementLjava_lang_StringLjava_lang_String(v0)); } // 184 1 180
2.1190 - case 20: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.replaceAllLjava_lang_StringLjava_lang_String(self, v0)); } // 182 1 181
2.1191 - case 23: return stack.pop(); // 176
2.1192 - }
2.1193 -}
2.1194 -function java_lang_String_splitALjava_lang_StringLjava_lang_StringI(arg0,arg1,arg2) {
2.1195 - var arg3;
2.1196 -;
2.1197 - var stack = new Array(3);
2.1198 - var gt = 0;
2.1199 - for(;;) switch(gt) {
2.1200 - case 0: stack.push(arg1); // 43
2.1201 - case 1: { var v0 = stack.pop(); stack.push(java_util_regex_Pattern_compileLjava_util_regex_PatternLjava_lang_String(v0)); } // 184 1 186
2.1202 - case 4: stack.push(arg0); // 42
2.1203 - case 5: stack.push(arg2); // 28
2.1204 - 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
2.1205 - case 9: return stack.pop(); // 176
2.1206 - }
2.1207 -}
2.1208 -function java_lang_String_splitALjava_lang_StringLjava_lang_String(arg0,arg1) {
2.1209 - var arg2;
2.1210 -;
2.1211 - var stack = new Array(3);
2.1212 - var gt = 0;
2.1213 - for(;;) switch(gt) {
2.1214 - case 0: stack.push(arg0); // 42
2.1215 - case 1: stack.push(arg1); // 43
2.1216 - case 2: stack.push(0); // 3
2.1217 - 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
2.1218 - case 6: return stack.pop(); // 176
2.1219 - }
2.1220 -}
2.1221 -function java_lang_String_toLowerCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
2.1222 - var arg2;
2.1223 - var arg3;
2.1224 - var arg4;
2.1225 - var arg5;
2.1226 - var arg6;
2.1227 - var arg7;
2.1228 - var arg8;
2.1229 - var arg9;
2.1230 - var arg10;
2.1231 - var arg11;
2.1232 - var arg12;
2.1233 - var arg13;
2.1234 - var arg14;
2.1235 -;
2.1236 - var stack = new Array(6);
2.1237 - var gt = 0;
2.1238 - for(;;) switch(gt) {
2.1239 - case 0: stack.push(arg1); // 43
2.1240 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
2.1241 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
2.1242 - case 7: stack.push(stack[stack.length - 1]); // 89
2.1243 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
2.1244 - case 11: // 191
2.1245 - case 12: stack.push(0); // 3
2.1246 - case 13: arg2 = stack.pop(); // 61
2.1247 - case 14: stack.push(arg2); // 28
2.1248 - case 15: stack.push(arg0); // 42
2.1249 - case 16: stack.push(stack.pop().count); // 180 1 97
2.1250 - case 19: if (stack.pop() <= stack.pop()) { gt = 94; continue; } // 162 0 75
2.1251 - case 22: stack.push(arg0); // 42
2.1252 - case 23: stack.push(stack.pop().value); // 180 1 100
2.1253 - case 26: stack.push(arg0); // 42
2.1254 - case 27: stack.push(stack.pop().offset); // 180 1 99
2.1255 - case 30: stack.push(arg2); // 28
2.1256 - case 31: stack.push(stack.pop() + stack.pop()); // 96
2.1257 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1258 - case 33: arg3 = stack.pop(); // 62
2.1259 - case 34: stack.push(arg3); // 29
2.1260 - case 35: stack.push(55296); // 18 1
2.1261 - case 37: if (stack.pop() > stack.pop()) { gt = 77; continue; } // 161 0 40
2.1262 - case 40: stack.push(arg3); // 29
2.1263 - case 41: stack.push(56319); // 18 2
2.1264 - case 43: if (stack.pop() < stack.pop()) { gt = 77; continue; } // 163 0 34
2.1265 - case 46: stack.push(arg0); // 42
2.1266 - case 47: stack.push(arg2); // 28
2.1267 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.1268 - case 51: arg4 = stack.pop() // 54 4
2.1269 - case 53: stack.push(arg4); // 21 4
2.1270 - case 55: stack.push(arg4); // 21 4
2.1271 - case 57: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
2.1272 - case 60: if (stack.pop() == stack.pop()) { gt = 66; continue; } // 159 0 6
2.1273 - case 63: gt = 96; continue; // 167 0 33
2.1274 - case 66: stack.push(arg2); // 28
2.1275 - case 67: stack.push(arg4); // 21 4
2.1276 - case 69: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.1277 - case 72: stack.push(stack.pop() + stack.pop()); // 96
2.1278 - case 73: arg2 = stack.pop(); // 61
2.1279 - case 74: gt = 91; continue; // 167 0 17
2.1280 - case 77: stack.push(arg3); // 29
2.1281 - case 78: stack.push(arg3); // 29
2.1282 - case 79: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseCC(v0)); } // 184 1 104
2.1283 - case 82: if (stack.pop() == stack.pop()) { gt = 88; continue; } // 159 0 6
2.1284 - case 85: gt = 96; continue; // 167 0 11
2.1285 - case 88: arg2++; // 132 2 1
2.1286 - case 91: gt = 14; continue; // 167 255 179
2.1287 - case 94: stack.push(arg0); // 42
2.1288 - case 95: return stack.pop(); // 176
2.1289 - case 96: stack.push(arg0); // 42
2.1290 - case 97: stack.push(stack.pop().count); // 180 1 97
2.1291 - case 100: stack.push(new Array(stack.pop())); // 188 5
2.1292 - case 102: arg3 = stack.pop(); // 78
2.1293 - case 103: stack.push(0); // 3
2.1294 - case 104: arg4 = stack.pop() // 54 4
2.1295 - case 106: stack.push(arg0); // 42
2.1296 - case 107: stack.push(stack.pop().value); // 180 1 100
2.1297 - case 110: stack.push(arg0); // 42
2.1298 - case 111: stack.push(stack.pop().offset); // 180 1 99
2.1299 - case 114: stack.push(arg3); // 45
2.1300 - case 115: stack.push(0); // 3
2.1301 - case 116: stack.push(arg2); // 28
2.1302 - 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
2.1303 - case 120: stack.push(arg1); // 43
2.1304 - case 121: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
2.1305 - case 124: arg5 = stack.pop() // 58 5
2.1306 - case 126: stack.push(arg5); // 25 5
2.1307 - case 128: stack.push("tr"); // 18 11
2.1308 - case 130: // 165
2.1309 - case 131: // 0
2.1310 - case 132: stack.push(6405); // 17 25 5
2.1311 - case 135: stack.push("az"); // 18 5
2.1312 - case 137: // 165
2.1313 - case 138: // 0
2.1314 - case 139: stack.push(1); // 10
2.1315 - case 140: stack.push(arg5); // 25 5
2.1316 - case 142: stack.push("lt"); // 18 9
2.1317 - case 144: // 166
2.1318 - case 145: // 0
2.1319 - case 146: stack.push(4); // 7
2.1320 - case 147: stack.push(1); // 4
2.1321 - case 148: gt = 152; continue; // 167 0 4
2.1322 - case 151: stack.push(0); // 3
2.1323 - case 152: arg6 = stack.pop() // 54 6
2.1324 - case 154: stack.push(arg2); // 28
2.1325 - case 155: arg11 = stack.pop() // 54 11
2.1326 - case 157: stack.push(arg11); // 21 11
2.1327 - case 159: stack.push(arg0); // 42
2.1328 - case 160: stack.push(stack.pop().count); // 180 1 97
2.1329 - case 163: if (stack.pop() <= stack.pop()) { gt = 419; continue; } // 162 1 0
2.1330 - case 166: stack.push(arg0); // 42
2.1331 - case 167: stack.push(stack.pop().value); // 180 1 100
2.1332 - case 170: stack.push(arg0); // 42
2.1333 - case 171: stack.push(stack.pop().offset); // 180 1 99
2.1334 - case 174: stack.push(arg11); // 21 11
2.1335 - case 176: stack.push(stack.pop() + stack.pop()); // 96
2.1336 - case 177: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1337 - case 178: arg9 = stack.pop() // 54 9
2.1338 - case 180: stack.push(arg9); // 21 9
2.1339 - case 182: // number conversion // 146
2.1340 - case 183: stack.push(55296); // 18 1
2.1341 - case 185: if (stack.pop() > stack.pop()) { gt = 214; continue; } // 161 0 29
2.1342 - case 188: stack.push(arg9); // 21 9
2.1343 - case 190: // number conversion // 146
2.1344 - case 191: stack.push(56319); // 18 2
2.1345 - case 193: if (stack.pop() < stack.pop()) { gt = 214; continue; } // 163 0 21
2.1346 - case 196: stack.push(arg0); // 42
2.1347 - case 197: stack.push(arg11); // 21 11
2.1348 - case 199: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.1349 - case 202: arg9 = stack.pop() // 54 9
2.1350 - case 204: stack.push(arg9); // 21 9
2.1351 - case 206: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.1352 - case 209: arg10 = stack.pop() // 54 10
2.1353 - case 211: gt = 217; continue; // 167 0 6
2.1354 - case 214: stack.push(1); // 4
2.1355 - case 215: arg10 = stack.pop() // 54 10
2.1356 - case 217: stack.push(arg6); // 21 6
2.1357 - case 219: if (stack.pop() != 0) { gt = 230; continue; } // 154 0 11
2.1358 - case 222: stack.push(arg9); // 21 9
2.1359 - case 224: stack.push(931); // 17 3 163
2.1360 - case 227: if (stack.pop() != stack.pop()) { gt = 242; continue; } // 160 0 15
2.1361 - case 230: stack.push(arg0); // 42
2.1362 - case 231: stack.push(arg11); // 21 11
2.1363 - case 233: stack.push(arg1); // 43
2.1364 - 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
2.1365 - case 237: arg8 = stack.pop() // 54 8
2.1366 - case 239: gt = 249; continue; // 167 0 10
2.1367 - case 242: stack.push(arg9); // 21 9
2.1368 - case 244: { var v0 = stack.pop(); stack.push(java_lang_Character_toLowerCaseII(v0)); } // 184 1 107
2.1369 - case 247: arg8 = stack.pop() // 54 8
2.1370 - case 249: stack.push(arg8); // 21 8
2.1371 - case 251: // 2
2.1372 - case 252: if (stack.pop() == stack.pop()) { gt = 262; continue; } // 159 0 10
2.1373 - case 255: stack.push(arg8); // 21 8
2.1374 - case 257: stack.push(65536); // 18 3
2.1375 - case 259: if (stack.pop() > stack.pop()) { gt = 399; continue; } // 161 0 140
2.1376 - case 262: stack.push(arg8); // 21 8
2.1377 - case 264: // 2
2.1378 - case 265: if (stack.pop() != stack.pop()) { gt = 280; continue; } // 160 0 15
2.1379 - case 268: stack.push(arg0); // 42
2.1380 - case 269: stack.push(arg11); // 21 11
2.1381 - case 271: stack.push(arg1); // 43
2.1382 - 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
2.1383 - case 275: arg7 = stack.pop() // 58 7
2.1384 - case 277: gt = 315; continue; // 167 0 38
2.1385 - case 280: stack.push(arg10); // 21 10
2.1386 - case 282: stack.push(2); // 5
2.1387 - case 283: if (stack.pop() != stack.pop()) { gt = 308; continue; } // 160 0 25
2.1388 - case 286: stack.push(arg4); // 21 4
2.1389 - case 288: stack.push(arg8); // 21 8
2.1390 - case 290: stack.push(arg3); // 45
2.1391 - case 291: stack.push(arg11); // 21 11
2.1392 - case 293: stack.push(arg4); // 21 4
2.1393 - case 295: stack.push(stack.pop() + stack.pop()); // 96
2.1394 - 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
2.1395 - case 299: stack.push(arg10); // 21 10
2.1396 - case 301: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1397 - case 302: stack.push(stack.pop() + stack.pop()); // 96
2.1398 - case 303: arg4 = stack.pop() // 54 4
2.1399 - case 305: gt = 409; continue; // 167 0 104
2.1400 - case 308: stack.push(arg8); // 21 8
2.1401 - case 310: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
2.1402 - case 313: arg7 = stack.pop() // 58 7
2.1403 - case 315: stack.push(arg7); // 25 7
2.1404 - case 317: stack.push(stack.pop().length); // 190
2.1405 - case 318: arg12 = stack.pop() // 54 12
2.1406 - case 320: stack.push(arg12); // 21 12
2.1407 - case 322: stack.push(arg10); // 21 10
2.1408 - case 324: if (stack.pop() >= stack.pop()) { gt = 355; continue; } // 164 0 31
2.1409 - case 327: stack.push(arg3); // 45
2.1410 - case 328: stack.push(stack.pop().length); // 190
2.1411 - case 329: stack.push(arg12); // 21 12
2.1412 - case 331: stack.push(stack.pop() + stack.pop()); // 96
2.1413 - case 332: stack.push(arg10); // 21 10
2.1414 - case 334: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1415 - case 335: stack.push(new Array(stack.pop())); // 188 5
2.1416 - case 337: arg13 = stack.pop() // 58 13
2.1417 - case 339: stack.push(arg3); // 45
2.1418 - case 340: stack.push(0); // 3
2.1419 - case 341: stack.push(arg13); // 25 13
2.1420 - case 343: stack.push(0); // 3
2.1421 - case 344: stack.push(arg11); // 21 11
2.1422 - case 346: stack.push(arg4); // 21 4
2.1423 - case 348: stack.push(stack.pop() + stack.pop()); // 96
2.1424 - 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
2.1425 - case 352: stack.push(arg13); // 25 13
2.1426 - case 354: arg3 = stack.pop(); // 78
2.1427 - case 355: stack.push(0); // 3
2.1428 - case 356: arg13 = stack.pop() // 54 13
2.1429 - case 358: stack.push(arg13); // 21 13
2.1430 - case 360: stack.push(arg12); // 21 12
2.1431 - case 362: if (stack.pop() <= stack.pop()) { gt = 386; continue; } // 162 0 24
2.1432 - case 365: stack.push(arg3); // 45
2.1433 - case 366: stack.push(arg11); // 21 11
2.1434 - case 368: stack.push(arg4); // 21 4
2.1435 - case 370: stack.push(stack.pop() + stack.pop()); // 96
2.1436 - case 371: stack.push(arg13); // 21 13
2.1437 - case 373: stack.push(stack.pop() + stack.pop()); // 96
2.1438 - case 374: stack.push(arg7); // 25 7
2.1439 - case 376: stack.push(arg13); // 21 13
2.1440 - case 378: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1441 - case 379: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.1442 - case 380: arg13++; // 132 13 1
2.1443 - case 383: gt = 358; continue; // 167 255 231
2.1444 - case 386: stack.push(arg4); // 21 4
2.1445 - case 388: stack.push(arg12); // 21 12
2.1446 - case 390: stack.push(arg10); // 21 10
2.1447 - case 392: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1448 - case 393: stack.push(stack.pop() + stack.pop()); // 96
2.1449 - case 394: arg4 = stack.pop() // 54 4
2.1450 - case 396: gt = 409; continue; // 167 0 13
2.1451 - case 399: stack.push(arg3); // 45
2.1452 - case 400: stack.push(arg11); // 21 11
2.1453 - case 402: stack.push(arg4); // 21 4
2.1454 - case 404: stack.push(stack.pop() + stack.pop()); // 96
2.1455 - case 405: stack.push(arg8); // 21 8
2.1456 - case 407: // number conversion // 146
2.1457 - case 408: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.1458 - case 409: stack.push(arg11); // 21 11
2.1459 - case 411: stack.push(arg10); // 21 10
2.1460 - case 413: stack.push(stack.pop() + stack.pop()); // 96
2.1461 - case 414: arg11 = stack.pop() // 54 11
2.1462 - case 416: gt = 157; continue; // 167 254 253
2.1463 - case 419: stack.push(new java_lang_String); // 187 0 200
2.1464 - case 422: stack.push(stack[stack.length - 1]); // 89
2.1465 - case 423: stack.push(0); // 3
2.1466 - case 424: stack.push(arg0); // 42
2.1467 - case 425: stack.push(stack.pop().count); // 180 1 97
2.1468 - case 428: stack.push(arg4); // 21 4
2.1469 - case 430: stack.push(stack.pop() + stack.pop()); // 96
2.1470 - case 431: stack.push(arg3); // 45
2.1471 - 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
2.1472 - case 435: return stack.pop(); // 176
2.1473 - }
2.1474 -}
2.1475 -function java_lang_String_toLowerCaseLjava_lang_String(arg0) {
2.1476 - var arg1;
2.1477 -;
2.1478 - var stack = new Array(2);
2.1479 - var gt = 0;
2.1480 - for(;;) switch(gt) {
2.1481 - case 0: stack.push(arg0); // 42
2.1482 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
2.1483 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toLowerCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 158
2.1484 - case 7: return stack.pop(); // 176
2.1485 - }
2.1486 -}
2.1487 -function java_lang_String_toUpperCaseLjava_lang_StringLjava_util_Locale(arg0,arg1) {
2.1488 - var arg2;
2.1489 - var arg3;
2.1490 - var arg4;
2.1491 - var arg5;
2.1492 - var arg6;
2.1493 - var arg7;
2.1494 - var arg8;
2.1495 - var arg9;
2.1496 - var arg10;
2.1497 - var arg11;
2.1498 - var arg12;
2.1499 - var arg13;
2.1500 - var arg14;
2.1501 -;
2.1502 - var stack = new Array(6);
2.1503 - var gt = 0;
2.1504 - for(;;) switch(gt) {
2.1505 - case 0: stack.push(arg1); // 43
2.1506 - case 1: if (stack.pop()) { gt = 12; continue; } // 199 0 11
2.1507 - case 4: stack.push(new java_lang_NullPointerException); // 187 0 198
2.1508 - case 7: stack.push(stack[stack.length - 1]); // 89
2.1509 - case 8: { java_lang_NullPointerException_consV(stack.pop()); } // 183 1 128
2.1510 - case 11: // 191
2.1511 - case 12: stack.push(0); // 3
2.1512 - case 13: arg2 = stack.pop(); // 61
2.1513 - case 14: stack.push(arg2); // 28
2.1514 - case 15: stack.push(arg0); // 42
2.1515 - case 16: stack.push(stack.pop().count); // 180 1 97
2.1516 - case 19: if (stack.pop() <= stack.pop()) { gt = 93; continue; } // 162 0 74
2.1517 - case 22: stack.push(arg0); // 42
2.1518 - case 23: stack.push(stack.pop().value); // 180 1 100
2.1519 - case 26: stack.push(arg0); // 42
2.1520 - case 27: stack.push(stack.pop().offset); // 180 1 99
2.1521 - case 30: stack.push(arg2); // 28
2.1522 - case 31: stack.push(stack.pop() + stack.pop()); // 96
2.1523 - case 32: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1524 - case 33: arg3 = stack.pop(); // 62
2.1525 - case 34: stack.push(arg3); // 29
2.1526 - case 35: stack.push(55296); // 18 1
2.1527 - case 37: if (stack.pop() > stack.pop()) { gt = 61; continue; } // 161 0 24
2.1528 - case 40: stack.push(arg3); // 29
2.1529 - case 41: stack.push(56319); // 18 2
2.1530 - case 43: if (stack.pop() < stack.pop()) { gt = 61; continue; } // 163 0 18
2.1531 - case 46: stack.push(arg0); // 42
2.1532 - case 47: stack.push(arg2); // 28
2.1533 - case 48: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.1534 - case 51: arg3 = stack.pop(); // 62
2.1535 - case 52: stack.push(arg3); // 29
2.1536 - case 53: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.1537 - case 56: arg4 = stack.pop() // 54 4
2.1538 - case 58: gt = 64; continue; // 167 0 6
2.1539 - case 61: stack.push(1); // 4
2.1540 - case 62: arg4 = stack.pop() // 54 4
2.1541 - case 64: stack.push(arg3); // 29
2.1542 - case 65: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
2.1543 - case 68: arg5 = stack.pop() // 54 5
2.1544 - case 70: stack.push(arg5); // 21 5
2.1545 - case 72: // 2
2.1546 - case 73: if (stack.pop() == stack.pop()) { gt = 95; continue; } // 159 0 22
2.1547 - case 76: stack.push(arg3); // 29
2.1548 - case 77: stack.push(arg5); // 21 5
2.1549 - case 79: if (stack.pop() == stack.pop()) { gt = 85; continue; } // 159 0 6
2.1550 - case 82: gt = 95; continue; // 167 0 13
2.1551 - case 85: stack.push(arg2); // 28
2.1552 - case 86: stack.push(arg4); // 21 4
2.1553 - case 88: stack.push(stack.pop() + stack.pop()); // 96
2.1554 - case 89: arg2 = stack.pop(); // 61
2.1555 - case 90: gt = 14; continue; // 167 255 180
2.1556 - case 93: stack.push(arg0); // 42
2.1557 - case 94: return stack.pop(); // 176
2.1558 - case 95: stack.push(arg0); // 42
2.1559 - case 96: stack.push(stack.pop().count); // 180 1 97
2.1560 - case 99: stack.push(new Array(stack.pop())); // 188 5
2.1561 - case 101: arg3 = stack.pop(); // 78
2.1562 - case 102: stack.push(0); // 3
2.1563 - case 103: arg4 = stack.pop() // 54 4
2.1564 - case 105: stack.push(arg0); // 42
2.1565 - case 106: stack.push(stack.pop().value); // 180 1 100
2.1566 - case 109: stack.push(arg0); // 42
2.1567 - case 110: stack.push(stack.pop().offset); // 180 1 99
2.1568 - case 113: stack.push(arg3); // 45
2.1569 - case 114: stack.push(0); // 3
2.1570 - case 115: stack.push(arg2); // 28
2.1571 - 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
2.1572 - case 119: stack.push(arg1); // 43
2.1573 - case 120: { var self = stack.pop(); stack.push(self.getLanguageLjava_lang_String(self)); } // 182 1 178
2.1574 - case 123: arg5 = stack.pop() // 58 5
2.1575 - case 125: stack.push(arg5); // 25 5
2.1576 - case 127: stack.push("tr"); // 18 11
2.1577 - case 129: // 165
2.1578 - case 130: // 0
2.1579 - case 131: stack.push(6405); // 17 25 5
2.1580 - case 134: stack.push("az"); // 18 5
2.1581 - case 136: // 165
2.1582 - case 137: // 0
2.1583 - case 138: stack.push(1); // 10
2.1584 - case 139: stack.push(arg5); // 25 5
2.1585 - case 141: stack.push("lt"); // 18 9
2.1586 - case 143: // 166
2.1587 - case 144: // 0
2.1588 - case 145: stack.push(4); // 7
2.1589 - case 146: stack.push(1); // 4
2.1590 - case 147: gt = 151; continue; // 167 0 4
2.1591 - case 150: stack.push(0); // 3
2.1592 - case 151: arg6 = stack.pop() // 54 6
2.1593 - case 153: stack.push(arg2); // 28
2.1594 - case 154: arg11 = stack.pop() // 54 11
2.1595 - case 156: stack.push(arg11); // 21 11
2.1596 - case 158: stack.push(arg0); // 42
2.1597 - case 159: stack.push(stack.pop().count); // 180 1 97
2.1598 - case 162: if (stack.pop() <= stack.pop()) { gt = 425; continue; } // 162 1 7
2.1599 - case 165: stack.push(arg0); // 42
2.1600 - case 166: stack.push(stack.pop().value); // 180 1 100
2.1601 - case 169: stack.push(arg0); // 42
2.1602 - case 170: stack.push(stack.pop().offset); // 180 1 99
2.1603 - case 173: stack.push(arg11); // 21 11
2.1604 - case 175: stack.push(stack.pop() + stack.pop()); // 96
2.1605 - case 176: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1606 - case 177: arg9 = stack.pop() // 54 9
2.1607 - case 179: stack.push(arg9); // 21 9
2.1608 - case 181: // number conversion // 146
2.1609 - case 182: stack.push(55296); // 18 1
2.1610 - case 184: if (stack.pop() > stack.pop()) { gt = 213; continue; } // 161 0 29
2.1611 - case 187: stack.push(arg9); // 21 9
2.1612 - case 189: // number conversion // 146
2.1613 - case 190: stack.push(56319); // 18 2
2.1614 - case 192: if (stack.pop() < stack.pop()) { gt = 213; continue; } // 163 0 21
2.1615 - case 195: stack.push(arg0); // 42
2.1616 - case 196: stack.push(arg11); // 21 11
2.1617 - case 198: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.codePointAtII(self, v0)); } // 182 1 134
2.1618 - case 201: arg9 = stack.pop() // 54 9
2.1619 - case 203: stack.push(arg9); // 21 9
2.1620 - case 205: { var v0 = stack.pop(); stack.push(java_lang_Character_charCountII(v0)); } // 184 1 106
2.1621 - case 208: arg10 = stack.pop() // 54 10
2.1622 - case 210: gt = 216; continue; // 167 0 6
2.1623 - case 213: stack.push(1); // 4
2.1624 - case 214: arg10 = stack.pop() // 54 10
2.1625 - case 216: stack.push(arg6); // 21 6
2.1626 - case 218: if (stack.pop() == 0) { gt = 233; continue; } // 153 0 15
2.1627 - case 221: stack.push(arg0); // 42
2.1628 - case 222: stack.push(arg11); // 21 11
2.1629 - case 224: stack.push(arg1); // 43
2.1630 - 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
2.1631 - case 228: arg8 = stack.pop() // 54 8
2.1632 - case 230: gt = 240; continue; // 167 0 10
2.1633 - case 233: stack.push(arg9); // 21 9
2.1634 - case 235: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseExII(v0)); } // 184 1 108
2.1635 - case 238: arg8 = stack.pop() // 54 8
2.1636 - case 240: stack.push(arg8); // 21 8
2.1637 - case 242: // 2
2.1638 - case 243: if (stack.pop() == stack.pop()) { gt = 253; continue; } // 159 0 10
2.1639 - case 246: stack.push(arg8); // 21 8
2.1640 - case 248: stack.push(65536); // 18 3
2.1641 - case 250: if (stack.pop() > stack.pop()) { gt = 405; continue; } // 161 0 155
2.1642 - case 253: stack.push(arg8); // 21 8
2.1643 - case 255: // 2
2.1644 - case 256: if (stack.pop() != stack.pop()) { gt = 286; continue; } // 160 0 30
2.1645 - case 259: stack.push(arg6); // 21 6
2.1646 - case 261: if (stack.pop() == 0) { gt = 276; continue; } // 153 0 15
2.1647 - case 264: stack.push(arg0); // 42
2.1648 - case 265: stack.push(arg11); // 21 11
2.1649 - case 267: stack.push(arg1); // 43
2.1650 - 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
2.1651 - case 271: arg7 = stack.pop() // 58 7
2.1652 - case 273: gt = 321; continue; // 167 0 48
2.1653 - case 276: stack.push(arg9); // 21 9
2.1654 - case 278: { var v0 = stack.pop(); stack.push(java_lang_Character_toUpperCaseCharArrayACI(v0)); } // 184 1 110
2.1655 - case 281: arg7 = stack.pop() // 58 7
2.1656 - case 283: gt = 321; continue; // 167 0 38
2.1657 - case 286: stack.push(arg10); // 21 10
2.1658 - case 288: stack.push(2); // 5
2.1659 - case 289: if (stack.pop() != stack.pop()) { gt = 314; continue; } // 160 0 25
2.1660 - case 292: stack.push(arg4); // 21 4
2.1661 - case 294: stack.push(arg8); // 21 8
2.1662 - case 296: stack.push(arg3); // 45
2.1663 - case 297: stack.push(arg11); // 21 11
2.1664 - case 299: stack.push(arg4); // 21 4
2.1665 - case 301: stack.push(stack.pop() + stack.pop()); // 96
2.1666 - 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
2.1667 - case 305: stack.push(arg10); // 21 10
2.1668 - case 307: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1669 - case 308: stack.push(stack.pop() + stack.pop()); // 96
2.1670 - case 309: arg4 = stack.pop() // 54 4
2.1671 - case 311: gt = 415; continue; // 167 0 104
2.1672 - case 314: stack.push(arg8); // 21 8
2.1673 - case 316: { var v0 = stack.pop(); stack.push(java_lang_Character_toCharsACI(v0)); } // 184 1 109
2.1674 - case 319: arg7 = stack.pop() // 58 7
2.1675 - case 321: stack.push(arg7); // 25 7
2.1676 - case 323: stack.push(stack.pop().length); // 190
2.1677 - case 324: arg12 = stack.pop() // 54 12
2.1678 - case 326: stack.push(arg12); // 21 12
2.1679 - case 328: stack.push(arg10); // 21 10
2.1680 - case 330: if (stack.pop() >= stack.pop()) { gt = 361; continue; } // 164 0 31
2.1681 - case 333: stack.push(arg3); // 45
2.1682 - case 334: stack.push(stack.pop().length); // 190
2.1683 - case 335: stack.push(arg12); // 21 12
2.1684 - case 337: stack.push(stack.pop() + stack.pop()); // 96
2.1685 - case 338: stack.push(arg10); // 21 10
2.1686 - case 340: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1687 - case 341: stack.push(new Array(stack.pop())); // 188 5
2.1688 - case 343: arg13 = stack.pop() // 58 13
2.1689 - case 345: stack.push(arg3); // 45
2.1690 - case 346: stack.push(0); // 3
2.1691 - case 347: stack.push(arg13); // 25 13
2.1692 - case 349: stack.push(0); // 3
2.1693 - case 350: stack.push(arg11); // 21 11
2.1694 - case 352: stack.push(arg4); // 21 4
2.1695 - case 354: stack.push(stack.pop() + stack.pop()); // 96
2.1696 - 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
2.1697 - case 358: stack.push(arg13); // 25 13
2.1698 - case 360: arg3 = stack.pop(); // 78
2.1699 - case 361: stack.push(0); // 3
2.1700 - case 362: arg13 = stack.pop() // 54 13
2.1701 - case 364: stack.push(arg13); // 21 13
2.1702 - case 366: stack.push(arg12); // 21 12
2.1703 - case 368: if (stack.pop() <= stack.pop()) { gt = 392; continue; } // 162 0 24
2.1704 - case 371: stack.push(arg3); // 45
2.1705 - case 372: stack.push(arg11); // 21 11
2.1706 - case 374: stack.push(arg4); // 21 4
2.1707 - case 376: stack.push(stack.pop() + stack.pop()); // 96
2.1708 - case 377: stack.push(arg13); // 21 13
2.1709 - case 379: stack.push(stack.pop() + stack.pop()); // 96
2.1710 - case 380: stack.push(arg7); // 25 7
2.1711 - case 382: stack.push(arg13); // 21 13
2.1712 - case 384: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1713 - case 385: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.1714 - case 386: arg13++; // 132 13 1
2.1715 - case 389: gt = 364; continue; // 167 255 231
2.1716 - case 392: stack.push(arg4); // 21 4
2.1717 - case 394: stack.push(arg12); // 21 12
2.1718 - case 396: stack.push(arg10); // 21 10
2.1719 - case 398: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1720 - case 399: stack.push(stack.pop() + stack.pop()); // 96
2.1721 - case 400: arg4 = stack.pop() // 54 4
2.1722 - case 402: gt = 415; continue; // 167 0 13
2.1723 - case 405: stack.push(arg3); // 45
2.1724 - case 406: stack.push(arg11); // 21 11
2.1725 - case 408: stack.push(arg4); // 21 4
2.1726 - case 410: stack.push(stack.pop() + stack.pop()); // 96
2.1727 - case 411: stack.push(arg8); // 21 8
2.1728 - case 413: // number conversion // 146
2.1729 - case 414: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.1730 - case 415: stack.push(arg11); // 21 11
2.1731 - case 417: stack.push(arg10); // 21 10
2.1732 - case 419: stack.push(stack.pop() + stack.pop()); // 96
2.1733 - case 420: arg11 = stack.pop() // 54 11
2.1734 - case 422: gt = 156; continue; // 167 254 246
2.1735 - case 425: stack.push(new java_lang_String); // 187 0 200
2.1736 - case 428: stack.push(stack[stack.length - 1]); // 89
2.1737 - case 429: stack.push(0); // 3
2.1738 - case 430: stack.push(arg0); // 42
2.1739 - case 431: stack.push(stack.pop().count); // 180 1 97
2.1740 - case 434: stack.push(arg4); // 21 4
2.1741 - case 436: stack.push(stack.pop() + stack.pop()); // 96
2.1742 - case 437: stack.push(arg3); // 45
2.1743 - 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
2.1744 - case 441: return stack.pop(); // 176
2.1745 - }
2.1746 -}
2.1747 -function java_lang_String_toUpperCaseLjava_lang_String(arg0) {
2.1748 - var arg1;
2.1749 -;
2.1750 - var stack = new Array(2);
2.1751 - var gt = 0;
2.1752 - for(;;) switch(gt) {
2.1753 - case 0: stack.push(arg0); // 42
2.1754 - case 1: { stack.push(java_util_Locale_getDefaultLjava_util_Locale()); } // 184 1 179
2.1755 - case 4: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.toUpperCaseLjava_lang_StringLjava_util_Locale(self, v0)); } // 182 1 159
2.1756 - case 7: return stack.pop(); // 176
2.1757 - }
2.1758 -}
2.1759 -function java_lang_String_trimLjava_lang_String(arg0) {
2.1760 - var arg1;
2.1761 - var arg2;
2.1762 - var arg3;
2.1763 - var arg4;
2.1764 - var arg5;
2.1765 -;
2.1766 - var stack = new Array(3);
2.1767 - var gt = 0;
2.1768 - for(;;) switch(gt) {
2.1769 - case 0: stack.push(arg0); // 42
2.1770 - case 1: stack.push(stack.pop().count); // 180 1 97
2.1771 - case 4: arg1 = stack.pop(); // 60
2.1772 - case 5: stack.push(0); // 3
2.1773 - case 6: arg2 = stack.pop(); // 61
2.1774 - case 7: stack.push(arg0); // 42
2.1775 - case 8: stack.push(stack.pop().offset); // 180 1 99
2.1776 - case 11: arg3 = stack.pop(); // 62
2.1777 - case 12: stack.push(arg0); // 42
2.1778 - case 13: stack.push(stack.pop().value); // 180 1 100
2.1779 - case 16: arg4 = stack.pop() // 58 4
2.1780 - case 18: stack.push(arg2); // 28
2.1781 - case 19: stack.push(arg1); // 27
2.1782 - case 20: if (stack.pop() <= stack.pop()) { gt = 40; continue; } // 162 0 20
2.1783 - case 23: stack.push(arg4); // 25 4
2.1784 - case 25: stack.push(arg3); // 29
2.1785 - case 26: stack.push(arg2); // 28
2.1786 - case 27: stack.push(stack.pop() + stack.pop()); // 96
2.1787 - case 28: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1788 - case 29: stack.push(32); // 16 32
2.1789 - case 31: if (stack.pop() < stack.pop()) { gt = 40; continue; } // 163 0 9
2.1790 - case 34: arg2++; // 132 2 1
2.1791 - case 37: gt = 18; continue; // 167 255 237
2.1792 - case 40: stack.push(arg2); // 28
2.1793 - case 41: stack.push(arg1); // 27
2.1794 - case 42: if (stack.pop() <= stack.pop()) { gt = 64; continue; } // 162 0 22
2.1795 - case 45: stack.push(arg4); // 25 4
2.1796 - case 47: stack.push(arg3); // 29
2.1797 - case 48: stack.push(arg1); // 27
2.1798 - case 49: stack.push(stack.pop() + stack.pop()); // 96
2.1799 - case 50: stack.push(1); // 4
2.1800 - case 51: { var tmp = stack.pop(); stack.push(stack.pop() - tmp); } // 100
2.1801 - case 52: { var indx = stack.pop(); stack.push(stack.pop()[indx]); } // 52
2.1802 - case 53: stack.push(32); // 16 32
2.1803 - case 55: if (stack.pop() < stack.pop()) { gt = 64; continue; } // 163 0 9
2.1804 - case 58: arg1 += 255; // 132 1 255
2.1805 - case 61: gt = 40; continue; // 167 255 235
2.1806 - case 64: stack.push(arg2); // 28
2.1807 - case 65: if (stack.pop() > 0) { gt = 76; continue; } // 157 0 11
2.1808 - case 68: stack.push(arg1); // 27
2.1809 - case 69: stack.push(arg0); // 42
2.1810 - case 70: stack.push(stack.pop().count); // 180 1 97
2.1811 - case 73: if (stack.pop() <= stack.pop()) { gt = 85; continue; } // 162 0 12
2.1812 - case 76: stack.push(arg0); // 42
2.1813 - case 77: stack.push(arg2); // 28
2.1814 - case 78: stack.push(arg1); // 27
2.1815 - 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
2.1816 - case 82: gt = 86; continue; // 167 0 4
2.1817 - case 85: stack.push(arg0); // 42
2.1818 - case 86: return stack.pop(); // 176
2.1819 - }
2.1820 -}
2.1821 -*/
2.1822 -function java_lang_String_toStringLjava_lang_String(arg0) {
2.1823 - return arg0.toString();
2.1824 -}
2.1825 -function java_lang_String_toCharArrayAC(arg0) {
2.1826 - return arg0.toString().split('');
2.1827 -}
2.1828 -/*
2.1829 -function java_lang_String_formatLjava_lang_StringLjava_lang_StringLjava_lang_Object(arg0,arg1) {
2.1830 - var stack = new Array();
2.1831 - var gt = 0;
2.1832 - for(;;) switch(gt) {
2.1833 - case 0: stack.push(new java_util_Formatter); // 187 0 211
2.1834 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1835 - case 4: { java_util_Formatter_consV(stack.pop()); } // 183 1 174
2.1836 - case 7: stack.push(arg0); // 42
2.1837 - case 8: stack.push(arg1); // 43
2.1838 - 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
2.1839 - case 12: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
2.1840 - case 15: return stack.pop(); // 176
2.1841 - }
2.1842 -}
2.1843 -function java_lang_String_formatLjava_lang_StringLjava_util_LocaleLjava_lang_StringLjava_lang_Object(arg0,arg1,arg2) {
2.1844 - var stack = new Array();
2.1845 - var gt = 0;
2.1846 - for(;;) switch(gt) {
2.1847 - case 0: stack.push(new java_util_Formatter); // 187 0 211
2.1848 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1849 - case 4: stack.push(arg0); // 42
2.1850 - case 5: { var v0 = stack.pop(); java_util_Formatter_consVLjava_util_Locale(stack.pop(), v0); } // 183 1 176
2.1851 - case 8: stack.push(arg1); // 43
2.1852 - case 9: stack.push(arg2); // 44
2.1853 - 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
2.1854 - case 13: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 175
2.1855 - case 16: return stack.pop(); // 176
2.1856 - }
2.1857 -}
2.1858 -function java_lang_String_valueOfLjava_lang_StringLjava_lang_Object(arg0) {
2.1859 - var stack = new Array();
2.1860 - var gt = 0;
2.1861 - for(;;) switch(gt) {
2.1862 - case 0: stack.push(arg0); // 42
2.1863 - case 1: if (stack.pop()) { gt = 9; continue; } // 199 0 8
2.1864 - case 4: stack.push("null"); // 18 10
2.1865 - case 6: gt = 13; continue; // 167 0 7
2.1866 - case 9: stack.push(arg0); // 42
2.1867 - case 10: { var self = stack.pop(); stack.push(self.toStringLjava_lang_String(self)); } // 182 1 132
2.1868 - case 13: return stack.pop(); // 176
2.1869 - }
2.1870 -}
2.1871 -function java_lang_String_valueOfLjava_lang_StringAC(arg0) {
2.1872 - var stack = new Array();
2.1873 - var gt = 0;
2.1874 - for(;;) switch(gt) {
2.1875 - case 0: stack.push(new java_lang_String); // 187 0 200
2.1876 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1877 - case 4: stack.push(arg0); // 42
2.1878 - case 5: { var v0 = stack.pop(); java_lang_String_consVAC(stack.pop(), v0); } // 183 1 142
2.1879 - case 8: return stack.pop(); // 176
2.1880 - }
2.1881 -}
2.1882 -function java_lang_String_valueOfLjava_lang_StringACII(arg0,arg1,arg2) {
2.1883 - var stack = new Array();
2.1884 - var gt = 0;
2.1885 - for(;;) switch(gt) {
2.1886 - case 0: stack.push(new java_lang_String); // 187 0 200
2.1887 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1888 - case 4: stack.push(arg0); // 42
2.1889 - case 5: stack.push(arg1); // 27
2.1890 - case 6: stack.push(arg2); // 28
2.1891 - 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
2.1892 - case 10: return stack.pop(); // 176
2.1893 - }
2.1894 -}
2.1895 -function java_lang_String_copyValueOfLjava_lang_StringACII(arg0,arg1,arg2) {
2.1896 - var stack = new Array();
2.1897 - var gt = 0;
2.1898 - for(;;) switch(gt) {
2.1899 - case 0: stack.push(new java_lang_String); // 187 0 200
2.1900 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1901 - case 4: stack.push(arg0); // 42
2.1902 - case 5: stack.push(arg1); // 27
2.1903 - case 6: stack.push(arg2); // 28
2.1904 - 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
2.1905 - case 10: return stack.pop(); // 176
2.1906 - }
2.1907 -}
2.1908 -function java_lang_String_copyValueOfLjava_lang_StringAC(arg0) {
2.1909 - var stack = new Array();
2.1910 - var gt = 0;
2.1911 - for(;;) switch(gt) {
2.1912 - case 0: stack.push(arg0); // 42
2.1913 - case 1: stack.push(0); // 3
2.1914 - case 2: stack.push(arg0); // 42
2.1915 - case 3: stack.push(stack.pop().length); // 190
2.1916 - 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
2.1917 - case 7: return stack.pop(); // 176
2.1918 - }
2.1919 -}
2.1920 -function java_lang_String_valueOfLjava_lang_StringZ(arg0) {
2.1921 - var stack = new Array();
2.1922 - var gt = 0;
2.1923 - for(;;) switch(gt) {
2.1924 - case 0: stack.push(arg0); // 26
2.1925 - case 1: if (stack.pop() == 0) { gt = 9; continue; } // 153 0 8
2.1926 - case 4: stack.push("true"); // 18 12
2.1927 - case 6: gt = 11; continue; // 167 0 5
2.1928 - case 9: stack.push("false"); // 18 8
2.1929 - case 11: return stack.pop(); // 176
2.1930 - }
2.1931 -}
2.1932 -function java_lang_String_valueOfLjava_lang_StringC(arg0) {
2.1933 - var arg1;
2.1934 - var stack = new Array();
2.1935 - var gt = 0;
2.1936 - for(;;) switch(gt) {
2.1937 - case 0: stack.push(1); // 4
2.1938 - case 1: stack.push(new Array(stack.pop())); // 188 5
2.1939 - case 3: stack.push(stack[stack.length - 1]); // 89
2.1940 - case 4: stack.push(0); // 3
2.1941 - case 5: stack.push(arg0); // 26
2.1942 - case 6: { var value = stack.pop(); var indx = stack.pop(); stack.pop()[indx] = value; } // 85
2.1943 - case 7: arg1 = stack.pop(); // 76
2.1944 - case 8: stack.push(new java_lang_String); // 187 0 200
2.1945 - case 11: stack.push(stack[stack.length - 1]); // 89
2.1946 - case 12: stack.push(0); // 3
2.1947 - case 13: stack.push(1); // 4
2.1948 - case 14: stack.push(arg1); // 43
2.1949 - 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
2.1950 - case 18: return stack.pop(); // 176
2.1951 - }
2.1952 -}
2.1953 -function java_lang_String_valueOfLjava_lang_StringJ(arg0) {
2.1954 - var arg1;
2.1955 - var stack = new Array();
2.1956 - var gt = 0;
2.1957 - for(;;) switch(gt) {
2.1958 - case 0: stack.push(arg0); // 30
2.1959 - case 1: stack.push(10); // 16 10
2.1960 - case 3: { var v1 = stack.pop(); var v0 = stack.pop(); stack.push(java_lang_Long_toStringLjava_lang_StringJI(v0, v1)); } // 184 1 126
2.1961 - case 6: return stack.pop(); // 176
2.1962 - }
2.1963 -}
2.1964 -function java_lang_String_valueOfLjava_lang_StringF(arg0) {
2.1965 - var stack = new Array();
2.1966 - var gt = 0;
2.1967 - for(;;) switch(gt) {
2.1968 - case 0: stack.push(arg0); // 34
2.1969 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Float_toStringLjava_lang_StringF(v0)); } // 184 1 122
2.1970 - case 4: return stack.pop(); // 176
2.1971 - }
2.1972 -}
2.1973 -function java_lang_String_valueOfLjava_lang_StringD(arg0) {
2.1974 - var arg1;
2.1975 - var stack = new Array();
2.1976 - var gt = 0;
2.1977 - for(;;) switch(gt) {
2.1978 - case 0: stack.push(arg0); // 38
2.1979 - case 1: { var v0 = stack.pop(); stack.push(java_lang_Double_toStringLjava_lang_StringD(v0)); } // 184 1 121
2.1980 - case 4: return stack.pop(); // 176
2.1981 - }
2.1982 -}
2.1983 -function java_lang_String_internLjava_lang_String(arg0) {
2.1984 - // no code found for null
2.1985 -}
2.1986 -function java_lang_String_compareToILjava_lang_Object(arg0,arg1) {
2.1987 - var arg2;
2.1988 -;
2.1989 - var stack = new Array(2);
2.1990 - var gt = 0;
2.1991 - for(;;) switch(gt) {
2.1992 - case 0: stack.push(arg0); // 42
2.1993 - case 1: stack.push(arg1); // 43
2.1994 - case 2: if(stack[stack.length - 1].$instOf_java_lang_String != 1) throw {}; // 192 0 200
2.1995 - case 5: { var v0 = stack.pop(); var self = stack.pop(); stack.push(self.compareToILjava_lang_String(self, v0)); } // 182 1 148
2.1996 - case 8: return stack.pop(); // 172
2.1997 - }
2.1998 -}
2.1999 -function java_lang_String_classV() {
2.2000 - var stack = new Array();
2.2001 - var gt = 0;
2.2002 - for(;;) switch(gt) {
2.2003 - case 0: stack.push(0); // 3
2.2004 - case 1: stack.push(new Array(stack.pop())); // 189 0 183
2.2005 - case 4: java_lang_String_serialPersistentFields = stack.pop(); // 179 1 101
2.2006 - case 7: stack.push(new java_lang_String$CaseInsensitiveComparator); // 187 0 202
2.2007 - case 10: stack.push(stack[stack.length - 1]); // 89
2.2008 - case 11: // 1
2.2009 - case 12: { var v0 = stack.pop(); java_lang_String$CaseInsensitiveComparator_consVLjava_lang_String$1(stack.pop(), v0); } // 183 1 160
2.2010 - case 15: java_lang_String_CASE_INSENSITIVE_ORDER = stack.pop(); // 179 1 102
2.2011 - case 18: return; // 177
2.2012 - }
2.2013 -}
2.2014 -*/
2.2015 -var java_lang_String_serialVersionUID = 0;
2.2016 -var java_lang_String_serialPersistentFields = 0;
2.2017 -var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
2.2018 -function java_lang_String() {
2.2019 - /** the real value of this 'string' we delegate to */
2.2020 - this.r = '';
2.2021 -}
2.2022 -java_lang_String.prototype = new String;
2.2023 -java_lang_String.prototype.toString = function() { return this.r; };;
2.2024 -//java_lang_String_classV();
2.2025 -
2.2026 -/* new method for JavaScript String */
2.2027 -String.prototype.consVAC = java_lang_String_consVAC;
2.2028 -String.prototype.consVACII = java_lang_String_consVACII;
2.2029 -String.prototype.charAtCI = java_lang_String_charAtCI;
2.2030 -String.prototype.lengthI = java_lang_String_lengthI;
2.2031 -String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
2.2032 -String.prototype.getCharsVIIACI = java_lang_String_getCharsVIIACAI;
2.2033 -String.prototype.getCharsVACI = java_lang_String_getCharsVACI;
2.2034 -String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
2.2035 -String.prototype.substringLjava_lang_StringI = java_lang_String_substringLjava_lang_StringI;
2.2036 -String.prototype.substringLjava_lang_StringII = java_lang_String_substringLjava_lang_StringII;
2.2037 -String.prototype.replaceLjava_lang_StringCC = java_lang_String_replaceLjava_lang_StringCC;
2.2038 -String.prototype.containsZLjava_lang_CharSequence = java_lang_String_containsZLjava_lang_CharSequence;
2.2039 -String.prototype.equalsZLjava_lang_Object = java_lang_String_equalsZLjava_lang_Object;
2.2040 -String.prototype.hashCodeI = java_lang_String_hashCodeI;
2.2041 -String.prototype.toCharArrayAC = java_lang_String_toCharArrayAC;
2.2042 -String.prototype.valueOfLjava_lang_StringI=java_lang_String_valueOfLjava_lang_StringI;
2.2043 -String.prototype.startsWithZLjava_lang_StringI = java_lang_String_startsWithZLjava_lang_StringI;
2.2044 -String.prototype.startsWithZLjava_lang_String=java_lang_String_startsWithZLjava_lang_String;
2.2045 -String.prototype.endsWithZLjava_lang_String=java_lang_String_endsWithZLjava_lang_String;
2.2046 -String.prototype.indexOfII=java_lang_String_indexOfII;
2.2047 -String.prototype.indexOfIII=java_lang_String_indexOfIII;
2.2048 -
2.2049 -String.prototype.$instOf_java_lang_String = true;
2.2050 -String.prototype.$instOf_java_io_Serializable = true;
2.2051 -String.prototype.$instOf_java_lang_Comparable = true;
2.2052 -String.prototype.$instOf_java_lang_CharSequence = true;
2.2053
2.2054 /*
2.2055 this.lengthI = java_lang_String_lengthI;
3.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Nov 25 21:23:06 2012 +0100
3.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Nov 28 17:58:10 2012 +0100
3.3 @@ -19,7 +19,6 @@
3.4
3.5 import java.io.IOException;
3.6 import java.io.InputStream;
3.7 -import org.apidesign.bck2brwsr.core.JavaScriptBody;
3.8 import org.apidesign.javap.AnnotationParser;
3.9 import org.apidesign.javap.ClassData;
3.10 import org.apidesign.javap.FieldData;
3.11 @@ -50,6 +49,16 @@
3.12 * @param resourcePath name of resources to read
3.13 */
3.14 protected abstract void requireScript(String resourcePath);
3.15 +
3.16 + /** Allows subclasses to redefine what field a function representing a
3.17 + * class gets assigned. By default it returns the suggested name followed
3.18 + * by <code>" = "</code>;
3.19 + *
3.20 + * @param className suggested name of the class
3.21 + */
3.22 + protected String assignClass(String className) {
3.23 + return className + " = ";
3.24 + }
3.25
3.26 /**
3.27 * Converts a given class file to a JavaScript version.
3.28 @@ -74,70 +83,64 @@
3.29 }
3.30 }
3.31 StringArray toInitilize = new StringArray();
3.32 - for (MethodData m : jc.getMethods()) {
3.33 - if (m.isStatic()) {
3.34 - generateStaticMethod(m, toInitilize);
3.35 - } else {
3.36 - generateInstanceMethod(m);
3.37 - }
3.38 - }
3.39 final String className = className(jc);
3.40 - out.append("\nfunction ").append(className);
3.41 - out.append("() {");
3.42 - for (FieldData v : jc.getFields()) {
3.43 - if (!v.isStatic()) {
3.44 - out.append("\n this.fld_").
3.45 - append(v.getName()).append(initField(v));
3.46 - }
3.47 - }
3.48 - out.append("\n}\n\nfunction ").append(className).append("_proto() {");
3.49 - out.append("\n if (").append(className).
3.50 - append(".prototype.$instOf_").append(className).append(") {");
3.51 - out.append("\n return new ").append(className).append(";");
3.52 - out.append("\n }");
3.53 + out.append("\n\n").append(assignClass(className));
3.54 + out.append("function CLS() {");
3.55 + out.append("\n if (!CLS.prototype.$instOf_").append(className).append(") {");
3.56 for (FieldData v : jc.getFields()) {
3.57 if (v.isStatic()) {
3.58 - generateStaticField(v);
3.59 + out.append("\n CLS.").append(v.getName()).append(initField(v));
3.60 }
3.61 }
3.62 // ClassName sc = jc.getSuperClass();
3.63 String sc = jc.getSuperClassName(); // with _
3.64 if (sc != null) {
3.65 - out.append("\n var p = ").append(className)
3.66 - .append(".prototype = ").
3.67 - append(sc.replace('/', '_')).append("_proto();");
3.68 + out.append("\n var p = CLS.prototype = ").
3.69 + append(sc.replace('/', '_')).append("(true);");
3.70 } else {
3.71 - out.append("\n var p = ").append(className).append(".prototype;");
3.72 + out.append("\n var p = CLS.prototype;");
3.73 }
3.74 for (MethodData m : jc.getMethods()) {
3.75 - if (!m.getName().contains("<cinit>")) {
3.76 - generateMethodReference("\n p.", m);
3.77 + if (m.isStatic()) {
3.78 + generateStaticMethod("\n p.", m, toInitilize);
3.79 + } else {
3.80 + generateInstanceMethod("\n p.", m);
3.81 }
3.82 }
3.83 - out.append("\n p.$instOf_").append(className).append(" = true;");
3.84 + out.append("\n p.$instOf_").append(className).append(" = true;");
3.85 for (String superInterface : jc.getSuperInterfaces()) {
3.86 - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
3.87 + out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
3.88 }
3.89 - out.append("\n return new ").append(className).append(";");
3.90 + out.append("\n if (arguments.length === 0) {");
3.91 + out.append("\n return new CLS();");
3.92 + out.append("\n }");
3.93 + out.append("\n }");
3.94 + out.append("\n if (arguments.length === 0) {");
3.95 + for (FieldData v : jc.getFields()) {
3.96 + if (!v.isStatic()) {
3.97 + out.append("\n this.fld_").
3.98 + append(v.getName()).append(initField(v));
3.99 + }
3.100 + }
3.101 + out.append("\n return this;");
3.102 + out.append("\n }");
3.103 + out.append("\n return new CLS;");
3.104 out.append("\n}");
3.105 - out.append("\n").append(className).append("_proto();");
3.106 StringBuilder sb = new StringBuilder();
3.107 for (String init : toInitilize.toArray()) {
3.108 sb.append("\n").append(init).append("();");
3.109 }
3.110 return sb.toString();
3.111 }
3.112 - private void generateStaticMethod(MethodData m, StringArray toInitilize) throws IOException {
3.113 - if (javaScriptBody(m, true)) {
3.114 + private void generateStaticMethod(String prefix, MethodData m, StringArray toInitilize) throws IOException {
3.115 + if (javaScriptBody(prefix, m, true)) {
3.116 return;
3.117 }
3.118 StringBuilder argsCnt = new StringBuilder();
3.119 final String mn = findMethodName(m, argsCnt);
3.120 - out.append("\nfunction ").append(
3.121 - className(jc)
3.122 - ).append('_').append(mn);
3.123 + out.append(prefix).append(mn).append(" = function");
3.124 if (mn.equals("classV")) {
3.125 - toInitilize.add(className(jc) + '_' + mn);
3.126 + toInitilize.add(className(jc) + "(true)." + mn);
3.127 }
3.128 out.append('(');
3.129 String space = "";
3.130 @@ -165,24 +168,16 @@
3.131 } else {
3.132 out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n");
3.133 }
3.134 - out.append("}");
3.135 + out.append("};");
3.136 }
3.137
3.138 - private void generateMethodReference(String prefix, MethodData m) throws IOException {
3.139 - final String name = findMethodName(m, new StringBuilder());
3.140 - out.append(prefix).append(name).append(" = ")
3.141 - .append(className(jc))
3.142 - .append('_').append(name).append(";");
3.143 - }
3.144 -
3.145 - private void generateInstanceMethod(MethodData m) throws IOException {
3.146 - if (javaScriptBody(m, false)) {
3.147 + private void generateInstanceMethod(String prefix, MethodData m) throws IOException {
3.148 + if (javaScriptBody(prefix, m, false)) {
3.149 return;
3.150 }
3.151 StringBuilder argsCnt = new StringBuilder();
3.152 - out.append("\nfunction ").append(
3.153 - className(jc)
3.154 - ).append('_').append(findMethodName(m, argsCnt));
3.155 + final String mn = findMethodName(m, argsCnt);
3.156 + out.append(prefix).append(mn).append(" = function");
3.157 out.append("(arg0");
3.158 String space = ",";
3.159 for (int index = 1, i = 0; i < argsCnt.length(); i++) {
3.160 @@ -207,7 +202,7 @@
3.161 } else {
3.162 out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n");
3.163 }
3.164 - out.append("}");
3.165 + out.append("};");
3.166 }
3.167
3.168 private void produceCode(byte[] byteCodes) throws IOException {
3.169 @@ -846,12 +841,6 @@
3.170 }
3.171 }
3.172
3.173 - private void generateStaticField(FieldData v) throws IOException {
3.174 - out.append("\n ")
3.175 - .append(className(jc))
3.176 - .append('.').append(v.getName()).append(initField(v));
3.177 - }
3.178 -
3.179 private String findMethodName(MethodData m, StringBuilder cnt) {
3.180 StringBuilder name = new StringBuilder();
3.181 if ("<init>".equals(m.getName())) { // NOI18N
3.182 @@ -897,7 +886,7 @@
3.183 }
3.184 final String in = mi[0];
3.185 out.append(in.replace('/', '_'));
3.186 - out.append(".prototype.");
3.187 + out.append("(true).");
3.188 out.append(mn);
3.189 out.append('(');
3.190 String sep = "";
3.191 @@ -980,7 +969,7 @@
3.192 return d.replace('[', 'A');
3.193 }
3.194
3.195 - private boolean javaScriptBody(MethodData m, boolean isStatic) throws IOException {
3.196 + private boolean javaScriptBody(String prefix, MethodData m, boolean isStatic) throws IOException {
3.197 byte[] arr = m.findAnnotationData(true);
3.198 if (arr == null) {
3.199 return false;
3.200 @@ -1010,9 +999,8 @@
3.201 return false;
3.202 }
3.203 StringBuilder cnt = new StringBuilder();
3.204 - out.append("\nfunction ").append(className(jc)).append('_').
3.205 - append(findMethodName(m, cnt));
3.206 - out.append("(");
3.207 + out.append(prefix).append(findMethodName(m, cnt));
3.208 + out.append(" = function(");
3.209 String space;
3.210 int index;
3.211 if (!isStatic) {
4.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sun Nov 25 21:23:06 2012 +0100
4.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Wed Nov 28 17:58:10 2012 +0100
4.3 @@ -29,7 +29,7 @@
4.4 */
4.5 public class ArrayTest {
4.6 @Test public void verifySimpleIntOperation() throws Exception {
4.7 - assertExec("CheckTheSum", "org_apidesign_vm4brwsr_Array_simpleI",
4.8 + assertExec("CheckTheSum", Array.class, "simpleI",
4.9 Double.valueOf(15)
4.10 );
4.11 }
4.12 @@ -39,13 +39,13 @@
4.13 }
4.14
4.15 @Test public void verifyOperationsOnArrays() throws Exception {
4.16 - assertExec("The sum is 105", "org_apidesign_vm4brwsr_Array_sumD",
4.17 + assertExec("The sum is 105", Array.class, "sumD",
4.18 Double.valueOf(105)
4.19 );
4.20 }
4.21
4.22 @Test public void doesCopyArrayWork() throws Exception {
4.23 - assertExec("Returns 'a'", "org_apidesign_vm4brwsr_Array_copyArrayC", Double.valueOf('a'));
4.24 + assertExec("Returns 'a'", Array.class, "copyArrayC", Double.valueOf('a'));
4.25 }
4.26
4.27 private static CharSequence codeSeq;
4.28 @@ -59,21 +59,7 @@
4.29 );
4.30 codeSeq = sb;
4.31 }
4.32 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
4.33 - Object ret = null;
4.34 - try {
4.35 - ret = code.invokeFunction(methodName, args);
4.36 - } catch (ScriptException ex) {
4.37 - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
4.38 - } catch (NoSuchMethodException ex) {
4.39 - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
4.40 - }
4.41 - if (ret == null && expRes == null) {
4.42 - return;
4.43 - }
4.44 - if (expRes.equals(ret)) {
4.45 - return;
4.46 - }
4.47 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
4.48 + private static void assertExec(String msg, Class clazz, String method, Object expRes, Object... args) throws Exception {
4.49 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
4.50 }
4.51 }
5.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Sun Nov 25 21:23:06 2012 +0100
5.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Wed Nov 28 17:58:10 2012 +0100
5.3 @@ -31,42 +31,42 @@
5.4 @Test public void verifyDefaultDoubleValue() throws Exception {
5.5 assertExec(
5.6 "Will be zero",
5.7 - "org_apidesign_vm4brwsr_Instance_defaultDblValueD",
5.8 + Instance.class, "defaultDblValueD",
5.9 Double.valueOf(0)
5.10 );
5.11 }
5.12 @Test public void verifyStaticMethodCall() throws Exception {
5.13 assertExec(
5.14 "Will be zero",
5.15 - "org_apidesign_vm4brwsr_InstanceSub_recallDblD",
5.16 + InstanceSub.class, "recallDblD",
5.17 Double.valueOf(0)
5.18 );
5.19 }
5.20 @Test public void verifyAssignedByteValue() throws Exception {
5.21 assertExec(
5.22 "Will one thirty one",
5.23 - "org_apidesign_vm4brwsr_Instance_assignedByteValueB",
5.24 + Instance.class, "assignedByteValueB",
5.25 Double.valueOf(31)
5.26 );
5.27 }
5.28 @Test public void verifyMagicOne() throws Exception {
5.29 assertExec(
5.30 "Should be three and something",
5.31 - "org_apidesign_vm4brwsr_Instance_magicOneD",
5.32 + Instance.class, "magicOneD",
5.33 Double.valueOf(3.3)
5.34 );
5.35 }
5.36 @Test public void verifyInstanceMethods() throws Exception {
5.37 assertExec(
5.38 "Should be eleven as we invoke overwritten method, plus 44",
5.39 - "org_apidesign_vm4brwsr_Instance_virtualBytesI",
5.40 + Instance.class, "virtualBytesI",
5.41 Double.valueOf(55)
5.42 );
5.43 }
5.44 @Test public void verifyInterfaceMethods() throws Exception {
5.45 assertExec(
5.46 "Retruns default value",
5.47 - "org_apidesign_vm4brwsr_Instance_interfaceBytesF",
5.48 + Instance.class, "interfaceBytesF",
5.49 Double.valueOf(31)
5.50 );
5.51 }
5.52 @@ -74,7 +74,7 @@
5.53 @Test public void isNull() throws Exception {
5.54 assertExec(
5.55 "Yes, we are instance",
5.56 - "org_apidesign_vm4brwsr_Instance_isNullZ",
5.57 + Instance.class, "isNullZ",
5.58 Double.valueOf(0.0)
5.59 );
5.60 }
5.61 @@ -82,7 +82,7 @@
5.62 @Test public void isInstanceOf() throws Exception {
5.63 assertExec(
5.64 "Yes, we are instance",
5.65 - "org_apidesign_vm4brwsr_Instance_instanceOfZZ",
5.66 + Instance.class, "instanceOfZZ",
5.67 Double.valueOf(1.0), true
5.68 );
5.69 }
5.70 @@ -90,7 +90,7 @@
5.71 @Test public void notInstanceOf() throws Exception {
5.72 assertExec(
5.73 "No, we are not an instance",
5.74 - "org_apidesign_vm4brwsr_Instance_instanceOfZZ",
5.75 + Instance.class, "instanceOfZZ",
5.76 Double.valueOf(0.0), false
5.77 );
5.78 }
5.79 @@ -98,14 +98,14 @@
5.80 @Test public void verifyCastToClass() throws Exception {
5.81 assertExec(
5.82 "Five signals all is good",
5.83 - "org_apidesign_vm4brwsr_Instance_castsWorkIZ",
5.84 + Instance.class, "castsWorkIZ",
5.85 Double.valueOf(5.0), false
5.86 );
5.87 }
5.88 @Test public void verifyCastToInterface() throws Exception {
5.89 assertExec(
5.90 "Five signals all is good",
5.91 - "org_apidesign_vm4brwsr_Instance_castsWorkIZ",
5.92 + Instance.class, "castsWorkIZ",
5.93 Double.valueOf(5.0), true
5.94 );
5.95 }
5.96 @@ -127,25 +127,9 @@
5.97 }
5.98
5.99 private void assertExec(
5.100 - String msg, String methodName, Object expRes, Object... args
5.101 + String msg, Class clazz, String method, Object expRes, Object... args
5.102 ) throws Exception {
5.103 -
5.104 - Object ret = null;
5.105 - try {
5.106 - ret = code.invokeFunction(methodName, args);
5.107 - } catch (ScriptException ex) {
5.108 - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
5.109 - } catch (NoSuchMethodException ex) {
5.110 - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
5.111 - }
5.112 - if (ret == null && expRes == null) {
5.113 - return;
5.114 - }
5.115 - if (expRes.equals(ret)) {
5.116 - return;
5.117 - }
5.118 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
5.119 -
5.120 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
5.121 }
5.122
5.123 }
6.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Sun Nov 25 21:23:06 2012 +0100
6.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Wed Nov 28 17:58:10 2012 +0100
6.3 @@ -17,11 +17,6 @@
6.4 */
6.5 package org.apidesign.vm4brwsr;
6.6
6.7 -import java.io.ByteArrayInputStream;
6.8 -import java.io.ByteArrayOutputStream;
6.9 -import java.io.DataInputStream;
6.10 -import java.io.DataOutputStream;
6.11 -import java.io.IOException;
6.12 import javax.script.Invocable;
6.13 import javax.script.ScriptException;
6.14 import static org.testng.Assert.*;
6.15 @@ -34,19 +29,19 @@
6.16 */
6.17 public class NumberTest {
6.18 @Test public void integerFromString() throws Exception {
6.19 - assertExec("Can convert string to integer", "java_lang_Integer_parseIntILjava_lang_String",
6.20 + assertExec("Can convert string to integer", Integer.class, "parseIntILjava_lang_String",
6.21 Double.valueOf(333), "333"
6.22 );
6.23 }
6.24
6.25 @Test public void doubleFromString() throws Exception {
6.26 - assertExec("Can convert string to double", "java_lang_Double_parseDoubleDLjava_lang_String",
6.27 + assertExec("Can convert string to double", Double.class, "parseDoubleDLjava_lang_String",
6.28 Double.valueOf(33.3), "33.3"
6.29 );
6.30 }
6.31
6.32 @Test public void autoboxDouble() throws Exception {
6.33 - assertExec("Autoboxing of doubles is OK", "org_apidesign_vm4brwsr_Numbers_autoboxDblToStringLjava_lang_String",
6.34 + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToStringLjava_lang_String",
6.35 "3.3"
6.36 );
6.37 }
6.38 @@ -56,7 +51,7 @@
6.39 }
6.40
6.41 @Test public void jslog1000() throws Exception {
6.42 - assertExec("log_10(1000) == 3", "java_lang_Math_log10DD",
6.43 + assertExec("log_10(1000) == 3", Math.class, "log10DD",
6.44 Double.valueOf(3.0), 1000.0
6.45 );
6.46 }
6.47 @@ -65,20 +60,20 @@
6.48 assertEquals(3, Numbers.rem(303, 10));
6.49 }
6.50 @Test public void jsRem() throws Exception {
6.51 - assertExec("Should be three", "org_apidesign_vm4brwsr_Numbers_remIII",
6.52 + assertExec("Should be three", Numbers.class, "remIII",
6.53 Double.valueOf(3.0), 303, 10
6.54 );
6.55 }
6.56
6.57 @Test public void deserializeInt() throws Exception {
6.58 int exp = Numbers.deserInt();
6.59 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserIntI",
6.60 + assertExec("Should be the same", Numbers.class, "deserIntI",
6.61 Double.valueOf(exp)
6.62 );
6.63 }
6.64
6.65 @Test public void deserializeSimpleLong() throws Exception {
6.66 - assertExec("Should be 3454", "org_apidesign_vm4brwsr_Numbers_deserLongJAB",
6.67 + assertExec("Should be 3454", Numbers.class, "deserLongJAB",
6.68 Double.valueOf(3454),
6.69 new byte[] { (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)13, (byte)126 }
6.70 );
6.71 @@ -102,7 +97,7 @@
6.72
6.73 @Test public void deserializeFloatInJS() throws Exception {
6.74 float f = 54324.32423f;
6.75 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserFloatF",
6.76 + assertExec("Should be the same", Numbers.class, "deserFloatF",
6.77 Double.valueOf(f)
6.78 );
6.79 }
6.80 @@ -115,7 +110,7 @@
6.81
6.82 @Test public void deserializeDoubleInJS() throws Exception {
6.83 double f = 3.0;
6.84 - assertExec("Should be the same", "org_apidesign_vm4brwsr_Numbers_deserDoubleD", f);
6.85 + assertExec("Should be the same", Numbers.class, "deserDoubleD", f);
6.86 }
6.87 /*
6.88 @Test public void serDouble() throws IOException {
6.89 @@ -136,7 +131,7 @@
6.90 @Test public void fiveInStringJS() throws Exception {
6.91 String s = Numbers.intToString();
6.92 assertExec("Should be the same: " + s,
6.93 - "org_apidesign_vm4brwsr_Numbers_intToStringLjava_lang_String",
6.94 + Numbers.class, "intToStringLjava_lang_String",
6.95 s
6.96 );
6.97 }
6.98 @@ -144,7 +139,7 @@
6.99 @Test public void sevenInStringJS() throws Exception {
6.100 String s = Numbers.floatToString();
6.101 assertExec("Should be the same: " + s,
6.102 - "org_apidesign_vm4brwsr_Numbers_floatToStringLjava_lang_String",
6.103 + Numbers.class, "floatToStringLjava_lang_String",
6.104 s
6.105 );
6.106 }
6.107 @@ -162,15 +157,16 @@
6.108 }
6.109
6.110 private static void assertExec(
6.111 - String msg, String methodName, Object expRes, Object... args) throws Exception {
6.112 + String msg, Class<?> clazz, String method, Object expRes, Object... args) throws Exception {
6.113
6.114 Object ret = null;
6.115 try {
6.116 - ret = code.invokeFunction(methodName, args);
6.117 + ret = code.invokeFunction(clazz.getName().replace('.', '_'), true);
6.118 + ret = code.invokeMethod(ret, method, args);
6.119 } catch (ScriptException ex) {
6.120 - fail("Execution failed in\n" + codeSeq, ex);
6.121 + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
6.122 } catch (NoSuchMethodException ex) {
6.123 - fail("Cannot find method in\n" + codeSeq, ex);
6.124 + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
6.125 }
6.126 if (ret == null && expRes == null) {
6.127 return;
6.128 @@ -181,10 +177,10 @@
6.129 if (expRes instanceof Double && ret instanceof Double) {
6.130 double expD = ((Double)expRes).doubleValue();
6.131 double retD = ((Double)ret).doubleValue();
6.132 - assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + codeSeq);
6.133 + assertEquals(retD, expD, 0.000004, msg + " was " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
6.134 return;
6.135 }
6.136 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
6.137 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
6.138 }
6.139
6.140 }
7.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Sun Nov 25 21:23:06 2012 +0100
7.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Wed Nov 28 17:58:10 2012 +0100
7.3 @@ -36,7 +36,7 @@
7.4 @Test public void threePlusFour() throws Exception {
7.5 assertExec(
7.6 "Should be seven",
7.7 - "org_apidesign_vm4brwsr_StaticMethod_sumIII",
7.8 + StaticMethod.class, "sumIII",
7.9 Double.valueOf(7),
7.10 3, 4
7.11 );
7.12 @@ -45,7 +45,7 @@
7.13 @Test public void checkReallyInitializedValues() throws Exception {
7.14 assertExec(
7.15 "Return true",
7.16 - "org_apidesign_vm4brwsr_StaticMethod_isNullZ",
7.17 + StaticMethod.class, "isNullZ",
7.18 Double.valueOf(1)
7.19 );
7.20 }
7.21 @@ -53,7 +53,7 @@
7.22 @Test public void powerOfThree() throws Exception {
7.23 assertExec(
7.24 "Should be nine",
7.25 - "org_apidesign_vm4brwsr_StaticMethod_powerFF",
7.26 + StaticMethod.class, "powerFF",
7.27 Double.valueOf(9),
7.28 3.0f
7.29 );
7.30 @@ -62,7 +62,7 @@
7.31 @Test public void minusOne() throws Exception {
7.32 assertExec(
7.33 "Should be minus one",
7.34 - "org_apidesign_vm4brwsr_StaticMethod_minusOneI",
7.35 + StaticMethod.class, "minusOneI",
7.36 Double.valueOf(-1)
7.37 );
7.38 }
7.39 @@ -70,7 +70,7 @@
7.40 @Test public void doubleWithoutLong() throws Exception {
7.41 assertExec(
7.42 "Should be two",
7.43 - "org_apidesign_vm4brwsr_StaticMethod_minusDDJ",
7.44 + StaticMethod.class, "minusDDJ",
7.45 Double.valueOf(2),
7.46 3.0d, 1l
7.47 );
7.48 @@ -79,7 +79,7 @@
7.49 @Test public void divAndRound() throws Exception {
7.50 assertExec(
7.51 "Should be rounded to one",
7.52 - "org_apidesign_vm4brwsr_StaticMethod_divIBD",
7.53 + StaticMethod.class, "divIBD",
7.54 Double.valueOf(1),
7.55 3, 3.75
7.56 );
7.57 @@ -87,7 +87,7 @@
7.58 @Test public void mixedMethodFourParams() throws Exception {
7.59 assertExec(
7.60 "Should be two",
7.61 - "org_apidesign_vm4brwsr_StaticMethod_mixIIJBD",
7.62 + StaticMethod.class, "mixIIJBD",
7.63 Double.valueOf(20),
7.64 2, 10l, 5, 2.0
7.65 );
7.66 @@ -95,7 +95,7 @@
7.67 @Test public void factRec() throws Exception {
7.68 assertExec(
7.69 "Factorial of 5 is 120",
7.70 - "org_apidesign_vm4brwsr_StaticMethod_factRecJI",
7.71 + StaticMethod.class, "factRecJI",
7.72 Double.valueOf(120),
7.73 5
7.74 );
7.75 @@ -103,7 +103,7 @@
7.76 @Test public void factIter() throws Exception {
7.77 assertExec(
7.78 "Factorial of 5 is 120",
7.79 - "org_apidesign_vm4brwsr_StaticMethod_factIterJI",
7.80 + StaticMethod.class, "factIterJI",
7.81 Double.valueOf(120),
7.82 5
7.83 );
7.84 @@ -112,7 +112,7 @@
7.85 @Test public void xor() throws Exception {
7.86 assertExec(
7.87 "Xor is 4",
7.88 - "org_apidesign_vm4brwsr_StaticMethod_xorJIJ",
7.89 + StaticMethod.class, "xorJIJ",
7.90 Double.valueOf(4),
7.91 7,
7.92 3
7.93 @@ -122,7 +122,7 @@
7.94 @Test public void or() throws Exception {
7.95 assertExec(
7.96 "Or will be 7",
7.97 - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII",
7.98 + StaticMethod.class, "orOrAndJZII",
7.99 Double.valueOf(7),
7.100 true,
7.101 4,
7.102 @@ -132,14 +132,14 @@
7.103 @Test public void nullCheck() throws Exception {
7.104 assertExec(
7.105 "Returns nothing",
7.106 - "org_apidesign_vm4brwsr_StaticMethod_noneLjava_lang_ObjectII",
7.107 + StaticMethod.class, "noneLjava_lang_ObjectII",
7.108 null, 1, 3
7.109 );
7.110 }
7.111 @Test public void and() throws Exception {
7.112 assertExec(
7.113 "And will be 3",
7.114 - "org_apidesign_vm4brwsr_StaticMethod_orOrAndJZII",
7.115 + StaticMethod.class, "orOrAndJZII",
7.116 Double.valueOf(3),
7.117 false,
7.118 7,
7.119 @@ -149,7 +149,7 @@
7.120 @Test public void inc4() throws Exception {
7.121 assertExec(
7.122 "It will be 4",
7.123 - "org_apidesign_vm4brwsr_StaticMethod_inc4I",
7.124 + StaticMethod.class, "inc4I",
7.125 Double.valueOf(4)
7.126 );
7.127 }
7.128 @@ -162,7 +162,7 @@
7.129 @Test public void shiftLeftInJS() throws Exception {
7.130 assertExec(
7.131 "Setting 9th bit",
7.132 - "org_apidesign_vm4brwsr_StaticMethod_shiftLeftIII",
7.133 + StaticMethod.class, "shiftLeftIII",
7.134 Double.valueOf(256),
7.135 1, 8
7.136 );
7.137 @@ -176,7 +176,7 @@
7.138 @Test public void shiftRightInJS() throws Exception {
7.139 assertExec(
7.140 "Get -1",
7.141 - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ",
7.142 + StaticMethod.class, "shiftArithmRightIIIZ",
7.143 Double.valueOf(-1),
7.144 -8, 3, true
7.145 );
7.146 @@ -189,7 +189,7 @@
7.147 @Test public void unsignedShiftRightInJS() throws Exception {
7.148 assertExec(
7.149 "Get -1",
7.150 - "org_apidesign_vm4brwsr_StaticMethod_shiftArithmRightIIIZ",
7.151 + StaticMethod.class, "shiftArithmRightIIIZ",
7.152 Double.valueOf(1),
7.153 8, 3, false
7.154 );
7.155 @@ -198,7 +198,7 @@
7.156 @Test public void javaScriptBody() throws Exception {
7.157 assertExec(
7.158 "JavaScript string",
7.159 - "org_apidesign_vm4brwsr_StaticMethod_i2sLjava_lang_StringII",
7.160 + StaticMethod.class, "i2sLjava_lang_StringII",
7.161 "333",
7.162 330, 3
7.163 );
7.164 @@ -207,7 +207,7 @@
7.165 @Test public void switchJarda() throws Exception {
7.166 assertExec(
7.167 "The expected value",
7.168 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
7.169 + StaticMethod.class, "swtchLjava_lang_StringI",
7.170 "Jarda",
7.171 0
7.172 );
7.173 @@ -216,7 +216,7 @@
7.174 @Test public void switchDarda() throws Exception {
7.175 assertExec(
7.176 "The expected value",
7.177 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
7.178 + StaticMethod.class, "swtchLjava_lang_StringI",
7.179 "Darda",
7.180 1
7.181 );
7.182 @@ -224,7 +224,7 @@
7.183 @Test public void switchParda() throws Exception {
7.184 assertExec(
7.185 "The expected value",
7.186 - "org_apidesign_vm4brwsr_StaticMethod_swtch2Ljava_lang_StringI",
7.187 + StaticMethod.class, "swtch2Ljava_lang_StringI",
7.188 "Parda",
7.189 22
7.190 );
7.191 @@ -232,7 +232,7 @@
7.192 @Test public void switchMarda() throws Exception {
7.193 assertExec(
7.194 "The expected value",
7.195 - "org_apidesign_vm4brwsr_StaticMethod_swtchLjava_lang_StringI",
7.196 + StaticMethod.class, "swtchLjava_lang_StringI",
7.197 "Marda",
7.198 -433
7.199 );
7.200 @@ -249,16 +249,25 @@
7.201 }
7.202
7.203
7.204 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
7.205 - StringBuilder sb = new StringBuilder();
7.206 -
7.207 + private static void assertExec(
7.208 + String msg, Class clazz, String method,
7.209 + Object expRes, Object... args
7.210 + ) throws Exception {
7.211 + assertExec(code, codeSeq, msg, clazz, method, expRes, args);
7.212 + }
7.213 + static void assertExec(
7.214 + Invocable toRun, CharSequence theCode,
7.215 + String msg, Class clazz, String method,
7.216 + Object expRes, Object... args
7.217 + ) throws Exception {
7.218 Object ret = null;
7.219 try {
7.220 - ret = code.invokeFunction(methodName, args);
7.221 + ret = toRun.invokeFunction(clazz.getName().replace('.', '_'), true);
7.222 + ret = toRun.invokeMethod(ret, method, args);
7.223 } catch (ScriptException ex) {
7.224 - fail("Execution failed in\n" + codeSeq, ex);
7.225 + fail("Execution failed in\n" + dumpJS(theCode), ex);
7.226 } catch (NoSuchMethodException ex) {
7.227 - fail("Cannot find method in\n" + codeSeq, ex);
7.228 + fail("Cannot find method in\n" + dumpJS(theCode), ex);
7.229 }
7.230 if (ret == null && expRes == null) {
7.231 return;
7.232 @@ -266,17 +275,25 @@
7.233 if (expRes != null && expRes.equals(ret)) {
7.234 return;
7.235 }
7.236 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq);
7.237 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + dumpJS(theCode));
7.238
7.239 }
7.240
7.241 static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException {
7.242 + return compileClass(sb, null, names);
7.243 + }
7.244 + static Invocable compileClass(
7.245 + StringBuilder sb, ScriptEngine[] eng, String... names
7.246 + ) throws ScriptException, IOException {
7.247 if (sb == null) {
7.248 sb = new StringBuilder();
7.249 }
7.250 GenJS.compile(sb, names);
7.251 ScriptEngineManager sem = new ScriptEngineManager();
7.252 ScriptEngine js = sem.getEngineByExtension("js");
7.253 + if (eng != null) {
7.254 + eng[0] = js;
7.255 + }
7.256 try {
7.257 Object res = js.eval(sb.toString());
7.258 assertTrue(js instanceof Invocable, "It is invocable object: " + res);
7.259 @@ -285,7 +302,7 @@
7.260 if (sb.length() > 2000) {
7.261 sb = dumpJS(sb);
7.262 }
7.263 - fail("Could not compile:\n" + sb, ex);
7.264 + fail("Could not evaluate:\n" + sb, ex);
7.265 return null;
7.266 }
7.267 }
8.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sun Nov 25 21:23:06 2012 +0100
8.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Wed Nov 28 17:58:10 2012 +0100
8.3 @@ -64,6 +64,10 @@
8.4 return h.hashCode();
8.5 }
8.6
8.7 + public static boolean isStringInstance() {
8.8 + return chars('a', (char)30, 'b') instanceof String;
8.9 + }
8.10 +
8.11 public static String insertBuffer() {
8.12 StringBuilder sb = new StringBuilder();
8.13 sb.append("Jardo!");
9.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sun Nov 25 21:23:06 2012 +0100
9.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Wed Nov 28 17:58:10 2012 +0100
9.3 @@ -31,7 +31,7 @@
9.4 @Test public void firstChar() throws Exception {
9.5 assertExec(
9.6 "First char in Hello is H",
9.7 - "org_apidesign_vm4brwsr_StringSample_sayHelloCI",
9.8 + StringSample.class, "sayHelloCI",
9.9 72, 0
9.10 );
9.11 }
9.12 @@ -39,7 +39,7 @@
9.13 @Test public void fromChars() throws Exception {
9.14 assertExec(
9.15 "First char in Hello is ABC",
9.16 - "org_apidesign_vm4brwsr_StringSample_fromCharsLjava_lang_StringCCC",
9.17 + StringSample.class, "fromCharsLjava_lang_StringCCC",
9.18 "ABC", 'A', 'B', 'C'
9.19 );
9.20 }
9.21 @@ -47,7 +47,7 @@
9.22 @Test public void concatChars() throws Exception {
9.23 assertExec(
9.24 "Composing yields ABC",
9.25 - "org_apidesign_vm4brwsr_StringSample_charsLjava_lang_StringCCC",
9.26 + StringSample.class, "charsLjava_lang_StringCCC",
9.27 "ABC", 'A', 'B', 'C'
9.28 );
9.29 }
9.30 @@ -55,7 +55,7 @@
9.31 @Test public void concatCharsFromInts() throws Exception {
9.32 assertExec(
9.33 "Composing yields ABC",
9.34 - "org_apidesign_vm4brwsr_StringSample_charsFromNumbersLjava_lang_String",
9.35 + StringSample.class, "charsFromNumbersLjava_lang_String",
9.36 "ABC"
9.37 );
9.38 }
9.39 @@ -63,15 +63,23 @@
9.40 @Test public void concatCharsFromChars() throws Exception {
9.41 assertExec(
9.42 "Composing yields ABC",
9.43 - "org_apidesign_vm4brwsr_StringSample_charsFromCharsLjava_lang_String",
9.44 + StringSample.class, "charsFromCharsLjava_lang_String",
9.45 "ABC"
9.46 );
9.47 }
9.48
9.49 + @Test public void instanceOfWorks() throws Exception {
9.50 + assertExec(
9.51 + "It is string",
9.52 + StringSample.class, "isStringInstanceZ",
9.53 + Double.valueOf(1.0)
9.54 + );
9.55 + }
9.56 +
9.57 @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
9.58 assertExec(
9.59 "Five executions should generate 5Hello World!",
9.60 - "org_apidesign_vm4brwsr_StringSample_toStringTestLjava_lang_StringI",
9.61 + StringSample.class, "toStringTestLjava_lang_StringI",
9.62 "Hello World!5", 5
9.63 );
9.64 }
9.65 @@ -82,7 +90,7 @@
9.66 @Test(timeOut=10000) public void stringStringConcat() throws Exception {
9.67 assertExec(
9.68 "Composes strings OK",
9.69 - "org_apidesign_vm4brwsr_StringSample_concatStringsLjava_lang_String",
9.70 + StringSample.class, "concatStringsLjava_lang_String",
9.71 "Hello World!1" + "\\\n\r\t"
9.72 );
9.73 }
9.74 @@ -90,21 +98,21 @@
9.75 @Test public void equalsAndSubstring() throws Exception {
9.76 assertExec(
9.77 "Composes are OK",
9.78 - "org_apidesign_vm4brwsr_StringSample_equalToHelloZII",
9.79 + StringSample.class, "equalToHelloZII",
9.80 true, 0, 5
9.81 );
9.82 }
9.83 @Test public void replaceChars() throws Exception {
9.84 assertExec(
9.85 "Can replace slashes by underscores",
9.86 - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
9.87 + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
9.88 "x_y_z", "x/y/z", '/', '_'
9.89 );
9.90 }
9.91 @Test public void replaceIntChars() throws Exception {
9.92 assertExec(
9.93 "Can replace slashes by underscores",
9.94 - "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
9.95 + StringSample.class, "replaceLjava_lang_StringLjava_lang_StringCC",
9.96 "x_y_z", "x/y/z", (int)'/', (int)'_'
9.97 );
9.98 }
9.99 @@ -112,7 +120,7 @@
9.100 @Test public void insertBuilder() throws Exception {
9.101 assertExec(
9.102 "Can insert something into a buffer?",
9.103 - "org_apidesign_vm4brwsr_StringSample_insertBufferLjava_lang_String",
9.104 + StringSample.class, "insertBufferLjava_lang_String",
9.105 "Ahojdo!"
9.106 );
9.107 }
9.108 @@ -122,7 +130,7 @@
9.109 int jh = StringSample.hashCode(j);
9.110 assertExec(
9.111 "Hashcode is the same " +jh,
9.112 - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String",
9.113 + StringSample.class, "hashCodeILjava_lang_String",
9.114 Double.valueOf(jh), j
9.115 );
9.116 }
9.117 @@ -131,28 +139,28 @@
9.118 int jh = StringSample.hashCode(j);
9.119 assertExec(
9.120 "Hashcode is the same " + jh,
9.121 - "org_apidesign_vm4brwsr_StringSample_hashCodeILjava_lang_String",
9.122 + StringSample.class, "hashCodeILjava_lang_String",
9.123 Double.valueOf(jh), j
9.124 );
9.125 }
9.126 @Test public void stringSwitch1() throws Exception {
9.127 assertExec(
9.128 "Get one",
9.129 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
9.130 + StringSample.class, "stringSwitchILjava_lang_String",
9.131 Double.valueOf(1), "jedna"
9.132 );
9.133 }
9.134 @Test public void stringSwitch2() throws Exception {
9.135 assertExec(
9.136 "Get two",
9.137 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
9.138 + StringSample.class, "stringSwitchILjava_lang_String",
9.139 Double.valueOf(2), "dve"
9.140 );
9.141 }
9.142 @Test public void stringSwitchDefault() throws Exception {
9.143 assertExec(
9.144 "Get -1",
9.145 - "org_apidesign_vm4brwsr_StringSample_stringSwitchILjava_lang_String",
9.146 + StringSample.class, "stringSwitchILjava_lang_String",
9.147 Double.valueOf(-1), "none"
9.148 );
9.149 }
9.150 @@ -161,7 +169,7 @@
9.151 assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane");
9.152 assertExec(
9.153 "One A and one B adds to 3",
9.154 - "org_apidesign_vm4brwsr_StringSample_countABILjava_lang_String",
9.155 + StringSample.class, "countABILjava_lang_String",
9.156 Double.valueOf(3), "Ahoj Bedo!"
9.157 );
9.158
9.159 @@ -180,23 +188,10 @@
9.160 codeSeq = sb;
9.161 }
9.162
9.163 - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
9.164 - Object ret = null;
9.165 - try {
9.166 - ret = code.invokeFunction(methodName, args);
9.167 - } catch (ScriptException ex) {
9.168 - fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
9.169 - } catch (NoSuchMethodException ex) {
9.170 - fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
9.171 - }
9.172 - if (ret == null && expRes == null) {
9.173 - return;
9.174 - }
9.175 - if (expRes.equals(ret)) {
9.176 - return;
9.177 - }
9.178 - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
9.179 -
9.180 + private static void assertExec(String msg,
9.181 + Class<?> clazz, String method, Object expRes, Object... args
9.182 + ) throws Exception {
9.183 + StaticMethodTest.assertExec(code, codeSeq, msg, clazz, method, expRes, args);
9.184 }
9.185
9.186 }
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Wed Nov 28 17:58:10 2012 +0100
10.3 @@ -0,0 +1,68 @@
10.4 +/**
10.5 + * Back 2 Browser Bytecode Translator
10.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
10.7 + *
10.8 + * This program is free software: you can redistribute it and/or modify
10.9 + * it under the terms of the GNU General Public License as published by
10.10 + * the Free Software Foundation, version 2 of the License.
10.11 + *
10.12 + * This program is distributed in the hope that it will be useful,
10.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
10.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10.15 + * GNU General Public License for more details.
10.16 + *
10.17 + * You should have received a copy of the GNU General Public License
10.18 + * along with this program. Look for COPYING file in the top folder.
10.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
10.20 + */
10.21 +package org.apidesign.vm4brwsr;
10.22 +
10.23 +import java.io.ByteArrayInputStream;
10.24 +import java.io.IOException;
10.25 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
10.26 +
10.27 +/**
10.28 + *
10.29 + * @author Jaroslav Tulach <jtulach@netbeans.org>
10.30 + */
10.31 +class VMLazy extends ByteCodeToJavaScript {
10.32 + private final Object vm;
10.33 + private final Object global;
10.34 +
10.35 + private VMLazy(Object global, Object vm, Appendable out) {
10.36 + super(out);
10.37 + this.vm = vm;
10.38 + this.global = global;
10.39 + }
10.40 +
10.41 + static String toJavaScript(Object global, Object vm, byte[] is) throws IOException {
10.42 + StringBuilder sb = new StringBuilder();
10.43 + new VMLazy(global, vm, sb).compile(new ByteArrayInputStream(is));
10.44 + return sb.toString().toString();
10.45 + }
10.46 +
10.47 + @JavaScriptBody(args = { "self", "n" },
10.48 + body=
10.49 + "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();"
10.50 + + "var glb = self.fld_global;"
10.51 + + "var vm = self.fld_vm;"
10.52 + + "if (glb[cls]) return false;"
10.53 + + "glb[cls] = function() {"
10.54 + + " return vm.loadClass(n,cls);"
10.55 + + "};"
10.56 + + "return true;"
10.57 + )
10.58 + @Override
10.59 + protected boolean requireReference(String internalClassName) {
10.60 + throw new UnsupportedOperationException();
10.61 + }
10.62 +
10.63 + @Override
10.64 + protected void requireScript(String resourcePath) {
10.65 + }
10.66 +
10.67 + @Override
10.68 + protected String assignClass(String className) {
10.69 + return "arguments[0][arguments[1]]=";
10.70 + }
10.71 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java Wed Nov 28 17:58:10 2012 +0100
11.3 @@ -0,0 +1,132 @@
11.4 +/**
11.5 + * Back 2 Browser Bytecode Translator
11.6 + * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
11.7 + *
11.8 + * This program is free software: you can redistribute it and/or modify
11.9 + * it under the terms of the GNU General Public License as published by
11.10 + * the Free Software Foundation, version 2 of the License.
11.11 + *
11.12 + * This program is distributed in the hope that it will be useful,
11.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
11.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11.15 + * GNU General Public License for more details.
11.16 + *
11.17 + * You should have received a copy of the GNU General Public License
11.18 + * along with this program. Look for COPYING file in the top folder.
11.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
11.20 + */
11.21 +package org.apidesign.vm4brwsr;
11.22 +
11.23 +import java.io.IOException;
11.24 +import java.io.InputStream;
11.25 +import javax.script.Invocable;
11.26 +import javax.script.ScriptContext;
11.27 +import javax.script.ScriptEngine;
11.28 +import javax.script.ScriptException;
11.29 +import org.testng.annotations.BeforeClass;
11.30 +import static org.testng.Assert.*;
11.31 +import org.testng.annotations.Test;
11.32 +
11.33 +/** Implements loading class by class.
11.34 + *
11.35 + * @author Jaroslav Tulach <jtulach@netbeans.org>
11.36 + */
11.37 +public class VMLazyTest {
11.38 +
11.39 +
11.40 + private static CharSequence codeSeq;
11.41 + private static Invocable code;
11.42 +
11.43 + @BeforeClass
11.44 + public void compileTheCode() throws Exception {
11.45 + StringBuilder sb = new StringBuilder();
11.46 +
11.47 + sb.append("\nfunction test(clazz, as, method) {");
11.48 + sb.append("\n var l = new lazyVM(this);");
11.49 + sb.append("\n var c = l.loadClass(clazz, as);");
11.50 + sb.append("\n return c[method]();");
11.51 + sb.append("\n}");
11.52 +
11.53 +
11.54 + sb.append("\nfunction lazyVM(global) {");
11.55 + sb.append("\n var self = this;");
11.56 + sb.append("\n var glb = global;");
11.57 + sb.append("\n lazyVM.prototype.loadClass = function(res, name) {");
11.58 + sb.append("\n var script = org_apidesign_vm4brwsr_VMLazy(true)."
11.59 + + "toJavaScriptLjava_lang_StringLjava_lang_ObjectLjava_lang_ObjectAB("
11.60 + + " glb, self,"
11.61 + + " loader.get(res + '.class')"
11.62 + + ");");
11.63 + sb.append("\n try {");
11.64 + sb.append("\n new Function(script)(self, name);");
11.65 + sb.append("\n } catch (ex) {");
11.66 + sb.append("\n throw 'Cannot compile ' + res + ' error: ' + ex + ' script:\\n' + script;");
11.67 + sb.append("\n };");
11.68 + sb.append("\n return self[name](true);");
11.69 + sb.append("\n };");
11.70 + sb.append("\n");
11.71 + sb.append("\n}\n");
11.72 +
11.73 + ScriptEngine[] arr = { null };
11.74 + code = StaticMethodTest.compileClass(sb, arr,
11.75 + "org/apidesign/vm4brwsr/VMLazy"
11.76 + );
11.77 + arr[0].getContext().setAttribute("loader", new FindBytes(), ScriptContext.ENGINE_SCOPE);
11.78 + codeSeq = sb;
11.79 + }
11.80 +
11.81 + @Test public void invokeStaticMethod() throws Exception {
11.82 + assertExec("Trying to get -1", "test", Double.valueOf(-1),
11.83 + "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI"
11.84 + );
11.85 + }
11.86 +
11.87 + @Test public void loadDependantClass() throws Exception {
11.88 + assertExec("Trying to get zero", "test", Double.valueOf(0),
11.89 + "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD"
11.90 + );
11.91 + }
11.92 +
11.93 + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
11.94 + Object ret = null;
11.95 + try {
11.96 + ret = code.invokeFunction(methodName, args);
11.97 + } catch (ScriptException ex) {
11.98 + fail("Execution failed in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
11.99 + } catch (NoSuchMethodException ex) {
11.100 + fail("Cannot find method in\n" + StaticMethodTest.dumpJS(codeSeq), ex);
11.101 + }
11.102 + if (ret == null && expRes == null) {
11.103 + return;
11.104 + }
11.105 + if (expRes.equals(ret)) {
11.106 + return;
11.107 + }
11.108 + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + StaticMethodTest.dumpJS(codeSeq));
11.109 + }
11.110 +
11.111 + public static final class FindBytes {
11.112 + public byte[] get(String name) throws IOException {
11.113 + InputStream is = VMLazyTest.class.getClassLoader().getResourceAsStream(name);
11.114 + if (is == null) {
11.115 + throw new IOException("Can't find " + name);
11.116 + }
11.117 + byte[] arr = new byte[is.available()];
11.118 + int len = is.read(arr);
11.119 + if (len != arr.length) {
11.120 + throw new IOException("Read only " + len + " wanting " + arr.length);
11.121 + }
11.122 + /*
11.123 + System.err.print("loader['" + name + "'] = [");
11.124 + for (int i = 0; i < arr.length; i++) {
11.125 + if (i > 0) {
11.126 + System.err.print(", ");
11.127 + }
11.128 + System.err.print(arr[i]);
11.129 + }
11.130 + System.err.println("]");
11.131 + */
11.132 + return arr;
11.133 + }
11.134 + }
11.135 +}
12.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Sun Nov 25 21:23:06 2012 +0100
12.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Wed Nov 28 17:58:10 2012 +0100
12.3 @@ -41,10 +41,8 @@
12.4
12.5 Object ret;
12.6 try {
12.7 - ret = code.invokeFunction(
12.8 - "org_apidesign_vm4brwsr_VMinVM_toJavaScriptLjava_lang_StringAB",
12.9 - arr
12.10 - );
12.11 + ret = code.invokeFunction(VMinVM.class.getName().replace('.', '_'), true);
12.12 + ret = code.invokeMethod(ret, "toJavaScriptLjava_lang_StringAB", arr);
12.13 } catch (Exception ex) {
12.14 File f = File.createTempFile("execution", ".js");
12.15 FileWriter w = new FileWriter(f);