Skip to content

Commit a4b526f

Browse files
[GR-28820] Misc fixes.
PullRequest: espresso/408
2 parents 94545da + f383710 commit a4b526f

File tree

5 files changed

+44
-19
lines changed

5 files changed

+44
-19
lines changed

common.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
"README": "This file contains definitions that are useful for the hocon and jsonnet CI files of multiple repositories.",
33

44
"jdks": {
5-
"openjdk8": {"name": "openjdk", "version": "8u282+07-jvmci-21.0-b05", "platformspecific": true },
6-
"oraclejdk8": {"name": "oraclejdk", "version": "8u281+09-jvmci-21.0-b05", "platformspecific": true },
7-
"oraclejdk8Debug": {"name": "oraclejdk", "version": "8u281+09-jvmci-21.0-b05-fastdebug", "platformspecific": true },
5+
"openjdk8": {"name": "openjdk", "version": "8u282+07-jvmci-21.0-b06", "platformspecific": true },
6+
"oraclejdk8": {"name": "oraclejdk", "version": "8u281+09-jvmci-21.0-b06", "platformspecific": true },
7+
"oraclejdk8Debug": {"name": "oraclejdk", "version": "8u281+09-jvmci-21.0-b06-fastdebug", "platformspecific": true },
88

99
"openjdk11": {"name": "openjdk", "version": "11.0.3+7", "platformspecific": true },
1010
"oraclejdk11": {"name": "oraclejdk", "version": "11.0.6+8", "platformspecific": true },
11-
"labsjdk-ce-11": {"name": "labsjdk", "version": "ce-11.0.10+8-jvmci-21.0-b05", "platformspecific": true },
12-
"labsjdk-ee-11": {"name": "labsjdk", "version": "ee-11.0.10+8-jvmci-21.0-b05", "platformspecific": true },
11+
"labsjdk-ce-11": {"name": "labsjdk", "version": "ce-11.0.10+8-jvmci-21.0-b06", "platformspecific": true },
12+
"labsjdk-ee-11": {"name": "labsjdk", "version": "ee-11.0.10+8-jvmci-21.0-b06", "platformspecific": true },
1313

1414
"oraclejdk15": {"name": "oraclejdk", "version": "15.0.1+6", "platformspecific": true },
15-
"labsjdk-ce-15": {"name": "labsjdk", "version": "ce-15.0.1+9-jvmci-21.0-b05", "platformspecific": true },
16-
"labsjdk-ce-15Debug": {"name": "labsjdk", "version": "ce-15.0.1+9-jvmci-21.0-b05-debug", "platformspecific": true },
17-
"labsjdk-ee-15": {"name": "labsjdk", "version": "ee-15.0.2+7-jvmci-21.0-b05", "platformspecific": true },
18-
"labsjdk-ee-15Debug": {"name": "labsjdk", "version": "ee-15.0.2+7-jvmci-21.0-b05-debug", "platformspecific": true }
15+
"labsjdk-ce-15": {"name": "labsjdk", "version": "ce-15.0.1+9-jvmci-21.0-b06", "platformspecific": true },
16+
"labsjdk-ce-15Debug": {"name": "labsjdk", "version": "ce-15.0.1+9-jvmci-21.0-b06-debug", "platformspecific": true },
17+
"labsjdk-ee-15": {"name": "labsjdk", "version": "ee-15.0.2+7-jvmci-21.0-b06", "platformspecific": true },
18+
"labsjdk-ee-15Debug": {"name": "labsjdk", "version": "ee-15.0.2+7-jvmci-21.0-b06-debug", "platformspecific": true }
1919
},
2020

2121
"COMMENT" : "The devkits versions reflect those used to build the JVMCI JDKs (e.g., see devkit_platform_revisions in <jdk>/make/conf/jib-profiles.js)",

src/com.oracle.truffle.espresso.libespresso/src/com/oracle/truffle/espresso/libespresso/LibEspresso.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ static int releaseContext(@SuppressWarnings("unused") IsolateThread thread, JNIJ
110110
return JNIErrors.JNI_OK();
111111
}
112112

