PreviousUpNext

15.2.54  src/lib/compiler/core.sublib

## core.sublib

# Compiled by:
#     src/lib/core/viscomp/core.lib



# This is the machine-independent "core" part of the compiler
# (but without the parser and typechecker data packages).
# Machine-dependent parts are in backend-<architecture>.lib.
#
# The parser is in parse/parser.lib.
# Typechecker data structures are in typer-stuff/typecheckdata.sublib.
# Basic definitions are in basics/basics.sublib.
#
# The present file is a group which gets referred to by the actual library
# file in src/lib/core/viscomp/core.lib.



SUBLIBRARY_EXPORTS

        api Mythryl_Compiler

        # To make it possible to dynamically link in the optimizer, 
        # we have to export the following to the library.
        # A.Leung.

        api Backend_Lowhalf
        api Heapcleaner_Control
        api Platform_Register_Info
        api Client_Pseudo_Ops_Mythryl

        pkg nextcode_ramregions

        api Per_Codetemp_Heapcleaner_Info
        pkg per_codetemp_heapcleaner_info

        pkg type_core_language_declaration

        # To be able to separate machine-dependent parts
        # of viscomp-lib.lib from machine-independent parts,
        # we must also export the the following things:


        api Machine_Properties

        pkg machine_properties_default
        pkg late_constant

        api Treecode_Extension_Mythryl
        pkg treecode_extension_mythryl

        api Code_Segment_Buffer
        pkg code_segment_buffer

        generic   treecode_extension_compiler_mythryl_g
        generic   client_pseudo_ops_mythryl_g

        generic mythryl_compiler_g
        generic backend_tophalf_g
        generic backend_lowhalf_g
        generic spill_table_g

        pkg use_virtual_framepointer_in_cccomponent

        # Stuff that lived (or should have) in Frontend (aka GenericVC, where vc == "[user-] visible compiler")
        pkg global_controls
        pkg inlining_mapstack
        pkg base_types_and_ops
        pkg compiler_mapstack_set
        pkg compiler_state
        pkg latex_print_compiler_state
        pkg unparse_compiler_state
        pkg stampmapstack
        pkg collect_all_modtrees_in_symbolmapstack
        pkg pickler_junk
        pkg unpickler_junk
        pkg rehash_module
        pkg compiler_unparse_table
        pkg print_hooks
        pkg mythryl_compiler_version
        pkg core_symbol
        pkg anormcode_form

        api Symbol_And_Picklehash_Pickling
        pkg symbol_and_picklehash_pickling

        api Symbol_And_Picklehash_Unpickling
        pkg symbol_and_picklehash_unpickling

        api Type_Declaration_Types
        pkg type_declaration_types

        pkg typerstore
        pkg module_level_declarations
        pkg stamp
        pkg symbolmapstack_entry
        pkg type_junk
        pkg type_package_language
        pkg variables_and_constructors
        pkg module_junk
        pkg inlining_data
        pkg more_type_types
        pkg unparse_type
        pkg prettyprint_type
        pkg varhome
        pkg unify_typoids

        # Corresponding apis:
        api Global_Controls
        api Inlining_Mapstack
        api Compiler_Mapstack_Set
        api Base_Types_And_Ops
        api Compiler_State
        api Unparse_Compiler_State
        api Latex_Print_Compiler_State
        api Stampmapstack
        api Pickler_Junk
        api Unpickler_Junk
        api Anormcode_Form

        api Typerstore
        api Module_Level_Declarations
        api Stamp
        api Symbolmapstack_Entry
        api Type_Junk
        api Type_Package_Language
        api Variables_And_Constructors
        api Module_Junk
        api More_Type_Types
        api Unparse_Type
        api Prettyprint_Type
        api Varhome
        api Unify_Typoids


        api Prettyprint_Highcode_Types
        pkg prettyprint_highcode_types

        # Export of packages required to use highcode directly:
        pkg translate_deep_syntax_to_lambdacode
        pkg highcode_uniq_types
        pkg highcode_type
        pkg highcode_form
        pkg highcode_basetypes  
        pkg prettyprint_anormcode
        pkg improve_anormcode_quickly
        pkg specialize_anormcode_to_least_general_type
        pkg highcode_baseops
        pkg highcode_codetemp
        pkg type_anormcode
        pkg debruijn_index

        api Prettyprint_Symbolmapstack
        pkg prettyprint_symbolmapstack

        api Latex_Print_Symbolmapstack
        pkg latex_print_symbolmapstack




