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;