changeset 10830:a3ac2e49cb4f

8250928: JFR: Improve hash algorithm for stack traces Reviewed-by: shade
author jbachorik
date Thu, 24 Sep 2020 13:19:09 +0200
parents 8065f7b6bea3
children 04b1e9e7509d
files src/share/vm/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp	Thu Oct 05 01:31:53 2017 -0700
+++ b/src/share/vm/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp	Thu Sep 24 13:19:09 2020 +0200
@@ -376,6 +376,7 @@
     vfs.next();
   }
 
+  _hash = 1;
   while (!vfs.at_end()) {
     if (count >= _max_frames) {
       _reached_root = false;
@@ -391,7 +392,9 @@
       bci = vfs.bci();
     }
     // Can we determine if it's inlined?
-    _hash = (_hash << 2) + (unsigned int)(((size_t)mid >> 2) + (bci << 4) + type);
+    _hash = (_hash * 31) + mid;
+    _hash = (_hash * 31) + bci;
+    _hash = (_hash * 31) + type;
     _frames[count] = JfrStackFrame(mid, bci, type, method);
     vfs.next();
     count++;