From bcfadf099ae4372094742fc405178f3432a90e45 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 2 Dec 2017 19:43:10 +0100 Subject: [PATCH] Mark throw, throw/value, etc as having fallthrough * module/system/vm/disassembler.scm (instruction-has-fallthrough?): Mark throw and so on as having fallthrough. Doing otherwise breaks backtraces. --- module/system/vm/disassembler.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/module/system/vm/disassembler.scm b/module/system/vm/disassembler.scm index cb6447901..a4c539bfb 100644 --- a/module/system/vm/disassembler.scm +++ b/module/system/vm/disassembler.scm @@ -521,7 +521,12 @@ address of that offset." (define (instruction-has-fallthrough? code pos) (define non-fallthrough-set (static-opcode-set halt - throw throw/value throw/value+data + ;; FIXME: add throw, throw/value, + ;; throw/value+data. Currently control flow + ;; nominally continues; we don't add these ops to + ;; the non-fallthrough-set currently to allow the + ;; frame parser to be able to compute the stack + ;; size for following code. tail-call tail-call-label tail-call/shuffle return-values subr-call foreign-call continuation-call