home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mitsch75.zip / scheme-7_5_17-src.zip / scheme-7.5.17 / src / compiler / machines / spectrum / compiler.pkg < prev    next >
Encoding:
Text File  |  1999-01-02  |  19.8 KB  |  665 lines

  1. #| -*-Scheme-*-
  2.  
  3. $Id: compiler.pkg,v 1.50 1999/01/02 06:06:43 cph Exp $
  4.  
  5. Copyright (c) 1988-1999 Massachusetts Institute of Technology
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or (at
  10. your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful, but
  13. WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15. General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. |#
  21.  
  22. ;;;; Compiler Packaging
  23.  
  24. (global-definitions "../runtime/runtime")
  25.  
  26. (define-package (compiler)
  27.   (files "base/switch"
  28.      "base/object"            ;tagged object support
  29.      "base/enumer"            ;enumerations
  30.      "base/sets"            ;set abstraction
  31.      "base/mvalue"            ;multiple-value support
  32.      "base/scode"            ;SCode abstraction
  33.      "machines/spectrum/machin"    ;machine dependent stuff
  34.      "back/asutl"            ;back-end odds and ends
  35.      "base/utils"            ;odds and ends
  36.  
  37.      "base/cfg1"            ;control flow graph
  38.      "base/cfg2"
  39.      "base/cfg3"
  40.  
  41.      "base/ctypes"            ;CFG datatypes
  42.  
  43.      "base/rvalue"            ;Right hand values
  44.      "base/lvalue"            ;Left hand values
  45.      "base/blocks"            ;rvalue: blocks
  46.      "base/proced"            ;rvalue: procedures
  47.      "base/contin"            ;rvalue: continuations
  48.  
  49.      "base/subprb"            ;subproblem datatype
  50.  
  51.      "rtlbase/rgraph"        ;program graph abstraction
  52.      "rtlbase/rtlty1"        ;RTL: type definitions
  53.      "rtlbase/rtlty2"        ;RTL: type definitions
  54.      "rtlbase/rtlexp"        ;RTL: expression operations
  55.      "rtlbase/rtlcon"        ;RTL: complex constructors
  56.      "rtlbase/rtlreg"        ;RTL: registers
  57.      "rtlbase/rtlcfg"        ;RTL: CFG types
  58.      "rtlbase/rtlobj"        ;RTL: CFG objects
  59.      "rtlbase/regset"        ;RTL: register sets
  60.      "rtlbase/valclass"        ;RTL: value classes
  61.  
  62.      "back/insseq"            ;LAP instruction sequences
  63.      )
  64.   (parent ())
  65.   (export ()
  66.       compiler:analyze-side-effects?
  67.       compiler:cache-free-variables?
  68.       compiler:coalescing-constant-warnings?
  69.       compiler:code-compression?
  70.       compiler:compile-by-procedures?
  71.       compiler:cse?
  72.       compiler:default-top-level-declarations
  73.       compiler:enable-expansion-declarations?
  74.       compiler:enable-integration-declarations?
  75.       compiler:generate-lap-files?
  76.       compiler:generate-range-checks?
  77.       compiler:generate-rtl-files?
  78.       compiler:generate-stack-checks?
  79.       compiler:generate-type-checks?
  80.       compiler:implicit-self-static?
  81.       compiler:intersperse-rtl-in-lap?
  82.       compiler:noisy?
  83.       compiler:open-code-flonum-checks?
  84.       compiler:open-code-primitives?
  85.       compiler:optimize-environments?
  86.       compiler:package-optimization-level
  87.       compiler:preserve-data-structures?
  88.       compiler:show-phases?
  89.       compiler:show-procedures?
  90.       compiler:show-subphases?
  91.       compiler:show-time-reports?
  92.       compiler:use-multiclosures?))
  93.  
  94. (define-package (compiler reference-contexts)
  95.   (files "base/refctx")
  96.   (parent (compiler))
  97.   (export (compiler)
  98.       add-reference-context/adjacent-parents!
  99.       initialize-reference-contexts!
  100.       make-reference-context
  101.       modify-reference-contexts!
  102.       reference-context/adjacent-parent?
  103.       reference-context/block
  104.       reference-context/offset
  105.       reference-context/procedure
  106.       reference-context?
  107.       set-reference-context/offset!))
  108.  
  109. (define-package (compiler macros)
  110.   (files "base/macros")
  111.   (parent ())
  112.   (export (compiler)
  113.       assembler-syntax-table
  114.       compiler-syntax-table
  115.       early-syntax-table
  116.       lap-generator-syntax-table)
  117.   (import (runtime macros)
  118.       parse-define-syntax)
  119.   (initialization (initialize-package!)))
  120.  
  121. (define-package (compiler declarations)
  122.   (files "machines/spectrum/decls")
  123.   (parent (compiler))
  124.   (export (compiler)
  125.       sc
  126.       syntax-files!)
  127.   (import (scode-optimizer top-level)
  128.       sf/internal)
  129.   (initialization (initialize-package!)))
  130.  
  131. (define-package (compiler top-level)
  132.   (files "base/toplev"
  133.      "base/crstop"
  134.      "base/asstop")
  135.   (parent (compiler))
  136.   (export ()
  137.       cbf
  138.       cf
  139.       compile-bin-file
  140.       compile-file
  141.       compile-file:force?
  142.       compile-file:override-usual-integrations
  143.       compile-file:sf-only?
  144.       compile-procedure
  145.       compile-scode
  146.       compiler:dump-bci-file
  147.       compiler:dump-bci/bcs-files
  148.       compiler:dump-bif/bsm-files
  149.       compiler:dump-inf-file
  150.       compiler:dump-info-file
  151.       compiler:reset!
  152.       cross-compile-bin-file
  153.       cross-compile-bin-file-end)
  154.   (export (compiler)
  155.       canonicalize-label-name)
  156.   (export (compiler fg-generator)
  157.       compile-recursively)
  158.   (export (compiler rtl-generator)
  159.       *ic-procedure-headers*
  160.       *rtl-continuations*
  161.       *rtl-expression*
  162.       *rtl-graphs*
  163.       *rtl-procedures*)
  164.   (export (compiler lap-syntaxer)
  165.       *block-label*
  166.       *external-labels*
  167.       label->object)
  168.   (export (compiler debug)
  169.       *root-expression*
  170.       *rtl-procedures*
  171.       *rtl-graphs*)
  172.   (import (runtime compiler-info)
  173.       make-dbg-info-vector
  174.       split-inf-structure!)
  175.   (import (runtime unparser)
  176.       *unparse-uninterned-symbols-by-name?*))
  177.  
  178. (define-package (compiler debug)
  179.   (files "base/debug")
  180.   (parent (compiler))
  181.   (export ()
  182.       debug/find-continuation
  183.       debug/find-entry-node
  184.       debug/find-procedure
  185.       debug/where
  186.       dump-rtl
  187.       po
  188.       show-bblock-rtl
  189.       show-fg
  190.       show-fg-node
  191.       show-rtl
  192.       write-rtl-instructions)
  193.   (import (runtime pretty-printer)
  194.       *pp-primitives-by-name*)
  195.   (import (runtime unparser)
  196.       *unparse-uninterned-symbols-by-name?*))
  197.  
  198. (define-package (compiler pattern-matcher/lookup)
  199.   (files "base/pmlook")
  200.   (parent (compiler))
  201.   (export (compiler)
  202.       make-pattern-variable
  203.       pattern-lookup
  204.       pattern-variable-name
  205.       pattern-variable?
  206.       pattern-variables))
  207.  
  208. (define-package (compiler pattern-matcher/parser)
  209.   (files "base/pmpars")
  210.   (parent (compiler))
  211.   (export (compiler)
  212.       parse-rule
  213.       rule-result-expression)
  214.   (export (compiler macros)
  215.       parse-rule
  216.       rule-result-expression))
  217.  
  218. (define-package (compiler pattern-matcher/early)
  219.   (files  "base/pmerly")
  220.   (parent (compiler))
  221.   (export (compiler)
  222.       early-parse-rule
  223.       early-pattern-lookup
  224.       early-make-rule
  225.       make-database-transformer
  226.       make-symbol-transformer
  227.       make-bit-mask-transformer))
  228.  
  229. (define-package (compiler debugging-information)
  230.   (files "base/infnew")
  231.   (parent (compiler))
  232.   (export (compiler top-level)
  233.       info-generation-phase-1
  234.       info-generation-phase-2
  235.       info-generation-phase-3)
  236.   (export (compiler rtl-generator)
  237.       generated-dbg-continuation)
  238.   (import (runtime compiler-info)
  239.       make-dbg-info
  240.  
  241.       make-dbg-expression
  242.       dbg-expression/block
  243.       dbg-expression/label
  244.       set-dbg-expression/label!
  245.  
  246.       make-dbg-procedure
  247.       dbg-procedure/block
  248.       dbg-procedure/label
  249.       set-dbg-procedure/label!
  250.       dbg-procedure/name
  251.       dbg-procedure/required
  252.       dbg-procedure/optional
  253.       dbg-procedure/rest
  254.       dbg-procedure/auxiliary
  255.       dbg-procedure/external-label
  256.       set-dbg-procedure/external-label!
  257.       dbg-procedure<?
  258.  
  259.       make-dbg-continuation
  260.       dbg-continuation/block
  261.       dbg-continuation/label
  262.       set-dbg-continuation/label!
  263.       dbg-continuation<?
  264.  
  265.       make-dbg-block
  266.       dbg-block/parent
  267.       dbg-block/layout
  268.       dbg-block/stack-link
  269.       set-dbg-block/procedure!
  270.  
  271.       make-dbg-variable
  272.       dbg-variable/value
  273.       set-dbg-variable/value!
  274.  
  275.       dbg-block-name/dynamic-link
  276.       dbg-block-name/ic-parent
  277.       dbg-block-name/normal-closure
  278.       dbg-block-name/return-address
  279.       dbg-block-name/static-link
  280.  
  281.       make-dbg-label-2
  282.       dbg-label/offset
  283.       set-dbg-label/external?!))
  284.  
  285. (define-package (compiler constraints)
  286.    (files "base/constr")
  287.    (parent (compiler))
  288.    (export (compiler)
  289.        make-constraint
  290.        constraint/element
  291.        constraint/graph-head
  292.        constraint/afters
  293.        constraint/closed?
  294.        constraint-add!
  295.        add-constraint-element!
  296.        add-constraint-set!
  297.        make-constraint-graph
  298.        constraint-graph/entry-nodes
  299.        constraint-graph/closed?
  300.        close-constraint-graph!
  301.        close-constraint-node!
  302.        order-per-constraints
  303.        order-per-constraints/extracted
  304.        legal-ordering-per-constraints?
  305.        with-new-constraint-marks
  306.        constraint-marked?
  307.        constraint-mark!
  308.        transitively-close-dag!
  309.        reverse-postorder))
  310.  
  311. (define-package (compiler fg-generator)
  312.   (files "fggen/canon"            ;SCode canonicalizer
  313.      "fggen/fggen"            ;SCode->flow-graph converter
  314.      "fggen/declar"            ;Declaration handling
  315.      )
  316.   (parent (compiler))
  317.   (export (compiler top-level)
  318.       canonicalize/top-level
  319.       construct-graph)
  320.   (import (runtime scode-data)
  321.       &pair-car
  322.       &pair-cdr
  323.       &triple-first
  324.       &triple-second
  325.       &triple-third))
  326.  
  327. (define-package (compiler fg-optimizer)
  328.   (files "fgopt/outer"            ;outer analysis
  329.      "fgopt/sideff"            ;side effect analysis
  330.      )
  331.   (parent (compiler))
  332.   (export (compiler top-level)
  333.       clear-call-graph!
  334.       compute-call-graph!
  335.       outer-analysis
  336.       side-effect-analysis))
  337.  
  338. (define-package (compiler fg-optimizer fold-constants)
  339.   (files "fgopt/folcon")
  340.   (parent (compiler fg-optimizer))
  341.   (export (compiler top-level) fold-constants))
  342.  
  343. (define-package (compiler fg-optimizer operator-analysis)
  344.   (files "fgopt/operan")
  345.   (parent (compiler fg-optimizer))
  346.   (export (compiler top-level) operator-analysis))
  347.  
  348. (define-package (compiler fg-optimizer variable-indirection)
  349.   (files "fgopt/varind")
  350.   (parent (compiler fg-optimizer))
  351.   (export (compiler top-level) initialize-variable-indirections!))
  352.  
  353. (define-package (compiler fg-optimizer environment-optimization)
  354.   (files "fgopt/envopt")
  355.   (parent (compiler fg-optimizer))
  356.   (export (compiler top-level) optimize-environments!))
  357.  
  358. (define-package (compiler fg-optimizer closure-analysis)
  359.   (files "fgopt/closan")
  360.   (parent (compiler fg-optimizer))
  361.   (export (compiler top-level) identify-closure-limits!))
  362.  
  363. (define-package (compiler fg-optimizer continuation-analysis)
  364.   (files "fgopt/contan")
  365.   (parent (compiler fg-optimizer))
  366.   (export (compiler top-level)
  367.       continuation-analysis
  368.       setup-block-static-links!))
  369.  
  370. (define-package (compiler fg-optimizer compute-node-offsets)
  371.   (files "fgopt/offset")
  372.   (parent (compiler fg-optimizer))
  373.   (export (compiler top-level) compute-node-offsets))
  374.  
  375. (define-package (compiler fg-optimizer connectivity-analysis)
  376.   (files "fgopt/conect")
  377.   (parent (compiler fg-optimizer))
  378.   (export (compiler top-level) connectivity-analysis))
  379.  
  380. (define-package (compiler fg-optimizer delete-integrated-parameters)
  381.   (files "fgopt/delint")
  382.   (parent (compiler fg-optimizer))
  383.   (export (compiler top-level) delete-integrated-parameters))
  384.  
  385. (define-package (compiler fg-optimizer design-environment-frames)
  386.   (files "fgopt/desenv")
  387.   (parent (compiler fg-optimizer))
  388.   (export (compiler top-level) design-environment-frames!))
  389.  
  390. (define-package (compiler fg-optimizer setup-block-types)
  391.   (files "fgopt/blktyp")
  392.   (parent (compiler fg-optimizer))
  393.   (export (compiler top-level)
  394.       setup-block-types!
  395.       setup-closure-contexts!)
  396.   (export (compiler)
  397.       indirection-block-procedure))
  398.  
  399. (define-package (compiler fg-optimizer simplicity-analysis)
  400.   (files "fgopt/simple")
  401.   (parent (compiler fg-optimizer))
  402.   (export (compiler top-level) simplicity-analysis)
  403.   (export (compiler fg-optimizer subproblem-ordering)
  404.       new-subproblem/compute-simplicity!))
  405.  
  406. (define-package (compiler fg-optimizer simulate-application)
  407.   (files "fgopt/simapp")
  408.   (parent (compiler fg-optimizer))
  409.   (export (compiler top-level) simulate-application))
  410.  
  411. (define-package (compiler fg-optimizer subproblem-free-variables)
  412.   (files "fgopt/subfre")
  413.   (parent (compiler fg-optimizer))
  414.   (export (compiler top-level) compute-subproblem-free-variables)
  415.   (export (compiler fg-optimizer) map-union)
  416.   (export (compiler fg-optimizer subproblem-ordering)
  417.       new-subproblem/compute-free-variables!))
  418.  
  419. (define-package (compiler fg-optimizer subproblem-ordering)
  420.   (files "fgopt/order")
  421.   (parent (compiler fg-optimizer))
  422.   (export (compiler top-level) subproblem-ordering))
  423.  
  424. (define-package (compiler fg-optimizer subproblem-ordering reuse-frames)
  425.   (files "fgopt/reord" "fgopt/reuse")
  426.   (parent (compiler fg-optimizer subproblem-ordering))
  427.   (export (compiler top-level) setup-frame-adjustments)
  428.   (export (compiler fg-optimizer subproblem-ordering)
  429.       order-subproblems/maybe-overwrite-block))
  430.  
  431. (define-package (compiler fg-optimizer subproblem-ordering parameter-analysis)
  432.    (files "fgopt/param")
  433.    (parent (compiler fg-optimizer subproblem-ordering))
  434.    (export (compiler fg-optimizer subproblem-ordering)
  435.        parameter-analysis))
  436.  
  437. (define-package (compiler fg-optimizer return-equivalencing)
  438.   (files "fgopt/reteqv")
  439.   (parent (compiler fg-optimizer))
  440.   (export (compiler top-level) find-equivalent-returns!))
  441.  
  442. (define-package (compiler rtl-generator)
  443.   (files "rtlgen/rtlgen"        ;RTL generator
  444.      "rtlgen/rgstmt"        ;statements
  445.      "rtlgen/fndvar"        ;find variables
  446.      "machines/spectrum/rgspcm"    ;special close-coded primitives
  447.      "rtlbase/rtline"        ;linearizer
  448.      )
  449.   (parent (compiler))
  450.   (export (compiler)
  451.       make-linearizer)
  452.   (export (compiler top-level)
  453.       generate/top-level
  454.       linearize-rtl
  455.       setup-bblock-continuations!)
  456.   (export (compiler debug)
  457.       linearize-rtl)
  458.   (import (compiler top-level)
  459.       label->object))
  460.  
  461. (define-package (compiler rtl-generator generate/procedure-header)
  462.   (files "rtlgen/rgproc")
  463.   (parent (compiler rtl-generator))
  464.   (export (compiler rtl-generator) generate/procedure-header))
  465.  
  466. (define-package (compiler rtl-generator combination/inline)
  467.   (files "rtlgen/opncod")
  468.   (parent (compiler rtl-generator))
  469.   (export (compiler rtl-generator) combination/inline)
  470.   (export (compiler top-level) open-coding-analysis))
  471.  
  472. (define-package (compiler rtl-generator find-block)
  473.   (files "rtlgen/fndblk")
  474.   (parent (compiler rtl-generator))
  475.   (export (compiler rtl-generator) find-block))
  476.  
  477. (define-package (compiler rtl-generator generate/rvalue)
  478.   (files "rtlgen/rgrval")
  479.   (parent (compiler rtl-generator))
  480.   (export (compiler rtl-generator)
  481.       generate/rvalue
  482.       load-closure-environment
  483.       make-cons-closure-indirection
  484.       make-cons-closure-redirection
  485.       make-closure-redirection
  486.       make-ic-cons
  487.       make-non-trivial-closure-cons
  488.       make-trivial-closure-cons
  489.       redirect-closure))
  490.  
  491. (define-package (compiler rtl-generator generate/combination)
  492.   (files "rtlgen/rgcomb")
  493.   (parent (compiler rtl-generator))
  494.   (export (compiler rtl-generator)
  495.       generate/combination
  496.       rtl:bump-closure)
  497.   (export (compiler rtl-generator combination/inline)
  498.       generate/invocation-prefix))
  499.  
  500. (define-package (compiler rtl-generator generate/return)
  501.   (files "rtlgen/rgretn")
  502.   (parent (compiler rtl-generator))
  503.   (export (compiler rtl-generator)
  504.       make-return-operand
  505.       generate/return
  506.       generate/return*
  507.       generate/trivial-return))
  508.  
  509. (define-package (compiler rtl-cse)
  510.   (files "rtlopt/rcse1"            ;RTL common subexpression eliminator
  511.      "rtlopt/rcse2"
  512.      "rtlopt/rcseep"        ;CSE expression predicates
  513.      "rtlopt/rcseht"        ;CSE hash table
  514.      "rtlopt/rcserq"        ;CSE register/quantity abstractions
  515.      "rtlopt/rcsesr"        ;CSE stack references
  516.      )
  517.   (parent (compiler))
  518.   (export (compiler top-level) common-subexpression-elimination))
  519.  
  520. (define-package (compiler rtl-optimizer)
  521.   (files "rtlopt/rdebug")
  522.   (parent (compiler)))
  523.  
  524. (define-package (compiler rtl-optimizer invertible-expression-elimination)
  525.   (files "rtlopt/rinvex")
  526.   (parent (compiler rtl-optimizer))
  527.   (export (compiler top-level) invertible-expression-elimination))
  528.  
  529. (define-package (compiler rtl-optimizer common-suffix-merging)
  530.   (files "rtlopt/rtlcsm")
  531.   (parent (compiler rtl-optimizer))
  532.   (export (compiler top-level) merge-common-suffixes!))
  533.  
  534. (define-package (compiler rtl-optimizer rtl-dataflow-analysis)
  535.   (files "rtlopt/rdflow")
  536.   (parent (compiler rtl-optimizer))
  537.   (export (compiler top-level) rtl-dataflow-analysis))
  538.  
  539. (define-package (compiler rtl-optimizer rtl-rewriting)
  540.   (files "rtlopt/rerite")
  541.   (parent (compiler rtl-optimizer))
  542.   (export (compiler top-level)
  543.       rtl-rewriting:post-cse
  544.       rtl-rewriting:pre-cse)
  545.   (export (compiler lap-syntaxer) add-rewriting-rule!))
  546.  
  547. (define-package (compiler rtl-optimizer lifetime-analysis)
  548.   (files "rtlopt/rlife")
  549.   (parent (compiler rtl-optimizer))
  550.   (export (compiler top-level) lifetime-analysis)
  551.   (export (compiler rtl-optimizer code-compression) mark-set-registers!))
  552.  
  553. (define-package (compiler rtl-optimizer code-compression)
  554.   (files "rtlopt/rcompr")
  555.   (parent (compiler rtl-optimizer))
  556.   (export (compiler top-level) code-compression))
  557.  
  558. (define-package (compiler rtl-optimizer register-allocation)
  559.   (files "rtlopt/ralloc")
  560.   (parent (compiler rtl-optimizer))
  561.   (export (compiler top-level) register-allocation))
  562.  
  563. (define-package (compiler lap-syntaxer)
  564.   (files "back/lapgn1"            ;LAP generator
  565.      "back/lapgn2"            ; "      "
  566.      "back/lapgn3"            ; "      "
  567.      "back/regmap"            ;Hardware register allocator
  568.      "machines/spectrum/lapgen"    ;code generation rules
  569.      "machines/spectrum/rules1"    ;  "      "        "
  570.      "machines/spectrum/rules2"    ;  "      "        "
  571.      "machines/spectrum/rules3"    ;  "      "        "
  572.      "machines/spectrum/rules4"    ;  "      "        "
  573.      "machines/spectrum/rulfix"    ;  "      "        "
  574.      "machines/spectrum/rulflo"    ;  "      "        "
  575.      "machines/spectrum/rulrew"    ;code rewriting rules
  576.      "back/syntax"            ;Generic syntax phase
  577.      "back/syerly"            ;Early binding version
  578.      "machines/spectrum/coerce"    ;Coercions: integer -> bit string
  579.      "back/asmmac"            ;Macros for hairy syntax
  580.      "machines/spectrum/insmac"    ;Macros for hairy syntax
  581.      "machines/spectrum/inerly"    ;Early binding version
  582.      "machines/spectrum/instr1"    ;Spectrum instruction utilities
  583.      "machines/spectrum/instr2"    ;Spectrum instructions
  584.      "machines/spectrum/instr3"    ;  "        "
  585.      )
  586.   (parent (compiler))
  587.   (export (compiler)
  588.       available-machine-registers
  589.       fits-in-5-bits-signed?
  590.       lap-generator/match-rtl-instruction
  591.       lap:make-entry-point
  592.       lap:make-label-statement
  593.       lap:make-unconditional-branch
  594.       lap:syntax-instruction)
  595.   (export (compiler top-level)
  596.       *block-associations*
  597.       *interned-assignments*
  598.       *interned-constants*
  599.       *interned-global-links*
  600.       *interned-uuo-links*
  601.       *interned-static-variables*
  602.       *interned-variables*
  603.       *next-constant*
  604.       generate-lap)
  605.   (import (scode-optimizer expansion)
  606.       scode->scode-expander))
  607.  
  608. (define-package (compiler lap-syntaxer map-merger)
  609.   (files "back/mermap")
  610.   (parent (compiler lap-syntaxer))
  611.   (export (compiler lap-syntaxer)
  612.       merge-register-maps))
  613.  
  614. (define-package (compiler lap-syntaxer linearizer)
  615.   (files "back/linear")
  616.   (parent (compiler lap-syntaxer))
  617.   (export (compiler lap-syntaxer)
  618.       add-end-of-block-code!
  619.       add-extra-code!
  620.       bblock-linearize-lap
  621.       extra-code-block/xtra
  622.       declare-extra-code-block!
  623.       find-extra-code-block
  624.       linearize-lap
  625.       set-current-branches!
  626.       set-extra-code-block/xtra!)
  627.   (export (compiler top-level)
  628.       *end-of-block-code*
  629.       linearize-lap))
  630.  
  631. (define-package (compiler lap-optimizer)
  632.   (files "machines/spectrum/lapopt")
  633.   (parent (compiler))
  634.   (export (compiler top-level)
  635.       optimize-linear-lap))
  636.  
  637. (define-package (compiler assembler)
  638.   (files "machines/spectrum/assmd"    ;Machine dependent
  639.      "back/symtab"            ;Symbol tables
  640.      "back/bitutl"            ;Assembly blocks
  641.      "back/bittop"            ;Assembler top level
  642.      )
  643.   (parent (compiler))
  644.   (export (compiler)
  645.       instruction-append)
  646.   (export (compiler top-level)
  647.       assemble))
  648.  
  649. (define-package (compiler disassembler)
  650.   (files "machines/spectrum/dassm1"
  651.      "machines/spectrum/dassm2"
  652.      "machines/spectrum/dassm3")
  653.   (parent (compiler))
  654.   (export ()
  655.       compiler:write-lap-file
  656.       compiler:disassemble)
  657.   (import (runtime compiler-info)
  658.       compiled-code-block/dbg-info
  659.       dbg-info-vector/blocks-vector
  660.       dbg-info-vector?
  661.       dbg-info/labels
  662.       dbg-label/external?
  663.       dbg-label/name
  664.       dbg-labels/find-offset))
  665.