diff options
Diffstat (limited to 'src/jdk/nashorn/internal/runtime/regexp/joni/MinMaxLen.java')
-rw-r--r-- | src/jdk/nashorn/internal/runtime/regexp/joni/MinMaxLen.java | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/src/jdk/nashorn/internal/runtime/regexp/joni/MinMaxLen.java b/src/jdk/nashorn/internal/runtime/regexp/joni/MinMaxLen.java deleted file mode 100644 index 83a9e2dc..00000000 --- a/src/jdk/nashorn/internal/runtime/regexp/joni/MinMaxLen.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is furnished to do - * so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package jdk.nashorn.internal.runtime.regexp.joni; - -final class MinMaxLen { - int min; /* min byte length */ - int max; /* max byte length */ - - MinMaxLen() { - } - - MinMaxLen(final int min, final int max) { - this.min = min; - this.max = max; - } - - /* 1000 / (min-max-dist + 1) */ - private static final short distValues[] = { - 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, - 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, - 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, - 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, - 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, - 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, - 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, - 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 - }; - - int distanceValue() { - if (max == INFINITE_DISTANCE) { - return 0; - } - final int d = max - min; - /* return dist_vals[d] * 16 / (mm->min + 12); */ - return d < distValues.length ? distValues[d] : 1; - } - - int compareDistanceValue(final MinMaxLen other, final int v1p, final int v2p) { - int v1 = v1p, v2 = v2p; - - if (v2 <= 0) { - return -1; - } - if (v1 <= 0) { - return 1; - } - - v1 *= distanceValue(); - v2 *= other.distanceValue(); - - if (v2 > v1) { - return 1; - } - if (v2 < v1) { - return -1; - } - - if (other.min < min) { - return 1; - } - if (other.min > min) { - return -1; - } - return 0; - } - - boolean equal(final MinMaxLen other) { - return min == other.min && max == other.max; - } - - void set(final int min, final int max) { - this.min = min; - this.max = max; - } - - void clear() { - min = max = 0; - } - - void copy(final MinMaxLen other) { - min = other.min; - max = other.max; - } - - void add(final MinMaxLen other) { - min = distanceAdd(min, other.min); - max = distanceAdd(max, other.max); - } - - void addLength(final int len) { - min = distanceAdd(min, len); - max = distanceAdd(max, len); - } - - void altMerge(final MinMaxLen other) { - if (min > other.min) { - min = other.min; - } - if (max < other.max) { - max = other.max; - } - } - - static final int INFINITE_DISTANCE = 0x7FFFFFFF; - static int distanceAdd(final int d1, final int d2) { - if (d1 == INFINITE_DISTANCE || d2 == INFINITE_DISTANCE) { - return INFINITE_DISTANCE; - } - if (d1 <= INFINITE_DISTANCE - d2) { - return d1 + d2; - } - return INFINITE_DISTANCE; - } - - static int distanceMultiply(final int d, final int m) { - if (m == 0) { - return 0; - } - if (d < INFINITE_DISTANCE / m) { - return d * m; - } - return INFINITE_DISTANCE; - } - - static String distanceRangeToString(final int a, final int b) { - String s = ""; - if (a == INFINITE_DISTANCE) { - s += "inf"; - } else { - s += "(" + a + ")"; - } - - s += "-"; - - if (b == INFINITE_DISTANCE) { - s += "inf"; - } else { - s += "(" + b + ")"; - } - return s; - } -} |