+1 > On Mar 31, 2020, at 6:40 AM, Chris Hegarty <chris.hega...@oracle.com> wrote: > > Remove leftover diagnostic that dumps generated class from > test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java > > At one point it was useful to be able to inspect the generated bytecode using > javap, but it was noticed recently for a different reason that the output > file is always R1.class, which is clearly wrong. Anyway, this can simply be > removed. > > --- a/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java > +++ b/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java > @@ -25,28 +25,26 @@ > * @test > * @summary Basic tests for prohibited magic serialPersistentFields > * @library /test/lib > * @modules java.base/jdk.internal.org.objectweb.asm > * @compile --enable-preview -source ${jdk.version} > SerialPersistentFieldsTest.java > * @run testng/othervm --enable-preview SerialPersistentFieldsTest > */ > > import java.io.ByteArrayInputStream; > import java.io.ByteArrayOutputStream; > -import java.io.FileOutputStream; > import java.io.IOException; > import java.io.ObjectInputStream; > import java.io.ObjectOutputStream; > import java.io.ObjectStreamClass; > import java.io.ObjectStreamField; > import java.io.Serializable; > -import java.io.UncheckedIOException; > import java.lang.reflect.Field; > import java.lang.reflect.Modifier; > import java.math.BigDecimal; > import jdk.internal.org.objectweb.asm.ClassReader; > import jdk.internal.org.objectweb.asm.ClassVisitor; > import jdk.internal.org.objectweb.asm.ClassWriter; > import jdk.internal.org.objectweb.asm.FieldVisitor; > import jdk.internal.org.objectweb.asm.MethodVisitor; > import jdk.internal.org.objectweb.asm.Type; > import jdk.test.lib.ByteCodeLoader; > @@ -222,27 +220,20 @@ > return deserialize(serialize(obj)); > } > > // -- machinery for augmenting a record class with prohibited serial > field -- > > static byte[] addSerialPersistentFields(byte[] classBytes, > ObjectStreamField[] spf) { > ClassReader reader = new ClassReader(classBytes); > ClassWriter writer = new ClassWriter(reader, COMPUTE_MAXS | > COMPUTE_FRAMES); > reader.accept(new SerialPersistentFieldsVisitor(writer, spf), 0); > - try { > - FileOutputStream fos = new FileOutputStream("R1.class"); > - fos.write(writer.toByteArray()); > - fos.close(); > - } catch (IOException ioe) { > - throw new UncheckedIOException(ioe); > - } > return writer.toByteArray(); > } > > /** A visitor that adds a serialPersistentFields field, and assigns it in > clinit. */ > static final class SerialPersistentFieldsVisitor extends ClassVisitor { > static final String FIELD_NAME = "serialPersistentFields"; > static final String FIELD_DESC = "[Ljava/io/ObjectStreamField;"; > final ObjectStreamField[] spf; > String className; > SerialPersistentFieldsVisitor(ClassVisitor cv, ObjectStreamField[] > spf) { > > > -Chris. >
<http://oracle.com/us/design/oracle-email-sig-198324.gif> <http://oracle.com/us/design/oracle-email-sig-198324.gif> <http://oracle.com/us/design/oracle-email-sig-198324.gif> <http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com <mailto:lance.ander...@oracle.com>