Skip to content

Commit 2fddd34

Browse files
committed
8366913: [lworld] Add ACC_STRICT_INIT to ClassFile
1 parent 59ffa2d commit 2fddd34

File tree

6 files changed

+16
-17
lines changed

6 files changed

+16
-17
lines changed

src/java.base/share/classes/java/lang/classfile/ClassFile.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,9 @@ default List<VerifyError> verify(Path path) throws IOException {
841841
/** The bit mask of {@link AccessFlag#STRICT} access and property modifier. */
842842
int ACC_STRICT = 0x0800;
843843

844+
/** The bit mask of {@link AccessFlag#STRICT_INIT} access and property modifier. */
845+
int ACC_STRICT_INIT = 0x0800;
846+
844847
/** The bit mask of {@link AccessFlag#MODULE} access and property modifier. */
845848
int ACC_MODULE = 0x8000;
846849

src/java.base/share/classes/java/lang/reflect/AccessFlag.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
package java.lang.reflect;
2727

2828
import jdk.internal.javac.PreviewFeature;
29-
import jdk.internal.misc.PreviewFeatures;
3029

3130
import java.lang.classfile.ClassModel;
3231
import java.lang.classfile.FieldModel;
@@ -285,14 +284,14 @@ public enum AccessFlag {
285284
Map.entry(RELEASE_1, Location.EMPTY_SET))),
286285

