


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;
};;
};


