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