SUBLIBRARY_COMPONENTS

        toplevel/compiler-state/compiler-mapstack-set.api
        toplevel/compiler-state/compiler-mapstack-set.pkg
        toplevel/compiler-state/inlining-mapstack.api
        toplevel/compiler-state/inlining-mapstack.pkg

        toplevel/interact/compiler-state.api
        toplevel/interact/compiler-state.pkg
        toplevel/interact/read-eval-print-loop.api
        toplevel/interact/read-eval-print-loop-g.pkg
        toplevel/interact/read-eval-print-loops.api
        toplevel/interact/read-eval-print-loops-g.pkg

        toplevel/compiler/mythryl-compiler.api
        toplevel/compiler/mythryl-compiler-g.pkg

        toplevel/main/control-apis.api
        toplevel/main/global-controls.api
        toplevel/main/match-compiler-controls.pkg
        toplevel/main/compiler-controls.pkg
        toplevel/main/global-controls.pkg
        toplevel/main/compiler-configuration.api
        toplevel/main/backend.api
        toplevel/main/translate-raw-syntax-to-execode.api
        toplevel/main/translate-raw-syntax-to-execode-g.pkg
        toplevel/main/print-hooks.pkg
        toplevel/main/compiler-unparse-table.pkg

        # Semantic analysis (typechecker) specialized for Mythryl:
        #
        front/semantic/basics/inlining-junk.api
        front/semantic/basics/inlining-junk.pkg

        front/semantic/typecheck/type-package-language.pkg
        front/semantic/typecheck/translate-raw-syntax-to-deep-syntax.pkg

        front/semantic/modules/generics-expansion-junk-parameter.pkg
        front/semantic/modules/generics-expansion-junk.pkg
        front/semantic/modules/api-match.pkg
        front/semantic/modules/expand-generic.pkg
        front/semantic/modules/package-property-lists.pkg

        front/semantic/pickle/symbol-and-picklehash-pickling.api
        front/semantic/pickle/symbol-and-picklehash-pickling.pkg

        front/semantic/pickle/pickler-junk.api
        front/semantic/pickle/pickler-junk.pkg

        front/semantic/pickle/symbol-and-picklehash-unpickling.api
        front/semantic/pickle/symbol-and-picklehash-unpickling.pkg

        front/semantic/pickle/unpickler-junk.api
        front/semantic/pickle/unpickler-junk.pkg

        front/semantic/pickle/rehash-module.pkg

        front/semantic/symbolmapstack/base-types-and-ops.pkg

        front/semantic/types/typevar-info.pkg
        front/semantic/types/type-core-language-declaration.pkg
        front/semantic/types/cproto.pkg

        # 2007-12-06 CrT:  Moved here from   typecheckdata.sublib  because
        #                  it needs access to both prettyprint-values in typecheck.lib
        #                  and also                symbolmapstack.pkg   in typecheckdata.sublib
        #                  -- and core.lib is their lowest common ancestor, plus the location
        #                  of its caller, translate-raw-syntax-to-execode-g.pkg.  Ick.
        front/typer-stuff/symbolmapstack/prettyprint-symbolmapstack.api
        front/typer-stuff/symbolmapstack/prettyprint-symbolmapstack.pkg
         
        front/typer-stuff/symbolmapstack/unparse-compiler-state.api
        front/typer-stuff/symbolmapstack/unparse-compiler-state.pkg
         
        front/typer-stuff/symbolmapstack/latex-print-symbolmapstack.api
        front/typer-stuff/symbolmapstack/latex-print-symbolmapstack.pkg
         
        front/typer-stuff/symbolmapstack/latex-print-compiler-state.api
        front/typer-stuff/symbolmapstack/latex-print-compiler-state.pkg
         


        # The machine-independent optimizer (back end upper half):
        back/top/closures/allocprof.pkg
        back/top/closures/dummy-nextcode-inlining-g.pkg
        back/top/closures/freemap-unused.pkg
        back/top/closures/unnest-nextcode-fns.pkg
        back/top/closures/make-nextcode-closures-g.pkg
        back/top/closures/make-per-function-free-variable-maps.pkg
        back/top/closures/static-closure-size-profiling-g.pkg
        back/top/closures/unrebind.pkg
        back/top/nextcode/translate-anormcode-to-nextcode-g.pkg
        back/top/nextcode/nextcode-form.api
        back/top/nextcode/nextcode-form.pkg
        back/top/nextcode/nextcode-preimprover-transform-g.pkg
        back/top/nextcode/prettyprint-nextcode.pkg
        back/top/nextcode/improve-anormcode-switch-fn.pkg
        back/top/improve-nextcode/clean-nextcode-g.pkg
        back/top/improve-nextcode/run-optional-nextcode-improvers-g.pkg
        back/top/improve-nextcode/inline-nextcode-buckpass-calls.pkg
        back/top/improve-nextcode/split-nextcode-fns-into-known-vs-escaping-versions-g.pkg
        back/top/improve-nextcode/do-nextcode-inlining-g.pkg
        back/top/improve-nextcode/do-nextcode-inlining-new-unused-g.pkg
        back/top/improve-nextcode/convert-monoarg-to-multiarg-nextcode-g.pkg
        back/top/improve-nextcode/uncurry-nextcode-functions-g.pkg
        back/top/improve-nextcode/replace-unlimited-precision-int-ops-in-nextcode.pkg
        back/top/anormcode/type-anormcode.pkg
        back/top/anormcode/anormcode-form.api
        back/top/anormcode/anormcode-form.pkg
        back/top/anormcode/anormcode-junk.pkg
        back/top/anormcode/prettyprint-anormcode.api
        back/top/anormcode/prettyprint-anormcode.pkg
        back/top/anormcode/anormcode-namedtypevar-vs-debruijntypevar-forms.pkg
        back/top/highcode/highcode-basetypes.api
        back/top/highcode/highcode-basetypes.pkg
        back/top/highcode/highcode-type.api
        back/top/highcode/highcode-type.pkg
        back/top/highcode/highcode-dictionary.pkg
        back/top/highcode/highcode-form.api
        back/top/highcode/highcode-form.pkg
        back/top/highcode/highcode-uniq-types.api
        back/top/highcode/highcode-uniq-types.pkg
        back/top/highcode/prettyprint-highcode-types.pkg
        back/top/highcode/highcode-baseops.api
        back/top/highcode/highcode-baseops.pkg
        back/top/main/backend-tophalf-g.pkg
        back/top/main/anormcode-sequencer-controls.pkg
        back/top/main/make-nextcode-literals-bytecode-vector.pkg
        back/top/improve/improve-mutually-recursive-anormcode-functions.pkg
        back/top/improve/def-use-analysis-of-anormcode.pkg
        back/top/improve/improve-anormcode.pkg
        back/top/improve/optutils.pkg
        back/top/improve/improve-anormcode-quickly.pkg
        back/top/improve/recover-anormcode-type-info.pkg
        back/top/improve/specialize-anormcode-to-least-general-type.pkg
        back/top/improve/loopify-anormcode.pkg
        back/top/improve/do-crossmodule-anormcode-inlining.pkg
        back/top/improve/convert-free-variables-to-parameters-in-anormcode.pkg
        back/top/improve/eliminate-array-bounds-checks-in-anormcode.pkg
        back/top/lambdacode/check-lambdacode-expression.pkg
        back/top/lambdacode/translate-lambdacode-to-anormcode.pkg
        back/top/lambdacode/convert-monoarg-to-multiarg-anormcode.api
        back/top/lambdacode/convert-monoarg-to-multiarg-anormcode.pkg
        back/top/lambdacode/lambdacode-form.api
        back/top/lambdacode/lambdacode-form.pkg
