Skip to content

Commit 876fe06

Browse files
authored
Merge pull request #20089 from JasonFengJ9/valhallatest
Valhalla requires Java 24
2 parents 32046b3 + 99e9583 commit 876fe06

File tree

6 files changed

+25
-20
lines changed

6 files changed

+25
-20
lines changed

runtime/bcutil/cfreader.c

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3132,24 +3132,28 @@ j9bcutil_readClassFileBytes(J9PortLibrary *portLib,
31323132
}
31333133

31343134
#if defined(J9VM_OPT_VALHALLA_VALUE_TYPES)
3135-
/* Currently value type is built on JDK23, so compare with JDK23 for now. */
3136-
if ((flags & BCT_MajorClassFileVersionMask) < BCT_JavaMajorVersionShifted(23)) {
3137-
classfile->accessFlags &= ~CFR_ACC_IDENTITY;
3138-
} else if (J9_ARE_NO_BITS_SET(
3135+
if (J9_IS_CLASSFILE_OR_ROMCLASS_VALUETYPE_VERSION(classfile)) {
3136+
if (J9_ARE_NO_BITS_SET(
31393137
classfile->accessFlags,
3140-
CFR_ACC_INTERFACE | CFR_ACC_FINAL | CFR_ACC_IDENTITY | CFR_ACC_ABSTRACT)
3141-
) {
3142-
errorCode = J9NLS_CFR_ERR_CLASS_MUST_HAVE_AT_LEAST_ONE_FINAL_IDENTITY_ABSTRACT_FLAG__ID;
3143-
offset = index - data - 2;
3144-
goto _errorFound;
3145-
}
3146-
3147-
if (J9_IS_CLASSFILE_VALUETYPE(classfile)) {
3148-
if (J9_ARE_ANY_BITS_SET(classfile->accessFlags, CFR_ACC_IDENTITY | CFR_ACC_ENUM | CFR_ACC_MODULE)) {
3149-
errorCode = J9NLS_CFR_ERR_INCORRECT_FLAG_FOUND_ON_VALUE_CLASS__ID;
3138+
CFR_ACC_ABSTRACT | CFR_ACC_FINAL | CFR_ACC_IDENTITY | CFR_ACC_INTERFACE)
3139+
) {
3140+
errorCode = J9NLS_CFR_ERR_CLASS_MUST_HAVE_AT_LEAST_ONE_FINAL_IDENTITY_ABSTRACT_FLAG__ID;
31503141
offset = index - data - 2;
31513142
goto _errorFound;
31523143
}
3144+
3145+
if (J9_ARE_NO_BITS_SET((classfile)->accessFlags, CFR_ACC_IDENTITY | CFR_ACC_INTERFACE)) {
3146+
/* J9_IS_CLASSFILE_VALUETYPE() is equivalent to J9_IS_CLASSFILE_OR_ROMCLASS_VALUETYPE_VERSION(classfile)
3147+
* && J9_ARE_NO_BITS_SET((classfile)->accessFlags, CFR_ACC_IDENTITY | CFR_ACC_INTERFACE).
3148+
*/
3149+
if (J9_ARE_ANY_BITS_SET(classfile->accessFlags, CFR_ACC_ENUM | CFR_ACC_MODULE)) {
3150+
errorCode = J9NLS_CFR_ERR_INCORRECT_FLAG_FOUND_ON_VALUE_CLASS__ID;
3151+
offset = index - data - 2;
3152+
goto _errorFound;
3153+
}
3154+
}
3155+
} else {
3156+
classfile->accessFlags &= ~CFR_ACC_IDENTITY;
31533157
}
31543158
#endif /* defined(J9VM_OPT_VALHALLA_VALUE_TYPES) */
31553159

runtime/oti/cfr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ typedef struct J9CfrClassFile {
915915
#define CFR_MINOR_VERSION 3
916916
#define CFR_PUBLIC_PRIVATE_PROTECTED_MASK (CFR_ACC_PUBLIC | CFR_ACC_PRIVATE | CFR_ACC_PROTECTED)
917917

918-
#define J9_IS_CLASSFILE_VALUETYPE(classfile) (((classfile)->majorVersion >= VALUE_TYPES_MAJOR_VERSION) && (PREVIEW_MINOR_VERSION == (classfile)->minorVersion) && J9_ARE_NO_BITS_SET((classfile)->accessFlags, CFR_ACC_IDENTITY | CFR_ACC_INTERFACE))
918+
#define J9_IS_CLASSFILE_VALUETYPE(classfile) (J9_IS_CLASSFILE_OR_ROMCLASS_VALUETYPE_VERSION(classfile) && J9_ARE_NO_BITS_SET((classfile)->accessFlags, CFR_ACC_IDENTITY | CFR_ACC_INTERFACE))
919919

920920
#if defined(J9VM_OPT_VALHALLA_VALUE_TYPES)
921921
#define CFR_CLASS_ACCESS_MASK (CFR_ACC_PUBLIC | CFR_ACC_FINAL | CFR_ACC_IDENTITY | CFR_ACC_INTERFACE | CFR_ACC_ABSTRACT | CFR_ACC_SYNTHETIC | CFR_ACC_ANNOTATION | CFR_ACC_ENUM)

runtime/oti/j9consts.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,8 +942,9 @@ extern "C" {
942942

943943
/* Class version minimum for value type support. */
944944

945-
#define VALUE_TYPES_MAJOR_VERSION 67
945+
#define VALUE_TYPES_MAJOR_VERSION 68
946946
#define PREVIEW_MINOR_VERSION 65535
947+
#define J9_IS_CLASSFILE_OR_ROMCLASS_VALUETYPE_VERSION(classfileOrRomClass) (((classfileOrRomClass)->majorVersion >= VALUE_TYPES_MAJOR_VERSION) && (PREVIEW_MINOR_VERSION == (classfileOrRomClass)->minorVersion))
947948

948949
#ifdef __cplusplus
949950
}

runtime/oti/j9modifiers_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
#define J9ROMCLASS_IS_CONTENDED(romClass) _J9ROMCLASS_J9MODIFIER_IS_SET((romClass), J9AccClassIsContended)
8383

8484
#ifdef J9VM_OPT_VALHALLA_VALUE_TYPES
85-
#define J9ROMCLASS_IS_VALUE(romClass) (((romClass)->majorVersion >= VALUE_TYPES_MAJOR_VERSION) && (PREVIEW_MINOR_VERSION == (romClass)->minorVersion) && !_J9ROMCLASS_SUNMODIFIER_IS_ANY_SET((romClass), J9AccClassHasIdentity | J9AccInterface))
85+
#define J9ROMCLASS_IS_VALUE(romClass) (J9_IS_CLASSFILE_OR_ROMCLASS_VALUETYPE_VERSION(romClass) && !_J9ROMCLASS_SUNMODIFIER_IS_ANY_SET((romClass), J9AccClassHasIdentity | J9AccInterface))
8686
#else /* J9VM_OPT_VALHALLA_VALUE_TYPES */
8787
#define J9ROMCLASS_IS_VALUE(romClass) FALSE
8888
#endif /* J9VM_OPT_VALHALLA_VALUE_TYPES */

test/functional/Valhalla/build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
<compilerarg line='--add-exports java.base/jdk.internal.misc=ALL-UNNAMED' />
6565
<compilerarg line='--add-exports java.base/jdk.internal.value=ALL-UNNAMED' />
6666
<compilerarg line='--add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED' />
67-
<compilerarg line='--enable-preview -source 23'/>
67+
<compilerarg line='--enable-preview -source 24'/>
6868
<!-- uncomment when running with lw5 -->
6969
<!--<compilerarg line='-XDenableNullRestrictedTypes' />-->
7070
<classpath>

test/functional/Valhalla/src/org/openj9/test/lworld/ValhallaUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525

2626
public class ValhallaUtils {
2727
/**
28-
* Currently value type is built on JDK23, so use java file major version 67 for now.
28+
* Currently value type is built on JDK24, so use java file major version 68 for now.
2929
* If moved this needs to be incremented to the next class file version. The check in j9bcutil_readClassFileBytes()
3030
* against BCT_JavaMajorVersionShifted needs to be updated as well.
3131
* Minor version is in 16 most significant bits for asm.
3232
*/
33-
static final int VALUE_TYPE_CLASS_FILE_VERSION = (65535 << 16) | 67;
33+
static final int VALUE_TYPE_CLASS_FILE_VERSION = (65535 << 16) | 68;
3434

3535
/* workaround till the new ASM is released */
3636
static final int ACC_IDENTITY = 0x20;

0 commit comments

Comments
 (0)