harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Yu (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5834) [classlib][luni] ArrayList growForInsert method code optimization
Date Wed, 21 May 2008 03:30:55 GMT
[classlib][luni] ArrayList growForInsert method code optimization
-----------------------------------------------------------------

                 Key: HARMONY-5834
                 URL: https://issues.apache.org/jira/browse/HARMONY-5834
             Project: Harmony
          Issue Type: Improvement
          Components: Classlib
    Affects Versions: 5.0M6
            Reporter: Jim Yu
             Fix For: 5.0M6


In ArrayList.java, growForInsert method(line 407):
[1] if (location < size / 2) {
            int newFirst = newArray.length - (size + required);
            // Copy elements after location to the new array skipping inserted elements
            System.arraycopy(array, location + firstIndex, newArray, location + increment,
                    size - location);
            // Copy elements before location to the new array from firstIndex
            System.arraycopy(array, firstIndex, newArray, newFirst, location);
            firstIndex = newFirst;
            lastIndex = newArray.length;
        } else {
            System.arraycopy(array, firstIndex, newArray, 0, location);
            System.arraycopy(array, location + firstIndex, newArray, location + required,
                    size - location);
            firstIndex = 0;
            lastIndex = size + required;
        }
     
    Whether the location is less than size / 2 or not will only affect the allocation of elements
in the new array. 
    The first case relates to leaving the additional space (when increment is larger than
required)which size is 
    increment minus required to be at the top of the new array while the second case relates
to leaving it at the bottom.
    There are two callers which will call growForInsert method. But none of them will utilize
the different allocation 
    methods mentioned above. If the allocation methods don't make sense, it will only produce
duplicate code.  
    I just use one allocation method and find it works fine.
       

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message