class PROG


Flattened version is here



Public


Readable Attributes
attr all_reached:BOOL;
**** True when all reachable code emitted
attr arch:STR;
**** Architecture to compile for (pSather only)
attr arith_checks:BOOL;
**** true if at least one class makes arith. checks
attr as_tbl:PROG_AS_TBL;
**** The table of code trees.
attr assert_checks:BOOL;
**** true if at least one class makes assert checks
attr back_end:$BACK_END;
attr boot:BOOL;
**** true if a boot compiler is beeing generated
attr build_type_graph:$BUILD_TYPE_GRAPH;
attr check_am:$CHECK_AM;
attr check_ifc_conformance:$CHECK_IFC_CONFORMANCE;
attr config:CONFIG_TBL;
**** the configuration table been examined to get other types.
attr distributed:BOOL;
**** Accept pSather code and generate code for more than one cluster
attr eloc:SFILE_ID;
**** Current error location.
attr err_list:FLIST{SFILE_ID};
attr err_seen:BOOL;
**** True if an error has been seen.
attr find_types:$FIND_TYPES;
attr generate_am:$GENERATE_AM;
attr generate_checked_code:BOOL;
**** Generate all code if true.
attr genuine_platforms:INT;
**** counter, incremented each time a "real" platform (as opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr get_main_sig:$GET_MAIN_SIG;
attr get_options:$GET_OPTIONS;
attr hoist_const:BOOL;
**** true if loop constants should be hoisted
attr hoist_iter_init:BOOL;
**** true if the initialization of iters has to be hoisted
attr home:STR;
**** home opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr hotcounts:ARRAY{INT};
attr inline_iters:BOOL;
**** true if iters are to be inlined
attr inline_routs:BOOL;
**** true if routines are to be inlined
attr inliner:$INLINE;
attr itercounts:ARRAY{INT};
attr locks_on_stack:BOOL;
**** true if locks that don't have to be on the exc. stack should not be put there
attr loops_seen:FSET{SFILE_ID};
attr main_class:STR;
**** The class with main opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr move_while:BOOL;
**** true if while!/until! have to be moved to the end of loops
attr no_new_types: BOOL;
**** True, when find_types has finished. for debugging
attr opt_debug:BOOL;
**** print out optimizer debug info
attr opt_debug_func:FLIST{STR};
**** if not void only functions with a signature that contains one of these strings are "opt_debuggged"
attr opt_verbose:BOOL;
**** print out opt. info
attr optimizer:$OPTIMIZE;
attr parse:$PARSE;
attr parse_nonlib_classes:BOOL;
**** true if non library classes should be parsed, and not only classes reachable from the main class.
attr platforms:FLIST{STR};
**** list of platforms to be used opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr
**** true if at least one class makes post checks
attr
****e checks
attr print_version:BOOL;
**** Prints info about compiler version. etc opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr prolix:BOOL;
**** Be really noisy opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr replace_iters:BOOL;
**** true if array and some int iters should be replaced
attr sather_files:FSET{STR};
**** Sather source files opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr show_am:BOOL;
**** Show the am code generated.
attr show_am_check:BOOL;
**** Show am for for checked sigs.
attr show_as_insert:BOOL;
**** Show trees inserted.
attr show_calls: STR;
**** If non-void, print out all function calls
attr show_checked_sig:BOOL;
**** Show the sigs as they are checked.
attr show_generated_sig:BOOL;
**** Show the sigs with code generated.
attr show_graphs:BOOL;
**** Show the type graphs.
attr show_ifc:BOOL;
**** Show all interfaces.
attr show_ifc_abs_create:BOOL;
**** Show when abstract ifc's are created.
attr show_impl_create:BOOL;
**** Show when an impl is created.
attr show_include:BOOL;
**** Show when an include is processed.
attr show_main:BOOL;
**** Show the main sig.
attr show_parse_file:BOOL;
**** Show files parsed.
attr show_tr:BOOL;
**** Show TR.
attr show_types:BOOL;
**** Show all types found.
attr stat:$STAT;
**** used to gather statistics;
attr threads:BOOL;
**** Accept pSather code and generate code for one cluster
attr tp_done:FSET{$TP};
**** Table of types which have already been examined to get other types.
attr tp_graph:TP_GRAPH;
**** The type graph. been examined to get other types.
attr tp_graph_abs_des:TP_GRAPH_ABS_DES;
**** Abstract descendants. been examined to get other types.
attr tp_tbl:TP_TBL;
**** The type table. been examined to get other types.
attr trace:BOOL;
****
attr verbose:BOOL;
**** Be noisy opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr void_checks:BOOL;
**** true if at least one class makes void access checks
attr yields_in_locks:BOOL;
**** true if yields in locks should be optimized
attr zones:BOOL;
**** use zones

Writable Attributes
attr all_reached:BOOL;
**** True when all reachable code emitted
attr arch:STR;
**** Architecture to compile for (pSather only)
attr arith_checks:BOOL;
**** true if at least one class makes arith. checks
attr as_tbl:PROG_AS_TBL;
**** The table of code trees.
attr assert_checks:BOOL;
**** true if at least one class makes assert checks
attr back_end:$BACK_END;
attr boot:BOOL;
**** true if a boot compiler is beeing generated
attr build_type_graph:$BUILD_TYPE_GRAPH;
attr check_am:$CHECK_AM;
attr check_ifc_conformance:$CHECK_IFC_CONFORMANCE;
attr config:CONFIG_TBL;
**** the configuration table been examined to get other types.
attr distributed:BOOL;
**** Accept pSather code and generate code for more than one cluster
attr eloc:SFILE_ID;
**** Current error location.
attr err_list:FLIST{SFILE_ID};
attr err_seen:BOOL;
**** True if an error has been seen.
attr find_types:$FIND_TYPES;
attr generate_am:$GENERATE_AM;
attr generate_checked_code:BOOL;
**** Generate all code if true.
attr genuine_platforms:INT;
**** counter, incremented each time a "real" platform (as opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr get_main_sig:$GET_MAIN_SIG;
attr get_options:$GET_OPTIONS;
attr hoist_const:BOOL;
**** true if loop constants should be hoisted
attr hoist_iter_init:BOOL;
**** true if the initialization of iters has to be hoisted
attr home:STR;
**** home opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr hotcounts:ARRAY{INT};
attr inline_iters:BOOL;
**** true if iters are to be inlined
attr inline_routs:BOOL;
**** true if routines are to be inlined
attr inliner:$INLINE;
attr itercounts:ARRAY{INT};
attr locks_on_stack:BOOL;
**** true if locks that don't have to be on the exc. stack should not be put there
attr loops_seen:FSET{SFILE_ID};
attr main_class:STR;
**** The class with main opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr move_while:BOOL;
**** true if while!/until! have to be moved to the end of loops
attr no_new_types: BOOL;
**** True, when find_types has finished. for debugging
attr opt_debug:BOOL;
**** print out optimizer debug info
attr opt_debug_func:FLIST{STR};
**** if not void only functions with a signature that contains one of these strings are "opt_debuggged"
attr opt_verbose:BOOL;
**** print out opt. info
attr optimizer:$OPTIMIZE;
attr parse:$PARSE;
attr parse_nonlib_classes:BOOL;
**** true if non library classes should be parsed, and not only classes reachable from the main class.
attr platforms:FLIST{STR};
**** list of platforms to be used opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr
**** true if at least one class makes post checks
attr
****e checks
attr print_version:BOOL;
**** Prints info about compiler version. etc opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr prolix:BOOL;
**** Be really noisy opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr replace_iters:BOOL;
**** true if array and some int iters should be replaced
attr sather_files:FSET{STR};
**** Sather source files opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr show_am:BOOL;
**** Show the am code generated.
attr show_am_check:BOOL;
**** Show am for for checked sigs.
attr show_as_insert:BOOL;
**** Show trees inserted.
attr show_calls: STR;
**** If non-void, print out all function calls
attr show_checked_sig:BOOL;
**** Show the sigs as they are checked.
attr show_generated_sig:BOOL;
**** Show the sigs with code generated.
attr show_graphs:BOOL;
**** Show the type graphs.
attr show_ifc:BOOL;
**** Show all interfaces.
attr show_ifc_abs_create:BOOL;
**** Show when abstract ifc's are created.
attr show_impl_create:BOOL;
**** Show when an impl is created.
attr show_include:BOOL;
**** Show when an include is processed.
attr show_main:BOOL;
**** Show the main sig.
attr show_parse_file:BOOL;
**** Show files parsed.
attr show_tr:BOOL;
**** Show TR.
attr show_types:BOOL;
**** Show all types found.
attr stat:$STAT;
**** used to gather statistics;
attr threads:BOOL;
**** Accept pSather code and generate code for one cluster
attr tp_done:FSET{$TP};
**** Table of types which have already been examined to get other types.
attr tp_graph:TP_GRAPH;
**** The type graph. been examined to get other types.
attr tp_graph_abs_des:TP_GRAPH_ABS_DES;
**** Abstract descendants. been examined to get other types.
attr tp_tbl:TP_TBL;
**** The type table. been examined to get other types.
attr trace:BOOL;
****
attr verbose:BOOL;
**** Be noisy opposed to bogus platforms like -gui) is used. At most one real platfomr can be specified.
attr void_checks:BOOL;
**** true if at least one class makes void access checks
attr yields_in_locks:BOOL;
**** true if yields in locks should be optimized
attr zones:BOOL;
**** use zones

Features
barf(msg:STR)
**** Something wrong within the compiler, but we can't say where.
barf_at(msg:STR,at:$PROG_ERR)
**** Something wrong, and we know where.
create:SAME
**** A new program object. All the components have to be filled in from outside, after creation.
err(s:STR)
**** Report an error with `s' as the error string and the last tree node given to `err_loc' as the location. This string shouldn't have information like "Error" and should be an unformatted line of text. It should be a complete sentence beginning with a capital letter and ending with a period. If this is called during a compile, source code will not be generated, but the compile will proceed as far as possible.
err_loc(t:$PROG_ERR)
**** Make the node held by `t' be the culprit for the next error, if any. If `t' is void, then don't print a location with the next message.
err_loc_old(l:SFILE_ID):BOOL
**** Return true if `l' has been seen before, otherwise add it to the list.
psather:BOOL
****
set_eloc(l:SFILE_ID)
**** Set `eloc' to `l'.
warning(s:STR)
**** Report a warning. Like an error, but doesn't stop compile. In general, our philosophy is that warnings are poor compiler interface and their use should be avoided. if ~void(eloc) then if err_loc_old(eloc) then return end end;