On Apr 8 2013, at 16:03 , Martin Buchholz wrote:

> Style: spaces around "="
> +    private static final int DEFAULT_CAPACITY= 10;

I apologize for these minor style problems in this and my other patches. I am 
really loathe to run any kind of automated source reformatting tool on JDK 
source. Unfortunately there are a variety of styles sued within the JDK sources 
and the value of having minimal diffs is too great to contemplate global 
restyling. I am happy to correct any style or other errors I make and don't 
notice myself.

> ---
> 
> It's a matter of taste whether to remove the temp var oldCapacity.  I believe 
> it was coded intentionally.
>      public void trimToSize() {
>          modCount++;
> -        int oldCapacity = elementData.length;
> -        if (size < oldCapacity) {
> +        if (size < elementData.length) {
>              elementData = Arrays.copyOf(elementData, size);
>          }

I assumed that oldCapacity was a remnant of a previous implementation prior to 
the introduction of Arrays.copyOf(). It didn't seem to be worth retaining even 
for explanatory value.

> ---
> 
> Because "threshold" is a serialized field, its javadoc is part of the public 
> interface of this class, and hence cannot refer to implementation details 
> like EMPTY_TABLE.
>  161     /**
>  162      * The next size value at which to resize (capacity * load factor). 
> If
>  163      * table == EMPTY_TABLE then this is the initial capacity at which 
> the
>  164      * table will be created when inflated.
>  165      * @serial
>  166      */
>  167     int threshold;
> http://docs.oracle.com/javase/7/docs/api/serialized-form.html#java.util.HashMap
> 
> 
> ---
> 
> Consider making roundUpToPowerOf2 public.

I assume you mean as part of some utility class like Integer? Reasonable and 
increases the chances that some VM engineer will come along and optimize it. 
Not sure what should be done about negative numbers.

This likely comes too late for Java 8 though. (I know I probably don't have 
time).

> 
> Best Implementation is not obvious.  I would probably write a loop with core
> x = x & (x - 1)
> until get to zero.
>  274     private static int roundUpToPowerOf2(int number) {
>  275         int rounded = number >= MAXIMUM_CAPACITY
>  276                 ? MAXIMUM_CAPACITY
>  277                 : (rounded = Integer.highestOneBit(number)) != 0
>  278                     ? (Integer.bitCount(number) > 1) ? rounded << 1 : 
> rounded
>  279                     : 1;
>  280 
>  281         return rounded;
>  282     }

The Integer operations are Hotspot intrinsics. This version is coded so that 
there are no loops. The previous looping implementation was criticized in an 
earlier review. It may be better to convert this to the Hacker's Delight 3-3 
implementation

Reply via email to