< prev index next >

test/micro/org/openjdk/bench/java/lang/foreign/LinkUpcall.java

Print this page

30 import org.openjdk.jmh.annotations.OutputTimeUnit;
31 import org.openjdk.jmh.annotations.Scope;
32 import org.openjdk.jmh.annotations.State;
33 import org.openjdk.jmh.annotations.Warmup;
34 
35 import java.lang.foreign.Arena;
36 import java.lang.foreign.Linker;
37 import java.lang.foreign.FunctionDescriptor;
38 import java.lang.foreign.MemorySegment;
39 import java.lang.invoke.MethodHandle;
40 import java.lang.invoke.MethodType;
41 import java.util.concurrent.TimeUnit;
42 
43 import static java.lang.invoke.MethodHandles.lookup;
44 
45 @BenchmarkMode(Mode.AverageTime)
46 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
47 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
48 @State(Scope.Benchmark)
49 @OutputTimeUnit(TimeUnit.MICROSECONDS)
50 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED", "--enable-preview" })
51 public class LinkUpcall extends CLayouts {
52 
53     static final Linker LINKER = Linker.nativeLinker();
54     static final MethodHandle BLANK;
55     static final FunctionDescriptor BLANK_DESC = FunctionDescriptor.ofVoid();
56 
57     static {
58         try {
59             BLANK = lookup().findStatic(LinkUpcall.class, "blank", MethodType.methodType(void.class));
60         } catch (ReflectiveOperationException e) {
61             throw new ExceptionInInitializerError(e);
62         }
63     }
64 
65     @Benchmark
66     public MemorySegment link_blank() {
67         try (Arena arena = Arena.ofConfined()) {
68             return LINKER.upcallStub(BLANK, BLANK_DESC, arena);
69         }
70     }

30 import org.openjdk.jmh.annotations.OutputTimeUnit;
31 import org.openjdk.jmh.annotations.Scope;
32 import org.openjdk.jmh.annotations.State;
33 import org.openjdk.jmh.annotations.Warmup;
34 
35 import java.lang.foreign.Arena;
36 import java.lang.foreign.Linker;
37 import java.lang.foreign.FunctionDescriptor;
38 import java.lang.foreign.MemorySegment;
39 import java.lang.invoke.MethodHandle;
40 import java.lang.invoke.MethodType;
41 import java.util.concurrent.TimeUnit;
42 
43 import static java.lang.invoke.MethodHandles.lookup;
44 
45 @BenchmarkMode(Mode.AverageTime)
46 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
47 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
48 @State(Scope.Benchmark)
49 @OutputTimeUnit(TimeUnit.MICROSECONDS)
50 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED" })
51 public class LinkUpcall extends CLayouts {
52 
53     static final Linker LINKER = Linker.nativeLinker();
54     static final MethodHandle BLANK;
55     static final FunctionDescriptor BLANK_DESC = FunctionDescriptor.ofVoid();
56 
57     static {
58         try {
59             BLANK = lookup().findStatic(LinkUpcall.class, "blank", MethodType.methodType(void.class));
60         } catch (ReflectiveOperationException e) {
61             throw new ExceptionInInitializerError(e);
62         }
63     }
64 
65     @Benchmark
66     public MemorySegment link_blank() {
67         try (Arena arena = Arena.ofConfined()) {
68             return LINKER.upcallStub(BLANK, BLANK_DESC, arena);
69         }
70     }
< prev index next >