You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2011/04/19 21:09:15 UTC

svn commit: r1095169 - /lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java

Author: yonik
Date: Tue Apr 19 19:09:14 2011
New Revision: 1095169

URL: http://svn.apache.org/viewvc?rev=1095169&view=rev
Log:
LUCENE-3037: replace idiv with imul in log

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java?rev=1095169&r1=1095168&r2=1095169&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/MultiLevelSkipListReader.java Tue Apr 19 19:09:14 2011
@@ -186,9 +186,11 @@ public abstract class MultiLevelSkipList
   
   /** returns x == 0 ? 0 : Math.floor(Math.log(x) / Math.log(base)) */
   static int log(int x, int base) {
+    assert base >= 2;
     int ret = 0;
-    while (x >= base) {
-      x /= base;
+    long n = base; // needs to be a long to avoid overflow
+    while (x >= n) {
+      n *= base;
       ret++;
     }
     return ret;