Skip to content

Commit 8930839

Browse files
author
Sergey Kuksenko
committed
8367608: [lworld] Update/reimplement valhalla benchmarks for JEP 401
1 parent cf86330 commit 8930839

File tree

307 files changed

+20138
-33401
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

307 files changed

+20138
-33401
lines changed

make/test/BuildMicrobenchmark.gmk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
9797
--add-exports java.base/jdk.internal.util=ALL-UNNAMED \
9898
--add-exports java.base/jdk.internal.value=ALL-UNNAMED \
9999
--add-exports java.base/jdk.internal.vm=ALL-UNNAMED \
100+
--add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED \
100101
--add-exports java.base/sun.invoke.util=ALL-UNNAMED \
101102
--add-exports java.base/sun.security.util=ALL-UNNAMED \
102103
--add-exports java.base/sun.security.util.math=ALL-UNNAMED \

test/micro/org/openjdk/bench/valhalla/ackermann/AckermannBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
4141
@State(Scope.Thread)
4242
public abstract class AckermannBase {
4343

44-
// ackermann(1,1748)+ ackermann(2,1897)+ ackermann(3,8); == 9999999 calls
44+
// ackermann(1,1748) + ackermann(2,1897) + ackermann(3,8) == 9999999 invocations
4545
// max depth - 3798
4646
public static final int X1 = 1;
4747
public static final int Y1 = 1748;

test/micro/org/openjdk/bench/valhalla/ackermann/IdentityLong.java renamed to test/micro/org/openjdk/bench/valhalla/ackermann/Identity.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,40 @@
2525
import org.openjdk.jmh.annotations.Benchmark;
2626
import org.openjdk.jmh.annotations.OperationsPerInvocation;
2727

28-
public class IdentityLong extends AckermannBase {
28+
public class Identity extends AckermannBase {
2929

30-
private static Long ack_Long(Long x, Long y) {
31-
return x == 0 ?
32-
y + 1 :
33-
(y == 0 ?
34-
ack_Long(x - 1, 1L) :
35-
ack_Long(x - 1, ack_Long(x, y - 1)));
30+
private static IdentityLong ack_identity(IdentityLong x, IdentityLong y) {
31+
return x.value() == 0 ?
32+
IdentityLong.valueOf(y.value() + 1) :
33+
(y.value() == 0 ?
34+
ack_identity(IdentityLong.valueOf(x.value() - 1), IdentityLong.valueOf(1)) :
35+
ack_identity(IdentityLong.valueOf(x.value() - 1), ack_identity(x, IdentityLong.valueOf(y.value() - 1))));
3636
}
3737

3838
@Benchmark
3939
@OperationsPerInvocation(OPI)
40-
public long ref_Long() {
41-
return ack_Long(Long.valueOf(X1), Long.valueOf(Y1))
42-
+ ack_Long(Long.valueOf(X2), Long.valueOf(Y2))
43-
+ ack_Long(Long.valueOf(X3), Long.valueOf(Y3));
40+
public long ackermann() {
41+
return ack_identity(IdentityLong.valueOf(X1), IdentityLong.valueOf(Y1)).value()
42+
+ ack_identity(IdentityLong.valueOf(X2), IdentityLong.valueOf(Y2)).value()
43+
+ ack_identity(IdentityLong.valueOf(X3), IdentityLong.valueOf(Y3)).value();
44+
}
45+
46+
public static class IdentityLong {
47+
48+
public final long v0;
49+
50+
public IdentityLong(long v0) {
51+
this.v0 = v0;
52+
}
53+
54+
public long value() {
55+
return v0;
56+
}
57+
58+
public static IdentityLong valueOf(long value) {
59+
return new IdentityLong(value);
60+
}
61+
4462
}
4563

4664
}

test/micro/org/openjdk/bench/valhalla/ackermann/Identity64byte.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

test/micro/org/openjdk/bench/valhalla/ackermann/Identity64int.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

test/micro/org/openjdk/bench/valhalla/ackermann/Identity64long.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

test/micro/org/openjdk/bench/valhalla/ackermann/Inline64byte.java

Lines changed: 0 additions & 81 deletions
This file was deleted.

0 commit comments

Comments
 (0)