1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 12:20:20 +02:00

All arities serialize a "closure" binding

* module/language/cps/compile-bytecode.scm (compile-function): Always
  define a 'closure binding in slot 0.
* module/system/vm/frame.scm (available-bindings): No need to futz
  around not having a closure binding.
* module/system/vm/debug.scm (arity-arguments-alist): Expect a closure
  binding.
* test-suite/tests/rtl.test: Emit definitions for the closure.
This commit is contained in:
Andy Wingo 2015-11-26 16:47:17 +01:00
parent 02fc5a772b
commit e5d7c0f13b
4 changed files with 31 additions and 18 deletions

View file

@ -277,9 +277,7 @@
(if n
(match (vector-ref defs n)
(#(name def-offset slot representation)
;; Binding 0 is the closure, and is not present
;; in arity-definitions.
(cons (make-binding (1+ n) name slot representation)
(cons (make-binding n name slot representation)
(lp (1+ n)))))
'()))))
(lp (1+ n) (- offset (vector-ref parsed n)))))))