putting back JavaScript version of String.hashCode() arithmetic
authorMartin Soch <Martin.Soch@oracle.com>
Fri, 11 Jan 2013 16:07:55 +0100
brancharithmetic
changeset 426b5c5d51ddc4b
parent 352 c0fd4e7919b3
child 427 12e866a32b40
putting back JavaScript version of String.hashCode()
emul/src/main/java/java/lang/String.java
     1.1 --- a/emul/src/main/java/java/lang/String.java	Wed Dec 19 11:12:04 2012 +0100
     1.2 +++ b/emul/src/main/java/java/lang/String.java	Fri Jan 11 16:07:55 2013 +0100
     1.3 @@ -1491,6 +1491,15 @@
     1.4       *
     1.5       * @return  a hash code value for this object.
     1.6       */
     1.7 +    @JavaScriptBody(args = "self", body = 
     1.8 +        "var h = 0;\n" +
     1.9 +        "var s = self.toString();\n" +
    1.10 +        "for (var i = 0; i < s.length; i++) {\n" +
    1.11 +        "  var high = (h >> 16) & 0xffff, low = h & 0xffff;\n" +
    1.12 +        "  h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff;\n" +
    1.13 +        "}\n" +
    1.14 +        "return h;\n"
    1.15 +    )
    1.16      public int hashCode() {
    1.17          int h = hash;
    1.18          if (h == 0 && length() > 0) {