Skip to content

Commit 985d6e0

Browse files
Add ensureMaterializedForStackWalk substitution
1 parent db76336 commit 985d6e0

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ public boolean java19OrLater() {
147147
return version >= 19;
148148
}
149149

150+
public boolean java20OrLater() {
151+
return version >= 20;
152+
}
153+
150154
public boolean inRange(int low, int high) {
151155
return version >= low && version <= high;
152156
}

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/Target_java_lang_Thread.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.Arrays;
2727
import java.util.concurrent.atomic.AtomicLong;
2828

29+
import com.oracle.truffle.api.CompilerDirectives;
2930
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
3031
import com.oracle.truffle.api.dsl.Bind;
3132
import com.oracle.truffle.api.dsl.Cached;
@@ -302,4 +303,9 @@ public static void setNativeName(@JavaType(Thread.class) StaticObject self, @Jav
302303
public static @JavaType(Object.class) StaticObject getStackTrace0(@JavaType(Thread.class) StaticObject self) {
303304
throw EspressoError.unimplemented("async_get_stacktrace");
304305
}
306+
307+
@Substitution(versionFilter = VersionFilter.Java20OrLater.class, isTrivial = true)
308+
public static void ensureMaterializedForStackWalk(@JavaType(Object.class) StaticObject obj) {
309+
CompilerDirectives.blackhole(obj);
310+
}
305311
}

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/substitutions/VersionFilter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,16 @@ public boolean isValidFor(JavaVersion version) {
100100
return version.java19OrLater();
101101
}
102102
}
103+
104+
final class Java20OrLater implements VersionFilter {
105+
public static final Java20OrLater INSTANCE = new Java20OrLater();
106+
107+
private Java20OrLater() {
108+
}
109+
110+
@Override
111+
public boolean isValidFor(JavaVersion version) {
112+
return version.java20OrLater();
113+
}
114+
}
103115
}

0 commit comments

Comments
 (0)