Skip to content

Commit 3a3e425

Browse files
Add missing interface to resolved Dynamic and MethodHandle constant
1 parent bcd53e5 commit 3a3e425

File tree

4 files changed

+32
-7
lines changed

4 files changed

+32
-7
lines changed

espresso/src/com.oracle.truffle.espresso.classfile/src/com/oracle/truffle/espresso/classfile/constantpool/BootstrapMethodConstant.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ public interface BootstrapMethodConstant extends PoolConstant {
3333

3434
int getBootstrapMethodAttrIndex();
3535

36-
Symbol<Name> getName(ConstantPool pool);
36+
default Symbol<Name> getName(ConstantPool pool) {
37+
return getNameAndType(pool).getName(pool);
38+
}
3739

3840
NameAndTypeConstant getNameAndType(ConstantPool pool);
3941

espresso/src/com.oracle.truffle.espresso.classfile/src/com/oracle/truffle/espresso/classfile/constantpool/DynamicConstant.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424

2525
import java.nio.ByteBuffer;
2626

27-
import com.oracle.truffle.espresso.classfile.descriptors.ValidationException;
2827
import com.oracle.truffle.espresso.classfile.ConstantPool;
2928
import com.oracle.truffle.espresso.classfile.ConstantPool.Tag;
3029
import com.oracle.truffle.espresso.classfile.descriptors.Symbol;
3130
import com.oracle.truffle.espresso.classfile.descriptors.Symbol.Type;
3231
import com.oracle.truffle.espresso.classfile.descriptors.Types;
32+
import com.oracle.truffle.espresso.classfile.descriptors.ValidationException;
3333

34-
public interface DynamicConstant extends PoolConstant {
34+
public interface DynamicConstant extends BootstrapMethodConstant {
3535

3636
static DynamicConstant create(int bootstrapMethodAttrIndex, int nameAndTypeIndex) {
3737
return new Indexes(bootstrapMethodAttrIndex, nameAndTypeIndex);

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/constantpool/ResolvedDynamicConstant.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@
2424

2525
import com.oracle.truffle.api.frame.VirtualFrame;
2626
import com.oracle.truffle.espresso.classfile.ConstantPool;
27+
import com.oracle.truffle.espresso.classfile.constantpool.DynamicConstant;
28+
import com.oracle.truffle.espresso.classfile.constantpool.NameAndTypeConstant;
29+
import com.oracle.truffle.espresso.classfile.constantpool.Resolvable;
2730
import com.oracle.truffle.espresso.classfile.descriptors.Symbol;
2831
import com.oracle.truffle.espresso.classfile.descriptors.Symbol.Type;
32+
import com.oracle.truffle.espresso.meta.EspressoError;
2933
import com.oracle.truffle.espresso.meta.Meta;
3034
import com.oracle.truffle.espresso.nodes.BytecodeNode;
31-
import com.oracle.truffle.espresso.meta.EspressoError;
32-
import com.oracle.truffle.espresso.classfile.constantpool.DynamicConstant;
33-
import com.oracle.truffle.espresso.classfile.constantpool.Resolvable;
3435
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
3536

3637
public interface ResolvedDynamicConstant extends DynamicConstant, Resolvable.ResolvedConstant {
@@ -41,6 +42,16 @@ default Symbol<Type> getTypeSymbol(ConstantPool pool) {
4142
throw EspressoError.shouldNotReachHere("Getting type symbol of a resolved dynamic constant");
4243
}
4344

45+
@Override
46+
default int getBootstrapMethodAttrIndex() {
47+
throw EspressoError.shouldNotReachHere("Getting bootstrap method index of a resolved dynamic constant");
48+
}
49+
50+
@Override
51+
default NameAndTypeConstant getNameAndType(ConstantPool pool) {
52+
throw EspressoError.shouldNotReachHere("Getting name and type of a resolved dynamic constant");
53+
}
54+
4455
default StaticObject guestBoxedValue(Meta meta) {
4556
Object value = value();
4657
if (value instanceof StaticObject) {

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/constantpool/ResolvedMethodHandleConstant.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424

2525
import com.oracle.truffle.espresso.classfile.ConstantPool;
2626
import com.oracle.truffle.espresso.classfile.ConstantPool.Tag;
27+
import com.oracle.truffle.espresso.classfile.constantpool.MethodHandleConstant;
2728
import com.oracle.truffle.espresso.classfile.constantpool.Resolvable;
29+
import com.oracle.truffle.espresso.meta.EspressoError;
2830
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
2931
import com.oracle.truffle.espresso.substitutions.JavaType;
3032

3133
import java.lang.invoke.MethodHandle;
3234

33-
public final class ResolvedMethodHandleConstant implements Resolvable.ResolvedConstant {
35+
public final class ResolvedMethodHandleConstant implements MethodHandleConstant, Resolvable.ResolvedConstant {
3436
private final @JavaType(MethodHandle.class) StaticObject payload;
3537

3638
ResolvedMethodHandleConstant(StaticObject payload) {
@@ -46,6 +48,16 @@ public Tag tag() {
4648
return Tag.METHODHANDLE;
4749
}
4850

51+
@Override
52+
public int getRefKind() {
53+
throw EspressoError.shouldNotReachHere("Getting ref kind of a resolved method handle constant");
54+
}
55+
56+
@Override
57+
public char getRefIndex() {
58+
throw EspressoError.shouldNotReachHere("Getting ref index of a resolved method handle constant");
59+
}
60+
4961
@Override
5062
public String toString(ConstantPool pool) {
5163
return payload.toString();

0 commit comments

Comments
 (0)