summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/system/vm/assemble.scm5
-rw-r--r--module/system/vm/disasm.scm2
2 files changed, 6 insertions, 1 deletions
diff --git a/module/system/vm/assemble.scm b/module/system/vm/assemble.scm
index 20ea7b5c1..26bc2727b 100644
--- a/module/system/vm/assemble.scm
+++ b/module/system/vm/assemble.scm
@@ -355,6 +355,11 @@
(push-code! `(make-int16 ,(ash x -8) ,(logand x (1- (ash 1 8)))))))
(else
;; Other cases
+ (if (> (+ nargs nlocs) 255)
+ (error "too many locals" nargs nlocs))
+ ;; really it should be a flag..
+ (if (> nrest 1) (error "nrest should be 0 or 1" nrest))
+ (if (> next 255) (error "too many externals" next))
(push-code! (object->code nargs))
(push-code! (object->code nrest))
(push-code! (object->code nlocs))
diff --git a/module/system/vm/disasm.scm b/module/system/vm/disasm.scm
index 5ec1c004b..efb8ae396 100644
--- a/module/system/vm/disasm.scm
+++ b/module/system/vm/disasm.scm
@@ -109,7 +109,7 @@
(do ((n 0 (1+ n))
(l exts (cdr l)))
((null? l) (newline))
- (print-info n (car l) #f))))
+ (print-info n (car l) #f #f))))
(define-macro (unless test . body)
`(if (not ,test) (begin ,@body)))