Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-5834

[classlib][luni] ArrayList growForInsert method code optimization

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0M6
    • 5.0M6
    • Classlib
    • None
    • Patch Available

    Description

      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.

      Attachments

        1. HARMONY-5834.diff
          2 kB
          Jim Yu

        Issue Links

          Activity

            People

              purefire Jimmy, Jing Lv
              junjie0122 Jim Yu
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: