Skip to content

Commit

Permalink
[GR-47949] [GR-48132] [GR-48161] Batch PR.
Browse files Browse the repository at this point in the history
PullRequest: graal/15426
  • Loading branch information
ansalond authored and gilles-duboscq committed Sep 2, 2023
2 parents 63eaafa + 4d5c050 commit 319db73
Show file tree
Hide file tree
Showing 239 changed files with 477 additions and 570 deletions.
2 changes: 0 additions & 2 deletions espresso/mx.espresso/mx_espresso.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ def _espresso_standalone_command(args, use_optimized_runtime=False, with_sulong=
+ mx.get_runtime_jvm_args(distributions, jdk=mx.get_jdk())
# We are not adding the truffle runtime
+ ['-Dpolyglot.engine.WarnInterpreterOnly=false']
# Workaround StaticShape generating classes in the unnamed module (GR-48132)
+ ['--add-exports=org.graalvm.espresso/com.oracle.truffle.espresso.runtime=ALL-UNNAMED']
+ [mx.distribution('ESPRESSO_LAUNCHER').mainClass] + args
)

Expand Down
15 changes: 3 additions & 12 deletions espresso/mx.espresso/suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,18 +72,6 @@
{
"name": "sulong",
"subdir": True,
"os_arch": {
"windows": {
"<others>": {
"ignore": True,
},
},
"<others>": {
"<others>": {
"ignore": False,
}
}
}
},
{
"name" : "java-benchmarks",
Expand Down Expand Up @@ -344,6 +332,9 @@
"ESPRESSO": {
"moduleInfo" : {
"name" : "org.graalvm.espresso",
"exports": [
"com.oracle.truffle.espresso.runtime.staticobject", # Workaround GR-48132
]
},
"description" : "Core module of the Java on Truffle (aka Espresso): a Java bytecode interpreter",
"subDir": "src",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public abstract class EspressoProcessor extends BaseProcessor {
* import com.oracle.truffle.espresso.substitutions.Collect;
*
* import com.oracle.truffle.espresso.substitutions.JavaSubstitution;
* import com.oracle.truffle.espresso.runtime.StaticObject;
* import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
* import com.oracle.truffle.espresso.substitutions.Target_java_lang_invoke_MethodHandleNatives.Resolve;
*
* /**
Expand Down Expand Up @@ -229,7 +229,7 @@ protected ClassBuilder generateAdditionalFactoryMethods(ClassBuilder factoryBuil
private static final String SUBSTITUTION_PROFILER = "com.oracle.truffle.espresso.substitutions.SubstitutionProfiler";

TypeElement staticObject;
private static final String STATIC_OBJECT = "com.oracle.truffle.espresso.runtime.StaticObject";
protected static final String STATIC_OBJECT = "com.oracle.truffle.espresso.runtime.staticobject.StaticObject";

TypeElement javaType;
private static final String JAVA_TYPE = "com.oracle.truffle.espresso.substitutions.JavaType";
Expand Down Expand Up @@ -258,11 +258,11 @@ protected ClassBuilder generateAdditionalFactoryMethods(ClassBuilder factoryBuil
static final String STATIC_OBJECT_NULL = "StaticObject.NULL";

static final String IMPORT_INTEROP_LIBRARY = "com.oracle.truffle.api.interop.InteropLibrary";
static final String IMPORT_STATIC_OBJECT = "com.oracle.truffle.espresso.runtime.StaticObject";
static final String IMPORT_STATIC_OBJECT = STATIC_OBJECT;
static final String IMPORT_TRUFFLE_OBJECT = "com.oracle.truffle.api.interop.TruffleObject";
static final String IMPORT_ESPRESSO_LANGUAGE = "com.oracle.truffle.espresso.EspressoLanguage";
static final String IMPORT_ESPRESSO_LANGUAGE = ESPRESSO_LANGUAGE;
static final String IMPORT_META = "com.oracle.truffle.espresso.meta.Meta";
static final String IMPORT_ESPRESSO_CONTEXT = "com.oracle.truffle.espresso.runtime.EspressoContext";
static final String IMPORT_ESPRESSO_CONTEXT = ESPRESSO_CONTEXT;
static final String IMPORT_PROFILE = "com.oracle.truffle.espresso.substitutions.SubstitutionProfiler";
static final String IMPORT_COLLECT = "com.oracle.truffle.espresso.substitutions.Collect";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,13 @@ public final class SubstitutionProcessor extends EspressoProcessor {
// InlinedMethodPredicate.class
private TypeElement noPredicate;

// StaticObject
private TypeElement staticObjectElement;

// region Various String constants.

private static final String SUBSTITUTION_PACKAGE = "com.oracle.truffle.espresso.substitutions";

private static final String ESPRESSO_SUBSTITUTIONS = SUBSTITUTION_PACKAGE + "." + "EspressoSubstitutions";
private static final String SUBSTITUTION = SUBSTITUTION_PACKAGE + "." + "Substitution";
private static final String INLINE_IN_BYTECODE = SUBSTITUTION_PACKAGE + "." + "InlineInBytecode";
private static final String STATIC_OBJECT = "com.oracle.truffle.espresso.runtime.StaticObject";
private static final String JAVA_TYPE = SUBSTITUTION_PACKAGE + "." + "JavaType";
private static final String NO_PROVIDER = SUBSTITUTION_PACKAGE + "." + "SubstitutionNamesProvider" + "." + "NoProvider";
private static final String NO_FILTER = SUBSTITUTION_PACKAGE + "." + "VersionFilter" + "." + "NoFilter";
Expand Down Expand Up @@ -184,7 +180,7 @@ private void checkParameterOrReturnType(String headerMessage, TypeMirror typeMir
}
} else if (typeMirror.getKind() != TypeKind.VOID) {
// Reference type.
if (!processingEnv.getTypeUtils().isSameType(typeMirror, staticObjectElement.asType())) {
if (!processingEnv.getTypeUtils().isSameType(typeMirror, staticObject.asType())) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING,
headerMessage + " is not of type StaticObject", element);
}
Expand Down Expand Up @@ -409,7 +405,7 @@ private List<String> getGuestTypes(ExecutableElement inner, boolean hasReceiver)
} else {
// @JavaType annotation not found -> primitive or j.l.Object
// All StaticObject(s) parameters must be annotated with @JavaType.
if (!isReceiver && processingEnv.getTypeUtils().isSameType(parameter.asType(), staticObjectElement.asType())) {
if (!isReceiver && processingEnv.getTypeUtils().isSameType(parameter.asType(), staticObject.asType())) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "non-receiver StaticObject parameters require the @JavaType annotation", parameter);
}
String arg = getInternalName(parameter.asType().toString());
Expand Down Expand Up @@ -565,7 +561,6 @@ void processImpl(RoundEnvironment env) {
// Set up the different annotations, along with their values, that we will need.
this.espressoSubstitutions = getTypeElement(ESPRESSO_SUBSTITUTIONS);
this.substitutionAnnotation = getTypeElement(SUBSTITUTION);
this.staticObjectElement = getTypeElement(STATIC_OBJECT);
this.inlineInBytecodeAnnotation = getTypeElement(INLINE_IN_BYTECODE);
this.javaType = getTypeElement(JAVA_TYPE);
this.noProvider = getTypeElement(NO_PROVIDER);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# add-exports workaround for StaticShape generating classes in the unnamed module (GR-48132)
Args = --initialize-at-build-time=com.oracle.truffle.espresso \
--features=com.oracle.truffle.espresso.ref.FinalizationFeature \
--add-exports=org.graalvm.espresso/com.oracle.truffle.espresso.runtime=ALL-UNNAMED \
--add-exports=org.graalvm.espresso/com.oracle.truffle.espresso.impl=ALL-UNNAMED \
-H:MaxRuntimeCompileMethods=7000
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
import com.oracle.truffle.espresso.nodes.commands.AddPathToBindingsNode;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.vm.InterpreterToVM;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;

import com.oracle.truffle.api.TruffleLogger;
import org.graalvm.home.HomeFinder;
import org.graalvm.home.Version;
import org.graalvm.options.OptionDescriptors;
Expand Down Expand Up @@ -78,8 +77,8 @@
import com.oracle.truffle.espresso.runtime.EspressoThreadLocalState;
import com.oracle.truffle.espresso.runtime.GuestAllocator;
import com.oracle.truffle.espresso.runtime.JavaVersion;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.StaticObject.StaticObjectFactory;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject.StaticObjectFactory;
import com.oracle.truffle.espresso.substitutions.Substitutions;

// TODO: Update website once Espresso has one
Expand Down Expand Up @@ -453,17 +452,7 @@ public StaticShape<StaticObjectFactory> getArrayShape() {
@TruffleBoundary
private StaticShape<StaticObjectFactory> createArrayShape() {
assert arrayShape == null;
try {
return StaticShape.newBuilder(this).property(arrayProperty, Object.class, true).build(StaticObject.class, StaticObjectFactory.class);
} catch (IllegalAccessError e) {
if (EspressoLanguage.class.getModule().isNamed()) {
TruffleLogger.getLogger(ID).warning("""
IllegalAccessError while trying static shape from espresso module.
You might need to use the following java argument to work around:
--add-exports=org.graalvm.espresso/com.oracle.truffle.espresso.runtime=ALL-UNNAMED""");
}
throw e;
}
return StaticShape.newBuilder(this).property(arrayProperty, Object.class, true).build(StaticObject.class, StaticObjectFactory.class);
}

public StaticProperty getForeignProperty() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.JavaKind;
import com.oracle.truffle.espresso.nodes.EspressoFrame;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public final class EspressoScope {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.espresso.impl.SuppressFBWarnings;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

/**
* Lock implementation for guest objects. Provides a similar interface to {@link Object} built-in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
import com.oracle.truffle.espresso.runtime.ClasspathFile;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.verifier.MethodVerifier;

@SuppressWarnings("try")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
import com.oracle.truffle.espresso.perf.DebugCounter;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import com.oracle.truffle.espresso.impl.ObjectKlass;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public final class RuntimeConstantPool extends ConstantPool {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.Attribute;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public final class BootstrapMethodsAttribute extends Attribute {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import com.oracle.truffle.espresso.impl.ObjectKlass;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.Attribute;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public class RecordAttribute extends Attribute {
public static final Symbol<Name> NAME = Name.Record;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import com.oracle.truffle.espresso.nodes.EspressoFrame;
import com.oracle.truffle.espresso.nodes.methodhandle.MHLinkToNode;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public interface DynamicConstant extends PoolConstant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public interface InvokeDynamicConstant extends BootstrapMethodConstant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import com.oracle.truffle.espresso.impl.Klass;
import com.oracle.truffle.espresso.impl.Method;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public interface MethodHandleConstant extends PoolConstant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public interface MethodTypeConstant extends PoolConstant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import com.oracle.truffle.espresso.descriptors.Symbol.ModifiedUTF8;
import com.oracle.truffle.espresso.impl.Klass;
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public interface StringConstant extends PoolConstant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
import com.oracle.truffle.espresso.ffi.TruffleByteBuffer;
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.perf.DebugCounter;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.Collect;
import com.oracle.truffle.espresso.vm.UnsafeAccess;
import com.oracle.truffle.nfi.api.SignatureLibrary;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
import com.oracle.truffle.espresso.jdwp.api.MethodRef;
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.JavaKind;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;

public final class ArrayKlass extends Klass {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import com.oracle.truffle.espresso.perf.DebugTimer;
import com.oracle.truffle.espresso.runtime.ClasspathFile;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import com.oracle.truffle.espresso.meta.EspressoError;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.perf.TimerCollection;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public class ClassLoadingEnv implements LanguageAccess {
private final AtomicLong klassIdProvider = new AtomicLong();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.redefinition.DefineKlassListener;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;
import com.oracle.truffle.espresso.vm.InterpreterToVM;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.EspressoThreadLocalState;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.espresso.classfile.RuntimeConstantPool;
import com.oracle.truffle.espresso.descriptors.Types;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

public final class EnumConstantField extends Field {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

/**
* Indicates an exception that occurred during class loading.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@
import com.oracle.truffle.espresso.meta.Meta;
import com.oracle.truffle.espresso.runtime.Attribute;
import com.oracle.truffle.espresso.runtime.EspressoException;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.FieldStorageObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;

/**
* Represents a resolved Espresso field.
Expand All @@ -57,13 +58,12 @@
* 2. A {@link RedefineAddedField} which represents a field that was added by a
* {@link com.oracle.truffle.espresso.redefinition.ClassRedefinition}. Management of Redefine Added
* Fields is done through {@link ExtensionFieldsMetadata}. Accessing a Redefined Added Field
* normally happens through the associated {@link RedefineAddedField.FieldStorageObject instance}
* unless the Redefine Added Field has a Compatible Field {@link #hasCompatibleField()}. A
* Compatible field is always an Original Field that has the same name and type as the associated
* Redefine Added Field. A Redefine Added field can be assigned a Compatible Field if e.g. the field
* access modifiers changed. The state of the field is thus maintained by the Compatible (Original)
* Field. In this case the Redefine Added Field serves only as an up-to-date representative of the
* field in the runtime.
* normally happens through the associated {@link FieldStorageObject instance} unless the Redefine
* Added Field has a Compatible Field {@link #hasCompatibleField()}. A Compatible field is always an
* Original Field that has the same name and type as the associated Redefine Added Field. A Redefine
* Added field can be assigned a Compatible Field if e.g. the field access modifiers changed. The
* state of the field is thus maintained by the Compatible (Original) Field. In this case the
* Redefine Added Field serves only as an up-to-date representative of the field in the runtime.
*
* 3. A Delegation Field is a special field that is created whenever a certain field requires to be
* re-resolved due to class redefinition. It allows obsolete code that uses a field to continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import com.oracle.truffle.espresso.descriptors.Types;
import com.oracle.truffle.espresso.perf.DebugCounter;
import com.oracle.truffle.espresso.runtime.EspressoContext;
import com.oracle.truffle.espresso.runtime.StaticObject;
import com.oracle.truffle.espresso.runtime.staticobject.StaticObject;
import com.oracle.truffle.espresso.substitutions.JavaType;

/**
Expand Down
Loading

0 comments on commit 319db73

Please sign in to comment.