113+
@CEntryPoint(name = "Espresso_CloseContext")
114+
static int closeContext(@SuppressWarnings("unused") IsolateThread thread, JNIJavaVM javaVM) {
115+
ObjectHandle contextHandle = javaVM.getFunctions().getContext();
116+
Context context = ObjectHandles.getGlobal().get(contextHandle);
117+
ObjectHandles.getGlobal().destroy(contextHandle);
118+
context.leave();
119+
context.close();
120+
return JNIErrors.JNI_OK();
121+
}
122+
113123
@CEntryPoint(name = "Espresso_Exit")
114124
static void exit(@SuppressWarnings("unused") IsolateThread thread, JNIJavaVM javaVM) {
115125
ObjectHandle contextHandle = javaVM.getFunctions().getContext();

src/com.oracle.truffle.espresso.mokapot/src/mokapot.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,14 +1524,14 @@ LibEspresso *load_libespresso(const char* lib_path) {
15241524

15251525
OS_DL_HANDLE libespresso = os_dl_open(espresso_path);
15261526
if (libespresso == NULL) {
1527-
fprintf(stderr, "Failed to open %s: %s" OS_NEWLINE_STR, lib_path, os_dl_error());
1527+
fprintf(stderr, "Failed to open %s: %s" OS_NEWLINE_STR, espresso_path, os_dl_error());
15281528
return NULL;
15291529
}
15301530

15311531
#define BIND_LIBESPRESSO(X) \
15321532
X ## _fn_t X = os_dl_sym(libespresso, #X); \
1533-
if (#X == NULL) { \
1534-
fprintf(stderr, "%s does not contain the expected libespresso interface: missing " #X OS_NEWLINE_STR, lib_path); \
1533+
if (X == NULL) { \
1534+
fprintf(stderr, "%s does not contain the expected libespresso interface: missing " #X OS_NEWLINE_STR, espresso_path); \
15351535
return NULL; \
15361536
}
15371537

src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/runtime/EspressoContext.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.lang.ref.ReferenceQueue;
3131
import java.nio.file.Path;
3232
import java.util.Arrays;
33+
import java.util.HashSet;
34+
import java.util.Set;
3335
import java.util.concurrent.TimeUnit;
3436
import java.util.concurrent.atomic.AtomicInteger;
3537
import java.util.function.Function;
@@ -48,6 +50,7 @@
4850
import com.oracle.truffle.api.TruffleLogger;
4951
import com.oracle.truffle.api.instrumentation.AllocationReporter;
5052
import com.oracle.truffle.api.interop.TruffleObject;
53+
import com.oracle.truffle.api.nodes.LanguageInfo;
5154
import com.oracle.truffle.api.source.Source;
5255
import com.oracle.truffle.espresso.EspressoBindings;
5356
import com.oracle.truffle.espresso.EspressoLanguage;
@@ -229,12 +232,10 @@ public EspressoContext(TruffleLanguage.Env env, EspressoLanguage language) {
229232
this.SpecCompliancyMode = env.getOptions().get(EspressoOptions.SpecCompliancy);
230233
this.livenessAnalysisMode = env.getOptions().get(EspressoOptions.LivenessAnalysis);
231234
this.EnableManagement = env.getOptions().get(EspressoOptions.EnableManagement);
232-
if (!env.isCreateThreadAllowed()) {
233-
if (env.getOptions().hasBeenSet(EspressoOptions.MultiThreaded)) {
234-
throw new IllegalStateException("Creating threads is not allowed by the env; cannot set 'MultiThreaded=true'");
235-
} else {
236-
this.MultiThreaded = false;
237-
}
235+
Set<String> singleThreadedLanguages = knownSingleThreadedLanguages(env);
236+
if (!env.getOptions().hasBeenSet(EspressoOptions.MultiThreaded) && !singleThreadedLanguages.isEmpty()) {
237+
logger.warning(() -> "Disabling multi-threading since the context seems to contain single-threaded languages: " + singleThreadedLanguages);
238+
this.MultiThreaded = false;
238239
} else {
239240
this.MultiThreaded = env.getOptions().get(EspressoOptions.MultiThreaded);
240241
}
@@ -245,6 +246,20 @@ public EspressoContext(TruffleLanguage.Env env, EspressoLanguage language) {
245246

246247
}
247248

249+
private static Set<String> knownSingleThreadedLanguages(TruffleLanguage.Env env) {
250+
Set<String> singleThreaded = new HashSet<>();
251+
for (LanguageInfo languageInfo : env.getPublicLanguages().values()) {
252+
switch (languageInfo.getId()) {
253+
case "wasm": // fallthrough
254+
case "js": // fallthrough
255+
case "R": // fallthrough
256+
case "python": // it's configurable for python, be shy
257+
singleThreaded.add(languageInfo.getId());
258+
}
259+
}
260+
return singleThreaded;
261+
}
262+
248263
public ClassRegistries getRegistries() {
249264
return registries;
250265
}

src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/runtime/EspressoShutdownHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ private void teardown(boolean killThreads) {
253253
// ignore
254254
}
255255
} else {
256-
assert !hostToGuestReferenceDrainThread.isAlive();
256+
assert hostToGuestReferenceDrainThread == null || !hostToGuestReferenceDrainThread.isAlive();
257257
}
258258

259259
context.getTimers().report(context.getLogger());

0 commit comments

Comments
 (0)