LilyPond-Ruby 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/etc/fonts/conf.d/10-hinting-slight.conf +15 -0
- data/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +83 -0
- data/etc/fonts/conf.d/11-lcdfilter-default.conf +17 -0
- data/etc/fonts/conf.d/20-unhint-small-vera.conf +49 -0
- data/etc/fonts/conf.d/30-metric-aliases.conf +637 -0
- data/etc/fonts/conf.d/40-nonlatin.conf +332 -0
- data/etc/fonts/conf.d/45-generic.conf +136 -0
- data/etc/fonts/conf.d/45-latin.conf +301 -0
- data/etc/fonts/conf.d/48-spacing.conf +16 -0
- data/etc/fonts/conf.d/49-sansserif.conf +22 -0
- data/etc/fonts/conf.d/50-user.conf +16 -0
- data/etc/fonts/conf.d/51-local.conf +7 -0
- data/etc/fonts/conf.d/60-generic.conf +64 -0
- data/etc/fonts/conf.d/60-latin.conf +88 -0
- data/etc/fonts/conf.d/65-fonts-persian.conf +418 -0
- data/etc/fonts/conf.d/65-nonlatin.conf +228 -0
- data/etc/fonts/conf.d/69-unifont.conf +28 -0
- data/etc/fonts/conf.d/80-delicious.conf +19 -0
- data/etc/fonts/conf.d/90-synthetic.conf +64 -0
- data/etc/fonts/conf.d/README +23 -0
- data/etc/fonts/fonts.conf +101 -0
- data/etc/relocate/fontconfig.reloc +2 -0
- data/etc/relocate/guile.reloc +2 -0
- data/etc/relocate/libexec.reloc +1 -0
- data/lib/guile/2.2/ccache/ice-9/and-let-star.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/arrays.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/atomic.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/binary-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/boot-9.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/buffered-input.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/calling.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/channel.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/command-line.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/common-list.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/control.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/curried-definitions.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/debug.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/deprecated.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/documentation.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/eval-string.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/eval.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/expect.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/fdes-finalizers.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/format.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ftw.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/futures.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/gap-buffer.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/getopt-long.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/hash-table.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/hcons.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/history.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/i18n.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/iconv.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/lineio.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/list.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/local-eval.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ls.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/mapping.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/match.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/networking.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/null.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/occam-channel.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/optargs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/cache.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/codegen.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/simplify-tree.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/string-peg.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/using-parsers.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/poe.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/poll.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/popen.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/posix.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/pretty-print.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/psyntax-pp.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/q.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/r5rs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/rdelim.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/receive.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/regex.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/runq.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/rw.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/safe-r5rs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/safe.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/sandbox.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/save-stack.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/scm-style-repl.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/serialize.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/session.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/slib.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/stack-catch.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/streams.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/string-fun.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/suspendable-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/syncase.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/textual-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/threads.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/time.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/top-repl.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/unicode.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/vlist.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/weak-vector.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/compile-scheme.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/parse.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/bytecode/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/bytecode.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/closure-conversion.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/compile-bytecode.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/constructors.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/contification.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/cse.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/dce.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/effects-analysis.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/elide-values.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/handle-interrupts.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/intmap.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/intset.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/licm.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/optimize.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/peel-loops.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/prune-bailouts.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/prune-top-level-scopes.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/reify-primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/renumber.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/rotate-loops.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/self-references.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/simplify.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/slot-allocation.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/specialize-numbers.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/specialize-primcalls.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/split-rec.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/type-checks.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/type-fold.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/types.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/utils.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/verify.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/with-cps.go +0 -0
- data/lib/guile/2.2/ccache/language/cps.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/array.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/base.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/function.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/impl.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/parse.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/tokenize.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/bindings.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/boot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/falias.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/lexer.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/parser.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime/function-slot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime/value-slot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/decompile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/analyze.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/canonicalize.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/compile-cps.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/debug.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/effects.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/fix-letrec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/optimize.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/peval.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/value/spec.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/accessors.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/active-slot.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/composite-slot.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/describe.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/internal.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/save.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/simple.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/stklos.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/bitwise.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/fixnums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/flonums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/base.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/bytevectors.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/conditions.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/control.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/enums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/eval.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/exceptions.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/files.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/hashtables.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/io/ports.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/io/simple.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/lists.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/mutable-pairs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/mutable-strings.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/programs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/r5rs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/inspection.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/procedural.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/syntactic.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/sorting.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/syntax-case.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/unicode.go +0 -0
- data/lib/guile/2.2/ccache/rnrs.go +0 -0
- data/lib/guile/2.2/ccache/scripts/api-diff.go +0 -0
- data/lib/guile/2.2/ccache/scripts/autofrisk.go +0 -0
- data/lib/guile/2.2/ccache/scripts/compile.go +0 -0
- data/lib/guile/2.2/ccache/scripts/disassemble.go +0 -0
- data/lib/guile/2.2/ccache/scripts/display-commentary.go +0 -0
- data/lib/guile/2.2/ccache/scripts/doc-snarf.go +0 -0
- data/lib/guile/2.2/ccache/scripts/frisk.go +0 -0
- data/lib/guile/2.2/ccache/scripts/generate-autoload.go +0 -0
- data/lib/guile/2.2/ccache/scripts/help.go +0 -0
- data/lib/guile/2.2/ccache/scripts/lint.go +0 -0
- data/lib/guile/2.2/ccache/scripts/list.go +0 -0
- data/lib/guile/2.2/ccache/scripts/punify.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-rfc822.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-scheme-source.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-text-outline.go +0 -0
- data/lib/guile/2.2/ccache/scripts/scan-api.go +0 -0
- data/lib/guile/2.2/ccache/scripts/snarf-check-and-output-texi.go +0 -0
- data/lib/guile/2.2/ccache/scripts/snarf-guile-m4-docs.go +0 -0
- data/lib/guile/2.2/ccache/scripts/summarize-guile-TODO.go +0 -0
- data/lib/guile/2.2/ccache/scripts/use2dot.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-1.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-10.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-11.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-111.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-13.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-14.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-16.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-17.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-18.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-19.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-2.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-26.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-27.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-28.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-31.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-34.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-35.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-37.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-38.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-39.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-4/gnu.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-4.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-41.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-42.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-43.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-45.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-6.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-60.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-64.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-67.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-69.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-71.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-8.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-88.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-9/gnu.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-9.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-98.go +0 -0
- data/lib/guile/2.2/ccache/statprof.go +0 -0
- data/lib/guile/2.2/ccache/sxml/apply-templates.go +0 -0
- data/lib/guile/2.2/ccache/sxml/fold.go +0 -0
- data/lib/guile/2.2/ccache/sxml/match.go +0 -0
- data/lib/guile/2.2/ccache/sxml/simple.go +0 -0
- data/lib/guile/2.2/ccache/sxml/ssax/input-parse.go +0 -0
- data/lib/guile/2.2/ccache/sxml/ssax.go +0 -0
- data/lib/guile/2.2/ccache/sxml/transform.go +0 -0
- data/lib/guile/2.2/ccache/sxml/xpath.go +0 -0
- data/lib/guile/2.2/ccache/system/base/ck.go +0 -0
- data/lib/guile/2.2/ccache/system/base/compile.go +0 -0
- data/lib/guile/2.2/ccache/system/base/lalr.go +0 -0
- data/lib/guile/2.2/ccache/system/base/language.go +0 -0
- data/lib/guile/2.2/ccache/system/base/message.go +0 -0
- data/lib/guile/2.2/ccache/system/base/pmatch.go +0 -0
- data/lib/guile/2.2/ccache/system/base/syntax.go +0 -0
- data/lib/guile/2.2/ccache/system/base/target.go +0 -0
- data/lib/guile/2.2/ccache/system/base/types.go +0 -0
- data/lib/guile/2.2/ccache/system/foreign-object.go +0 -0
- data/lib/guile/2.2/ccache/system/foreign.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/command.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/common.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/coop-server.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/debug.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/error-handling.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/repl.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/server.go +0 -0
- data/lib/guile/2.2/ccache/system/syntax.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/assembler.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/coverage.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/debug.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/disassembler.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/dwarf.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/elf.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/frame.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/inspect.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/linker.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/loader.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/program.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/trace.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/trap-state.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/traps.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/vm.go +0 -0
- data/lib/guile/2.2/ccache/system/xref.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/docbook.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/html.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/indexing.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/plain-text.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/reflection.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/serialize.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/string-utils.go +0 -0
- data/lib/guile/2.2/ccache/texinfo.go +0 -0
- data/lib/guile/2.2/ccache/web/client.go +0 -0
- data/lib/guile/2.2/ccache/web/http.go +0 -0
- data/lib/guile/2.2/ccache/web/request.go +0 -0
- data/lib/guile/2.2/ccache/web/response.go +0 -0
- data/lib/guile/2.2/ccache/web/server/http.go +0 -0
- data/lib/guile/2.2/ccache/web/server.go +0 -0
- data/lib/guile/2.2/ccache/web/uri.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
- data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
- data/share/emacs/site-lisp/lilypond-indent.el +605 -0
- data/share/emacs/site-lisp/lilypond-init.el +21 -0
- data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
- data/share/emacs/site-lisp/lilypond-song.el +556 -0
- data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
- data/share/emacs/site-lisp/lilypond-words.el +1428 -0
- data/share/guile/2.2/guile-procedures.txt +8860 -0
- data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
- data/share/guile/2.2/ice-9/arrays.scm +70 -0
- data/share/guile/2.2/ice-9/atomic.scm +38 -0
- data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
- data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
- data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
- data/share/guile/2.2/ice-9/calling.scm +326 -0
- data/share/guile/2.2/ice-9/channel.scm +170 -0
- data/share/guile/2.2/ice-9/command-line.scm +477 -0
- data/share/guile/2.2/ice-9/common-list.scm +278 -0
- data/share/guile/2.2/ice-9/control.scm +110 -0
- data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
- data/share/guile/2.2/ice-9/debug.scm +25 -0
- data/share/guile/2.2/ice-9/deprecated.scm +93 -0
- data/share/guile/2.2/ice-9/documentation.scm +203 -0
- data/share/guile/2.2/ice-9/eval-string.scm +90 -0
- data/share/guile/2.2/ice-9/eval.scm +723 -0
- data/share/guile/2.2/ice-9/expect.scm +171 -0
- data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
- data/share/guile/2.2/ice-9/format.scm +1626 -0
- data/share/guile/2.2/ice-9/ftw.scm +564 -0
- data/share/guile/2.2/ice-9/futures.scm +308 -0
- data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
- data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
- data/share/guile/2.2/ice-9/hash-table.scm +45 -0
- data/share/guile/2.2/ice-9/hcons.scm +80 -0
- data/share/guile/2.2/ice-9/history.scm +65 -0
- data/share/guile/2.2/ice-9/i18n.scm +531 -0
- data/share/guile/2.2/ice-9/iconv.scm +95 -0
- data/share/guile/2.2/ice-9/lineio.scm +115 -0
- data/share/guile/2.2/ice-9/list.scm +36 -0
- data/share/guile/2.2/ice-9/local-eval.scm +261 -0
- data/share/guile/2.2/ice-9/ls.scm +94 -0
- data/share/guile/2.2/ice-9/mapping.scm +118 -0
- data/share/guile/2.2/ice-9/match.scm +59 -0
- data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
- data/share/guile/2.2/ice-9/networking.scm +94 -0
- data/share/guile/2.2/ice-9/null.scm +34 -0
- data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
- data/share/guile/2.2/ice-9/optargs.scm +381 -0
- data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
- data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
- data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
- data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
- data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
- data/share/guile/2.2/ice-9/peg.scm +42 -0
- data/share/guile/2.2/ice-9/poe.scm +116 -0
- data/share/guile/2.2/ice-9/poll.scm +172 -0
- data/share/guile/2.2/ice-9/popen.scm +178 -0
- data/share/guile/2.2/ice-9/ports.scm +566 -0
- data/share/guile/2.2/ice-9/posix.scm +75 -0
- data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
- data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
- data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
- data/share/guile/2.2/ice-9/q.scm +153 -0
- data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
- data/share/guile/2.2/ice-9/r5rs.scm +45 -0
- data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
- data/share/guile/2.2/ice-9/rdelim.scm +208 -0
- data/share/guile/2.2/ice-9/receive.scm +26 -0
- data/share/guile/2.2/ice-9/regex.scm +229 -0
- data/share/guile/2.2/ice-9/runq.scm +241 -0
- data/share/guile/2.2/ice-9/rw.scm +27 -0
- data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
- data/share/guile/2.2/ice-9/safe.scm +34 -0
- data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
- data/share/guile/2.2/ice-9/save-stack.scm +58 -0
- data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
- data/share/guile/2.2/ice-9/serialize.scm +114 -0
- data/share/guile/2.2/ice-9/session.scm +530 -0
- data/share/guile/2.2/ice-9/slib.scm +33 -0
- data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
- data/share/guile/2.2/ice-9/streams.scm +168 -0
- data/share/guile/2.2/ice-9/string-fun.scm +280 -0
- data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
- data/share/guile/2.2/ice-9/syncase.scm +37 -0
- data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
- data/share/guile/2.2/ice-9/threads.scm +392 -0
- data/share/guile/2.2/ice-9/time.scm +58 -0
- data/share/guile/2.2/ice-9/top-repl.scm +78 -0
- data/share/guile/2.2/ice-9/unicode.scm +26 -0
- data/share/guile/2.2/ice-9/vlist.scm +595 -0
- data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
- data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
- data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
- data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
- data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
- data/share/guile/2.2/language/bytecode/spec.scm +42 -0
- data/share/guile/2.2/language/bytecode.scm +104 -0
- data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
- data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
- data/share/guile/2.2/language/cps/constructors.scm +106 -0
- data/share/guile/2.2/language/cps/contification.scm +448 -0
- data/share/guile/2.2/language/cps/cse.scm +414 -0
- data/share/guile/2.2/language/cps/dce.scm +363 -0
- data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
- data/share/guile/2.2/language/cps/elide-values.scm +88 -0
- data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
- data/share/guile/2.2/language/cps/intmap.scm +765 -0
- data/share/guile/2.2/language/cps/intset.scm +830 -0
- data/share/guile/2.2/language/cps/licm.scm +308 -0
- data/share/guile/2.2/language/cps/optimize.scm +135 -0
- data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
- data/share/guile/2.2/language/cps/primitives.scm +141 -0
- data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
- data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
- data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
- data/share/guile/2.2/language/cps/renumber.scm +217 -0
- data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
- data/share/guile/2.2/language/cps/self-references.scm +79 -0
- data/share/guile/2.2/language/cps/simplify.scm +274 -0
- data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
- data/share/guile/2.2/language/cps/spec.scm +51 -0
- data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
- data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
- data/share/guile/2.2/language/cps/split-rec.scm +174 -0
- data/share/guile/2.2/language/cps/type-checks.scm +72 -0
- data/share/guile/2.2/language/cps/type-fold.scm +455 -0
- data/share/guile/2.2/language/cps/types.scm +1826 -0
- data/share/guile/2.2/language/cps/utils.scm +550 -0
- data/share/guile/2.2/language/cps/verify.scm +304 -0
- data/share/guile/2.2/language/cps/with-cps.scm +145 -0
- data/share/guile/2.2/language/cps.scm +358 -0
- data/share/guile/2.2/language/ecmascript/array.scm +121 -0
- data/share/guile/2.2/language/ecmascript/base.scm +251 -0
- data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
- data/share/guile/2.2/language/ecmascript/function.scm +78 -0
- data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
- data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
- data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
- data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
- data/share/guile/2.2/language/elisp/bindings.scm +107 -0
- data/share/guile/2.2/language/elisp/boot.el +617 -0
- data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
- data/share/guile/2.2/language/elisp/falias.scm +47 -0
- data/share/guile/2.2/language/elisp/lexer.scm +430 -0
- data/share/guile/2.2/language/elisp/parser.scm +222 -0
- data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
- data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
- data/share/guile/2.2/language/elisp/runtime.scm +153 -0
- data/share/guile/2.2/language/elisp/spec.scm +43 -0
- data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
- data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
- data/share/guile/2.2/language/scheme/spec.scm +63 -0
- data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
- data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
- data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
- data/share/guile/2.2/language/tree-il/debug.scm +246 -0
- data/share/guile/2.2/language/tree-il/effects.scm +591 -0
- data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
- data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
- data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
- data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
- data/share/guile/2.2/language/tree-il/spec.scm +46 -0
- data/share/guile/2.2/language/tree-il.scm +630 -0
- data/share/guile/2.2/language/value/spec.scm +30 -0
- data/share/guile/2.2/oop/goops/accessors.scm +72 -0
- data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
- data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
- data/share/guile/2.2/oop/goops/describe.scm +189 -0
- data/share/guile/2.2/oop/goops/internal.scm +30 -0
- data/share/guile/2.2/oop/goops/save.scm +874 -0
- data/share/guile/2.2/oop/goops/simple.scm +30 -0
- data/share/guile/2.2/oop/goops/stklos.scm +74 -0
- data/share/guile/2.2/oop/goops.scm +3176 -0
- data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
- data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
- data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
- data/share/guile/2.2/rnrs/base.scm +291 -0
- data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
- data/share/guile/2.2/rnrs/conditions.scm +225 -0
- data/share/guile/2.2/rnrs/control.scm +22 -0
- data/share/guile/2.2/rnrs/enums.scm +152 -0
- data/share/guile/2.2/rnrs/eval.scm +39 -0
- data/share/guile/2.2/rnrs/exceptions.scm +276 -0
- data/share/guile/2.2/rnrs/files.scm +96 -0
- data/share/guile/2.2/rnrs/hashtables.scm +190 -0
- data/share/guile/2.2/rnrs/io/ports.scm +554 -0
- data/share/guile/2.2/rnrs/io/simple.scm +167 -0
- data/share/guile/2.2/rnrs/lists.scm +55 -0
- data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
- data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
- data/share/guile/2.2/rnrs/programs.scm +22 -0
- data/share/guile/2.2/rnrs/r5rs.scm +34 -0
- data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
- data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
- data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
- data/share/guile/2.2/rnrs/sorting.scm +27 -0
- data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
- data/share/guile/2.2/rnrs/unicode.scm +104 -0
- data/share/guile/2.2/rnrs.scm +289 -0
- data/share/guile/2.2/scripts/api-diff.scm +179 -0
- data/share/guile/2.2/scripts/autofrisk.scm +218 -0
- data/share/guile/2.2/scripts/compile.scm +273 -0
- data/share/guile/2.2/scripts/disassemble.scm +38 -0
- data/share/guile/2.2/scripts/display-commentary.scm +67 -0
- data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
- data/share/guile/2.2/scripts/frisk.scm +290 -0
- data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
- data/share/guile/2.2/scripts/help.scm +188 -0
- data/share/guile/2.2/scripts/lint.scm +318 -0
- data/share/guile/2.2/scripts/list.scm +91 -0
- data/share/guile/2.2/scripts/punify.scm +87 -0
- data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
- data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
- data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
- data/share/guile/2.2/scripts/scan-api.scm +223 -0
- data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
- data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
- data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
- data/share/guile/2.2/scripts/use2dot.scm +110 -0
- data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
- data/share/guile/2.2/srfi/srfi-10.scm +89 -0
- data/share/guile/2.2/srfi/srfi-11.scm +146 -0
- data/share/guile/2.2/srfi/srfi-111.scm +37 -0
- data/share/guile/2.2/srfi/srfi-13.scm +132 -0
- data/share/guile/2.2/srfi/srfi-14.scm +99 -0
- data/share/guile/2.2/srfi/srfi-16.scm +51 -0
- data/share/guile/2.2/srfi/srfi-17.scm +174 -0
- data/share/guile/2.2/srfi/srfi-18.scm +382 -0
- data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
- data/share/guile/2.2/srfi/srfi-2.scm +31 -0
- data/share/guile/2.2/srfi/srfi-26.scm +66 -0
- data/share/guile/2.2/srfi/srfi-27.scm +96 -0
- data/share/guile/2.2/srfi/srfi-28.scm +34 -0
- data/share/guile/2.2/srfi/srfi-31.scm +35 -0
- data/share/guile/2.2/srfi/srfi-34.scm +84 -0
- data/share/guile/2.2/srfi/srfi-35.scm +351 -0
- data/share/guile/2.2/srfi/srfi-37.scm +234 -0
- data/share/guile/2.2/srfi/srfi-38.scm +207 -0
- data/share/guile/2.2/srfi/srfi-39.scm +55 -0
- data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
- data/share/guile/2.2/srfi/srfi-4.scm +118 -0
- data/share/guile/2.2/srfi/srfi-41.scm +505 -0
- data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
- data/share/guile/2.2/srfi/srfi-42.scm +66 -0
- data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
- data/share/guile/2.2/srfi/srfi-45.scm +93 -0
- data/share/guile/2.2/srfi/srfi-6.scm +29 -0
- data/share/guile/2.2/srfi/srfi-60.scm +73 -0
- data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
- data/share/guile/2.2/srfi/srfi-64.scm +55 -0
- data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
- data/share/guile/2.2/srfi/srfi-67.scm +88 -0
- data/share/guile/2.2/srfi/srfi-69.scm +336 -0
- data/share/guile/2.2/srfi/srfi-71.scm +267 -0
- data/share/guile/2.2/srfi/srfi-8.scm +31 -0
- data/share/guile/2.2/srfi/srfi-88.scm +53 -0
- data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
- data/share/guile/2.2/srfi/srfi-9.scm +351 -0
- data/share/guile/2.2/srfi/srfi-98.scm +44 -0
- data/share/guile/2.2/statprof.scm +988 -0
- data/share/guile/2.2/sxml/apply-templates.scm +102 -0
- data/share/guile/2.2/sxml/fold.scm +250 -0
- data/share/guile/2.2/sxml/match.scm +75 -0
- data/share/guile/2.2/sxml/simple.scm +408 -0
- data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
- data/share/guile/2.2/sxml/ssax.scm +265 -0
- data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
- data/share/guile/2.2/sxml/transform.scm +298 -0
- data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
- data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
- data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
- data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
- data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
- data/share/guile/2.2/sxml/xpath.scm +493 -0
- data/share/guile/2.2/system/base/ck.scm +55 -0
- data/share/guile/2.2/system/base/compile.scm +282 -0
- data/share/guile/2.2/system/base/lalr.scm +51 -0
- data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
- data/share/guile/2.2/system/base/language.scm +119 -0
- data/share/guile/2.2/system/base/message.scm +238 -0
- data/share/guile/2.2/system/base/pmatch.scm +68 -0
- data/share/guile/2.2/system/base/syntax.scm +299 -0
- data/share/guile/2.2/system/base/target.scm +152 -0
- data/share/guile/2.2/system/base/types.scm +561 -0
- data/share/guile/2.2/system/foreign-object.scm +91 -0
- data/share/guile/2.2/system/foreign.scm +200 -0
- data/share/guile/2.2/system/repl/command.scm +946 -0
- data/share/guile/2.2/system/repl/common.scm +263 -0
- data/share/guile/2.2/system/repl/coop-server.scm +200 -0
- data/share/guile/2.2/system/repl/debug.scm +210 -0
- data/share/guile/2.2/system/repl/describe.scm +347 -0
- data/share/guile/2.2/system/repl/error-handling.scm +183 -0
- data/share/guile/2.2/system/repl/repl.scm +233 -0
- data/share/guile/2.2/system/repl/server.scm +332 -0
- data/share/guile/2.2/system/syntax.scm +33 -0
- data/share/guile/2.2/system/vm/assembler.scm +2614 -0
- data/share/guile/2.2/system/vm/coverage.scm +351 -0
- data/share/guile/2.2/system/vm/debug.scm +766 -0
- data/share/guile/2.2/system/vm/disassembler.scm +658 -0
- data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
- data/share/guile/2.2/system/vm/elf.scm +1042 -0
- data/share/guile/2.2/system/vm/frame.scm +485 -0
- data/share/guile/2.2/system/vm/inspect.scm +188 -0
- data/share/guile/2.2/system/vm/linker.scm +732 -0
- data/share/guile/2.2/system/vm/loader.scm +27 -0
- data/share/guile/2.2/system/vm/program.scm +312 -0
- data/share/guile/2.2/system/vm/trace.scm +121 -0
- data/share/guile/2.2/system/vm/trap-state.scm +302 -0
- data/share/guile/2.2/system/vm/traps.scm +608 -0
- data/share/guile/2.2/system/vm/vm.scm +32 -0
- data/share/guile/2.2/system/xref.scm +369 -0
- data/share/guile/2.2/texinfo/docbook.scm +240 -0
- data/share/guile/2.2/texinfo/html.scm +279 -0
- data/share/guile/2.2/texinfo/indexing.scm +75 -0
- data/share/guile/2.2/texinfo/plain-text.scm +322 -0
- data/share/guile/2.2/texinfo/reflection.scm +585 -0
- data/share/guile/2.2/texinfo/serialize.scm +300 -0
- data/share/guile/2.2/texinfo/string-utils.scm +410 -0
- data/share/guile/2.2/texinfo.scm +1263 -0
- data/share/guile/2.2/web/client.scm +513 -0
- data/share/guile/2.2/web/http.scm +2043 -0
- data/share/guile/2.2/web/request.scm +326 -0
- data/share/guile/2.2/web/response.scm +379 -0
- data/share/guile/2.2/web/server/http.scm +183 -0
- data/share/guile/2.2/web/server.scm +397 -0
- data/share/guile/2.2/web/uri.scm +552 -0
- data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
- data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
- data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
- data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
- data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
- data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
- data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
- data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
- data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
- data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
- data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
- data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
- data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
- data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
- data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
- data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
- data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
- data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
- data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
- data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
- data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
- data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
- data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
- data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
- data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
- data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
- data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
- data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
- data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
- data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
- data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
- data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
- data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
- data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
- data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
- data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
- data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
- data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
- data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
- data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
- data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
- data/share/lilypond/2.24.1/ly/english.ly +23 -0
- data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
- data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
- data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
- data/share/lilypond/2.24.1/ly/festival.ly +38 -0
- data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
- data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
- data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
- data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
- data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
- data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
- data/share/lilypond/2.24.1/ly/init.ly +96 -0
- data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
- data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
- data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
- data/share/lilypond/2.24.1/ly/makam.ly +166 -0
- data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
- data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
- data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
- data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
- data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
- data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
- data/share/lilypond/2.24.1/ly/persian.ly +335 -0
- data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
- data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
- data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
- data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
- data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
- data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
- data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
- data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
- data/share/lilypond/2.24.1/ly/satb.ly +214 -0
- data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
- data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
- data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
- data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
- data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
- data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
- data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
- data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
- data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
- data/share/lilypond/2.24.1/ly/swing.ly +362 -0
- data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
- data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
- data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
- data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
- data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
- data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
- data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
- data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
- data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
- data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/book_base.py +331 -0
- data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
- data/share/lilypond/2.24.1/python/book_html.py +178 -0
- data/share/lilypond/2.24.1/python/book_latex.py +373 -0
- data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
- data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
- data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
- data/share/lilypond/2.24.1/python/langdefs.py +131 -0
- data/share/lilypond/2.24.1/python/lilylib.py +141 -0
- data/share/lilypond/2.24.1/python/midi.py +212 -0
- data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
- data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
- data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
- data/share/lilypond/2.24.1/python/utilities.py +280 -0
- data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
- data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
- data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
- data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
- data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
- data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
- data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
- data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
- data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
- data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
- data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
- data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
- data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
- data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
- data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
- data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
- data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
- data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
- data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
- data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
- data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
- data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
- data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
- data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
- data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
- data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
- data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
- data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
- data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
- data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
- data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
- data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
- data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
- data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
- data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
- data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
- data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
- data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
- data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
- data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
- data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
- data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
- data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
- data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
- data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
- data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
- data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
- data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
- data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
- data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
- data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
- data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
- data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
- data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
- data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
- data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
- data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
- data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
- data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
- data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
- data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
- data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
- data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
- data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
- data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
- data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
- data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
- data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
- data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
- data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
- data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
- data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
- data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
- data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
- data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
- data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
- data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
- data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
- data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
- data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
- data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
- data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
- data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
- data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
- data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
- data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
- data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
- data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
- metadata +1108 -1
|
@@ -0,0 +1,1058 @@
|
|
|
1
|
+
;; Continuation-passing style (CPS) intermediate language (IL)
|
|
2
|
+
|
|
3
|
+
;; Copyright (C) 2013-2020 Free Software Foundation, Inc.
|
|
4
|
+
|
|
5
|
+
;;;; This library is free software; you can redistribute it and/or
|
|
6
|
+
;;;; modify it under the terms of the GNU Lesser General Public
|
|
7
|
+
;;;; License as published by the Free Software Foundation; either
|
|
8
|
+
;;;; version 3 of the License, or (at your option) any later version.
|
|
9
|
+
;;;;
|
|
10
|
+
;;;; This library is distributed in the hope that it will be useful,
|
|
11
|
+
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
13
|
+
;;;; Lesser General Public License for more details.
|
|
14
|
+
;;;;
|
|
15
|
+
;;;; You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
;;;; License along with this library; if not, write to the Free Software
|
|
17
|
+
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
18
|
+
|
|
19
|
+
;;; Commentary:
|
|
20
|
+
;;;
|
|
21
|
+
;;; A module to assign stack slots to variables in a CPS term.
|
|
22
|
+
;;;
|
|
23
|
+
;;; Code:
|
|
24
|
+
|
|
25
|
+
(define-module (language cps slot-allocation)
|
|
26
|
+
#:use-module (ice-9 control)
|
|
27
|
+
#:use-module (ice-9 match)
|
|
28
|
+
#:use-module (srfi srfi-1)
|
|
29
|
+
#:use-module (srfi srfi-9)
|
|
30
|
+
#:use-module (srfi srfi-11)
|
|
31
|
+
#:use-module (srfi srfi-26)
|
|
32
|
+
#:use-module (language cps)
|
|
33
|
+
#:use-module (language cps utils)
|
|
34
|
+
#:use-module (language cps intmap)
|
|
35
|
+
#:use-module (language cps intset)
|
|
36
|
+
#:export (allocate-slots
|
|
37
|
+
lookup-slot
|
|
38
|
+
lookup-maybe-slot
|
|
39
|
+
lookup-representation
|
|
40
|
+
lookup-constant-value
|
|
41
|
+
lookup-maybe-constant-value
|
|
42
|
+
lookup-nlocals
|
|
43
|
+
lookup-call-proc-slot
|
|
44
|
+
lookup-parallel-moves
|
|
45
|
+
lookup-slot-map))
|
|
46
|
+
|
|
47
|
+
(define-record-type $allocation
|
|
48
|
+
(make-allocation slots representations constant-values call-allocs
|
|
49
|
+
shuffles frame-size)
|
|
50
|
+
allocation?
|
|
51
|
+
|
|
52
|
+
;; A map of VAR to slot allocation. A slot allocation is an integer,
|
|
53
|
+
;; if the variable has been assigned a slot.
|
|
54
|
+
;;
|
|
55
|
+
(slots allocation-slots)
|
|
56
|
+
|
|
57
|
+
;; A map of VAR to representation. A representation is 'scm, 'f64,
|
|
58
|
+
;; 'u64, or 's64.
|
|
59
|
+
;;
|
|
60
|
+
(representations allocation-representations)
|
|
61
|
+
|
|
62
|
+
;; A map of VAR to constant value, for variables with constant values.
|
|
63
|
+
;;
|
|
64
|
+
(constant-values allocation-constant-values)
|
|
65
|
+
|
|
66
|
+
;; A map of LABEL to /call allocs/, for expressions that continue to
|
|
67
|
+
;; $kreceive continuations: non-tail calls and $prompt expressions.
|
|
68
|
+
;;
|
|
69
|
+
;; A call alloc contains two pieces of information: the call's /proc
|
|
70
|
+
;; slot/ and a /dead slot map/. The proc slot indicates the slot of a
|
|
71
|
+
;; procedure in a procedure call, or where the procedure would be in a
|
|
72
|
+
;; multiple-value return.
|
|
73
|
+
;;
|
|
74
|
+
;; The dead slot map indicates, what slots should be ignored by GC
|
|
75
|
+
;; when marking the frame. A dead slot map is a bitfield, as an
|
|
76
|
+
;; integer.
|
|
77
|
+
;;
|
|
78
|
+
(call-allocs allocation-call-allocs)
|
|
79
|
+
|
|
80
|
+
;; A map of LABEL to /parallel moves/. Parallel moves shuffle locals
|
|
81
|
+
;; into position for a $call, $callk, or $values, or shuffle returned
|
|
82
|
+
;; values back into place in a $kreceive.
|
|
83
|
+
;;
|
|
84
|
+
;; A set of moves is expressed as an ordered list of (SRC . DST)
|
|
85
|
+
;; moves, where SRC and DST are slots. This may involve a temporary
|
|
86
|
+
;; variable.
|
|
87
|
+
;;
|
|
88
|
+
(shuffles allocation-shuffles)
|
|
89
|
+
|
|
90
|
+
;; The number of local slots needed for this function. Because we can
|
|
91
|
+
;; contify common clause tails, we use one frame size for all clauses
|
|
92
|
+
;; to avoid having to adjust the frame size when continuing to labels
|
|
93
|
+
;; from other clauses.
|
|
94
|
+
;;
|
|
95
|
+
(frame-size allocation-frame-size))
|
|
96
|
+
|
|
97
|
+
(define-record-type $call-alloc
|
|
98
|
+
(make-call-alloc proc-slot slot-map)
|
|
99
|
+
call-alloc?
|
|
100
|
+
(proc-slot call-alloc-proc-slot)
|
|
101
|
+
(slot-map call-alloc-slot-map))
|
|
102
|
+
|
|
103
|
+
(define (lookup-maybe-slot var allocation)
|
|
104
|
+
(intmap-ref (allocation-slots allocation) var (lambda (_) #f)))
|
|
105
|
+
|
|
106
|
+
(define (lookup-slot var allocation)
|
|
107
|
+
(intmap-ref (allocation-slots allocation) var))
|
|
108
|
+
|
|
109
|
+
(define (lookup-representation var allocation)
|
|
110
|
+
(intmap-ref (allocation-representations allocation) var))
|
|
111
|
+
|
|
112
|
+
(define *absent* (list 'absent))
|
|
113
|
+
|
|
114
|
+
(define (lookup-constant-value var allocation)
|
|
115
|
+
(let ((value (intmap-ref (allocation-constant-values allocation) var
|
|
116
|
+
(lambda (_) *absent*))))
|
|
117
|
+
(when (eq? value *absent*)
|
|
118
|
+
(error "Variable does not have constant value" var))
|
|
119
|
+
value))
|
|
120
|
+
|
|
121
|
+
(define (lookup-maybe-constant-value var allocation)
|
|
122
|
+
(let ((value (intmap-ref (allocation-constant-values allocation) var
|
|
123
|
+
(lambda (_) *absent*))))
|
|
124
|
+
(if (eq? value *absent*)
|
|
125
|
+
(values #f #f)
|
|
126
|
+
(values #t value))))
|
|
127
|
+
|
|
128
|
+
(define (lookup-call-alloc k allocation)
|
|
129
|
+
(intmap-ref (allocation-call-allocs allocation) k))
|
|
130
|
+
|
|
131
|
+
(define (lookup-call-proc-slot k allocation)
|
|
132
|
+
(or (call-alloc-proc-slot (lookup-call-alloc k allocation))
|
|
133
|
+
(error "Call has no proc slot" k)))
|
|
134
|
+
|
|
135
|
+
(define (lookup-parallel-moves k allocation)
|
|
136
|
+
(intmap-ref (allocation-shuffles allocation) k))
|
|
137
|
+
|
|
138
|
+
(define (lookup-slot-map k allocation)
|
|
139
|
+
(or (call-alloc-slot-map (lookup-call-alloc k allocation))
|
|
140
|
+
(error "Call has no slot map" k)))
|
|
141
|
+
|
|
142
|
+
(define (lookup-nlocals allocation)
|
|
143
|
+
(allocation-frame-size allocation))
|
|
144
|
+
|
|
145
|
+
(define-syntax-rule (persistent-intmap2 exp)
|
|
146
|
+
(call-with-values (lambda () exp)
|
|
147
|
+
(lambda (a b)
|
|
148
|
+
(values (persistent-intmap a) (persistent-intmap b)))))
|
|
149
|
+
|
|
150
|
+
(define (compute-defs-and-uses cps)
|
|
151
|
+
"Return two LABEL->VAR... maps indicating values defined at and used
|
|
152
|
+
by a label, respectively."
|
|
153
|
+
(define (vars->intset vars)
|
|
154
|
+
(fold (lambda (var set) (intset-add set var)) empty-intset vars))
|
|
155
|
+
(persistent-intmap2
|
|
156
|
+
(intmap-fold
|
|
157
|
+
(lambda (label cont defs uses)
|
|
158
|
+
(define (get-defs k)
|
|
159
|
+
(match (intmap-ref cps k)
|
|
160
|
+
(($ $kargs names vars) (vars->intset vars))
|
|
161
|
+
(_ empty-intset)))
|
|
162
|
+
(define (return d u)
|
|
163
|
+
(values (intmap-add! defs label d)
|
|
164
|
+
(intmap-add! uses label u)))
|
|
165
|
+
(match cont
|
|
166
|
+
(($ $kfun src meta self)
|
|
167
|
+
(return (intset self) empty-intset))
|
|
168
|
+
(($ $kargs _ _ ($ $continue k src exp))
|
|
169
|
+
(match exp
|
|
170
|
+
((or ($ $const) ($ $closure))
|
|
171
|
+
(return (get-defs k) empty-intset))
|
|
172
|
+
(($ $call proc args)
|
|
173
|
+
(return (get-defs k) (intset-add (vars->intset args) proc)))
|
|
174
|
+
(($ $callk _ proc args)
|
|
175
|
+
(return (get-defs k) (intset-add (vars->intset args) proc)))
|
|
176
|
+
(($ $primcall name args)
|
|
177
|
+
(return (get-defs k) (vars->intset args)))
|
|
178
|
+
(($ $branch kt ($ $primcall name args))
|
|
179
|
+
(return empty-intset (vars->intset args)))
|
|
180
|
+
(($ $branch kt ($ $values args))
|
|
181
|
+
(return empty-intset (vars->intset args)))
|
|
182
|
+
(($ $values args)
|
|
183
|
+
(return (get-defs k) (vars->intset args)))
|
|
184
|
+
(($ $prompt escape? tag handler)
|
|
185
|
+
(return empty-intset (intset tag)))))
|
|
186
|
+
(($ $kclause arity body alt)
|
|
187
|
+
(return (get-defs body) empty-intset))
|
|
188
|
+
(($ $kreceive arity kargs)
|
|
189
|
+
(return (get-defs kargs) empty-intset))
|
|
190
|
+
(($ $ktail)
|
|
191
|
+
(return empty-intset empty-intset))))
|
|
192
|
+
cps
|
|
193
|
+
empty-intmap
|
|
194
|
+
empty-intmap)))
|
|
195
|
+
|
|
196
|
+
(define (compute-reverse-control-flow-order preds)
|
|
197
|
+
"Return a LABEL->ORDER bijection where ORDER is a contiguous set of
|
|
198
|
+
integers starting from 0 and incrementing in sort order. There is a
|
|
199
|
+
precondition that labels in PREDS are already renumbered in reverse post
|
|
200
|
+
order."
|
|
201
|
+
(define (has-back-edge? preds)
|
|
202
|
+
(let/ec return
|
|
203
|
+
(intmap-fold (lambda (label labels)
|
|
204
|
+
(intset-fold (lambda (pred)
|
|
205
|
+
(if (<= label pred)
|
|
206
|
+
(return #t)
|
|
207
|
+
(values)))
|
|
208
|
+
labels)
|
|
209
|
+
(values))
|
|
210
|
+
preds)
|
|
211
|
+
#f))
|
|
212
|
+
(if (has-back-edge? preds)
|
|
213
|
+
;; This is more involved than forward control flow because not all
|
|
214
|
+
;; live labels are reachable from the tail.
|
|
215
|
+
(persistent-intmap
|
|
216
|
+
(fold2 (lambda (component order n)
|
|
217
|
+
(intset-fold (lambda (label order n)
|
|
218
|
+
(values (intmap-add! order label n)
|
|
219
|
+
(1+ n)))
|
|
220
|
+
component order n))
|
|
221
|
+
(reverse (compute-sorted-strongly-connected-components preds))
|
|
222
|
+
empty-intmap 0))
|
|
223
|
+
;; Just reverse forward control flow.
|
|
224
|
+
(let ((max (intmap-prev preds)))
|
|
225
|
+
(intmap-map (lambda (label labels) (- max label)) preds))))
|
|
226
|
+
|
|
227
|
+
(define* (add-prompt-control-flow-edges conts succs #:key complete?)
|
|
228
|
+
"For all prompts in DFG in the range [MIN-LABEL, MIN-LABEL +
|
|
229
|
+
LABEL-COUNT), invoke F with arguments PROMPT, HANDLER, and BODY for each
|
|
230
|
+
body continuation in the prompt."
|
|
231
|
+
(define (intset-filter pred set)
|
|
232
|
+
(intset-fold (lambda (i set)
|
|
233
|
+
(if (pred i) set (intset-remove set i)))
|
|
234
|
+
set
|
|
235
|
+
set))
|
|
236
|
+
(define (intset-any pred set)
|
|
237
|
+
(intset-fold (lambda (i res)
|
|
238
|
+
(if (or res (pred i)) #t res))
|
|
239
|
+
set
|
|
240
|
+
#f))
|
|
241
|
+
(define (compute-prompt-body label)
|
|
242
|
+
(persistent-intset
|
|
243
|
+
(let visit-cont ((label label) (level 1) (labels empty-intset))
|
|
244
|
+
(cond
|
|
245
|
+
((zero? level) labels)
|
|
246
|
+
((intset-ref labels label) labels)
|
|
247
|
+
(else
|
|
248
|
+
(match (intmap-ref conts label)
|
|
249
|
+
(($ $ktail)
|
|
250
|
+
;; Possible for bailouts; never reached and not part of
|
|
251
|
+
;; prompt body.
|
|
252
|
+
labels)
|
|
253
|
+
(cont
|
|
254
|
+
(let ((labels (intset-add! labels label)))
|
|
255
|
+
(match cont
|
|
256
|
+
(($ $kreceive arity k) (visit-cont k level labels))
|
|
257
|
+
(($ $kargs names syms ($ $continue k src ($ $primcall 'wind)))
|
|
258
|
+
(visit-cont k (1+ level) labels))
|
|
259
|
+
(($ $kargs names syms
|
|
260
|
+
($ $continue k src ($ $prompt escape? tag handler)))
|
|
261
|
+
(visit-cont handler level (visit-cont k (1+ level) labels)))
|
|
262
|
+
(($ $kargs names syms ($ $continue k src ($ $primcall 'unwind)))
|
|
263
|
+
(visit-cont k (1- level) labels))
|
|
264
|
+
(($ $kargs names syms ($ $continue k src ($ $branch kt)))
|
|
265
|
+
(visit-cont k level (visit-cont kt level labels)))
|
|
266
|
+
(($ $kargs names syms ($ $continue k src exp))
|
|
267
|
+
(visit-cont k level labels)))))))))))
|
|
268
|
+
(define (visit-prompt label handler succs)
|
|
269
|
+
(let ((body (compute-prompt-body label)))
|
|
270
|
+
(define (out-or-back-edge? label)
|
|
271
|
+
;; Most uses of visit-prompt-control-flow don't need every body
|
|
272
|
+
;; continuation, and would be happy getting called only for
|
|
273
|
+
;; continuations that postdominate the rest of the body. Unless
|
|
274
|
+
;; you pass #:complete? #t, we only invoke F on continuations
|
|
275
|
+
;; that can leave the body, or on back-edges in loops.
|
|
276
|
+
(intset-any (lambda (succ)
|
|
277
|
+
(or (not (intset-ref body succ))
|
|
278
|
+
(<= succ label)))
|
|
279
|
+
(intmap-ref succs label)))
|
|
280
|
+
(intset-fold (lambda (pred succs)
|
|
281
|
+
(intmap-replace succs pred handler intset-add))
|
|
282
|
+
(if complete? body (intset-filter out-or-back-edge? body))
|
|
283
|
+
succs)))
|
|
284
|
+
(intmap-fold
|
|
285
|
+
(lambda (label cont succs)
|
|
286
|
+
(match cont
|
|
287
|
+
(($ $kargs _ _
|
|
288
|
+
($ $continue k _ ($ $prompt escape? tag handler)))
|
|
289
|
+
(visit-prompt k handler succs))
|
|
290
|
+
(_ succs)))
|
|
291
|
+
conts
|
|
292
|
+
succs))
|
|
293
|
+
|
|
294
|
+
(define (rename-keys map old->new)
|
|
295
|
+
(persistent-intmap
|
|
296
|
+
(intmap-fold (lambda (k v out)
|
|
297
|
+
(intmap-add! out (intmap-ref old->new k) v))
|
|
298
|
+
map
|
|
299
|
+
empty-intmap)))
|
|
300
|
+
|
|
301
|
+
(define (rename-intset set old->new)
|
|
302
|
+
(intset-fold (lambda (old set) (intset-add set (intmap-ref old->new old)))
|
|
303
|
+
set empty-intset))
|
|
304
|
+
|
|
305
|
+
(define (rename-graph graph old->new)
|
|
306
|
+
(persistent-intmap
|
|
307
|
+
(intmap-fold (lambda (pred succs out)
|
|
308
|
+
(intmap-add! out
|
|
309
|
+
(intmap-ref old->new pred)
|
|
310
|
+
(rename-intset succs old->new)))
|
|
311
|
+
graph
|
|
312
|
+
empty-intmap)))
|
|
313
|
+
|
|
314
|
+
(define (compute-live-variables cps defs uses)
|
|
315
|
+
"Compute and return two values mapping LABEL->VAR..., where VAR... are
|
|
316
|
+
the definitions that are live before and after LABEL, as intsets."
|
|
317
|
+
(let* ((succs (add-prompt-control-flow-edges cps (compute-successors cps)))
|
|
318
|
+
(preds (invert-graph succs))
|
|
319
|
+
(old->new (compute-reverse-control-flow-order preds))
|
|
320
|
+
(init (persistent-intmap (intmap-fold
|
|
321
|
+
(lambda (old new init)
|
|
322
|
+
(intmap-add! init new empty-intset))
|
|
323
|
+
old->new empty-intmap))))
|
|
324
|
+
(call-with-values
|
|
325
|
+
(lambda ()
|
|
326
|
+
(solve-flow-equations (rename-graph preds old->new)
|
|
327
|
+
init init
|
|
328
|
+
(rename-keys defs old->new)
|
|
329
|
+
(rename-keys uses old->new)
|
|
330
|
+
intset-subtract intset-union intset-union))
|
|
331
|
+
(lambda (in out)
|
|
332
|
+
;; As a reverse control-flow problem, the values flowing into a
|
|
333
|
+
;; node are actually the live values after the node executes.
|
|
334
|
+
;; Funny, innit? So we return them in the reverse order.
|
|
335
|
+
(let ((new->old (invert-bijection old->new)))
|
|
336
|
+
(values (rename-keys out new->old)
|
|
337
|
+
(rename-keys in new->old)))))))
|
|
338
|
+
|
|
339
|
+
(define (compute-needs-slot cps defs uses)
|
|
340
|
+
(define (get-defs k) (intmap-ref defs k))
|
|
341
|
+
(define (get-uses label) (intmap-ref uses label))
|
|
342
|
+
(intmap-fold
|
|
343
|
+
(lambda (label cont needs-slot)
|
|
344
|
+
(intset-union
|
|
345
|
+
needs-slot
|
|
346
|
+
(match cont
|
|
347
|
+
(($ $kargs _ _ ($ $continue k src exp))
|
|
348
|
+
(let ((defs (get-defs label)))
|
|
349
|
+
(define (defs+* uses)
|
|
350
|
+
(intset-union defs uses))
|
|
351
|
+
(define (defs+ use)
|
|
352
|
+
(intset-add defs use))
|
|
353
|
+
(match exp
|
|
354
|
+
(($ $const)
|
|
355
|
+
empty-intset)
|
|
356
|
+
(($ $primcall (or 'load-f64 'load-u64 'load-s64) (val))
|
|
357
|
+
empty-intset)
|
|
358
|
+
(($ $primcall 'free-ref (closure slot))
|
|
359
|
+
(defs+ closure))
|
|
360
|
+
(($ $primcall 'free-set! (closure slot value))
|
|
361
|
+
(defs+* (intset closure value)))
|
|
362
|
+
(($ $primcall 'cache-current-module! (mod . _))
|
|
363
|
+
(defs+ mod))
|
|
364
|
+
(($ $primcall 'cached-toplevel-box _)
|
|
365
|
+
defs)
|
|
366
|
+
(($ $primcall 'cached-module-box _)
|
|
367
|
+
defs)
|
|
368
|
+
(($ $primcall 'resolve (name bound?))
|
|
369
|
+
(defs+ name))
|
|
370
|
+
(($ $primcall 'make-vector/immediate (len init))
|
|
371
|
+
(defs+ init))
|
|
372
|
+
(($ $primcall 'vector-ref/immediate (v i))
|
|
373
|
+
(defs+ v))
|
|
374
|
+
(($ $primcall 'vector-set!/immediate (v i x))
|
|
375
|
+
(defs+* (intset v x)))
|
|
376
|
+
(($ $primcall 'allocate-struct/immediate (vtable nfields))
|
|
377
|
+
(defs+ vtable))
|
|
378
|
+
(($ $primcall 'struct-ref/immediate (s n))
|
|
379
|
+
(defs+ s))
|
|
380
|
+
(($ $primcall 'struct-set!/immediate (s n x))
|
|
381
|
+
(defs+* (intset s x)))
|
|
382
|
+
(($ $primcall (or 'add/immediate 'sub/immediate
|
|
383
|
+
'uadd/immediate 'usub/immediate 'umul/immediate
|
|
384
|
+
'ursh/immediate 'ulsh/immediate)
|
|
385
|
+
(x y))
|
|
386
|
+
(defs+ x))
|
|
387
|
+
(($ $primcall 'builtin-ref (idx))
|
|
388
|
+
defs)
|
|
389
|
+
(_
|
|
390
|
+
(defs+* (get-uses label))))))
|
|
391
|
+
(($ $kreceive arity k)
|
|
392
|
+
;; Only allocate results of function calls to slots if they are
|
|
393
|
+
;; used.
|
|
394
|
+
empty-intset)
|
|
395
|
+
(($ $kclause arity body alternate)
|
|
396
|
+
(get-defs label))
|
|
397
|
+
(($ $kfun src meta self)
|
|
398
|
+
(intset self))
|
|
399
|
+
(($ $ktail)
|
|
400
|
+
empty-intset))))
|
|
401
|
+
cps
|
|
402
|
+
empty-intset))
|
|
403
|
+
|
|
404
|
+
(define (compute-lazy-vars cps live-in live-out defs needs-slot)
|
|
405
|
+
"Compute and return a set of vars whose allocation can be delayed
|
|
406
|
+
until their use is seen. These are \"lazy\" vars. A var is lazy if its
|
|
407
|
+
uses are calls, it is always dead after the calls, and if the uses flow
|
|
408
|
+
to the definition. A flow continues across a node iff the node kills no
|
|
409
|
+
values that need slots, and defines only lazy vars. Calls also kill
|
|
410
|
+
flows; there's no sense in trying to juggle a pending frame while there
|
|
411
|
+
is an active call."
|
|
412
|
+
(define (list->intset list)
|
|
413
|
+
(persistent-intset
|
|
414
|
+
(fold (lambda (i set) (intset-add! set i)) empty-intset list)))
|
|
415
|
+
|
|
416
|
+
(let* ((succs (compute-successors cps))
|
|
417
|
+
(gens (intmap-map
|
|
418
|
+
(lambda (label cont)
|
|
419
|
+
(match cont
|
|
420
|
+
(($ $kargs _ _ ($ $continue _ _ ($ $call proc args)))
|
|
421
|
+
(intset-subtract (intset-add (list->intset args) proc)
|
|
422
|
+
(intmap-ref live-out label)))
|
|
423
|
+
(($ $kargs _ _ ($ $continue _ _ ($ $callk _ proc args)))
|
|
424
|
+
(intset-subtract (intset-add (list->intset args) proc)
|
|
425
|
+
(intmap-ref live-out label)))
|
|
426
|
+
(($ $kargs _ _ ($ $continue k _($ $values args)))
|
|
427
|
+
(match (intmap-ref cps k)
|
|
428
|
+
(($ $ktail) (list->intset args))
|
|
429
|
+
(_ #f)))
|
|
430
|
+
(_ #f)))
|
|
431
|
+
cps))
|
|
432
|
+
(kills (intmap-map
|
|
433
|
+
(lambda (label in)
|
|
434
|
+
(let* ((out (intmap-ref live-out label))
|
|
435
|
+
(killed (intset-subtract in out))
|
|
436
|
+
(killed-slots (intset-intersect killed needs-slot)))
|
|
437
|
+
(and (eq? killed-slots empty-intset)
|
|
438
|
+
;; Kill output variables that need slots.
|
|
439
|
+
(intset-intersect (intmap-ref defs label)
|
|
440
|
+
needs-slot))))
|
|
441
|
+
live-in))
|
|
442
|
+
(preds (invert-graph succs))
|
|
443
|
+
(old->new (compute-reverse-control-flow-order preds)))
|
|
444
|
+
(define (subtract lazy kill)
|
|
445
|
+
(cond
|
|
446
|
+
((eq? lazy empty-intset)
|
|
447
|
+
lazy)
|
|
448
|
+
((not kill)
|
|
449
|
+
empty-intset)
|
|
450
|
+
((and lazy (eq? empty-intset (intset-subtract kill lazy)))
|
|
451
|
+
(intset-subtract lazy kill))
|
|
452
|
+
(else
|
|
453
|
+
empty-intset)))
|
|
454
|
+
(define (add live gen) (or gen live))
|
|
455
|
+
(define (meet in out)
|
|
456
|
+
;; Initial in is #f.
|
|
457
|
+
(if in (intset-intersect in out) out))
|
|
458
|
+
(call-with-values
|
|
459
|
+
(lambda ()
|
|
460
|
+
(let ((succs (rename-graph preds old->new))
|
|
461
|
+
(init (persistent-intmap
|
|
462
|
+
(intmap-fold
|
|
463
|
+
(lambda (old new in)
|
|
464
|
+
(intmap-add! in new #f))
|
|
465
|
+
old->new empty-intmap)))
|
|
466
|
+
(kills (rename-keys kills old->new))
|
|
467
|
+
(gens (rename-keys gens old->new)))
|
|
468
|
+
(solve-flow-equations succs init init kills gens
|
|
469
|
+
subtract add meet)))
|
|
470
|
+
(lambda (in out)
|
|
471
|
+
;; A variable is lazy if its uses reach its definition.
|
|
472
|
+
(intmap-fold (lambda (label out lazy)
|
|
473
|
+
(match (intmap-ref cps label)
|
|
474
|
+
(($ $kargs names vars)
|
|
475
|
+
(let ((defs (list->intset vars)))
|
|
476
|
+
(intset-union lazy (intset-intersect out defs))))
|
|
477
|
+
(_ lazy)))
|
|
478
|
+
(rename-keys out (invert-bijection old->new))
|
|
479
|
+
empty-intset)))))
|
|
480
|
+
|
|
481
|
+
(define (find-first-zero n)
|
|
482
|
+
;; Naive implementation.
|
|
483
|
+
(let lp ((slot 0))
|
|
484
|
+
(if (logbit? slot n)
|
|
485
|
+
(lp (1+ slot))
|
|
486
|
+
slot)))
|
|
487
|
+
|
|
488
|
+
(define (find-first-trailing-zero n)
|
|
489
|
+
(let lp ((slot (let lp ((count 2))
|
|
490
|
+
(if (< n (ash 1 (1- count)))
|
|
491
|
+
count
|
|
492
|
+
;; Grow upper bound slower than factor 2 to avoid
|
|
493
|
+
;; needless bignum allocation on 32-bit systems
|
|
494
|
+
;; when there are more than 16 locals.
|
|
495
|
+
(lp (+ count (ash count -1)))))))
|
|
496
|
+
(if (or (zero? slot) (logbit? (1- slot) n))
|
|
497
|
+
slot
|
|
498
|
+
(lp (1- slot)))))
|
|
499
|
+
|
|
500
|
+
(define (integers from count)
|
|
501
|
+
(if (zero? count)
|
|
502
|
+
'()
|
|
503
|
+
(cons from (integers (1+ from) (1- count)))))
|
|
504
|
+
|
|
505
|
+
(define (solve-parallel-move src dst tmp)
|
|
506
|
+
"Solve the parallel move problem between src and dst slot lists, which
|
|
507
|
+
are comparable with eqv?. A tmp slot may be used."
|
|
508
|
+
|
|
509
|
+
;; This algorithm is taken from: "Tilting at windmills with Coq:
|
|
510
|
+
;; formal verification of a compilation algorithm for parallel moves"
|
|
511
|
+
;; by Laurence Rideau, Bernard Paul Serpette, and Xavier Leroy
|
|
512
|
+
;; <http://gallium.inria.fr/~xleroy/publi/parallel-move.pdf>
|
|
513
|
+
|
|
514
|
+
(define (split-move moves reg)
|
|
515
|
+
(let loop ((revhead '()) (tail moves))
|
|
516
|
+
(match tail
|
|
517
|
+
(((and s+d (s . d)) . rest)
|
|
518
|
+
(if (eqv? s reg)
|
|
519
|
+
(cons d (append-reverse revhead rest))
|
|
520
|
+
(loop (cons s+d revhead) rest)))
|
|
521
|
+
(_ #f))))
|
|
522
|
+
|
|
523
|
+
(define (replace-last-source reg moves)
|
|
524
|
+
(match moves
|
|
525
|
+
((moves ... (s . d))
|
|
526
|
+
(append moves (list (cons reg d))))))
|
|
527
|
+
|
|
528
|
+
(let loop ((to-move (map cons src dst))
|
|
529
|
+
(being-moved '())
|
|
530
|
+
(moved '())
|
|
531
|
+
(last-source #f))
|
|
532
|
+
;; 'last-source' should always be equivalent to:
|
|
533
|
+
;; (and (pair? being-moved) (car (last being-moved)))
|
|
534
|
+
(match being-moved
|
|
535
|
+
(() (match to-move
|
|
536
|
+
(() (reverse moved))
|
|
537
|
+
(((and s+d (s . d)) . t1)
|
|
538
|
+
(if (or (eqv? s d) ; idempotent
|
|
539
|
+
(not s)) ; src is a constant and can be loaded directly
|
|
540
|
+
(loop t1 '() moved #f)
|
|
541
|
+
(loop t1 (list s+d) moved s)))))
|
|
542
|
+
(((and s+d (s . d)) . b)
|
|
543
|
+
(match (split-move to-move d)
|
|
544
|
+
((r . t1) (loop t1 (acons d r being-moved) moved last-source))
|
|
545
|
+
(#f (match b
|
|
546
|
+
(() (loop to-move '() (cons s+d moved) #f))
|
|
547
|
+
(_ (if (eqv? d last-source)
|
|
548
|
+
(loop to-move
|
|
549
|
+
(replace-last-source tmp b)
|
|
550
|
+
(cons s+d (acons d tmp moved))
|
|
551
|
+
tmp)
|
|
552
|
+
(loop to-move b (cons s+d moved) last-source))))))))))
|
|
553
|
+
|
|
554
|
+
(define-inlinable (add-live-slot slot live-slots)
|
|
555
|
+
(logior live-slots (ash 1 slot)))
|
|
556
|
+
|
|
557
|
+
(define-inlinable (kill-dead-slot slot live-slots)
|
|
558
|
+
(logand live-slots (lognot (ash 1 slot))))
|
|
559
|
+
|
|
560
|
+
(define-inlinable (compute-slot live-slots hint)
|
|
561
|
+
(if (and hint (not (logbit? hint live-slots)))
|
|
562
|
+
hint
|
|
563
|
+
(find-first-zero live-slots)))
|
|
564
|
+
|
|
565
|
+
(define (compute-shuffles cps slots call-allocs live-in)
|
|
566
|
+
(define (get-cont label)
|
|
567
|
+
(intmap-ref cps label))
|
|
568
|
+
|
|
569
|
+
(define (get-slot var)
|
|
570
|
+
(intmap-ref slots var (lambda (_) #f)))
|
|
571
|
+
|
|
572
|
+
(define (get-slots vars)
|
|
573
|
+
(let lp ((vars vars))
|
|
574
|
+
(match vars
|
|
575
|
+
((var . vars) (cons (get-slot var) (lp vars)))
|
|
576
|
+
(_ '()))))
|
|
577
|
+
|
|
578
|
+
(define (get-proc-slot label)
|
|
579
|
+
(call-alloc-proc-slot (intmap-ref call-allocs label)))
|
|
580
|
+
|
|
581
|
+
(define (compute-live-slots label)
|
|
582
|
+
(intset-fold (lambda (var live)
|
|
583
|
+
(match (get-slot var)
|
|
584
|
+
(#f live)
|
|
585
|
+
(slot (add-live-slot slot live))))
|
|
586
|
+
(intmap-ref live-in label)
|
|
587
|
+
0))
|
|
588
|
+
|
|
589
|
+
;; Although some parallel moves may proceed without a temporary slot,
|
|
590
|
+
;; in general one is needed. That temporary slot must not be part of
|
|
591
|
+
;; the source or destination sets, and that slot should not correspond
|
|
592
|
+
;; to a live variable. Usually the source and destination sets are a
|
|
593
|
+
;; subset of the union of the live sets before and after the move.
|
|
594
|
+
;; However for stack slots that don't have names -- those slots that
|
|
595
|
+
;; correspond to function arguments or to function return values -- it
|
|
596
|
+
;; could be that they are out of the computed live set. In that case
|
|
597
|
+
;; they need to be adjoined to the live set, used when choosing a
|
|
598
|
+
;; temporary slot.
|
|
599
|
+
(define (compute-tmp-slot live stack-slots)
|
|
600
|
+
(find-first-zero (fold add-live-slot live stack-slots)))
|
|
601
|
+
|
|
602
|
+
(define (parallel-move src-slots dst-slots tmp-slot)
|
|
603
|
+
(solve-parallel-move src-slots dst-slots tmp-slot))
|
|
604
|
+
|
|
605
|
+
(define (compute-receive-shuffles label proc-slot)
|
|
606
|
+
(match (get-cont label)
|
|
607
|
+
(($ $kreceive arity kargs)
|
|
608
|
+
(let* ((results (match (get-cont kargs)
|
|
609
|
+
(($ $kargs names vars) vars)))
|
|
610
|
+
(value-slots (integers (1+ proc-slot) (length results)))
|
|
611
|
+
(result-slots (get-slots results))
|
|
612
|
+
;; Filter out unused results.
|
|
613
|
+
(value-slots (filter-map (lambda (val result) (and result val))
|
|
614
|
+
value-slots result-slots))
|
|
615
|
+
(result-slots (filter (lambda (x) x) result-slots))
|
|
616
|
+
(live (compute-live-slots kargs)))
|
|
617
|
+
(parallel-move value-slots
|
|
618
|
+
result-slots
|
|
619
|
+
(compute-tmp-slot live value-slots))))))
|
|
620
|
+
|
|
621
|
+
(define (add-call-shuffles label k args shuffles)
|
|
622
|
+
(match (get-cont k)
|
|
623
|
+
(($ $ktail)
|
|
624
|
+
(let* ((live (compute-live-slots label))
|
|
625
|
+
(tail-slots (integers 0 (length args)))
|
|
626
|
+
(moves (parallel-move (get-slots args)
|
|
627
|
+
tail-slots
|
|
628
|
+
(compute-tmp-slot live tail-slots))))
|
|
629
|
+
(intmap-add! shuffles label moves)))
|
|
630
|
+
(($ $kreceive)
|
|
631
|
+
(let* ((live (compute-live-slots label))
|
|
632
|
+
(proc-slot (get-proc-slot label))
|
|
633
|
+
(call-slots (integers proc-slot (length args)))
|
|
634
|
+
(arg-moves (parallel-move (get-slots args)
|
|
635
|
+
call-slots
|
|
636
|
+
(compute-tmp-slot live call-slots))))
|
|
637
|
+
(intmap-add! (intmap-add! shuffles label arg-moves)
|
|
638
|
+
k (compute-receive-shuffles k proc-slot))))))
|
|
639
|
+
|
|
640
|
+
(define (add-values-shuffles label k args shuffles)
|
|
641
|
+
(match (get-cont k)
|
|
642
|
+
(($ $ktail)
|
|
643
|
+
(let* ((live (compute-live-slots label))
|
|
644
|
+
(src-slots (get-slots args))
|
|
645
|
+
(dst-slots (integers 1 (length args)))
|
|
646
|
+
(moves (parallel-move src-slots dst-slots
|
|
647
|
+
(compute-tmp-slot live dst-slots))))
|
|
648
|
+
(intmap-add! shuffles label moves)))
|
|
649
|
+
(($ $kargs _ dst-vars)
|
|
650
|
+
(let* ((live (logior (compute-live-slots label)
|
|
651
|
+
(compute-live-slots k)))
|
|
652
|
+
(src-slots (get-slots args))
|
|
653
|
+
(dst-slots (get-slots dst-vars))
|
|
654
|
+
(moves (parallel-move src-slots dst-slots
|
|
655
|
+
(compute-tmp-slot live '()))))
|
|
656
|
+
(intmap-add! shuffles label moves)))))
|
|
657
|
+
|
|
658
|
+
(define (add-prompt-shuffles label k handler shuffles)
|
|
659
|
+
(intmap-add! shuffles handler
|
|
660
|
+
(compute-receive-shuffles handler (get-proc-slot label))))
|
|
661
|
+
|
|
662
|
+
(define (compute-shuffles label cont shuffles)
|
|
663
|
+
(match cont
|
|
664
|
+
(($ $kargs names vars ($ $continue k src exp))
|
|
665
|
+
(match exp
|
|
666
|
+
(($ $call proc args)
|
|
667
|
+
(add-call-shuffles label k (cons proc args) shuffles))
|
|
668
|
+
(($ $callk _ proc args)
|
|
669
|
+
(add-call-shuffles label k (cons proc args) shuffles))
|
|
670
|
+
(($ $values args)
|
|
671
|
+
(add-values-shuffles label k args shuffles))
|
|
672
|
+
(($ $prompt escape? tag handler)
|
|
673
|
+
(add-prompt-shuffles label k handler shuffles))
|
|
674
|
+
(_ shuffles)))
|
|
675
|
+
(_ shuffles)))
|
|
676
|
+
|
|
677
|
+
(persistent-intmap
|
|
678
|
+
(intmap-fold compute-shuffles cps empty-intmap)))
|
|
679
|
+
|
|
680
|
+
(define (compute-frame-size cps slots call-allocs shuffles)
|
|
681
|
+
;; Minimum frame has one slot: the closure.
|
|
682
|
+
(define minimum-frame-size 1)
|
|
683
|
+
(define (get-shuffles label)
|
|
684
|
+
(intmap-ref shuffles label))
|
|
685
|
+
(define (get-proc-slot label)
|
|
686
|
+
(match (intmap-ref call-allocs label (lambda (_) #f))
|
|
687
|
+
(#f 0) ;; Tail call.
|
|
688
|
+
(($ $call-alloc proc-slot) proc-slot)))
|
|
689
|
+
(define (max-size var size)
|
|
690
|
+
(match (intmap-ref slots var (lambda (_) #f))
|
|
691
|
+
(#f size)
|
|
692
|
+
(slot (max size (1+ slot)))))
|
|
693
|
+
(define (max-size* vars size)
|
|
694
|
+
(fold max-size size vars))
|
|
695
|
+
(define (shuffle-size moves size)
|
|
696
|
+
(match moves
|
|
697
|
+
(() size)
|
|
698
|
+
(((src . dst) . moves)
|
|
699
|
+
(shuffle-size moves (max size (1+ src) (1+ dst))))))
|
|
700
|
+
(define (call-size label nargs size)
|
|
701
|
+
(shuffle-size (get-shuffles label)
|
|
702
|
+
(max (+ (get-proc-slot label) nargs) size)))
|
|
703
|
+
(define (measure-cont label cont size)
|
|
704
|
+
(match cont
|
|
705
|
+
(($ $kargs names vars ($ $continue k src exp))
|
|
706
|
+
(let ((size (max-size* vars size)))
|
|
707
|
+
(match exp
|
|
708
|
+
(($ $call proc args)
|
|
709
|
+
(call-size label (1+ (length args)) size))
|
|
710
|
+
(($ $callk _ proc args)
|
|
711
|
+
(call-size label (1+ (length args)) size))
|
|
712
|
+
(($ $values args)
|
|
713
|
+
(shuffle-size (get-shuffles label) size))
|
|
714
|
+
(_ size))))
|
|
715
|
+
(($ $kreceive)
|
|
716
|
+
(shuffle-size (get-shuffles label) size))
|
|
717
|
+
(_ size)))
|
|
718
|
+
|
|
719
|
+
(intmap-fold measure-cont cps minimum-frame-size))
|
|
720
|
+
|
|
721
|
+
(define (allocate-args cps)
|
|
722
|
+
(intmap-fold (lambda (label cont slots)
|
|
723
|
+
(match cont
|
|
724
|
+
(($ $kfun src meta self)
|
|
725
|
+
(intmap-add! slots self 0))
|
|
726
|
+
(($ $kclause arity body alt)
|
|
727
|
+
(match (intmap-ref cps body)
|
|
728
|
+
(($ $kargs names vars)
|
|
729
|
+
(let lp ((vars vars) (slots slots) (n 1))
|
|
730
|
+
(match vars
|
|
731
|
+
(() slots)
|
|
732
|
+
((var . vars)
|
|
733
|
+
(lp vars
|
|
734
|
+
(intmap-add! slots var n)
|
|
735
|
+
(1+ n))))))))
|
|
736
|
+
(_ slots)))
|
|
737
|
+
cps empty-intmap))
|
|
738
|
+
|
|
739
|
+
(define (allocate-lazy-vars cps slots call-allocs live-in lazy)
|
|
740
|
+
(define (compute-live-slots slots label)
|
|
741
|
+
(intset-fold (lambda (var live)
|
|
742
|
+
(match (intmap-ref slots var (lambda (_) #f))
|
|
743
|
+
(#f live)
|
|
744
|
+
(slot (add-live-slot slot live))))
|
|
745
|
+
(intmap-ref live-in label)
|
|
746
|
+
0))
|
|
747
|
+
|
|
748
|
+
(define (allocate var hint slots live)
|
|
749
|
+
(match (and hint (intmap-ref slots var (lambda (_) #f)))
|
|
750
|
+
(#f (if (intset-ref lazy var)
|
|
751
|
+
(let ((slot (compute-slot live hint)))
|
|
752
|
+
(values (intmap-add! slots var slot)
|
|
753
|
+
(add-live-slot slot live)))
|
|
754
|
+
(values slots live)))
|
|
755
|
+
(slot (values slots (add-live-slot slot live)))))
|
|
756
|
+
|
|
757
|
+
(define (allocate* vars hints slots live)
|
|
758
|
+
(match (vector vars hints)
|
|
759
|
+
(#(() ()) slots)
|
|
760
|
+
(#((var . vars) (hint . hints))
|
|
761
|
+
(let-values (((slots live) (allocate var hint slots live)))
|
|
762
|
+
(allocate* vars hints slots live)))))
|
|
763
|
+
|
|
764
|
+
(define (get-proc-slot label)
|
|
765
|
+
(match (intmap-ref call-allocs label (lambda (_) #f))
|
|
766
|
+
(#f 0)
|
|
767
|
+
(call (call-alloc-proc-slot call))))
|
|
768
|
+
|
|
769
|
+
(define (allocate-call label args slots)
|
|
770
|
+
(allocate* args (integers (get-proc-slot label) (length args))
|
|
771
|
+
slots (compute-live-slots slots label)))
|
|
772
|
+
|
|
773
|
+
(define (allocate-values label k args slots)
|
|
774
|
+
(match (intmap-ref cps k)
|
|
775
|
+
(($ $ktail)
|
|
776
|
+
(allocate* args (integers 1 (length args))
|
|
777
|
+
slots (compute-live-slots slots label)))
|
|
778
|
+
(($ $kargs names vars)
|
|
779
|
+
(allocate* args
|
|
780
|
+
(map (cut intmap-ref slots <> (lambda (_) #f)) vars)
|
|
781
|
+
slots (compute-live-slots slots label)))))
|
|
782
|
+
|
|
783
|
+
(define (allocate-lazy label cont slots)
|
|
784
|
+
(match cont
|
|
785
|
+
(($ $kargs names vars ($ $continue k src exp))
|
|
786
|
+
(match exp
|
|
787
|
+
(($ $call proc args)
|
|
788
|
+
(allocate-call label (cons proc args) slots))
|
|
789
|
+
(($ $callk _ proc args)
|
|
790
|
+
(allocate-call label (cons proc args) slots))
|
|
791
|
+
(($ $values args)
|
|
792
|
+
(allocate-values label k args slots))
|
|
793
|
+
(_ slots)))
|
|
794
|
+
(_
|
|
795
|
+
slots)))
|
|
796
|
+
|
|
797
|
+
;; Sweep right to left to visit uses before definitions.
|
|
798
|
+
(persistent-intmap
|
|
799
|
+
(intmap-fold-right allocate-lazy cps slots)))
|
|
800
|
+
|
|
801
|
+
(define (compute-var-representations cps)
|
|
802
|
+
(define (get-defs k)
|
|
803
|
+
(match (intmap-ref cps k)
|
|
804
|
+
(($ $kargs names vars) vars)
|
|
805
|
+
(_ '())))
|
|
806
|
+
(intmap-fold
|
|
807
|
+
(lambda (label cont representations)
|
|
808
|
+
(match cont
|
|
809
|
+
(($ $kargs _ _ ($ $continue k _ exp))
|
|
810
|
+
(match (get-defs k)
|
|
811
|
+
(() representations)
|
|
812
|
+
((var)
|
|
813
|
+
(match exp
|
|
814
|
+
(($ $values (arg))
|
|
815
|
+
(intmap-add representations var
|
|
816
|
+
(intmap-ref representations arg)))
|
|
817
|
+
(($ $primcall (or 'scm->f64 'load-f64
|
|
818
|
+
'bv-f32-ref 'bv-f64-ref
|
|
819
|
+
'fadd 'fsub 'fmul 'fdiv))
|
|
820
|
+
(intmap-add representations var 'f64))
|
|
821
|
+
(($ $primcall (or 'scm->u64 'scm->u64/truncate 'load-u64
|
|
822
|
+
'char->integer
|
|
823
|
+
'bv-length 'vector-length 'string-length
|
|
824
|
+
'uadd 'usub 'umul
|
|
825
|
+
'ulogand 'ulogior 'ulogxor 'ulogsub 'ursh 'ulsh
|
|
826
|
+
'uadd/immediate 'usub/immediate 'umul/immediate
|
|
827
|
+
'ursh/immediate 'ulsh/immediate
|
|
828
|
+
'bv-u8-ref 'bv-u16-ref 'bv-u32-ref 'bv-u64-ref))
|
|
829
|
+
(intmap-add representations var 'u64))
|
|
830
|
+
(($ $primcall (or 'scm->s64 'load-s64
|
|
831
|
+
'bv-s8-ref 'bv-s16-ref 'bv-s32-ref 'bv-s64-ref))
|
|
832
|
+
(intmap-add representations var 's64))
|
|
833
|
+
(_
|
|
834
|
+
(intmap-add representations var 'scm))))
|
|
835
|
+
(vars
|
|
836
|
+
(match exp
|
|
837
|
+
(($ $values args)
|
|
838
|
+
(fold (lambda (arg var representations)
|
|
839
|
+
(intmap-add representations var
|
|
840
|
+
(intmap-ref representations arg)))
|
|
841
|
+
representations args vars))))))
|
|
842
|
+
(($ $kfun src meta self)
|
|
843
|
+
(intmap-add representations self 'scm))
|
|
844
|
+
(($ $kclause arity body alt)
|
|
845
|
+
(fold1 (lambda (var representations)
|
|
846
|
+
(intmap-add representations var 'scm))
|
|
847
|
+
(get-defs body) representations))
|
|
848
|
+
(($ $kreceive arity kargs)
|
|
849
|
+
(fold1 (lambda (var representations)
|
|
850
|
+
(intmap-add representations var 'scm))
|
|
851
|
+
(get-defs kargs) representations))
|
|
852
|
+
(($ $ktail) representations)))
|
|
853
|
+
cps
|
|
854
|
+
empty-intmap))
|
|
855
|
+
|
|
856
|
+
(define* (allocate-slots cps #:key (precolor-calls? #t))
|
|
857
|
+
(let*-values (((defs uses) (compute-defs-and-uses cps))
|
|
858
|
+
((representations) (compute-var-representations cps))
|
|
859
|
+
((live-in live-out) (compute-live-variables cps defs uses))
|
|
860
|
+
((constants) (compute-constant-values cps))
|
|
861
|
+
((needs-slot) (compute-needs-slot cps defs uses))
|
|
862
|
+
((lazy) (if precolor-calls?
|
|
863
|
+
(compute-lazy-vars cps live-in live-out defs
|
|
864
|
+
needs-slot)
|
|
865
|
+
empty-intset)))
|
|
866
|
+
|
|
867
|
+
(define (empty-live-slots)
|
|
868
|
+
#b0)
|
|
869
|
+
|
|
870
|
+
(define (compute-call-proc-slot live-slots)
|
|
871
|
+
(+ 2 (find-first-trailing-zero live-slots)))
|
|
872
|
+
|
|
873
|
+
(define (compute-prompt-handler-proc-slot live-slots)
|
|
874
|
+
(if (zero? live-slots)
|
|
875
|
+
0
|
|
876
|
+
(1- (find-first-trailing-zero live-slots))))
|
|
877
|
+
|
|
878
|
+
(define (get-cont label)
|
|
879
|
+
(intmap-ref cps label))
|
|
880
|
+
|
|
881
|
+
(define (get-slot slots var)
|
|
882
|
+
(intmap-ref slots var (lambda (_) #f)))
|
|
883
|
+
|
|
884
|
+
(define (get-slots slots vars)
|
|
885
|
+
(let lp ((vars vars))
|
|
886
|
+
(match vars
|
|
887
|
+
((var . vars) (cons (get-slot slots var) (lp vars)))
|
|
888
|
+
(_ '()))))
|
|
889
|
+
|
|
890
|
+
(define (compute-live-slots* slots label live-vars)
|
|
891
|
+
(intset-fold (lambda (var live)
|
|
892
|
+
(match (get-slot slots var)
|
|
893
|
+
(#f live)
|
|
894
|
+
(slot (add-live-slot slot live))))
|
|
895
|
+
(intmap-ref live-vars label)
|
|
896
|
+
0))
|
|
897
|
+
|
|
898
|
+
(define (compute-live-in-slots slots label)
|
|
899
|
+
(compute-live-slots* slots label live-in))
|
|
900
|
+
|
|
901
|
+
(define (compute-live-out-slots slots label)
|
|
902
|
+
(compute-live-slots* slots label live-out))
|
|
903
|
+
|
|
904
|
+
(define slot-desc-dead 0)
|
|
905
|
+
(define slot-desc-live-raw 1)
|
|
906
|
+
(define slot-desc-live-scm 2)
|
|
907
|
+
(define slot-desc-unused 3)
|
|
908
|
+
|
|
909
|
+
(define (compute-slot-map slots live-vars nslots)
|
|
910
|
+
(intset-fold
|
|
911
|
+
(lambda (var slot-map)
|
|
912
|
+
(match (get-slot slots var)
|
|
913
|
+
(#f slot-map)
|
|
914
|
+
(slot
|
|
915
|
+
(let ((desc (match (intmap-ref representations var)
|
|
916
|
+
((or 'u64 'f64 's64) slot-desc-live-raw)
|
|
917
|
+
('scm slot-desc-live-scm))))
|
|
918
|
+
(logior slot-map (ash desc (* 2 slot)))))))
|
|
919
|
+
live-vars 0))
|
|
920
|
+
|
|
921
|
+
(define (allocate var hint slots live)
|
|
922
|
+
(cond
|
|
923
|
+
((not (intset-ref needs-slot var))
|
|
924
|
+
(values slots live))
|
|
925
|
+
((get-slot slots var)
|
|
926
|
+
=> (lambda (slot)
|
|
927
|
+
(values slots (add-live-slot slot live))))
|
|
928
|
+
((and (not hint) (intset-ref lazy var))
|
|
929
|
+
(values slots live))
|
|
930
|
+
(else
|
|
931
|
+
(let ((slot (compute-slot live hint)))
|
|
932
|
+
(values (intmap-add! slots var slot)
|
|
933
|
+
(add-live-slot slot live))))))
|
|
934
|
+
|
|
935
|
+
(define (allocate* vars hints slots live)
|
|
936
|
+
(match (vector vars hints)
|
|
937
|
+
(#(() ()) (values slots live))
|
|
938
|
+
(#((var . vars) (hint . hints))
|
|
939
|
+
(call-with-values (lambda () (allocate var hint slots live))
|
|
940
|
+
(lambda (slots live)
|
|
941
|
+
(allocate* vars hints slots live))))))
|
|
942
|
+
|
|
943
|
+
(define (allocate-defs label vars slots)
|
|
944
|
+
(let ((live (compute-live-in-slots slots label))
|
|
945
|
+
(live-vars (intmap-ref live-in label)))
|
|
946
|
+
(let lp ((vars vars) (slots slots) (live live))
|
|
947
|
+
(match vars
|
|
948
|
+
(() (values slots live))
|
|
949
|
+
((var . vars)
|
|
950
|
+
(call-with-values (lambda () (allocate var #f slots live))
|
|
951
|
+
(lambda (slots live)
|
|
952
|
+
(lp vars slots
|
|
953
|
+
(let ((slot (get-slot slots var)))
|
|
954
|
+
(if (and slot (not (intset-ref live-vars var)))
|
|
955
|
+
(kill-dead-slot slot live)
|
|
956
|
+
live))))))))))
|
|
957
|
+
|
|
958
|
+
;; PRE-LIVE are the live slots coming into the term. POST-LIVE
|
|
959
|
+
;; is the subset of PRE-LIVE that is still live after the term
|
|
960
|
+
;; uses its inputs.
|
|
961
|
+
(define (allocate-call label k args slots call-allocs pre-live)
|
|
962
|
+
(match (get-cont k)
|
|
963
|
+
(($ $ktail)
|
|
964
|
+
(let ((tail-slots (integers 0 (length args))))
|
|
965
|
+
(values (allocate* args tail-slots slots pre-live)
|
|
966
|
+
call-allocs)))
|
|
967
|
+
(($ $kreceive arity kargs)
|
|
968
|
+
(let*-values
|
|
969
|
+
(((post-live) (compute-live-out-slots slots label))
|
|
970
|
+
((proc-slot) (compute-call-proc-slot post-live))
|
|
971
|
+
((call-slots) (integers proc-slot (length args)))
|
|
972
|
+
((slots pre-live) (allocate* args call-slots slots pre-live))
|
|
973
|
+
;; Allow the first result to be hinted by its use, but
|
|
974
|
+
;; hint the remaining results to stay in place. This
|
|
975
|
+
;; strikes a balance between avoiding shuffling,
|
|
976
|
+
;; especially for unused extra values, and avoiding frame
|
|
977
|
+
;; size growth due to sparse locals.
|
|
978
|
+
((slots result-live)
|
|
979
|
+
(match (get-cont kargs)
|
|
980
|
+
(($ $kargs () ())
|
|
981
|
+
(values slots post-live))
|
|
982
|
+
(($ $kargs (_ . _) (_ . results))
|
|
983
|
+
(let ((result-slots (integers (+ proc-slot 2)
|
|
984
|
+
(length results))))
|
|
985
|
+
(allocate* results result-slots slots post-live)))))
|
|
986
|
+
((slot-map) (compute-slot-map slots (intmap-ref live-out label)
|
|
987
|
+
(- proc-slot 2)))
|
|
988
|
+
((call) (make-call-alloc proc-slot slot-map)))
|
|
989
|
+
(values slots
|
|
990
|
+
(intmap-add! call-allocs label call))))))
|
|
991
|
+
|
|
992
|
+
(define (allocate-values label k args slots call-allocs)
|
|
993
|
+
(match (get-cont k)
|
|
994
|
+
(($ $ktail)
|
|
995
|
+
(values slots call-allocs))
|
|
996
|
+
(($ $kargs (_) (dst))
|
|
997
|
+
;; When there is only one value in play, we allow the dst to be
|
|
998
|
+
;; hinted (see compute-lazy-vars). If the src doesn't have a
|
|
999
|
+
;; slot, then the actual slot for the dst would end up being
|
|
1000
|
+
;; decided by the call that args it. Because we don't know the
|
|
1001
|
+
;; slot, we can't really compute the parallel moves in that
|
|
1002
|
+
;; case, so just bail and rely on the bytecode emitter to
|
|
1003
|
+
;; handle the one-value case specially.
|
|
1004
|
+
(match args
|
|
1005
|
+
((src)
|
|
1006
|
+
(let ((post-live (compute-live-out-slots slots label)))
|
|
1007
|
+
(values (allocate dst (get-slot slots src) slots post-live)
|
|
1008
|
+
call-allocs)))))
|
|
1009
|
+
(($ $kargs _ dst-vars)
|
|
1010
|
+
(let ((src-slots (get-slots slots args))
|
|
1011
|
+
(post-live (compute-live-out-slots slots label)))
|
|
1012
|
+
(values (allocate* dst-vars src-slots slots post-live)
|
|
1013
|
+
call-allocs)))))
|
|
1014
|
+
|
|
1015
|
+
(define (allocate-prompt label k handler slots call-allocs)
|
|
1016
|
+
(match (get-cont handler)
|
|
1017
|
+
(($ $kreceive arity kargs)
|
|
1018
|
+
(let*-values
|
|
1019
|
+
(((handler-live) (compute-live-in-slots slots handler))
|
|
1020
|
+
((proc-slot) (compute-prompt-handler-proc-slot handler-live))
|
|
1021
|
+
((slot-map) (compute-slot-map slots (intmap-ref live-in handler)
|
|
1022
|
+
(- proc-slot 2)))
|
|
1023
|
+
((result-vars) (match (get-cont kargs)
|
|
1024
|
+
(($ $kargs names vars) vars)))
|
|
1025
|
+
((value-slots) (integers (1+ proc-slot) (length result-vars)))
|
|
1026
|
+
((slots result-live) (allocate* result-vars value-slots
|
|
1027
|
+
slots handler-live)))
|
|
1028
|
+
(values slots
|
|
1029
|
+
(intmap-add! call-allocs label
|
|
1030
|
+
(make-call-alloc proc-slot slot-map)))))))
|
|
1031
|
+
|
|
1032
|
+
(define (allocate-cont label cont slots call-allocs)
|
|
1033
|
+
(match cont
|
|
1034
|
+
(($ $kargs names vars ($ $continue k src exp))
|
|
1035
|
+
(let-values (((slots live) (allocate-defs label vars slots)))
|
|
1036
|
+
(match exp
|
|
1037
|
+
(($ $call proc args)
|
|
1038
|
+
(allocate-call label k (cons proc args) slots call-allocs live))
|
|
1039
|
+
(($ $callk _ proc args)
|
|
1040
|
+
(allocate-call label k (cons proc args) slots call-allocs live))
|
|
1041
|
+
(($ $values args)
|
|
1042
|
+
(allocate-values label k args slots call-allocs))
|
|
1043
|
+
(($ $prompt escape? tag handler)
|
|
1044
|
+
(allocate-prompt label k handler slots call-allocs))
|
|
1045
|
+
(_
|
|
1046
|
+
(values slots call-allocs)))))
|
|
1047
|
+
(_
|
|
1048
|
+
(values slots call-allocs))))
|
|
1049
|
+
|
|
1050
|
+
(call-with-values (lambda ()
|
|
1051
|
+
(let ((slots (allocate-args cps)))
|
|
1052
|
+
(intmap-fold allocate-cont cps slots empty-intmap)))
|
|
1053
|
+
(lambda (slots calls)
|
|
1054
|
+
(let* ((slots (allocate-lazy-vars cps slots calls live-in lazy))
|
|
1055
|
+
(shuffles (compute-shuffles cps slots calls live-in))
|
|
1056
|
+
(frame-size (compute-frame-size cps slots calls shuffles)))
|
|
1057
|
+
(make-allocation slots representations constants calls
|
|
1058
|
+
shuffles frame-size))))))
|