diff src/share/vm/opto/divnode.cpp @ 568:30663ca5e8f4

6805724: ModLNode::Ideal() generates functionally incorrect graph when divisor is any (2^k-1) constant. Summary: C2, ModLNode::Ideal() generates functionally incorrect graph when divisor is any (2^k-1) constant. Reviewed-by: rasbold
author twisti
date Mon, 16 Feb 2009 07:19:26 -0800
parents bbef4344adb2
children 98cb887364d3
line wrap: on
line diff
--- a/src/share/vm/opto/divnode.cpp	Fri Feb 13 09:09:35 2009 -0800
+++ b/src/share/vm/opto/divnode.cpp	Mon Feb 16 07:19:26 2009 -0800
@@ -1007,7 +1007,7 @@
 
   // Expand mod
   if( con >= 0 && con < max_jlong && is_power_of_2_long(con+1) ) {
-    uint k = log2_long(con);       // Extract k
+    uint k = exact_log2_long(con+1);  // Extract k
 
     // Basic algorithm by David Detlefs.  See fastmod_long.java for gory details.
     // Used to help a popular random number generator which does a long-mod