diff agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java @ 17681:6037db01f9dd

8028623: SA: hash codes in SymbolTable mismatching java_lang_String::hash_code for extended characters. Reviewed-by: sla, dsamersoff
author kevinw
date Fri, 17 Jan 2014 18:39:22 +0000
parents b9a9ed0f8eeb
children 4ca6dc0799b6
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java	Fri Feb 21 11:10:15 2014 -0800
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/Hashtable.java	Fri Jan 17 18:39:22 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,8 +61,9 @@
     long h = 0;
     int s = 0;
     int len = buf.length;
+    // Emulate the unsigned int in java_lang_String::hash_code
     while (len-- > 0) {
-      h = 31*h + (0xFFL & buf[s]);
+      h = 31*h + (0xFFFFFFFFL & buf[s]);
       s++;
     }
     return h & 0xFFFFFFFFL;