8335938: Review XxxBuilder.original and XxxModel.parent

Reviewed-by: asotona
This commit is contained in:
Chen Liang 2024-07-23 04:59:58 +00:00
parent aabec4a947
commit 22914e0774
12 changed files with 12 additions and 92 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -30,7 +30,6 @@ import java.lang.constant.ClassDesc;
import java.lang.constant.MethodTypeDesc;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.lang.classfile.constantpool.ClassEntry;
@ -58,12 +57,6 @@ public sealed interface ClassBuilder
extends ClassFileBuilder<ClassElement, ClassBuilder>
permits ChainedClassBuilder, DirectClassBuilder {
/**
* {@return the {@link ClassModel} representing the class being transformed,
* if this class builder represents the transformation of some {@link ClassModel}}
*/
Optional<ClassModel> original();
/**
* Sets the classfile version.
* @param major the major version number

View File

@ -128,12 +128,6 @@ public sealed interface CodeBuilder
extends ClassFileBuilder<CodeElement, CodeBuilder>
permits CodeBuilder.BlockCodeBuilder, ChainedCodeBuilder, TerminalCodeBuilder, NonterminalCodeBuilder {
/**
* {@return the {@link CodeModel} representing the method body being transformed,
* if this code builder represents the transformation of some {@link CodeModel}}
*/
Optional<CodeModel> original();
/** {@return a fresh unbound label} */
Label newLabel();

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -30,7 +30,6 @@ import jdk.internal.classfile.impl.ChainedFieldBuilder;
import jdk.internal.classfile.impl.TerminalFieldBuilder;
import java.lang.reflect.AccessFlag;
import java.util.Optional;
import java.util.function.Consumer;
import jdk.internal.javac.PreviewFeature;
@ -68,9 +67,4 @@ public sealed interface FieldBuilder
return with(AccessFlags.ofField(flags));
}
/**
* {@return the {@link FieldModel} representing the field being transformed,
* if this field builder represents the transformation of some {@link FieldModel}}
*/
Optional<FieldModel> original();
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,7 +25,6 @@
package java.lang.classfile;
import java.util.Optional;
import java.util.function.Consumer;
import java.lang.classfile.constantpool.Utf8Entry;
@ -50,12 +49,6 @@ public sealed interface MethodBuilder
extends ClassFileBuilder<MethodElement, MethodBuilder>
permits ChainedMethodBuilder, TerminalMethodBuilder {
/**
* {@return the {@link MethodModel} representing the method being transformed,
* if this method builder represents the transformation of some {@link MethodModel}}
*/
Optional<MethodModel> original();
/**
* Sets the method access flags.
* @param flags the access flags, as a bit mask

View File

@ -24,10 +24,8 @@
*/
package jdk.internal.classfile.impl;
import java.lang.classfile.constantpool.ConstantPool;
import java.util.Optional;
import java.lang.classfile.Attribute;
import java.lang.classfile.constantpool.ConstantPool;
public class AbstractDirectBuilder<M> {
protected final SplitConstantPool constantPool;
@ -48,10 +46,6 @@ public class AbstractDirectBuilder<M> {
return constantPool().canWriteDirect(source);
}
public Optional<M> original() {
return Optional.ofNullable(original);
}
public void setOriginal(M original) {
this.original = original;
}

View File

@ -70,11 +70,6 @@ public final class BufferedCodeBuilder
elements.add(startLabel);
}
@Override
public Optional<CodeModel> original() {
return Optional.ofNullable(original);
}
@Override
public Label newLabel() {
return new LabelImpl(this, -1);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -41,19 +41,16 @@ public final class BufferedFieldBuilder
private final Utf8Entry desc;
private final List<FieldElement> elements = new ArrayList<>();
private AccessFlags flags;
private final FieldModel original;
public BufferedFieldBuilder(SplitConstantPool constantPool,
ClassFileImpl context,
Utf8Entry name,
Utf8Entry type,
FieldModel original) {
Utf8Entry type) {
this.constantPool = constantPool;
this.context = context;
this.name = name;
this.desc = type;
this.flags = AccessFlags.ofField();
this.original = original;
}
@Override
@ -61,11 +58,6 @@ public final class BufferedFieldBuilder
return constantPool;
}
@Override
public Optional<FieldModel> original() {
return Optional.ofNullable(original);
}
@Override
public FieldBuilder with(FieldElement element) {
elements.add(element);
@ -91,8 +83,7 @@ public final class BufferedFieldBuilder
@Override
public Optional<ClassModel> parent() {
FieldModel fm = original().orElse(null);
return fm == null? Optional.empty() : fm.parent();
return Optional.empty();
}
@Override

View File

@ -91,11 +91,6 @@ public final class BufferedMethodBuilder
return constantPool;
}
@Override
public Optional<MethodModel> original() {
return Optional.ofNullable(original);
}
@Override
public Utf8Entry methodName() {
return name;
@ -172,7 +167,7 @@ public final class BufferedMethodBuilder
@Override
public Optional<ClassModel> parent() {
return original().flatMap(MethodModel::parent);
return Optional.empty();
}
@Override

View File

@ -24,7 +24,6 @@
*/
package jdk.internal.classfile.impl;
import java.util.Optional;
import java.util.function.Consumer;
import java.lang.classfile.*;
@ -51,15 +50,10 @@ public final class ChainedClassBuilder
return this;
}
@Override
public Optional<ClassModel> original() {
return terminal.original();
}
@Override
public ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler) {
consumer.accept(new BufferedFieldBuilder(terminal.constantPool, terminal.context,
name, descriptor, null)
name, descriptor)
.run(handler)
.toModel());
return this;
@ -68,8 +62,7 @@ public final class ChainedClassBuilder
@Override
public ClassBuilder transformField(FieldModel field, FieldTransform transform) {
BufferedFieldBuilder builder = new BufferedFieldBuilder(terminal.constantPool, terminal.context,
field.fieldName(), field.fieldType(),
field);
field.fieldName(), field.fieldType());
builder.transform(field, transform);
consumer.accept(builder.toModel());
return this;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,12 +24,10 @@
*/
package jdk.internal.classfile.impl;
import java.util.Optional;
import java.util.function.Consumer;
import java.lang.classfile.FieldBuilder;
import java.lang.classfile.FieldElement;
import java.lang.classfile.FieldModel;
import java.lang.classfile.constantpool.ConstantPoolBuilder;
public final class ChainedFieldBuilder implements FieldBuilder {
@ -50,11 +48,6 @@ public final class ChainedFieldBuilder implements FieldBuilder {
return terminal.constantPool();
}
@Override
public Optional<FieldModel> original() {
return terminal.original();
}
@Override
public FieldBuilder with(FieldElement element) {
consumer.accept(element);

View File

@ -24,7 +24,6 @@
*/
package jdk.internal.classfile.impl;
import java.util.Optional;
import java.util.function.Consumer;
import java.lang.classfile.CodeBuilder;
@ -32,7 +31,6 @@ import java.lang.classfile.CodeModel;
import java.lang.classfile.CodeTransform;
import java.lang.classfile.MethodBuilder;
import java.lang.classfile.MethodElement;
import java.lang.classfile.MethodModel;
import java.lang.classfile.constantpool.ConstantPoolBuilder;
public final class ChainedMethodBuilder implements MethodBuilder {
@ -75,9 +73,4 @@ public final class ChainedMethodBuilder implements MethodBuilder {
return terminal.constantPool();
}
@Override
public Optional<MethodModel> original() {
return terminal.original();
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,10 +24,7 @@
*/
package jdk.internal.classfile.impl;
import java.util.Optional;
import java.lang.classfile.CodeBuilder;
import java.lang.classfile.CodeModel;
import java.lang.classfile.Label;
import java.lang.classfile.constantpool.ConstantPoolBuilder;
@ -59,11 +56,6 @@ public abstract sealed class NonterminalCodeBuilder implements CodeBuilder
return terminal.constantPool();
}
@Override
public Optional<CodeModel> original() {
return terminal.original();
}
@Override
public Label newLabel() {
return terminal.newLabel();