PreviousUpNext

14.5.8  Global_Controls

The compiler Global_Controls api defines the interface for modulating the behavior of the Mythryl compiler via various tweakable settings, based on bazillions of icky thread-hostile mutable global variables.

The Global_Controls api is implemented by the global_controls package.

The Global_Controls api source code is in src/lib/compiler/toplevel/main/global-controls.api.

The above information is manually maintained and may contain errors.

api {   package mc
          : api {
                print_args : Ref(Bool );
                print_ret : Ref(Bool );
                bind_no_variable_warn : Ref(Bool );
                warn_on_nonexhaustive_bind : Ref(Bool );
                error_on_nonexhaustive_bind : Ref(Bool );
                warn_on_nonexhaustive_match : Ref(Bool );
                error_on_nonexhaustive_match : Ref(Bool );
                warn_on_redundant_match : Ref(Bool );
                error_on_redundant_match : Ref(Bool );};;
        package compiler
          : api {
                allocprof : Ref(Bool );
                alphac : Ref(Bool );
                argrep : Ref(Bool );
                arithopt : Ref(Bool );
                beta_contract : Ref(Bool );
                beta_expand : Ref(Bool );
                bodysize : Ref(Int );
                boxedconstconreps : Ref(Bool );
                branchfold : Ref(Bool );
                callee_function : Ref(Int );
                checknextcode1 : Ref(Bool );
                checknextcode2 : Ref(Bool );
                checknextcode3 : Ref(Bool );
                checknextcode : Ref(Bool );
                checklty1 : Ref(Bool );
                checklty2 : Ref(Bool );
                checklty3 : Ref(Bool );
                closure_strategy : Ref(Int );
                closureprint : Ref(Bool );
                comment : Ref(Bool );
                comparefold : Ref(Bool );
                optional_nextcode_improvers : Ref(List(String ) );
                cse : Ref(Bool );
                csehoist : Ref(Bool );
                deadup : Ref(Bool );
                deadvars : Ref(Bool );
                debugnextcode : Ref(Bool );
                dropargs : Ref(Bool );
                escape_function : Ref(Int );
                eta : Ref(Bool );
                extraflatten : Ref(Bool );
                flatfblock : Ref(Bool );
                flattenargs : Ref(Bool );
                foldconst : Ref(Bool );
                handlerfold : Ref(Bool );
                hoistdown : Ref(Bool );
                hoistup : Ref(Bool );
                icount : Ref(Bool );
                if_idiom : Ref(Bool );
                invariant : Ref(Bool );
                known_cl_function : Ref(Int );
                known_function : Ref(Int );
                knownfiddle : Ref(Bool );
                lambdaopt : Ref(Bool );
                lambdaprop : Ref(Bool );
                misc4 : Ref(Int );
                newconreps : Ref(Bool );
                path : Ref(Bool );
                poll_checks : Ref(Bool );
                poll_ratio_a_to_i : Ref(Float );
                printit : Ref(Bool );
                printsize : Ref(Bool );
                rangeopt : Ref(Bool );
                recordcopy : Ref(Bool );
                recordopt : Ref(Bool );
                recordpath : Ref(Bool );
                reducemore : Ref(Int );
                rounds : Ref(Int );
                scheduling : Ref(Bool );
                selectopt : Ref(Bool );
                sharepath : Ref(Bool );
                spill_function : Ref(Int );
                static_closure_size_profiling : Ref(Bool );
                switchopt : Ref(Bool );
                tail : Ref(Bool );
                tailrecur : Ref(Bool );
                targeting : Ref(Int );
                uncurry : Ref(Bool );
                unroll : Ref(Bool );
                unroll_recursion : Ref(Bool );
                split_known_escaping_functions : Ref(Bool );
                improve_after_closure : Ref(Bool );
                debug_representation : Ref(Bool );
                print_flowgraph_stream : Ref(Output_Stream );
                disambiguate_memory : Ref(Bool );
                control_dependence : Ref(Bool );
                comp_debugging : Ref(Bool );
                module_junk_debugging : Ref(Bool );
                translate_to_anormcode_debugging : Ref(Bool );
                type_junk_debugging : Ref(Bool );
                types_debugging : Ref(Bool );
                expand_generics_g_debugging : Ref(Bool );
                typerstore_debugging : Ref(Bool );
                generics_expansion_junk_debugging : Ref(Bool );
                api_match_debugging : Ref(Bool );
                type_package_language_debugging : Ref(Bool );
                typer_junk_debugging : Ref(Bool );
                type_api_debugging : Ref(Bool );
                typecheck_type_debugging : Ref(Bool );
                unify_typoids_debugging : Ref(Bool );
                translate_types_debugging : Ref(Bool );
                expand_oop_syntax_debugging : Ref(Bool );
                verbose_compile_log : Ref(Bool );
                trap_int_overflow : Ref(Bool );
                check_vector_index_bounds : Ref(Bool );
                compile_in_subprocesses : Ref(Bool );};;
        package lowhalf
          : api {
                registry : ?.global_control_index::Global_Control_Index;
                prefix : String;
                menu_slot : ?.global_control::Menu_Slot;
                Cpu_Time  = {gc:time::Time, sys:time::Time, usr:time::Time};
                lowhalf : Ref(Bool );
                lowhalf_phases : Ref(List(String ) );
                debug_stream : Ref(Output_Stream );
                Global_Control_Set X = ?.global_control_set::Global_Control_Set((X, Ref(X )));
                counters : Global_Control_Set(Int );
                ints : Global_Control_Set(Int );
                bools : Global_Control_Set(Bool );
                floats : Global_Control_Set(Float );
                strings : Global_Control_Set(String );
                string_lists : Global_Control_Set(List(String ) );
                timings : Global_Control_Set(Cpu_Time );
                make_counter : (String , String) -> Ref(Int );
                make_int : (String , String) -> Ref(Int );
                make_bool : (String , String) -> Ref(Bool );
                make_float : (String , String) -> Ref(Float );
                make_string : (String , String) -> Ref(String );
                make_string_list : (String , String) -> Ref(List(String ) );
                make_timing : (String , String) -> Ref(Cpu_Time );
                counter : String -> Ref(Int );
                int : String -> Ref(Int );
                bool : String -> Ref(Bool );
                float : String -> Ref(Float );
                string : String -> Ref(String );
                string_list : String -> Ref(List(String ) );
                timing : String -> Ref(Cpu_Time );
                get_counter : String -> Ref(Int );
                get_int : String -> Ref(Int );
                get_bool : String -> Ref(Bool );
                get_float : String -> Ref(Float );
                get_string : String -> Ref(String );
                get_string_list : String -> Ref(List(String ) );
                get_timing : String -> Ref(Cpu_Time );};;
        package print
          : api {
                print_depth : Ref(Int );
                print_length : Ref(Int );
                string_depth : Ref(Int );
                integer_depth : Ref(Int );
                print_loop : Ref(Bool );
                apis : Ref(Int );
                print_includes : Ref(Bool );
                out : Ref({flush:Void -> Void, say:String -> Void} );
                linewidth : Ref(Int );
                say : String -> Void;
                flush : Void -> Void;};;
        package highcode
          : api {
                print : Ref(Bool );
                print_phases : Ref(Bool );
                print_function_types : Ref(Bool );
                anormcode_passes : Ref(List(String ) );
                inline_threshold : Ref(Int );
                unroll_threshold : Ref(Int );
                maxargs : Ref(Int );
                dropinvariant : Ref(Bool );
                specialize : Ref(Bool );
                sharewrap : Ref(Bool );
                saytappinfo : Ref(Bool );
                misc : Ref(Int );
                check : Ref(Bool );
                check_sumtypes : Ref(Bool );
                check_kinds : Ref(Bool );};;
    debugging : Ref(Bool );
    unparse_raw_syntax_tree : Ref(Bool );
    unparse_deep_syntax_tree : Ref(Bool );
    execute_compiled_code : Ref(Bool );
    prettyprint_raw_syntax_tree : Ref(Bool );
    print_warnings : Ref(Bool );
    top_index : ?.global_control_index::Global_Control_Index;
        note_subindex :
        (String , ?.global_control_index::Global_Control_Index , ?.global_control::Menu_Slot) -> Void;
    primary_prompt : Ref(String );
    secondary_prompt : Ref(String );
    show_interactive_result_types : Ref(Bool );
    edit_request_stream : Ref(Null_Or(Output_Stream ) );
    lazy_is_a_keyword : Ref(Bool );
    support_smlnj_antiquotes : Ref(Bool );
    print_interactive_prompts : Ref(Bool );
    unparse_result : Ref(Bool );
    log_edit_requests : Ref(Bool );
    remember_highcode_codetemp_names : Ref(Bool );
    value_restriction_local_warn : Ref(Bool );
    value_restriction_top_warn : Ref(Bool );
    mult_def_warn : Ref(Bool );
    share_def_error : Ref(Bool );
    macro_expand_sigs : Ref(Bool );
    internals : Ref(Bool );
    interp : Ref(Bool );
    save_lambda : Ref(Bool );
    preserve_lvar_names : Ref(Bool );
    mark_deep_syntax_tree : Ref(Bool );
    track_exn : Ref(Bool );
    poly_eq_warn : Ref(Bool );
    indexing : Ref(Bool );
    inst_sigs : Ref(Bool );
    saveit : Ref(Bool );
    save_deep_syntax_tree : Ref(Bool );
    save_convert : Ref(Bool );
    save_nextcode : Ref(Bool );
    save_closure : Ref(Bool );
    tdp_instrument_enabled : Ref(Bool );
        package inline
          : api {
                Global_Setting  = DEFAULT Null_Or(Int ) | OFF;
                Localsetting  = Null_Or(Null_Or(Int ) );
                use_default : Localsetting;
                suggest : Null_Or(Int ) -> Localsetting;
                set : Global_Setting -> Void;
                get : Void -> Null_Or(Int );
                get' : Localsetting -> Null_Or(Int );
                parse : String -> Null_Or(Global_Setting );
                show : Global_Setting -> String;};;};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext