From f4660b6bc15ce0621950e75717e7d13352a1f9a3 Mon Sep 17 00:00:00 2001 From: Konstantin Nazarov Date: Sun, 6 Oct 2024 20:06:01 +0100 Subject: [PATCH] Allow disassembling continuations and stack frames as well --- src/stdlib.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/stdlib.cpp b/src/stdlib.cpp index 44210f8..ebe1c86 100644 --- a/src/stdlib.cpp +++ b/src/stdlib.cpp @@ -543,8 +543,22 @@ Result stdlib_disassemble(const StackFrame& stack) { auto val = TRY(params.get(0)); - if (!val.is()) return ERROR(TypeMismatch); - auto disassembled = Value(TRY(val.to()->disassemble())); + Value disassembled; + + if (val.is()) { + disassembled = Value(TRY(val.to()->disassemble())); + } else if (val.is()) { + auto frame = TRY(val.to()->frame()); + auto fun = TRY(frame.fun()); + if (!fun.is()) return ERROR(TypeMismatch); + disassembled = Value(TRY(fun.to()->disassemble())); + } else if (val.is()) { + auto fun = TRY(val.to()->fun()); + if (!fun.is()) return ERROR(TypeMismatch); + disassembled = Value(TRY(fun.to()->disassemble())); + } else { + return ERROR(TypeMismatch); + } auto res = TRY(stack.set(0, disassembled));