Placing the toString and valueOf methods into java.lang.String prototype
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 27 Feb 2013 23:40:18 +0100
changeset 78786fa8cc5a44e
parent 786 d014c9d78b46
child 788 bced0d6a7b20
Placing the toString and valueOf methods into java.lang.String prototype
rt/emul/mini/src/main/java/java/lang/String.java
     1.1 --- a/rt/emul/mini/src/main/java/java/lang/String.java	Wed Feb 27 21:45:41 2013 +0100
     1.2 +++ b/rt/emul/mini/src/main/java/java/lang/String.java	Wed Feb 27 23:40:18 2013 +0100
     1.3 @@ -115,15 +115,17 @@
     1.4  
     1.5      /** use serialVersionUID from JDK 1.0.2 for interoperability */
     1.6      private static final long serialVersionUID = -6849794470754667710L;
     1.7 +
     1.8 +    static {
     1.9 +        registerToString();
    1.10 +    }
    1.11 +    @JavaScriptBody(args = {}, body = 
    1.12 +          "var p = vm.java_lang_String(false);\n"
    1.13 +        + "p.toString = function() {\nreturn this._r().toString();\n};\n"
    1.14 +        + "p.valueOf = function() {\nreturn this._r().valueOf();\n}\n"
    1.15 +    )
    1.16 +    private static native void registerToString();
    1.17      
    1.18 -    @JavaScriptOnly(name="toString", value="String.prototype._r")
    1.19 -    private static void jsToString() {
    1.20 -    }
    1.21 -    
    1.22 -    @JavaScriptOnly(name="valueOf", value="function() { return this.toString().valueOf(); }")
    1.23 -    private static void jsValudOf() {
    1.24 -    }
    1.25 -
    1.26      /**
    1.27       * Class String is special cased within the Serialization Stream Protocol.
    1.28       *