17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23 package org.openjdk.bench.java.lang.foreign;
24
25 import java.lang.foreign.*;
26
27 import java.lang.invoke.MethodHandle;
28 import java.lang.invoke.MethodType;
29
30 import static java.lang.invoke.MethodHandles.insertArguments;
31
32 public class CallOverheadHelper extends CLayouts {
33
34 static final Linker abi = Linker.nativeLinker();
35
36 static final MethodHandle func;
37 static final MethodHandle func_trivial;
38 static final MethodHandle func_v;
39 static final MethodHandle func_trivial_v;
40 static MemorySegment func_addr;
41 static final MethodHandle identity;
42 static final MethodHandle identity_trivial;
43 static final MethodHandle identity_v;
44 static final MethodHandle identity_trivial_v;
45 static MemorySegment identity_addr;
46 static final MethodHandle identity_struct;
47 static final MethodHandle identity_struct_v;
48 static MemorySegment identity_struct_addr;
49 static final MethodHandle identity_struct_3;
50 static final MethodHandle identity_struct_3_v;
51 static MemorySegment identity_struct_3_addr;
52 static final MethodHandle identity_memory_address;
53 static final MethodHandle identity_memory_address_v;
54 static MemorySegment identity_memory_address_addr;
55 static final MethodHandle identity_memory_address_3;
56 static final MethodHandle identity_memory_address_3_v;
57 static MemorySegment identity_memory_address_3_addr;
58 static final MethodHandle args1;
59 static final MethodHandle args1_v;
60 static MemorySegment args1_addr;
61 static final MethodHandle args2;
62 static final MethodHandle args2_v;
63 static MemorySegment args2_addr;
64 static final MethodHandle args3;
96
97 static {
98 Arena scope = Arena.ofAuto();
99 point = scope.allocate(POINT_LAYOUT);
100 }
101
102 static final SegmentAllocator recycling_allocator;
103
104 static {
105 Arena scope = Arena.ofAuto();
106 recycling_allocator = SegmentAllocator.prefixAllocator(scope.allocate(POINT_LAYOUT));
107 System.loadLibrary("CallOverheadJNI");
108
109 System.loadLibrary("CallOverhead");
110 SymbolLookup loaderLibs = SymbolLookup.loaderLookup();
111 {
112 func_addr = loaderLibs.find("func").orElseThrow();
113 MethodType mt = MethodType.methodType(void.class);
114 FunctionDescriptor fd = FunctionDescriptor.ofVoid();
115 func_v = abi.downcallHandle(fd);
116 func_trivial_v = abi.downcallHandle(fd, Linker.Option.isTrivial());
117 func = insertArguments(func_v, 0, func_addr);
118 func_trivial = insertArguments(func_trivial_v, 0, func_addr);
119 }
120 {
121 identity_addr = loaderLibs.find("identity").orElseThrow();
122 FunctionDescriptor fd = FunctionDescriptor.of(C_INT, C_INT);
123 identity_v = abi.downcallHandle(fd);
124 identity_trivial_v = abi.downcallHandle(fd, Linker.Option.isTrivial());
125 identity = insertArguments(identity_v, 0, identity_addr);
126 identity_trivial = insertArguments(identity_trivial_v, 0, identity_addr);
127 }
128 identity_struct_addr = loaderLibs.find("identity_struct").orElseThrow();
129 identity_struct_v = abi.downcallHandle(
130 FunctionDescriptor.of(POINT_LAYOUT, POINT_LAYOUT));
131 identity_struct = insertArguments(identity_struct_v, 0, identity_struct_addr);
132
133 identity_struct_3_addr = loaderLibs.find("identity_struct_3").orElseThrow();
134 identity_struct_3_v = abi.downcallHandle(
135 FunctionDescriptor.of(POINT_LAYOUT, POINT_LAYOUT, POINT_LAYOUT, POINT_LAYOUT));
136 identity_struct_3 = insertArguments(identity_struct_3_v, 0, identity_struct_3_addr);
137
138 identity_memory_address_addr = loaderLibs.find("identity_memory_address").orElseThrow();
139 identity_memory_address_v = abi.downcallHandle(
140 FunctionDescriptor.of(C_POINTER, C_POINTER));
141 identity_memory_address = insertArguments(identity_memory_address_v, 0, identity_memory_address_addr);
142
143 identity_memory_address_3_addr = loaderLibs.find("identity_memory_address_3").orElseThrow();
144 identity_memory_address_3_v = abi.downcallHandle(
145 FunctionDescriptor.of(C_POINTER, C_POINTER, C_POINTER, C_POINTER));
146 identity_memory_address_3 = insertArguments(identity_memory_address_3_v, 0, identity_memory_address_3_addr);
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23 package org.openjdk.bench.java.lang.foreign;
24
25 import java.lang.foreign.*;
26
27 import java.lang.invoke.MethodHandle;
28 import java.lang.invoke.MethodType;
29
30 import static java.lang.invoke.MethodHandles.insertArguments;
31
32 public class CallOverheadHelper extends CLayouts {
33
34 static final Linker abi = Linker.nativeLinker();
35
36 static final MethodHandle func;
37 static final MethodHandle func_critical;
38 static final MethodHandle func_v;
39 static final MethodHandle func_critical_v;
40 static MemorySegment func_addr;
41 static final MethodHandle identity;
42 static final MethodHandle identity_critical;
43 static final MethodHandle identity_v;
44 static final MethodHandle identity_critical_v;
45 static MemorySegment identity_addr;
46 static final MethodHandle identity_struct;
47 static final MethodHandle identity_struct_v;
48 static MemorySegment identity_struct_addr;
49 static final MethodHandle identity_struct_3;
50 static final MethodHandle identity_struct_3_v;
51 static MemorySegment identity_struct_3_addr;
52 static final MethodHandle identity_memory_address;
53 static final MethodHandle identity_memory_address_v;
54 static MemorySegment identity_memory_address_addr;
55 static final MethodHandle identity_memory_address_3;
56 static final MethodHandle identity_memory_address_3_v;
57 static MemorySegment identity_memory_address_3_addr;
58 static final MethodHandle args1;
59 static final MethodHandle args1_v;
60 static MemorySegment args1_addr;
61 static final MethodHandle args2;
62 static final MethodHandle args2_v;
63 static MemorySegment args2_addr;
64 static final MethodHandle args3;
96
97 static {
98 Arena scope = Arena.ofAuto();
99 point = scope.allocate(POINT_LAYOUT);
100 }
101
102 static final SegmentAllocator recycling_allocator;
103
104 static {
105 Arena scope = Arena.ofAuto();
106 recycling_allocator = SegmentAllocator.prefixAllocator(scope.allocate(POINT_LAYOUT));
107 System.loadLibrary("CallOverheadJNI");
108
109 System.loadLibrary("CallOverhead");
110 SymbolLookup loaderLibs = SymbolLookup.loaderLookup();
111 {
112 func_addr = loaderLibs.find("func").orElseThrow();
113 MethodType mt = MethodType.methodType(void.class);
114 FunctionDescriptor fd = FunctionDescriptor.ofVoid();
115 func_v = abi.downcallHandle(fd);
116 func_critical_v = abi.downcallHandle(fd, Linker.Option.critical());
117 func = insertArguments(func_v, 0, func_addr);
118 func_critical = insertArguments(func_critical_v, 0, func_addr);
119 }
120 {
121 identity_addr = loaderLibs.find("identity").orElseThrow();
122 FunctionDescriptor fd = FunctionDescriptor.of(C_INT, C_INT);
123 identity_v = abi.downcallHandle(fd);
124 identity_critical_v = abi.downcallHandle(fd, Linker.Option.critical());
125 identity = insertArguments(identity_v, 0, identity_addr);
126 identity_critical = insertArguments(identity_critical_v, 0, identity_addr);
127 }
128 identity_struct_addr = loaderLibs.find("identity_struct").orElseThrow();
129 identity_struct_v = abi.downcallHandle(
130 FunctionDescriptor.of(POINT_LAYOUT, POINT_LAYOUT));
131 identity_struct = insertArguments(identity_struct_v, 0, identity_struct_addr);
132
133 identity_struct_3_addr = loaderLibs.find("identity_struct_3").orElseThrow();
134 identity_struct_3_v = abi.downcallHandle(
135 FunctionDescriptor.of(POINT_LAYOUT, POINT_LAYOUT, POINT_LAYOUT, POINT_LAYOUT));
136 identity_struct_3 = insertArguments(identity_struct_3_v, 0, identity_struct_3_addr);
137
138 identity_memory_address_addr = loaderLibs.find("identity_memory_address").orElseThrow();
139 identity_memory_address_v = abi.downcallHandle(
140 FunctionDescriptor.of(C_POINTER, C_POINTER));
141 identity_memory_address = insertArguments(identity_memory_address_v, 0, identity_memory_address_addr);
142
143 identity_memory_address_3_addr = loaderLibs.find("identity_memory_address_3").orElseThrow();
144 identity_memory_address_3_v = abi.downcallHandle(
145 FunctionDescriptor.of(C_POINTER, C_POINTER, C_POINTER, C_POINTER));
146 identity_memory_address_3 = insertArguments(identity_memory_address_3_v, 0, identity_memory_address_3_addr);
|