#       back/top/lambdacode/lambdacode-type.pkg
        back/top/lambdacode/prettyprint-lambdacode-expression.pkg
        back/top/lambdacode/generalized-sethi-ullman-reordering.pkg
        back/top/forms/make-anormcode-coercion-fn.pkg
        back/top/forms/make-anormcode-equality-fn.pkg
        back/top/forms/drop-types-from-anormcode.pkg 
        back/top/forms/anormcode-runtime-type.pkg
        back/top/forms/drop-types-from-anormcode-junk.pkg 
        back/top/forms/insert-anormcode-boxing-and-coercion-code.pkg
        back/top/translate/translate-deep-syntax-pattern-to-lambdacode.pkg
        back/top/translate/translate-deep-syntax-pattern-to-lambdacode-junk.pkg
        back/top/translate/polyequal.pkg
        back/top/translate/template-expansion.pkg
        back/top/translate/translate-deep-syntax-to-lambdacode.pkg
        back/top/translate/translate-deep-syntax-types-to-lambdacode.pkg
        back/top/lsplit/lambdasplit-inlining.pkg


        # The code generator (lowhalf specialized for Lib7):
        #
        back/low/main/nextcode/convert-nextcode-fun-args-to-treecode.api
        back/low/main/nextcode/convert-nextcode-fun-args-to-treecode-g.pkg
        back/low/main/nextcode/check-heapcleaner-calls.api
        back/low/main/nextcode/check-heapcleaner-calls-g.pkg
        back/low/main/nextcode/find-nextcode-cccomponents.pkg
        back/low/main/nextcode/nextcode-aliasing-g.pkg
        back/low/main/nextcode/nextcode-ccalls-g.pkg
        back/low/main/nextcode/guess-nextcode-branch-probabilities.pkg
        back/low/main/nextcode/nextcode-ramregions.api
        back/low/main/nextcode/nextcode-ramregions.pkg
        back/low/main/nextcode/platform-register-info.api
        back/low/main/nextcode/nextcode-function-stack.api
        back/low/main/nextcode/nextcode-function-stack-g.pkg
        back/low/main/nextcode/emit-treecode-heapcleaner-calls.api
        back/low/main/nextcode/emit-treecode-heapcleaner-calls-g.pkg
        back/low/main/nextcode/pick-nextcode-fns-for-heaplimit-checks.pkg
        back/low/main/nextcode/memory-aliasing-g.pkg
        back/low/main/nextcode/memory-disambiguation-unused-g.pkg
        back/low/main/nextcode/client-pseudo-ops-mythryl.api
        back/low/main/nextcode/late-constant.pkg
        back/low/main/nextcode/per-codetemp-heapcleaner-info.api
        back/low/main/nextcode/per-codetemp-heapcleaner-info.pkg
        back/low/main/nextcode/treecode-extension-mythryl.api
        back/low/main/nextcode/treecode-extension-mythryl.pkg
        back/low/main/nextcode/treecode-extension-compiler-mythryl-g.pkg
        back/low/main/nextcode/client-pseudo-ops-mythryl-g.pkg
        back/low/main/nextcode/spill-nextcode-registers-g.pkg
        back/low/main/main/use-virtual-framepointer-in-cccomponent.pkg                                          # temporary hack; see comment in file XXX BUGGO FIXME
        back/low/main/main/backend-lowhalf-core.api
        back/low/main/main/backend-lowhalf.api
        back/low/main/main/backend-lowhalf-g.pkg
        back/low/main/main/machine-properties.api
        back/low/main/main/machine-properties-default.pkg
        back/low/main/main/translate-nextcode-to-treecode-g.pkg
        back/low/main/main/heap-tags.api
        back/low/main/main/heap-tags.pkg
        back/low/main/main/spill-table-g.pkg

        # Miscellaneous utilities:
        #
        $ROOT/src/lib/compiler/src/fconst/slow-portable-floating-point-constants-g.pkg
        $ROOT/src/lib/compiler/src/fconst/ieee-float-constants.pkg

        $ROOT/src/lib/compiler/src/print/unparse-interactive-deep-syntax-declaration.pkg
        $ROOT/src/lib/compiler/src/print/unparse-chunk.pkg
        $ROOT/src/lib/compiler/src/print/prettyprint-table.pkg

        $ROOT/src/lib/compiler/src/stuff/compute-minimum-feedback-vertex-set-of-digraph.pkg
        $ROOT/src/lib/compiler/src/stuff/literal-to-num.pkg             # Uses CoreInteger functionality *)

        # Libraries that are part of the visible compiler framework:
        #
        $ROOT/src/lib/core/viscomp/basics.lib
        $ROOT/src/lib/core/viscomp/parser.lib
        $ROOT/src/lib/core/viscomp/typecheckdata.lib
        $ROOT/src/lib/core/viscomp/typecheck.lib
        $ROOT/src/lib/core/viscomp/debugprof.lib
        $ROOT/src/lib/core/viscomp/execute.lib

        # Lowhalf libraries:
        #
        back/low/lib/lib.lib                            # Provides sorted_list
        back/low/lib/control.lib
        back/low/lib/lowhalf.lib
        back/low/lib/visual.lib

        # Other libaries:
        $ROOT/src/lib/graph/graphs.lib
        $ROOT/src/lib/std/standard.lib
        $ROOT/src/lib/global-controls/global-controls.lib
        $ROOT/src/lib/compiler/src/library/pickle.lib

        $ROOT/src/lib/core/init/init.cmi : cm                           # To gain access at CoreInteger

#       $ROOT/src/lib/core/internal/lib7-version.lib
        $ROOT/src/lib/core/internal/mythryl-compiler-version.pkg        # Above is broken, this is a work-around. See comments in 

        $ROOT/src/lib/prettyprint/big/prettyprinter.lib


## Copyright YALE FLINT PROJECT 1997
## and
## (C) 2001 Lucent Technologies, Bell labs
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext