jdk/src/java.desktop/share/classes/sun/java2d/marlin/IntArrayCache.java
changeset 39519 21bfc4452441
parent 36458 25786a73a5fc
child 40421 d5ee65e2b0fb
equal deleted inserted replaced
39518:cf5567d544b4 39519:21bfc4452441
    52         // small but enough: almost 1 cache line
    52         // small but enough: almost 1 cache line
    53         this.intArrays = new ArrayDeque<int[]>(6);
    53         this.intArrays = new ArrayDeque<int[]>(6);
    54     }
    54     }
    55 
    55 
    56     int[] getArray() {
    56     int[] getArray() {
    57         if (doStats) {
    57         if (DO_STATS) {
    58             getOp++;
    58             getOp++;
    59         }
    59         }
    60 
    60 
    61         // use cache:
    61         // use cache:
    62         final int[] array = intArrays.pollLast();
    62         final int[] array = intArrays.pollLast();
    63         if (array != null) {
    63         if (array != null) {
    64             return array;
    64             return array;
    65         }
    65         }
    66 
    66 
    67         if (doStats) {
    67         if (DO_STATS) {
    68             createOp++;
    68             createOp++;
    69         }
    69         }
    70 
    70 
    71         return new int[arraySize];
    71         return new int[arraySize];
    72     }
    72     }
    73 
    73 
    74     void putDirtyArray(final int[] array, final int length) {
    74     void putDirtyArray(final int[] array, final int length) {
    75         if (length != arraySize) {
    75         if (length != arraySize) {
    76             if (doChecks) {
    76             if (DO_CHECKS) {
    77                 MarlinUtils.logInfo("ArrayCache: bad length = " + length);
    77                 MarlinUtils.logInfo("ArrayCache: bad length = " + length);
    78             }
    78             }
    79             return;
    79             return;
    80         }
    80         }
    81         if (doStats) {
    81         if (DO_STATS) {
    82             returnOp++;
    82             returnOp++;
    83         }
    83         }
    84 
    84 
    85         // NO clean-up of array data = DIRTY ARRAY
    85         // NO clean-up of array data = DIRTY ARRAY
    86 
    86 
    87         if (doCleanDirty) {
    87         if (DO_CLEAN_DIRTY) {
    88             // Force zero-fill dirty arrays:
    88             // Force zero-fill dirty arrays:
    89             Arrays.fill(array, 0, array.length, 0);
    89             Arrays.fill(array, 0, array.length, 0);
    90         }
    90         }
    91 
    91 
    92         // fill cache:
    92         // fill cache:
    95 
    95 
    96     void putArray(final int[] array, final int length,
    96     void putArray(final int[] array, final int length,
    97                   final int fromIndex, final int toIndex)
    97                   final int fromIndex, final int toIndex)
    98     {
    98     {
    99         if (length != arraySize) {
    99         if (length != arraySize) {
   100             if (doChecks) {
   100             if (DO_CHECKS) {
   101                 MarlinUtils.logInfo("ArrayCache: bad length = " + length);
   101                 MarlinUtils.logInfo("ArrayCache: bad length = " + length);
   102             }
   102             }
   103             return;
   103             return;
   104         }
   104         }
   105         if (doStats) {
   105         if (DO_STATS) {
   106             returnOp++;
   106             returnOp++;
   107         }
   107         }
   108 
   108 
   109         // clean-up array of dirty part[fromIndex; toIndex[
   109         // clean-up array of dirty part[fromIndex; toIndex[
   110         fill(array, fromIndex, toIndex, 0);
   110         fill(array, fromIndex, toIndex, 0);
   123          */
   123          */
   124         if (toIndex != 0) {
   124         if (toIndex != 0) {
   125             Arrays.fill(array, fromIndex, toIndex, value);
   125             Arrays.fill(array, fromIndex, toIndex, value);
   126         }
   126         }
   127 
   127 
   128         if (doChecks) {
   128         if (DO_CHECKS) {
   129             check(array, fromIndex, toIndex, value);
   129             check(array, fromIndex, toIndex, value);
   130         }
   130         }
   131     }
   131     }
   132 
   132 
   133     static void check(final int[] array, final int fromIndex,
   133     static void check(final int[] array, final int fromIndex,
   134                       final int toIndex, final int value)
   134                       final int toIndex, final int value)
   135     {
   135     {
   136         if (doChecks) {
   136         if (DO_CHECKS) {
   137             // check zero on full array:
   137             // check zero on full array:
   138             for (int i = 0; i < array.length; i++) {
   138             for (int i = 0; i < array.length; i++) {
   139                 if (array[i] != value) {
   139                 if (array[i] != value) {
   140                     logException("Invalid value at: " + i + " = " + array[i]
   140                     logException("Invalid value at: " + i + " = " + array[i]
   141                             + " from: " + fromIndex + " to: " + toIndex + "\n"
   141                             + " from: " + fromIndex + " to: " + toIndex + "\n"