author | psandoz |
Wed, 20 Dec 2017 09:14:52 -0800 | |
changeset 48356 | 29e165bdf669 |
child 49282 | 271ef464fb3a |
permissions | -rw-r--r-- |
48356
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
1 |
/* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
2 |
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
4 |
* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
8 |
* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
13 |
* accompanied this code). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
14 |
* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
18 |
* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
21 |
* questions. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
22 |
*/ |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
23 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
24 |
import org.testng.Assert; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
25 |
import org.testng.annotations.DataProvider; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
26 |
import org.testng.annotations.Test; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
27 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
28 |
import java.lang.invoke.MethodHandle; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
29 |
import java.lang.invoke.MethodHandles; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
30 |
import java.lang.invoke.MethodType; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
31 |
import java.nio.Buffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
32 |
import java.nio.ByteBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
33 |
import java.nio.ByteOrder; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
34 |
import java.nio.CharBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
35 |
import java.nio.DoubleBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
36 |
import java.nio.FloatBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
37 |
import java.nio.IntBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
38 |
import java.nio.LongBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
39 |
import java.nio.ShortBuffer; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
40 |
import java.util.HashMap; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
41 |
import java.util.Map; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
42 |
import java.util.function.BiFunction; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
43 |
import java.util.function.LongFunction; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
44 |
import java.util.stream.IntStream; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
45 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
46 |
/* |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
47 |
* @test |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
48 |
* @bug 8193085 |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
49 |
* @summary tests for buffer equals and compare |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
50 |
* @run testng EqualsCompareTest |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
51 |
*/ |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
52 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
53 |
public class EqualsCompareTest { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
54 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
55 |
// Maximum width in bits |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
56 |
static final int MAX_WIDTH = 512; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
57 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
58 |
static final Map<Class, Integer> typeToWidth; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
59 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
60 |
static { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
61 |
typeToWidth = new HashMap<>(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
62 |
typeToWidth.put(byte.class, Byte.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
63 |
typeToWidth.put(short.class, Short.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
64 |
typeToWidth.put(char.class, Character.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
65 |
typeToWidth.put(int.class, Integer.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
66 |
typeToWidth.put(long.class, Long.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
67 |
typeToWidth.put(float.class, Float.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
68 |
typeToWidth.put(double.class, Double.SIZE); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
69 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
70 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
71 |
static int arraySizeFor(Class<?> type) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
72 |
assert type.isPrimitive(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
73 |
return 4 * MAX_WIDTH / typeToWidth.get(type); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
74 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
75 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
76 |
enum BufferKind { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
77 |
HEAP, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
78 |
HEAP_VIEW, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
79 |
DIRECT; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
80 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
81 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
82 |
static abstract class BufferType<T extends Buffer, E> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
83 |
final BufferKind k; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
84 |
final Class<?> bufferType; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
85 |
final Class<?> elementType; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
86 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
87 |
final MethodHandle eq; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
88 |
final MethodHandle cmp; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
89 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
90 |
final MethodHandle getter; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
91 |
final MethodHandle setter; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
92 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
93 |
BufferType(BufferKind k, Class<T> bufferType, Class<?> elementType) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
94 |
this.k = k; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
95 |
this.bufferType = bufferType; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
96 |
this.elementType = elementType; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
97 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
98 |
var lookup = MethodHandles.lookup(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
99 |
try { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
100 |
eq = lookup.findVirtual(bufferType, "equals", MethodType.methodType(boolean.class, Object.class)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
101 |
cmp = lookup.findVirtual(bufferType, "compareTo", MethodType.methodType(int.class, bufferType)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
102 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
103 |
getter = lookup.findVirtual(bufferType, "get", MethodType.methodType(elementType, int.class)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
104 |
setter = lookup.findVirtual(bufferType, "put", MethodType.methodType(bufferType, int.class, elementType)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
105 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
106 |
catch (Exception e) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
107 |
throw new AssertionError(e); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
108 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
109 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
110 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
111 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
112 |
public String toString() { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
113 |
return bufferType.getName() + " " + k; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
114 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
115 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
116 |
T construct(int length) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
117 |
return construct(length, ByteOrder.BIG_ENDIAN); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
118 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
119 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
120 |
abstract T construct(int length, ByteOrder bo); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
121 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
122 |
@SuppressWarnings("unchecked") |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
123 |
T slice(T a, int from, int to) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
124 |
return (T) a.position(from).limit(to).slice(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
125 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
126 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
127 |
@SuppressWarnings("unchecked") |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
128 |
E get(T a, int i) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
129 |
try { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
130 |
return (E) getter.invoke(a, i); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
131 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
132 |
catch (RuntimeException | Error e) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
133 |
throw e; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
134 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
135 |
catch (Throwable t) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
136 |
throw new Error(t); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
137 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
138 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
139 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
140 |
void set(T a, int i, Object v) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
141 |
try { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
142 |
setter.invoke(a, i, convert(v)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
143 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
144 |
catch (RuntimeException | Error e) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
145 |
throw e; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
146 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
147 |
catch (Throwable t) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
148 |
throw new Error(t); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
149 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
150 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
151 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
152 |
abstract Object convert(Object o); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
153 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
154 |
boolean equals(T a, T b) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
155 |
try { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
156 |
return (boolean) eq.invoke(a, b); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
157 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
158 |
catch (RuntimeException | Error e) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
159 |
throw e; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
160 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
161 |
catch (Throwable t) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
162 |
throw new Error(t); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
163 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
164 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
165 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
166 |
int compare(T a, T b) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
167 |
try { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
168 |
return (int) cmp.invoke(a, b); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
169 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
170 |
catch (RuntimeException | Error e) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
171 |
throw e; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
172 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
173 |
catch (Throwable t) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
174 |
throw new Error(t); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
175 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
176 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
177 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
178 |
boolean pairWiseEquals(T a, T b) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
179 |
if (a.remaining() != b.remaining()) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
180 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
181 |
int p = a.position(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
182 |
for (int i = a.limit() - 1, j = b.limit() - 1; i >= p; i--, j--) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
183 |
if (!get(a, i).equals(get(b, j))) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
184 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
185 |
return true; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
186 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
187 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
188 |
static class Bytes extends BufferType<ByteBuffer, Byte> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
189 |
Bytes(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
190 |
super(k, ByteBuffer.class, byte.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
191 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
192 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
193 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
194 |
ByteBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
195 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
196 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
197 |
return ByteBuffer.allocateDirect(length).order(bo); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
198 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
199 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
200 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
201 |
return ByteBuffer.allocate(length).order(bo); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
202 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
203 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
204 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
205 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
206 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
207 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
208 |
? ((Integer) o).byteValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
209 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
210 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
211 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
212 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
213 |
static class Chars extends BufferType<CharBuffer, Character> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
214 |
Chars(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
215 |
super(k, CharBuffer.class, char.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
216 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
217 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
218 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
219 |
CharBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
220 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
221 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
222 |
return ByteBuffer.allocateDirect(length * Character.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
223 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
224 |
asCharBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
225 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
226 |
return ByteBuffer.allocate(length * Character.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
227 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
228 |
asCharBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
229 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
230 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
231 |
return CharBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
232 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
233 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
234 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
235 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
236 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
237 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
238 |
? (char) ((Integer) o).intValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
239 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
240 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
241 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
242 |
CharBuffer transformToStringBuffer(CharBuffer c) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
243 |
char[] chars = new char[c.remaining()]; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
244 |
c.get(chars); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
245 |
return CharBuffer.wrap(new String(chars)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
246 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
247 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
248 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
249 |
static class Shorts extends BufferType<ShortBuffer, Short> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
250 |
Shorts(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
251 |
super(k, ShortBuffer.class, short.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
252 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
253 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
254 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
255 |
ShortBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
256 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
257 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
258 |
return ByteBuffer.allocateDirect(length * Short.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
259 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
260 |
asShortBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
261 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
262 |
return ByteBuffer.allocate(length * Short.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
263 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
264 |
asShortBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
265 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
266 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
267 |
return ShortBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
268 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
269 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
270 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
271 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
272 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
273 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
274 |
? ((Integer) o).shortValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
275 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
276 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
277 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
278 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
279 |
static class Ints extends BufferType<IntBuffer, Integer> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
280 |
Ints(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
281 |
super(k, IntBuffer.class, int.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
282 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
283 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
284 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
285 |
IntBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
286 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
287 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
288 |
return ByteBuffer.allocateDirect(length * Integer.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
289 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
290 |
asIntBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
291 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
292 |
return ByteBuffer.allocate(length * Integer.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
293 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
294 |
asIntBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
295 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
296 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
297 |
return IntBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
298 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
299 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
300 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
301 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
302 |
return o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
303 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
304 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
305 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
306 |
static class Floats extends BufferType<FloatBuffer, Float> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
307 |
Floats(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
308 |
super(k, FloatBuffer.class, float.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
309 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
310 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
311 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
312 |
FloatBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
313 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
314 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
315 |
return ByteBuffer.allocateDirect(length * Float.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
316 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
317 |
asFloatBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
318 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
319 |
return ByteBuffer.allocate(length * Float.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
320 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
321 |
asFloatBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
322 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
323 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
324 |
return FloatBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
325 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
326 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
327 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
328 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
329 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
330 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
331 |
? ((Integer) o).floatValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
332 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
333 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
334 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
335 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
336 |
boolean pairWiseEquals(FloatBuffer a, FloatBuffer b) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
337 |
if (a.remaining() != b.remaining()) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
338 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
339 |
int p = a.position(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
340 |
for (int i = a.limit() - 1, j = b.limit() - 1; i >= p; i--, j--) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
341 |
float av = a.get(i); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
342 |
float bv = b.get(j); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
343 |
if (av != bv && (!Float.isNaN(av) || !Float.isNaN(bv))) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
344 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
345 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
346 |
return true; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
347 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
348 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
349 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
350 |
static class Longs extends BufferType<LongBuffer, Long> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
351 |
Longs(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
352 |
super(k, LongBuffer.class, long.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
353 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
354 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
355 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
356 |
LongBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
357 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
358 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
359 |
return ByteBuffer.allocateDirect(length * Long.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
360 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
361 |
asLongBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
362 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
363 |
return ByteBuffer.allocate(length * Long.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
364 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
365 |
asLongBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
366 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
367 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
368 |
return LongBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
369 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
370 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
371 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
372 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
373 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
374 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
375 |
? ((Integer) o).longValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
376 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
377 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
378 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
379 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
380 |
static class Doubles extends BufferType<DoubleBuffer, Double> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
381 |
Doubles(BufferKind k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
382 |
super(k, DoubleBuffer.class, double.class); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
383 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
384 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
385 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
386 |
DoubleBuffer construct(int length, ByteOrder bo) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
387 |
switch (k) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
388 |
case DIRECT: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
389 |
return ByteBuffer.allocateDirect(length * Double.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
390 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
391 |
asDoubleBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
392 |
case HEAP_VIEW: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
393 |
return ByteBuffer.allocate(length * Double.BYTES). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
394 |
order(bo). |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
395 |
asDoubleBuffer(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
396 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
397 |
case HEAP: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
398 |
return DoubleBuffer.allocate(length); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
399 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
400 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
401 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
402 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
403 |
Object convert(Object o) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
404 |
return o instanceof Integer |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
405 |
? ((Integer) o).doubleValue() |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
406 |
: o; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
407 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
408 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
409 |
@Override |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
410 |
boolean pairWiseEquals(DoubleBuffer a, DoubleBuffer b) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
411 |
if (a.remaining() != b.remaining()) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
412 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
413 |
int p = a.position(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
414 |
for (int i = a.limit() - 1, j = b.limit() - 1; i >= p; i--, j--) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
415 |
double av = a.get(i); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
416 |
double bv = b.get(j); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
417 |
if (av != bv && (!Double.isNaN(av) || !Double.isNaN(bv))) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
418 |
return false; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
419 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
420 |
return true; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
421 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
422 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
423 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
424 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
425 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
426 |
static Object[][] bufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
427 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
428 |
@DataProvider |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
429 |
public static Object[][] bufferTypesProvider() { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
430 |
if (bufferTypes == null) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
431 |
bufferTypes = new Object[][]{ |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
432 |
{new BufferType.Bytes(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
433 |
{new BufferType.Bytes(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
434 |
{new BufferType.Chars(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
435 |
{new BufferType.Chars(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
436 |
{new BufferType.Chars(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
437 |
{new BufferType.Shorts(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
438 |
{new BufferType.Shorts(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
439 |
{new BufferType.Shorts(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
440 |
{new BufferType.Ints(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
441 |
{new BufferType.Ints(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
442 |
{new BufferType.Ints(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
443 |
{new BufferType.Floats(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
444 |
{new BufferType.Floats(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
445 |
{new BufferType.Floats(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
446 |
{new BufferType.Longs(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
447 |
{new BufferType.Longs(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
448 |
{new BufferType.Longs(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
449 |
{new BufferType.Doubles(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
450 |
{new BufferType.Doubles(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
451 |
{new BufferType.Doubles(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
452 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
453 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
454 |
return bufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
455 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
456 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
457 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
458 |
static Object[][] floatbufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
459 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
460 |
@DataProvider |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
461 |
public static Object[][] floatBufferTypesProvider() { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
462 |
if (floatbufferTypes == null) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
463 |
LongFunction<Object> bTof = rb -> Float.intBitsToFloat((int) rb); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
464 |
LongFunction<Object> bToD = Double::longBitsToDouble; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
465 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
466 |
floatbufferTypes = new Object[][]{ |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
467 |
// canonical and non-canonical NaNs |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
468 |
// If conversion is a signalling NaN it may be subject to conversion to a |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
469 |
// quiet NaN on some processors, even if a copy is performed |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
470 |
// The tests assume that if conversion occurs it does not convert to the |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
471 |
// canonical NaN |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
472 |
new Object[]{new BufferType.Floats(BufferKind.HEAP), 0x7fc00000L, 0x7f800001L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
473 |
new Object[]{new BufferType.Floats(BufferKind.HEAP_VIEW), 0x7fc00000L, 0x7f800001L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
474 |
new Object[]{new BufferType.Floats(BufferKind.DIRECT), 0x7fc00000L, 0x7f800001L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
475 |
new Object[]{new BufferType.Doubles(BufferKind.HEAP), 0x7ff8000000000000L, 0x7ff0000000000001L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
476 |
new Object[]{new BufferType.Doubles(BufferKind.HEAP_VIEW), 0x7ff8000000000000L, 0x7ff0000000000001L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
477 |
new Object[]{new BufferType.Doubles(BufferKind.DIRECT), 0x7ff8000000000000L, 0x7ff0000000000001L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
478 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
479 |
// +0.0 and -0.0 |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
480 |
new Object[]{new BufferType.Floats(BufferKind.HEAP), 0x0L, 0x80000000L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
481 |
new Object[]{new BufferType.Floats(BufferKind.HEAP_VIEW), 0x0L, 0x80000000L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
482 |
new Object[]{new BufferType.Floats(BufferKind.DIRECT), 0x0L, 0x80000000L, bTof}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
483 |
new Object[]{new BufferType.Doubles(BufferKind.HEAP), 0x0L, 0x8000000000000000L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
484 |
new Object[]{new BufferType.Doubles(BufferKind.HEAP_VIEW), 0x0L, 0x8000000000000000L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
485 |
new Object[]{new BufferType.Doubles(BufferKind.DIRECT), 0x0L, 0x8000000000000000L, bToD}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
486 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
487 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
488 |
return floatbufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
489 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
490 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
491 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
492 |
static Object[][] charBufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
493 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
494 |
@DataProvider |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
495 |
public static Object[][] charBufferTypesProvider() { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
496 |
if (charBufferTypes == null) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
497 |
charBufferTypes = new Object[][]{ |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
498 |
{new BufferType.Chars(BufferKind.HEAP)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
499 |
{new BufferType.Chars(BufferKind.HEAP_VIEW)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
500 |
{new BufferType.Chars(BufferKind.DIRECT)}, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
501 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
502 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
503 |
return charBufferTypes; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
504 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
505 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
506 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
507 |
// Tests all primitive buffers |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
508 |
@Test(dataProvider = "bufferTypesProvider") |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
509 |
<E> |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
510 |
void testBuffers(BufferType<Buffer, E> bufferType) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
511 |
// Test with buffers of the same byte order (BE) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
512 |
BiFunction<BufferType<Buffer, E>, Integer, Buffer> constructor = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
513 |
Buffer a = at.construct(s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
514 |
for (int x = 0; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
515 |
at.set(a, x, x % 8); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
516 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
517 |
return a; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
518 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
519 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
520 |
testBufferType(bufferType, constructor, constructor); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
521 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
522 |
// Test with buffers of different byte order |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
523 |
if (bufferType.elementType != byte.class && |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
524 |
(bufferType.k == BufferKind.HEAP_VIEW || |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
525 |
bufferType.k == BufferKind.DIRECT)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
526 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
527 |
BiFunction<BufferType<Buffer, E>, Integer, Buffer> leConstructor = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
528 |
Buffer a = at.construct(s, ByteOrder.LITTLE_ENDIAN); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
529 |
for (int x = 0; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
530 |
at.set(a, x, x % 8); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
531 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
532 |
return a; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
533 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
534 |
testBufferType(bufferType, constructor, leConstructor); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
535 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
536 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
537 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
538 |
// Tests float and double buffers with edge-case values (NaN, -0.0, +0.0) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
539 |
@Test(dataProvider = "floatBufferTypesProvider") |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
540 |
public void testFloatBuffers( |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
541 |
BufferType<Buffer, Float> bufferType, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
542 |
long rawBitsA, long rawBitsB, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
543 |
LongFunction<Object> bitsToFloat) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
544 |
Object av = bitsToFloat.apply(rawBitsA); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
545 |
Object bv = bitsToFloat.apply(rawBitsB); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
546 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
547 |
BiFunction<BufferType<Buffer, Float>, Integer, Buffer> allAs = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
548 |
Buffer b = at.construct(s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
549 |
for (int x = 0; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
550 |
at.set(b, x, av); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
551 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
552 |
return b; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
553 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
554 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
555 |
BiFunction<BufferType<Buffer, Float>, Integer, Buffer> allBs = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
556 |
Buffer b = at.construct(s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
557 |
for (int x = 0; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
558 |
at.set(b, x, bv); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
559 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
560 |
return b; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
561 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
562 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
563 |
BiFunction<BufferType<Buffer, Float>, Integer, Buffer> halfBs = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
564 |
Buffer b = at.construct(s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
565 |
for (int x = 0; x < s / 2; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
566 |
at.set(b, x, bv); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
567 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
568 |
for (int x = s / 2; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
569 |
at.set(b, x, 1); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
570 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
571 |
return b; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
572 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
573 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
574 |
// Sanity check |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
575 |
int size = arraySizeFor(bufferType.elementType); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
576 |
Assert.assertTrue(bufferType.pairWiseEquals(allAs.apply(bufferType, size), |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
577 |
allBs.apply(bufferType, size))); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
578 |
Assert.assertTrue(bufferType.equals(allAs.apply(bufferType, size), |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
579 |
allBs.apply(bufferType, size))); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
580 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
581 |
testBufferType(bufferType, allAs, allBs); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
582 |
testBufferType(bufferType, allAs, halfBs); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
583 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
584 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
585 |
// Tests CharBuffer for region sources and CharSequence sources |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
586 |
@Test(dataProvider = "charBufferTypesProvider") |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
587 |
public void testCharBuffers(BufferType.Chars charBufferType) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
588 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
589 |
BiFunction<BufferType.Chars, Integer, CharBuffer> constructor = (at, s) -> { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
590 |
CharBuffer a = at.construct(s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
591 |
for (int x = 0; x < s; x++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
592 |
at.set(a, x, x % 8); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
593 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
594 |
return a; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
595 |
}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
596 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
597 |
BiFunction<BufferType.Chars, Integer, CharBuffer> constructorX = constructor. |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
598 |
andThen(charBufferType::transformToStringBuffer); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
599 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
600 |
testBufferType(charBufferType, constructor, constructorX); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
601 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
602 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
603 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
604 |
<B extends Buffer, E, BT extends BufferType<B, E>> |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
605 |
void testBufferType(BT bt, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
606 |
BiFunction<BT, Integer, B> aConstructor, |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
607 |
BiFunction<BT, Integer, B> bConstructor) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
608 |
int n = arraySizeFor(bt.elementType); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
609 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
610 |
for (int s : ranges(0, n)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
611 |
B a = aConstructor.apply(bt, s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
612 |
B b = bConstructor.apply(bt, s); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
613 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
614 |
for (int aFrom : ranges(0, s)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
615 |
for (int aTo : ranges(aFrom, s)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
616 |
int aLength = aTo - aFrom; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
617 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
618 |
B as = aLength != s |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
619 |
? bt.slice(a, aFrom, aTo) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
620 |
: a; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
621 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
622 |
for (int bFrom : ranges(0, s)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
623 |
for (int bTo : ranges(bFrom, s)) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
624 |
int bLength = bTo - bFrom; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
625 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
626 |
B bs = bLength != s |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
627 |
? bt.slice(b, bFrom, bTo) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
628 |
: b; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
629 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
630 |
boolean eq = bt.pairWiseEquals(as, bs); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
631 |
Assert.assertEquals(bt.equals(as, bs), eq); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
632 |
Assert.assertEquals(bt.equals(bs, as), eq); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
633 |
if (eq) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
634 |
Assert.assertEquals(bt.compare(as, bs), 0); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
635 |
Assert.assertEquals(bt.compare(bs, as), 0); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
636 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
637 |
else { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
638 |
int aCb = bt.compare(as, bs); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
639 |
int bCa = bt.compare(bs, as); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
640 |
int v = Integer.signum(aCb) * Integer.signum(bCa); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
641 |
Assert.assertTrue(v == -1); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
642 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
643 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
644 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
645 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
646 |
if (aLength > 0 && !a.isReadOnly()) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
647 |
for (int i = aFrom; i < aTo; i++) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
648 |
B c = aConstructor.apply(bt, a.capacity()); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
649 |
B cs = aLength != s |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
650 |
? bt.slice(c, aFrom, aTo) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
651 |
: c; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
652 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
653 |
// Create common prefix with a length of i - aFrom |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
654 |
bt.set(c, i, -1); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
655 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
656 |
Assert.assertFalse(bt.equals(c, a)); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
657 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
658 |
int cCa = bt.compare(cs, as); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
659 |
int aCc = bt.compare(as, cs); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
660 |
int v = Integer.signum(cCa) * Integer.signum(aCc); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
661 |
Assert.assertTrue(v == -1); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
662 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
663 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
664 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
665 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
666 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
667 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
668 |
|
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
669 |
static int[] ranges(int from, int to) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
670 |
int width = to - from; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
671 |
switch (width) { |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
672 |
case 0: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
673 |
return new int[]{}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
674 |
case 1: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
675 |
return new int[]{from, to}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
676 |
case 2: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
677 |
return new int[]{from, from + 1, to}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
678 |
case 3: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
679 |
return new int[]{from, from + 1, from + 2, to}; |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
680 |
default: |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
681 |
return IntStream.of(from, from + 1, from + 2, to / 2 - 1, to / 2, to / 2 + 1, to - 2, to - 1, to) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
682 |
.filter(i -> i >= from && i <= to) |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
683 |
.distinct().toArray(); |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
684 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
685 |
} |
29e165bdf669
8193085: Vectorize the nio Buffer equals and compareTo implementations
psandoz
parents:
diff
changeset
|
686 |
} |