287286
/**
288-
* The access flag {@code ACC_STRICT_INIT}, with a mask
289-
* value of {@code 0x0800}.
287+
* The access flag {@code ACC_STRICT_INIT}, with a mask value of
288+
* <code>{@value "0x%04x" java.lang.classfile.ClassFile#ACC_STRICT_INIT}</code>.
290289
*
291290
* @jvms 4.5 Fields
292291
* @since Valhalla
293292
*/
294293
@PreviewFeature(feature = PreviewFeature.Feature.VALUE_OBJECTS, reflective=true)
295-
STRICT_INIT(Modifier.STRICT, false,
294+
STRICT_INIT(ACC_STRICT_INIT, false,
296295
Location.SET_FIELD,
297296
List.of(Map.entry(latest(), Location.EMPTY_SET))),
298297

@@ -480,7 +479,7 @@ public enum Location {
480479
*/
481480
FIELD(ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED |
482481
ACC_STATIC | ACC_FINAL | ACC_VOLATILE |
483-
ACC_TRANSIENT | ACC_SYNTHETIC | ACC_ENUM | ACC_STRICT,
482+
ACC_TRANSIENT | ACC_SYNTHETIC | ACC_ENUM | ACC_STRICT_INIT,
484483
List.of(Map.entry(latest(), // no strict_init
485484
ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED |
486485
ACC_STATIC | ACC_FINAL | ACC_VOLATILE |

src/java.base/share/classes/java/lang/reflect/Modifier.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public static String toString(int mod) {
390390
/**
391391
* The {@code int} value representing the {@code strictfp}
392392
* modifier.
393-
* @see AccessFlag#STRICT and AccessFlag#STRICT_FIELD
393+
* @see AccessFlag#STRICT
394394
*/
395395
public static final int STRICT = 0x00000800;
396396

@@ -463,7 +463,7 @@ static boolean isMandated(int mod) {
463463
private static final int FIELD_MODIFIERS =
464464
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE |
465465
Modifier.STATIC | Modifier.FINAL | Modifier.TRANSIENT |
466-
Modifier.VOLATILE | Modifier.STRICT;
466+
Modifier.VOLATILE;
467467

468468
/**
469469
* The Java source modifiers that can be applied to a method or constructor parameter.

src/java.base/share/classes/jdk/internal/classfile/impl/BufWriterImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
import jdk.internal.access.SharedSecrets;
3939
import jdk.internal.vm.annotation.ForceInline;
4040

41-
import static java.lang.classfile.ClassFile.ACC_STATIC;
42-
import static java.lang.classfile.ClassFile.ACC_STRICT;
41+
import static java.lang.classfile.ClassFile.*;
4342
import static java.lang.classfile.constantpool.PoolEntry.TAG_UTF8;
4443
import static jdk.internal.util.ModifiedUtf.putChar;
4544
import static jdk.internal.util.ModifiedUtf.utfLen;
@@ -93,7 +92,7 @@ private boolean doStrictFieldsMatchCheck(ClassModel cm) {
9392
// UTF8 Entry can be used as equality objects
9493
var checks = new HashSet<>(Arrays.asList(getStrictInstanceFields()));
9594
for (var f : cm.fields()) {
96-
if ((f.flags().flagsMask() & (ACC_STATIC | ACC_STRICT)) == ACC_STRICT) {
95+
if ((f.flags().flagsMask() & (ACC_STATIC | ACC_STRICT_INIT)) == ACC_STRICT_INIT) {
9796
if (!checks.remove(new WritableField.UnsetField(f.fieldName(), f.fieldType()))) {
9897
return false; // Field mismatch!
9998
}

src/java.base/share/classes/jdk/internal/classfile/impl/StackMapDecoder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@
5050

5151
import jdk.internal.access.SharedSecrets;
5252

53-
import static java.lang.classfile.ClassFile.ACC_STATIC;
54-
import static java.lang.classfile.ClassFile.ACC_STRICT;
53+
import static java.lang.classfile.ClassFile.*;
5554
import static java.lang.classfile.attribute.StackMapFrameInfo.VerificationTypeInfo.*;
5655
import static java.util.Objects.requireNonNull;
5756

@@ -124,7 +123,7 @@ private static List<NameAndTypeEntry> initFrameUnsets(ClassModel clazz, Utf8Entr
124123
return List.of();
125124
var l = new ArrayList<NameAndTypeEntry>(clazz.fields().size());
126125
for (var field : clazz.fields()) {
127-
if ((field.flags().flagsMask() & (ACC_STATIC | ACC_STRICT)) == ACC_STRICT) { // instance strict
126+
if ((field.flags().flagsMask() & (ACC_STATIC | ACC_STRICT_INIT)) == ACC_STRICT_INIT) { // instance strict
128127
l.add(TemporaryConstantPool.INSTANCE.nameAndTypeEntry(field.fieldName(), field.fieldType()));
129128
}
130129
}

src/java.base/share/classes/jdk/internal/classfile/impl/WritableField.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
import java.lang.classfile.constantpool.Utf8Entry;
2929
import java.util.Arrays;
3030

31-
import static java.lang.classfile.ClassFile.ACC_STATIC;
32-
import static java.lang.classfile.ClassFile.ACC_STRICT;
31+
import static java.lang.classfile.ClassFile.*;
3332

3433
/**
3534
* An interface to obtain field properties for direct class builders.
@@ -47,7 +46,7 @@ static WritableField.UnsetField[] filterStrictInstanceFields(ConstantPoolBuilder
4746
int size = 0;
4847
for (int i = 0; i < count; i++) {
4948
var field = array[i];
50-
if ((field.fieldFlags() & (ACC_STATIC | ACC_STRICT)) == ACC_STRICT) {
49+
if ((field.fieldFlags() & (ACC_STATIC | ACC_STRICT_INIT)) == ACC_STRICT_INIT) {
5150
size++;
5251
}
5352
}
@@ -57,7 +56,7 @@ static WritableField.UnsetField[] filterStrictInstanceFields(ConstantPoolBuilder
5756
int j = 0;
5857
for (int i = 0; i < count; i++) {
5958
var field = array[i];
60-
if ((field.fieldFlags() & (ACC_STATIC | ACC_STRICT)) == ACC_STRICT) {
59+
if ((field.fieldFlags() & (ACC_STATIC | ACC_STRICT_INIT)) == ACC_STRICT_INIT) {
6160
ret[j++] = new UnsetField(AbstractPoolEntry.maybeClone(cpb, field.fieldName()),
6261
AbstractPoolEntry.maybeClone(cpb, field.fieldType()));
6362
}

0 commit comments

Comments
 (0)