1.1 --- a/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js Fri Sep 28 13:15:45 2012 +0200
1.2 +++ b/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js Fri Sep 28 14:06:57 2012 +0200
1.3 @@ -70,28 +70,11 @@
1.4 case 60: return; // 177
1.5 }
1.6 }
1.7 +*/
1.8 function java_lang_String_consVAC(arg0,arg1) {
1.9 - var arg2;
1.10 -;
1.11 - var stack = new Array(2);
1.12 - var gt = 0;
1.13 - for(;;) switch(gt) {
1.14 - case 0: stack.push(arg0); // 42
1.15 - case 1: { java_lang_Object_consV(stack.pop()); } // 183 1 130
1.16 - case 4: stack.push(arg0); // 42
1.17 - case 5: stack.push(0); // 3
1.18 - case 6: { var v = stack.pop(); stack.pop().offset = v; } // 181 1 99
1.19 - case 9: stack.push(arg0); // 42
1.20 - case 10: stack.push(arg1); // 43
1.21 - case 11: stack.push(stack.pop().length); // 190
1.22 - case 12: { var v = stack.pop(); stack.pop().count = v; } // 181 1 97
1.23 - case 15: stack.push(arg0); // 42
1.24 - case 16: stack.push(arg1); // 43
1.25 - case 17: { var v0 = stack.pop(); stack.push(java_lang_StringValue_fromACAC(v0)); } // 184 1 170
1.26 - case 20: { var v = stack.pop(); stack.pop().value = v; } // 181 1 100
1.27 - case 23: return; // 177
1.28 - }
1.29 + arg0.r = arg1.join("");
1.30 }
1.31 +/*
1.32 function java_lang_String_consVACII(arg0,arg1,arg2,arg3) {
1.33 var arg4;
1.34 ;
1.35 @@ -664,16 +647,14 @@
1.36 }
1.37 */
1.38
1.39 -String.prototype._toJS = function (self) { return self; };
1.40 -
1.41 function java_lang_String_charAtCI(arg0,arg1) {
1.42 - return arg0._toJS(arg0).charAt(arg1);
1.43 + return arg0.toString().charAt(arg1);
1.44 }
1.45 function java_lang_String_lengthI(arg0) {
1.46 - return arg0._toJS(arg0).length;
1.47 + return arg0.toString().length;
1.48 }
1.49 function java_lang_String_isEmptyZ(arg0) {
1.50 - return arg0._toJS(arg0).length === 0;
1.51 + return arg0.toString().length === 0;
1.52 }
1.53
1.54 /*
1.55 @@ -813,7 +794,7 @@
1.56
1.57 // public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
1.58 function java_lang_String_getCharsVIIACAI(arg0,arg1,arg2,arg3,arg4) {
1.59 - var s = arg0._toJS(arg0);
1.60 + var s = arg0.toString();
1.61 while (arg1 < arg2) {
1.62 arg3[arg4++] = s[arg1++];
1.63 }
1.64 @@ -3001,16 +2982,11 @@
1.65 case 86: return stack.pop(); // 176
1.66 }
1.67 }
1.68 +*/
1.69 function java_lang_String_toStringLjava_lang_String(arg0) {
1.70 - var arg1;
1.71 -;
1.72 - var stack = new Array(1);
1.73 - var gt = 0;
1.74 - for(;;) switch(gt) {
1.75 - case 0: stack.push(arg0); // 42
1.76 - case 1: return stack.pop(); // 176
1.77 - }
1.78 + return arg0.toString();
1.79 }
1.80 +/*
1.81 function java_lang_String_toCharArrayAC(arg0) {
1.82 var arg1;
1.83 var arg2;
1.84 @@ -3233,25 +3209,33 @@
1.85 var java_lang_String_serialPersistentFields = 0;
1.86 var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
1.87 function java_lang_String() {
1.88 - /** the real value of this string that we delegate to */
1.89 + /** the real value of this 'string' we delegate to */
1.90 this.r = '';
1.91 +
1.92 + var self = this;
1.93 /*
1.94 - this.consV = java_lang_String_consV;
1.95 - this.consVLjava_lang_String = java_lang_String_consVLjava_lang_String;
1.96 - this.consVAC = java_lang_String_consVAC;
1.97 - this.consVACII = java_lang_String_consVACII;
1.98 - this.consVAIII = java_lang_String_consVAIII;
1.99 - this.consVABIII = java_lang_String_consVABIII;
1.100 - this.consVABI = java_lang_String_consVABI;
1.101 - this.consVABIILjava_lang_String = java_lang_String_consVABIILjava_lang_String;
1.102 - this.consVABIILjava_nio_charset_Charset = java_lang_String_consVABIILjava_nio_charset_Charset;
1.103 - this.consVABLjava_lang_String = java_lang_String_consVABLjava_lang_String;
1.104 - this.consVABLjava_nio_charset_Charset = java_lang_String_consVABLjava_nio_charset_Charset;
1.105 - this.consVABII = java_lang_String_consVABII;
1.106 - this.consVAB = java_lang_String_consVAB;
1.107 - this.consVLjava_lang_StringBuffer = java_lang_String_consVLjava_lang_StringBuffer;
1.108 - this.consVLjava_lang_StringBuilder = java_lang_String_consVLjava_lang_StringBuilder;
1.109 - this.consVIIAC = java_lang_String_consVIIAC;
1.110 + this.value = 0;
1.111 + this.offset = 0;
1.112 + this.count = 0;
1.113 + this.hash = 0;
1.114 + */
1.115 + this.toString = function() { return self.r; };
1.116 +}
1.117 +java_lang_String.prototype = new String;
1.118 +//java_lang_String_classV();
1.119 +
1.120 +/* new method for JavaScript String */
1.121 +String.prototype.charAtCI = java_lang_String_charAtCI;
1.122 +String.prototype.lengthI = java_lang_String_lengthI;
1.123 +String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
1.124 +String.prototype.getCharsVIIACAI = java_lang_String_getCharsVIIACAI;
1.125 +String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
1.126 +String.prototype.$instOf_java_lang_String = true;
1.127 +String.prototype.$instOf_java_io_Serializable = true;
1.128 +String.prototype.$instOf_java_lang_Comparable = true;
1.129 +String.prototype.$instOf_java_lang_CharSequence = true;
1.130 +
1.131 +/*
1.132 this.lengthI = java_lang_String_lengthI;
1.133 this.isEmptyZ = java_lang_String_isEmptyZ;
1.134 this.charAtCI = java_lang_String_charAtCI;
1.135 @@ -3306,25 +3290,7 @@
1.136 this.toCharArrayAC = java_lang_String_toCharArrayAC;
1.137 this.internLjava_lang_String = java_lang_String_internLjava_lang_String;
1.138 this.compareToILjava_lang_Object = java_lang_String_compareToILjava_lang_Object;
1.139 - this.value = 0;
1.140 - this.offset = 0;
1.141 - this.count = 0;
1.142 - this.hash = 0;
1.143 - this.$instOf_java_lang_String = true;
1.144 - this.$instOf_java_io_Serializable = true;
1.145 - this.$instOf_java_lang_Comparable = true;
1.146 - this.$instOf_java_lang_CharSequence = true;
1.147 - */
1.148 -}
1.149 -java_lang_String.prototype = new String;
1.150 -java_lang_String.prototype = function _toJS() { return r; };
1.151 -//java_lang_String_classV();
1.152 + */
1.153
1.154 -/* new method for JavaScript String */
1.155 -String.prototype.charAtCI = java_lang_String_charAtCI;
1.156 -String.prototype.lengthI = java_lang_String_lengthI;
1.157 -String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
1.158 -String.prototype.getCharsVIIACAI = java_lang_String_getCharsVIIACAI;
1.159
1.160
1.161 -
2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Fri Sep 28 13:15:45 2012 +0200
2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Fri Sep 28 14:06:57 2012 +0200
2.3 @@ -18,6 +18,11 @@
2.4 return HELLO.charAt(indx);
2.5 }
2.6
2.7 + public static String fromChars(char a, char b, char c) {
2.8 + char[] arr = { a, b, c };
2.9 + return new String(arr).toString();
2.10 + }
2.11 +
2.12 public static String toStringTest(int howMuch) {
2.13 StringSample ss = null;
2.14 for (int i = 0; i < howMuch; i++) {
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Fri Sep 28 13:15:45 2012 +0200
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Fri Sep 28 14:06:57 2012 +0200
3.3 @@ -18,6 +18,14 @@
3.4 );
3.5 }
3.6
3.7 + @Test public void fromChars() throws Exception {
3.8 + assertExec(
3.9 + "First char in Hello is ABC",
3.10 + "org_apidesign_vm4brwsr_StringSample_fromCharsLjava_lang_StringCCC",
3.11 + "ABC", 'A', 'B', 'C'
3.12 + );
3.13 + }
3.14 +
3.15 @Test public void toStringConcatenation() throws Exception {
3.16 assertExec(
3.17 "Five executions should generate 5Hello World!",