Skip to content

Commit

Permalink
Always sent in InteropLibrary
Browse files Browse the repository at this point in the history
  • Loading branch information
JaroslavTulach committed Dec 21, 2023
1 parent 086c1d9 commit 4849ef9
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,7 @@ object ErrorResolver {
throwable: Throwable
)(implicit ctx: RuntimeContext): Vector[Api.StackTraceElement] = {
val iop = InteropLibrary.getUncached
val arr = if (iop.hasExceptionStackTrace(throwable)) {
GetStackTraceNode.stackTraceToArray(iop, throwable)
} else {
GetStackTraceNode.stackTraceToArray(throwable)
}
val arr = GetStackTraceNode.stackTraceToArray(iop, throwable)
val len = iop.getArraySize(arr)
val stackWithOptions = for (i <- 0L until len) yield {
val elem = iop.readArrayElement(arr, i)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
import org.enso.interpreter.dsl.AcceptsError;
import org.enso.interpreter.dsl.BuiltinMethod;
import org.enso.interpreter.node.expression.builtin.runtime.GetStackTraceNode;
import org.enso.interpreter.runtime.EnsoContext;
import org.enso.interpreter.runtime.builtin.Builtins;
import org.enso.interpreter.runtime.error.PanicException;

@BuiltinMethod(
type = "Panic",
Expand All @@ -17,15 +14,6 @@ public class GetAttachedStackTraceNode extends Node {
@Child private InteropLibrary iop = InteropLibrary.getFactory().createDispatched(3);

Object execute(@AcceptsError Object error) {
if (iop.hasExceptionStackTrace(error)) {
return GetStackTraceNode.stackTraceToArray(iop, error);
}
if (error instanceof Throwable) {
return GetStackTraceNode.stackTraceToArray((Throwable) error);
} else {
Builtins builtins = EnsoContext.get(this).getBuiltins();
throw new PanicException(
builtins.error().makeTypeError("Throwable", error, "throwable"), this);
}
return GetStackTraceNode.stackTraceToArray(iop, error);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,21 @@ EnsoObject execute(VirtualFrame requestOwnStackFrame) {
}

public static EnsoObject stackTraceToArray(InteropLibrary iop, Object exception) {
try {
assert iop.hasExceptionStackTrace(exception);
var elements = iop.getExceptionStackTrace(exception);
return filterStackTraceVector(iop, elements);
} catch (UnsupportedMessageException ex) {
return ArrayLikeHelpers.empty();
if (iop.hasExceptionStackTrace(exception)) {
try {
var elements = iop.getExceptionStackTrace(exception);
return filterStackTraceVector(iop, elements);
} catch (UnsupportedMessageException ex) {
// return empty
}
} else if (exception instanceof Throwable t) {
return stackTraceToArray(t);
}
return ArrayLikeHelpers.empty();
}

@CompilerDirectives.TruffleBoundary
public static EnsoObject stackTraceToArray(Throwable exception) {
private static EnsoObject stackTraceToArray(Throwable exception) {
var elements = TruffleStackTrace.getStackTrace(exception);
if (elements == null) {
return ArrayLikeHelpers.empty();
Expand Down

0 comments on commit 4849ef9

Please sign in to comment.