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_types_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_datatypes : 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