# HG changeset patch # User Jaroslav Tulach # Date 1353539059 -3600 # Node ID 23047f655bfde730305c2abe899ed6aa57af02f0 # Parent fb6298cc9ec51c70aedc72822f9dd223aa3123f5 Bunch of bit arithmetics to compute string hashCode acceptably diff -r fb6298cc9ec5 -r 23047f655bfd emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Wed Nov 21 23:55:09 2012 +0100 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Thu Nov 22 00:04:19 2012 +0100 @@ -344,7 +344,8 @@ var h = 0; var s = self.toString(); for (var i = 0; i < s.length; i++) { - h = 31 * h + s.charCodeAt(i); + var high = (h >> 16) & 0xffff, low = h & 0xffff; + h = (((((31 * high) & 0xffff) << 16) >>> 0) + (31 * low) + s.charCodeAt(i)) & 0xffffffff; } return h; }