You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Jim Yu (JIRA)" <ji...@apache.org> on 2009/06/24 11:01:07 UTC

[jira] Closed: (HARMONY-5834) [classlib][luni] ArrayList growForInsert method code optimization

     [ https://issues.apache.org/jira/browse/HARMONY-5834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jim Yu closed HARMONY-5834.
---------------------------


> [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
>            Assignee: Jimmy, Jing Lv
>             Fix For: 5.0M6
>
>         Attachments: HARMONY-5834.diff
>
>
> 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.