Attached the patcht to 2213, can commit it if you like.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de

> -----Original Message-----
> From: Michael McCandless [mailto:luc...@mikemccandless.com]
> Sent: Thursday, January 21, 2010 5:08 PM
> To: java-dev@lucene.apache.org
> Subject: Re: svn commit: r901662 - in /lucene/java/trunk:
> contrib/analyzers/common/src/java/org/tartarus/snowball/
> contrib/snowball/ contrib/snowball/src/java/org/tartarus/snowball/
> src/java/org/apache/lucene/analysis/
> src/java/org/apache/lucene/analysis/toke
> 
> Duh, I didn't even notice we also had an existing ArrayUtilTest....
> yes please post a patch!
> 
> Mike
> 
> On Thu, Jan 21, 2010 at 8:59 AM, Uwe Schindler <u...@thetaphi.de> wrote:
> > Somehow we have now both ArrayUtilTest and TestArrayUtil? I think
> they should be merged and TestArrayUtil as name preferred (as all other
> tests are named like this).
> >
> > Should I provide a patch?
> >
> > -----
> > Uwe Schindler
> > H.-H.-Meier-Allee 63, D-28213 Bremen
> > http://www.thetaphi.de
> > eMail: u...@thetaphi.de
> >
> >
> >> -----Original Message-----
> >> From: mikemcc...@apache.org [mailto:mikemcc...@apache.org]
> >> Sent: Thursday, January 21, 2010 12:55 PM
> >> To: java-comm...@lucene.apache.org
> >> Subject: svn commit: r901662 - in /lucene/java/trunk:
> >> contrib/analyzers/common/src/java/org/tartarus/snowball/
> >> contrib/snowball/ contrib/snowball/src/java/org/tartarus/snowball/
> >> src/java/org/apache/lucene/analysis/
> >> src/java/org/apache/lucene/analysis/tokenattri...
> >>
> >> Author: mikemccand
> >> Date: Thu Jan 21 11:54:50 2010
> >> New Revision: 901662
> >>
> >> URL: http://svn.apache.org/viewvc?rev=901662&view=rev
> >> Log:
> >> LUCENE-2213: rename ArrayUtil.getNextSize -> oversize; tweak how it
> >> picks the next size
> >>
> >> Added:
> >>     lucene/java/trunk/contrib/snowball/
> >>       - copied from r900774, lucene/java/trunk/contrib/snowball/
> >>
> >> lucene/java/trunk/src/test/org/apache/lucene/util/TestArrayUtil.java
> >> (with props)
> >> Modified:
> >>
> >>
> lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowba
> >> ll/SnowballProgram.java
> >>
> >>
> lucene/java/trunk/contrib/snowball/src/java/org/tartarus/snowball/Snowb
> >> allProgram.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/ASCIIFoldingFilte
> >> r.java
> >>     lucene/java/trunk/src/java/org/apache/lucene/analysis/Token.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/tokenattributes/T
> >> ermAttributeImpl.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldConsumers.ja
> >> va
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldProcessorPer
> >> Thread.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/FormatPostingsTermsC
> >> onsumer.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/NormsWriterPerField.
> >> java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/StoredFieldsWriter.j
> >> ava
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/TermVectorsTermsWrit
> >> er.java
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/TermsHash.java
> >>     lucene/java/trunk/src/java/org/apache/lucene/util/ArrayUtil.java
> >>
> >>
> lucene/java/trunk/src/java/org/apache/lucene/util/RamUsageEstimator.jav
> >> a
> >>
> >> lucene/java/trunk/src/test/org/apache/lucene/analysis/TestToken.java
> >>
> >>
> lucene/java/trunk/src/test/org/apache/lucene/analysis/tokenattributes/T
> >> estTermAttributeImpl.java
> >>
> >>
> lucene/java/trunk/src/test/org/apache/lucene/util/TestIndexableBinarySt
> >> ringTools.java
> >>
> >> Modified:
> >>
> lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowba
> >> ll/SnowballProgram.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/analyzers/common
> >>
> /src/java/org/tartarus/snowball/SnowballProgram.java?rev=901662&r1=9016
> >> 61&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowba
> >> ll/SnowballProgram.java (original)
> >> +++
> >>
> lucene/java/trunk/contrib/analyzers/common/src/java/org/tartarus/snowba
> >> ll/SnowballProgram.java Thu Jan 21 11:54:50 2010
> >> @@ -35,6 +35,7 @@
> >>  import java.lang.reflect.InvocationTargetException;
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * This is the rev 502 of the Snowball SVN trunk,
> >> @@ -432,7 +433,7 @@
> >>       final int newLength = limit + adjustment;
> >>       //resize if necessary
> >>       if (newLength > current.length) {
> >> -       char newBuffer[] = new
> char[ArrayUtil.getNextSize(newLength)];
> >> +       char newBuffer[] = new char[ArrayUtil.oversize(newLength,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>         System.arraycopy(current, 0, newBuffer, 0, limit);
> >>         current = newBuffer;
> >>       }
> >>
> >> Modified:
> >>
> lucene/java/trunk/contrib/snowball/src/java/org/tartarus/snowball/Snowb
> >> allProgram.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/snowball/src/jav
> >>
> a/org/tartarus/snowball/SnowballProgram.java?rev=901662&r1=900774&r2=90
> >> 1662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/contrib/snowball/src/java/org/tartarus/snowball/Snowb
> >> allProgram.java (original)
> >> +++
> >>
> lucene/java/trunk/contrib/snowball/src/java/org/tartarus/snowball/Snowb
> >> allProgram.java Thu Jan 21 11:54:50 2010
> >> @@ -35,6 +35,7 @@
> >>  import java.lang.reflect.InvocationTargetException;
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * This is the rev 502 of the Snowball SVN trunk,
> >> @@ -432,7 +433,7 @@
> >>       final int newLength = limit + adjustment;
> >>       //resize if necessary
> >>       if (newLength > current.length) {
> >> -       char newBuffer[] = new
> char[ArrayUtil.getNextSize(newLength)];
> >> +       char newBuffer[] = new char[ArrayUtil.oversize(newLength,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>         System.arraycopy(current, 0, newBuffer, 0, limit);
> >>         current = newBuffer;
> >>       }
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/ASCIIFoldingFilte
> >> r.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/analysis/ASCIIFoldingFilter.java?rev=901662&r1=901661&r2=901662&view
> >> =diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/ASCIIFoldingFilte
> >> r.java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/ASCIIFoldingFilte
> >> r.java Thu Jan 21 11:54:50 2010
> >> @@ -1,10 +1,5 @@
> >>  package org.apache.lucene.analysis;
> >>
> >> -import java.io.IOException;
> >> -
> >> -import org.apache.lucene.analysis.tokenattributes.TermAttribute;
> >> -import org.apache.lucene.util.ArrayUtil;
> >> -
> >>  /**
> >>   * Licensed to the Apache Software Foundation (ASF) under one or
> more
> >>   * contributor license agreements.  See the NOTICE file distributed
> >> with
> >> @@ -22,6 +17,12 @@
> >>   * limitations under the License.
> >>   */
> >>
> >> +import java.io.IOException;
> >> +
> >> +import org.apache.lucene.analysis.tokenattributes.TermAttribute;
> >> +import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >> +
> >>  /**
> >>   * This class converts alphabetic, numeric, and symbolic Unicode
> >> characters
> >>   * which are not in the first 127 ASCII characters (the "Basic
> Latin"
> >> Unicode
> >> @@ -101,7 +102,7 @@
> >>      // Worst-case length required:
> >>      final int maxSizeNeeded = 4 * length;
> >>      if (output.length < maxSizeNeeded) {
> >> -      output = new char[ArrayUtil.getNextSize(maxSizeNeeded)];
> >> +      output = new char[ArrayUtil.oversize(maxSizeNeeded,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      }
> >>
> >>      outputPos = 0;
> >>
> >> Modified:
> >> lucene/java/trunk/src/java/org/apache/lucene/analysis/Token.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >> ne/analysis/Token.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> --- lucene/java/trunk/src/java/org/apache/lucene/analysis/Token.java
> >> (original)
> >> +++ lucene/java/trunk/src/java/org/apache/lucene/analysis/Token.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -29,6 +29,7 @@
> >>  import org.apache.lucene.util.Attribute;
> >>  import org.apache.lucene.util.AttributeSource;
> >>  import org.apache.lucene.util.AttributeImpl;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>    A Token is an occurrence of a term from the text of a field.  It
> >> consists of
> >> @@ -347,12 +348,12 @@
> >>    public char[] resizeTermBuffer(int newSize) {
> >>      if (termBuffer == null) {
> >>        // The buffer is always at least MIN_BUFFER_SIZE
> >> -      termBuffer = new char[ArrayUtil.getNextSize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize)];
> >> +      termBuffer = new char[ArrayUtil.oversize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      } else {
> >>        if(termBuffer.length < newSize){
> >>          // Not big enough; create a new array with slight
> >>          // over allocation and preserve content
> >> -        final char[] newCharBuffer = new
> >> char[ArrayUtil.getNextSize(newSize)];
> >> +        final char[] newCharBuffer = new
> >> char[ArrayUtil.oversize(newSize, RamUsageEstimator.NUM_BYTES_CHAR)];
> >>          System.arraycopy(termBuffer, 0, newCharBuffer, 0,
> >> termBuffer.length);
> >>          termBuffer = newCharBuffer;
> >>        }
> >> @@ -367,19 +368,19 @@
> >>    private void growTermBuffer(int newSize) {
> >>      if (termBuffer == null) {
> >>        // The buffer is always at least MIN_BUFFER_SIZE
> >> -      termBuffer = new char[ArrayUtil.getNextSize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize)];
> >> +      termBuffer = new char[ArrayUtil.oversize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      } else {
> >>        if(termBuffer.length < newSize){
> >>          // Not big enough; create a new array with slight
> >>          // over allocation:
> >> -        termBuffer = new char[ArrayUtil.getNextSize(newSize)];
> >> +        termBuffer = new char[ArrayUtil.oversize(newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        }
> >>      }
> >>    }
> >>
> >>    private void initTermBuffer() {
> >>      if (termBuffer == null) {
> >> -      termBuffer = new
> char[ArrayUtil.getNextSize(MIN_BUFFER_SIZE)];
> >> +      termBuffer = new char[ArrayUtil.oversize(MIN_BUFFER_SIZE,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        termLength = 0;
> >>      }
> >>    }
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/tokenattributes/T
> >> ermAttributeImpl.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/analysis/tokenattributes/TermAttributeImpl.java?rev=901662&r1=901661
> >> &r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/tokenattributes/T
> >> ermAttributeImpl.java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/analysis/tokenattributes/T
> >> ermAttributeImpl.java Thu Jan 21 11:54:50 2010
> >> @@ -21,6 +21,7 @@
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >>  import org.apache.lucene.util.AttributeImpl;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * The term text of a Token.
> >> @@ -106,12 +107,12 @@
> >>    public char[] resizeTermBuffer(int newSize) {
> >>      if (termBuffer == null) {
> >>        // The buffer is always at least MIN_BUFFER_SIZE
> >> -      termBuffer = new char[ArrayUtil.getNextSize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize)];
> >> +      termBuffer = new char[ArrayUtil.oversize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      } else {
> >>        if(termBuffer.length < newSize){
> >>          // Not big enough; create a new array with slight
> >>          // over allocation and preserve content
> >> -        final char[] newCharBuffer = new
> >> char[ArrayUtil.getNextSize(newSize)];
> >> +        final char[] newCharBuffer = new
> >> char[ArrayUtil.oversize(newSize, RamUsageEstimator.NUM_BYTES_CHAR)];
> >>          System.arraycopy(termBuffer, 0, newCharBuffer, 0,
> >> termBuffer.length);
> >>          termBuffer = newCharBuffer;
> >>        }
> >> @@ -127,19 +128,19 @@
> >>    private void growTermBuffer(int newSize) {
> >>      if (termBuffer == null) {
> >>        // The buffer is always at least MIN_BUFFER_SIZE
> >> -      termBuffer = new char[ArrayUtil.getNextSize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize)];
> >> +      termBuffer = new char[ArrayUtil.oversize(newSize <
> >> MIN_BUFFER_SIZE ? MIN_BUFFER_SIZE : newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      } else {
> >>        if(termBuffer.length < newSize){
> >>          // Not big enough; create a new array with slight
> >>          // over allocation:
> >> -        termBuffer = new char[ArrayUtil.getNextSize(newSize)];
> >> +        termBuffer = new char[ArrayUtil.oversize(newSize,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        }
> >>      }
> >>    }
> >>
> >>    private void initTermBuffer() {
> >>      if (termBuffer == null) {
> >> -      termBuffer = new
> char[ArrayUtil.getNextSize(MIN_BUFFER_SIZE)];
> >> +      termBuffer = new char[ArrayUtil.oversize(MIN_BUFFER_SIZE,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        termLength = 0;
> >>      }
> >>    }
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldConsumers.ja
> >> va
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/DocFieldConsumers.java?rev=901662&r1=901661&r2=901662&view=dif
> >> f
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldConsumers.ja
> >> va (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldConsumers.ja
> >> va Thu Jan 21 11:54:50 2010
> >> @@ -25,6 +25,7 @@
> >>  import java.io.IOException;
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /** This is just a "splitter" class: it lets you wrap two
> >>   *  DocFieldConsumer instances as a single consumer. */
> >> @@ -117,7 +118,7 @@
> >>          // enough space to recycle all outstanding PerDoc
> >>          // instances
> >>          assert allocCount == 1+docFreeList.length;
> >> -        docFreeList = new
> PerDoc[ArrayUtil.getNextSize(allocCount)];
> >> +        docFreeList = new PerDoc[ArrayUtil.oversize(allocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>        }
> >>        return new PerDoc();
> >>      } else
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldProcessorPer
> >> Thread.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/DocFieldProcessorPerThread.java?rev=901662&r1=901661&r2=901662
> >> &view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldProcessorPer
> >> Thread.java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocFieldProcessorPer
> >> Thread.java Thu Jan 21 11:54:50 2010
> >> @@ -24,6 +24,7 @@
> >>  import org.apache.lucene.document.Document;
> >>  import org.apache.lucene.document.Fieldable;
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * Gathers all Fieldables for a document under the same
> >> @@ -340,7 +341,7 @@
> >>          // enough space to recycle all outstanding PerDoc
> >>          // instances
> >>          assert allocCount == 1+docFreeList.length;
> >> -        docFreeList = new
> PerDoc[ArrayUtil.getNextSize(allocCount)];
> >> +        docFreeList = new PerDoc[ArrayUtil.oversize(allocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>        }
> >>        return new PerDoc();
> >>      } else
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/DocumentsWriter.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
> >> (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -40,6 +40,7 @@
> >>  import org.apache.lucene.util.ArrayUtil;
> >>  import org.apache.lucene.util.Constants;
> >>  import org.apache.lucene.util.ThreadInterruptedException;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * This class accepts multiple added documents and directly
> >> @@ -1503,7 +1504,7 @@
> >>          int gap = doc.docID - nextWriteDocID;
> >>          if (gap >= waiting.length) {
> >>            // Grow queue
> >> -          DocWriter[] newArray = new
> >> DocWriter[ArrayUtil.getNextSize(gap)];
> >> +          DocWriter[] newArray = new
> DocWriter[ArrayUtil.oversize(gap,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>            assert nextWriteLoc >= 0;
> >>            System.arraycopy(waiting, nextWriteLoc, newArray, 0,
> >> waiting.length-nextWriteLoc);
> >>            System.arraycopy(waiting, 0, newArray, waiting.length-
> >> nextWriteLoc, nextWriteLoc);
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/FormatPostingsTermsC
> >> onsumer.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/FormatPostingsTermsConsumer.java?rev=901662&r1=901661&r2=90166
> >> 2&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/FormatPostingsTermsC
> >> onsumer.java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/FormatPostingsTermsC
> >> onsumer.java Thu Jan 21 11:54:50 2010
> >> @@ -20,6 +20,7 @@
> >>  import java.io.IOException;
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /**
> >>   * NOTE: this API is experimental and will likely change
> >> @@ -35,7 +36,7 @@
> >>    FormatPostingsDocsConsumer addTerm(String text) throws
> IOException {
> >>      final int len = text.length();
> >>      if (termBuffer == null || termBuffer.length < 1+len)
> >> -      termBuffer = new char[ArrayUtil.getNextSize(1+len)];
> >> +      termBuffer = new char[ArrayUtil.oversize(1+len,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>      text.getChars(0, len, termBuffer, 0);
> >>      termBuffer[len] = 0xffff;
> >>      return addTerm(termBuffer, 0);
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/NormsWriterPerField.
> >> java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/NormsWriterPerField.java?rev=901662&r1=901661&r2=901662&view=d
> >> iff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/NormsWriterPerField.
> >> java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/NormsWriterPerField.
> >> java Thu Jan 21 11:54:50 2010
> >> @@ -63,11 +63,13 @@
> >>
> >>    @Override
> >>    void finish() {
> >> -    assert docIDs.length == norms.length;
> >>      if (fieldInfo.isIndexed && !fieldInfo.omitNorms) {
> >>        if (docIDs.length <= upto) {
> >>          assert docIDs.length == upto;
> >>          docIDs = ArrayUtil.grow(docIDs, 1+upto);
> >> +      }
> >> +      if (norms.length <= upto) {
> >> +        assert norms.length == upto;
> >>          norms = ArrayUtil.grow(norms, 1+upto);
> >>        }
> >>        final float norm =
> >> docState.similarity.computeNorm(fieldInfo.name, fieldState);
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/StoredFieldsWriter.j
> >> ava
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/StoredFieldsWriter.java?rev=901662&r1=901661&r2=901662&view=di
> >> ff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/StoredFieldsWriter.j
> >> ava (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/StoredFieldsWriter.j
> >> ava Thu Jan 21 11:54:50 2010
> >> @@ -20,6 +20,7 @@
> >>  import java.io.IOException;
> >>  import org.apache.lucene.store.RAMOutputStream;
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /** This is a DocFieldConsumer that writes stored fields. */
> >>  final class StoredFieldsWriter {
> >> @@ -108,7 +109,7 @@
> >>          // enough space to recycle all outstanding PerDoc
> >>          // instances
> >>          assert allocCount == 1+docFreeList.length;
> >> -        docFreeList = new
> PerDoc[ArrayUtil.getNextSize(allocCount)];
> >> +        docFreeList = new PerDoc[ArrayUtil.oversize(allocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>        }
> >>        return new PerDoc();
> >>      } else
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/TermVectorsTermsWrit
> >> er.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/index/TermVectorsTermsWriter.java?rev=901662&r1=901661&r2=901662&vie
> >> w=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/TermVectorsTermsWrit
> >> er.java (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/index/TermVectorsTermsWrit
> >> er.java Thu Jan 21 11:54:50 2010
> >> @@ -20,6 +20,7 @@
> >>  import org.apache.lucene.store.IndexOutput;
> >>  import org.apache.lucene.store.RAMOutputStream;
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  import java.io.IOException;
> >>  import java.util.Collection;
> >> @@ -117,7 +118,7 @@
> >>          // enough space to recycle all outstanding PerDoc
> >>          // instances
> >>          assert allocCount == 1+docFreeList.length;
> >> -        docFreeList = new
> PerDoc[ArrayUtil.getNextSize(allocCount)];
> >> +        docFreeList = new PerDoc[ArrayUtil.oversize(allocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>        }
> >>        return new PerDoc();
> >>      } else
> >> @@ -266,6 +267,8 @@
> >>      void addField(final int fieldNumber) {
> >>        if (numVectorFields == fieldNumbers.length) {
> >>          fieldNumbers = ArrayUtil.grow(fieldNumbers);
> >> +      }
> >> +      if (numVectorFields == fieldPointers.length) {
> >>          fieldPointers = ArrayUtil.grow(fieldPointers);
> >>        }
> >>        fieldNumbers[numVectorFields] = fieldNumber;
> >>
> >> Modified:
> >> lucene/java/trunk/src/java/org/apache/lucene/index/TermsHash.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >> ne/index/TermsHash.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> lucene/java/trunk/src/java/org/apache/lucene/index/TermsHash.java
> >> (original)
> >> +++
> lucene/java/trunk/src/java/org/apache/lucene/index/TermsHash.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -26,6 +26,7 @@
> >>  import java.io.IOException;
> >>
> >>  import org.apache.lucene.util.ArrayUtil;
> >> +import org.apache.lucene.util.RamUsageEstimator;
> >>
> >>  /** This class implements {...@link InvertedDocConsumer}, which
> >>   *  is passed each token produced by the analyzer on each
> >> @@ -89,7 +90,7 @@
> >>
> >>      assert postingsFreeCount == postingsAllocCount:
> >> Thread.currentThread().getName() + ": postingsFreeCount=" +
> >> postingsFreeCount + " postingsAllocCount=" + postingsAllocCount + "
> >> consumer=" + consumer;
> >>
> >> -    final int newSize =
> >> ArrayUtil.getShrinkSize(postingsFreeList.length,
> postingsAllocCount);
> >> +    final int newSize =
> >> ArrayUtil.getShrinkSize(postingsFreeList.length, postingsAllocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF);
> >>      if (newSize != postingsFreeList.length) {
> >>        RawPostingList[] newArray = new RawPostingList[newSize];
> >>        System.arraycopy(postingsFreeList, 0, newArray, 0,
> >> postingsFreeCount);
> >> @@ -222,7 +223,7 @@
> >>        if (newPostingsAllocCount > postingsFreeList.length)
> >>          // Pre-allocate the postingsFreeList so it's large
> >>          // enough to hold all postings we've given out
> >> -        postingsFreeList = new
> >> RawPostingList[ArrayUtil.getNextSize(newPostingsAllocCount)];
> >> +        postingsFreeList = new
> >> RawPostingList[ArrayUtil.oversize(newPostingsAllocCount,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
> >>      }
> >>
> >>      postingsFreeCount -= numToCopy;
> >>
> >> Modified:
> >> lucene/java/trunk/src/java/org/apache/lucene/util/ArrayUtil.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >> ne/util/ArrayUtil.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> --- lucene/java/trunk/src/java/org/apache/lucene/util/ArrayUtil.java
> >> (original)
> >> +++ lucene/java/trunk/src/java/org/apache/lucene/util/ArrayUtil.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -7,9 +7,9 @@
> >>   * The ASF licenses this file to You under the Apache License,
> Version
> >> 2.0
> >>   * (the "License"); you may not use this file except in compliance
> >> with
> >>   * the License.  You may obtain a copy of the License at
> >> - * <p/>
> >> - * http://www.apache.org/licenses/LICENSE-2.0
> >> - * <p/>
> >> + *
> >> + *     http://www.apache.org/licenses/LICENSE-2.0
> >> + *
> >>   * Unless required by applicable law or agreed to in writing,
> software
> >>   * distributed under the License is distributed on an "AS IS"
> BASIS,
> >>   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> >> implied.
> >> @@ -122,20 +122,95 @@
> >>   END APACHE HARMONY CODE
> >>    */
> >>
> >> +  /** Returns an array size >= minTargetSize, generally
> >> +   *  over-allocating exponentially to achieve amortized
> >> +   *  linear-time cost as the array grows.
> >> +   *
> >> +   *  NOTE: this was originally borrowed from Python 2.4.2
> >> +   *  listobject.c sources (attribution in LICENSE.txt), but
> >> +   *  has now been substantially changed based on
> >> +   *  discussions from java-dev thread with subject "Dynamic
> >> +   *  array reallocation algorithms", started on Jan 12
> >> +   *  2010.
> >> +   *
> >> +   * @param minTargetSize Minimum required value to be returned.
> >> +   * @param bytesPerElement Bytes used by each element of
> >> +   * the array.  See constants in {...@link RamUsageEstimator}.
> >> +   *
> >> +   * @lucene.internal
> >> +   */
> >> +
> >> +  public static int oversize(int minTargetSize, int
> bytesPerElement) {
> >> +
> >> +    if (minTargetSize < 0) {
> >> +      // catch usage that accidentally overflows int
> >> +      throw new IllegalArgumentException("invalid array size " +
> >> minTargetSize);
> >> +    }
> >> +
> >> +    if (minTargetSize == 0) {
> >> +      // wait until at least one element is requested
> >> +      return 0;
> >> +    }
> >>
> >> -  public static int getNextSize(int targetSize) {
> >> -    /* This over-allocates proportional to the list size, making
> room
> >> -     * for additional growth.  The over-allocation is mild, but is
> >> -     * enough to give linear-time amortized behavior over a long
> >> -     * sequence of appends() in the presence of a poorly-performing
> >> -     * system realloc().
> >> -     * The growth pattern is:  0, 4, 8, 16, 25, 35, 46, 58, 72, 88,
> >> ...
> >> -     */
> >> -    return (targetSize >> 3) + (targetSize < 9 ? 3 : 6) +
> targetSize;
> >> +    // asymptotic exponential growth by 1/8th, favors
> >> +    // spending a bit more CPU to not tye up too much wasted
> >> +    // RAM:
> >> +    int extra = minTargetSize >> 3;
> >> +
> >> +    if (extra < 3) {
> >> +      // for very small arrays, where constant overhead of
> >> +      // realloc is presumably relatively high, we grow
> >> +      // faster
> >> +      extra = 3;
> >> +    }
> >> +
> >> +    int newSize = minTargetSize + extra;
> >> +
> >> +    // add 7 to allow for worst case byte alignment addition below:
> >> +    if (newSize+7 < 0) {
> >> +      // int overflowed -- return max allowed array size
> >> +      return Integer.MAX_VALUE;
> >> +    }
> >> +
> >> +    if (Constants.JRE_IS_64BIT) {
> >> +      // round up to 8 byte alignment in 64bit env
> >> +      switch(bytesPerElement) {
> >> +      case 4:
> >> +        // round up to multiple of 2
> >> +        return (newSize + 1) & 0x7ffffffe;
> >> +      case 2:
> >> +        // round up to multiple of 4
> >> +        return (newSize + 3) & 0x7ffffffc;
> >> +      case 1:
> >> +        // round up to multiple of 8
> >> +        return (newSize + 7) & 0x7ffffff8;
> >> +      case 8:
> >> +        // no rounding
> >> +      default:
> >> +        // odd (invalid?) size
> >> +        return newSize;
> >> +      }
> >> +    } else {
> >> +      // round up to 4 byte alignment in 64bit env
> >> +      switch(bytesPerElement) {
> >> +      case 2:
> >> +        // round up to multiple of 2
> >> +        return (newSize + 1) & 0x7ffffffe;
> >> +      case 1:
> >> +        // round up to multiple of 4
> >> +        return (newSize + 3) & 0x7ffffffc;
> >> +      case 4:
> >> +      case 8:
> >> +        // no rounding
> >> +      default:
> >> +        // odd (invalid?) size
> >> +        return newSize;
> >> +      }
> >> +    }
> >>    }
> >>
> >> -  public static int getShrinkSize(int currentSize, int targetSize)
> {
> >> -    final int newSize = getNextSize(targetSize);
> >> +  public static int getShrinkSize(int currentSize, int targetSize,
> int
> >> bytesPerElement) {
> >> +    final int newSize = oversize(targetSize, bytesPerElement);
> >>      // Only reallocate if we are "substantially" smaller.
> >>      // This saves us from "running hot" (constantly making a
> >>      // bit bigger then a bit smaller, over and over):
> >> @@ -147,7 +222,7 @@
> >>
> >>    public static int[] grow(int[] array, int minSize) {
> >>      if (array.length < minSize) {
> >> -      int[] newArray = new int[getNextSize(minSize)];
> >> +      int[] newArray = new int[oversize(minSize,
> >> RamUsageEstimator.NUM_BYTES_INT)];
> >>        System.arraycopy(array, 0, newArray, 0, array.length);
> >>        return newArray;
> >>      } else
> >> @@ -159,7 +234,7 @@
> >>    }
> >>
> >>    public static int[] shrink(int[] array, int targetSize) {
> >> -    final int newSize = getShrinkSize(array.length, targetSize);
> >> +    final int newSize = getShrinkSize(array.length, targetSize,
> >> RamUsageEstimator.NUM_BYTES_INT);
> >>      if (newSize != array.length) {
> >>        int[] newArray = new int[newSize];
> >>        System.arraycopy(array, 0, newArray, 0, newSize);
> >> @@ -170,7 +245,7 @@
> >>
> >>    public static long[] grow(long[] array, int minSize) {
> >>      if (array.length < minSize) {
> >> -      long[] newArray = new long[getNextSize(minSize)];
> >> +      long[] newArray = new long[oversize(minSize,
> >> RamUsageEstimator.NUM_BYTES_LONG)];
> >>        System.arraycopy(array, 0, newArray, 0, array.length);
> >>        return newArray;
> >>      } else
> >> @@ -182,7 +257,7 @@
> >>    }
> >>
> >>    public static long[] shrink(long[] array, int targetSize) {
> >> -    final int newSize = getShrinkSize(array.length, targetSize);
> >> +    final int newSize = getShrinkSize(array.length, targetSize,
> >> RamUsageEstimator.NUM_BYTES_LONG);
> >>      if (newSize != array.length) {
> >>        long[] newArray = new long[newSize];
> >>        System.arraycopy(array, 0, newArray, 0, newSize);
> >> @@ -193,7 +268,7 @@
> >>
> >>    public static byte[] grow(byte[] array, int minSize) {
> >>      if (array.length < minSize) {
> >> -      byte[] newArray = new byte[getNextSize(minSize)];
> >> +      byte[] newArray = new byte[oversize(minSize, 1)];
> >>        System.arraycopy(array, 0, newArray, 0, array.length);
> >>        return newArray;
> >>      } else
> >> @@ -205,7 +280,7 @@
> >>    }
> >>
> >>    public static byte[] shrink(byte[] array, int targetSize) {
> >> -    final int newSize = getShrinkSize(array.length, targetSize);
> >> +    final int newSize = getShrinkSize(array.length, targetSize, 1);
> >>      if (newSize != array.length) {
> >>        byte[] newArray = new byte[newSize];
> >>        System.arraycopy(array, 0, newArray, 0, newSize);
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/java/org/apache/lucene/util/RamUsageEstimator.jav
> >> a
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/luce
> >>
> ne/util/RamUsageEstimator.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/java/org/apache/lucene/util/RamUsageEstimator.jav
> >> a (original)
> >> +++
> >>
> lucene/java/trunk/src/java/org/apache/lucene/util/RamUsageEstimator.jav
> >> a Thu Jan 21 11:54:50 2010
> >> @@ -43,6 +43,14 @@
> >>    private int arraySize;
> >>    private int classSize;
> >>
> >> +  public final static int NUM_BYTES_OBJECT_REF =
> >> Constants.JRE_IS_64BIT ? 8 : 4;
> >> +  public final static int NUM_BYTES_CHAR = 2;
> >> +  public final static int NUM_BYTES_SHORT = 2;
> >> +  public final static int NUM_BYTES_INT = 4;
> >> +  public final static int NUM_BYTES_LONG = 8;
> >> +  public final static int NUM_BYTES_FLOAT = 4;
> >> +  public final static int NUM_BYTES_DOUBLE = 8;
> >> +
> >>    private boolean checkInterned;
> >>
> >>    /**
> >>
> >> Modified:
> >> lucene/java/trunk/src/test/org/apache/lucene/analysis/TestToken.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/luce
> >> ne/analysis/TestToken.java?rev=901662&r1=901661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >> lucene/java/trunk/src/test/org/apache/lucene/analysis/TestToken.java
> >> (original)
> >> +++
> >> lucene/java/trunk/src/test/org/apache/lucene/analysis/TestToken.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -85,7 +85,6 @@
> >>        buf.append(buf.toString());
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // now as a string, first variant
> >>      t = new Token();
> >> @@ -99,7 +98,6 @@
> >>        buf.append(content);
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // now as a string, second variant
> >>      t = new Token();
> >> @@ -113,7 +111,6 @@
> >>        buf.append(content);
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // Test for slow growth to a long term
> >>      t = new Token();
> >> @@ -127,7 +124,6 @@
> >>        buf.append("a");
> >>      }
> >>      assertEquals(20000, t.termLength());
> >> -    assertEquals(20167, t.termBuffer().length);
> >>
> >>      // Test for slow growth to a long term
> >>      t = new Token();
> >> @@ -141,7 +137,6 @@
> >>        buf.append("a");
> >>      }
> >>      assertEquals(20000, t.termLength());
> >> -    assertEquals(20167, t.termBuffer().length);
> >>    }
> >>
> >>    public void testToString() throws Exception {
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/test/org/apache/lucene/analysis/tokenattributes/T
> >> estTermAttributeImpl.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/luce
> >>
> ne/analysis/tokenattributes/TestTermAttributeImpl.java?rev=901662&r1=90
> >> 1661&r2=901662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/test/org/apache/lucene/analysis/tokenattributes/T
> >> estTermAttributeImpl.java (original)
> >> +++
> >>
> lucene/java/trunk/src/test/org/apache/lucene/analysis/tokenattributes/T
> >> estTermAttributeImpl.java Thu Jan 21 11:54:50 2010
> >> @@ -49,7 +49,6 @@
> >>        buf.append(buf.toString());
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // now as a string, first variant
> >>      t = new TermAttributeImpl();
> >> @@ -63,7 +62,6 @@
> >>        buf.append(content);
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // now as a string, second variant
> >>      t = new TermAttributeImpl();
> >> @@ -77,7 +75,6 @@
> >>        buf.append(content);
> >>      }
> >>      assertEquals(1048576, t.termLength());
> >> -    assertEquals(1179654, t.termBuffer().length);
> >>
> >>      // Test for slow growth to a long term
> >>      t = new TermAttributeImpl();
> >> @@ -91,7 +88,6 @@
> >>        buf.append("a");
> >>      }
> >>      assertEquals(20000, t.termLength());
> >> -    assertEquals(20167, t.termBuffer().length);
> >>
> >>      // Test for slow growth to a long term
> >>      t = new TermAttributeImpl();
> >> @@ -105,7 +101,6 @@
> >>        buf.append("a");
> >>      }
> >>      assertEquals(20000, t.termLength());
> >> -    assertEquals(20167, t.termBuffer().length);
> >>    }
> >>
> >>    public void testToString() throws Exception {
> >>
> >> Added:
> >> lucene/java/trunk/src/test/org/apache/lucene/util/TestArrayUtil.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/luce
> >> ne/util/TestArrayUtil.java?rev=901662&view=auto
> >>
> =======================================================================
> >> =======
> >> ---
> >> lucene/java/trunk/src/test/org/apache/lucene/util/TestArrayUtil.java
> >> (added)
> >> +++
> >> lucene/java/trunk/src/test/org/apache/lucene/util/TestArrayUtil.java
> >> Thu Jan 21 11:54:50 2010
> >> @@ -0,0 +1,59 @@
> >> +package org.apache.lucene.util;
> >> +
> >> +/**
> >> + * Licensed to the Apache Software Foundation (ASF) under one or
> more
> >> + * contributor license agreements.  See the NOTICE file distributed
> >> with
> >> + * this work for additional information regarding copyright
> ownership.
> >> + * The ASF licenses this file to You under the Apache License,
> Version
> >> 2.0
> >> + * (the "License"); you may not use this file except in compliance
> >> with
> >> + * the License.  You may obtain a copy of the License at
> >> + *
> >> + *     http://www.apache.org/licenses/LICENSE-2.0
> >> + *
> >> + * Unless required by applicable law or agreed to in writing,
> software
> >> + * distributed under the License is distributed on an "AS IS"
> BASIS,
> >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> >> implied.
> >> + * See the License for the specific language governing permissions
> and
> >> + * limitations under the License.
> >> + */
> >> +
> >> +import java.util.Random;
> >> +
> >> +public class TestArrayUtil extends LuceneTestCase {
> >> +
> >> +  // Ensure ArrayUtil.getNextSize gives linear amortized cost of
> >> realloc/copy
> >> +  public void testGrowth() {
> >> +    int currentSize = 0;
> >> +    long copyCost = 0;
> >> +
> >> +    // Make sure ArrayUtil hits Integer.MAX_VALUE, if we insist:
> >> +    while(currentSize != Integer.MAX_VALUE) {
> >> +      int nextSize = ArrayUtil.oversize(1+currentSize,
> >> RamUsageEstimator.NUM_BYTES_OBJECT_REF);
> >> +      assertTrue(nextSize > currentSize);
> >> +      if (currentSize > 0) {
> >> +        copyCost += currentSize;
> >> +        double copyCostPerElement = ((double)
> copyCost)/currentSize;
> >> +        assertTrue("cost " + copyCostPerElement, copyCostPerElement
> <
> >> 10.0);
> >> +      }
> >> +      currentSize = nextSize;
> >> +    }
> >> +  }
> >> +
> >> +  public void testMaxSize() {
> >> +    // intentionally pass invalid elemSizes:
> >> +    for(int elemSize=0;elemSize<10;elemSize++) {
> >> +      assertEquals(Integer.MAX_VALUE,
> >> ArrayUtil.oversize(Integer.MAX_VALUE, elemSize));
> >> +      assertEquals(Integer.MAX_VALUE,
> >> ArrayUtil.oversize(Integer.MAX_VALUE-1, elemSize));
> >> +    }
> >> +  }
> >> +
> >> +  public void testInvalidElementSizes() {
> >> +    final Random r = newRandom();
> >> +    for(int iter=0;iter<10000;iter++) {
> >> +      final int minTargetSize = r.nextInt(Integer.MAX_VALUE);
> >> +      final int elemSize = r.nextInt(11);
> >> +      final int v = ArrayUtil.oversize(minTargetSize, elemSize);
> >> +      assertTrue(v >= minTargetSize);
> >> +    }
> >> +  }
> >> +}
> >>
> >> Propchange:
> >> lucene/java/trunk/src/test/org/apache/lucene/util/TestArrayUtil.java
> >> --------------------------------------------------------------------
> ---
> >> -------
> >>     svn:eol-style = native
> >>
> >> Modified:
> >>
> lucene/java/trunk/src/test/org/apache/lucene/util/TestIndexableBinarySt
> >> ringTools.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/luce
> >>
> ne/util/TestIndexableBinaryStringTools.java?rev=901662&r1=901661&r2=901
> >> 662&view=diff
> >>
> =======================================================================
> >> =======
> >> ---
> >>
> lucene/java/trunk/src/test/org/apache/lucene/util/TestIndexableBinarySt
> >> ringTools.java (original)
> >> +++
> >>
> lucene/java/trunk/src/test/org/apache/lucene/util/TestIndexableBinarySt
> >> ringTools.java Thu Jan 21 11:54:50 2010
> >> @@ -164,14 +164,14 @@
> >>        int encodedLen1 =
> IndexableBinaryStringTools.getEncodedLength(
> >>            originalArray1, 0, numBytes1);
> >>        if (encodedLen1 > encoded1.length)
> >> -        encoded1 = new char[ArrayUtil.getNextSize(encodedLen1)];
> >> +        encoded1 = new char[ArrayUtil.oversize(encodedLen1,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        IndexableBinaryStringTools.encode(originalArray1, 0,
> numBytes1,
> >> encoded1,
> >>            0, encodedLen1);
> >>
> >>        int encodedLen2 =
> >> IndexableBinaryStringTools.getEncodedLength(original2,
> >>            0, numBytes2);
> >>        if (encodedLen2 > encoded2.length)
> >> -        encoded2 = new char[ArrayUtil.getNextSize(encodedLen2)];
> >> +        encoded2 = new char[ArrayUtil.oversize(encodedLen2,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        IndexableBinaryStringTools.encode(original2, 0, numBytes2,
> >> encoded2, 0,
> >>            encodedLen2);
> >>
> >> @@ -308,7 +308,7 @@
> >>        int encodedLen =
> >> IndexableBinaryStringTools.getEncodedLength(binary, 0,
> >>            numBytes);
> >>        if (encoded.length < encodedLen)
> >> -        encoded = new char[ArrayUtil.getNextSize(encodedLen)];
> >> +        encoded = new char[ArrayUtil.oversize(encodedLen,
> >> RamUsageEstimator.NUM_BYTES_CHAR)];
> >>        IndexableBinaryStringTools.encode(binary, 0, numBytes,
> encoded,
> >> 0,
> >>            encodedLen);
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> > For additional commands, e-mail: java-dev-h...@lucene.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-dev-h...@lucene.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to