class GENERATE_AM < $GENERATE_AM |
---|
**** | This phase does a code walk from main and generates the AM form It causes errors for failures of type checking, name clashes, etc. It is interleaved in time with the back-end for each routine generated. |
$GENERATE_AM | CS_COMPONENT |
attr global_tbl:GLOBAL_TBL; |
---|
attr only_check: BOOL; |
---|
**** | Holger |
attr optimize:BOOL; |
---|
**** |
attr prog:PROG; |
---|
attr sig_inprocout:FSET{SIG}; |
---|
**** | Ivin: Signatures of routines that have been called recursively. |
attr sig_list:FLIST{SIG}; |
---|
**** | Signatures to still consider outputting. |
attr sig_recursive:FSET{SIG}; |
---|
attr global_tbl:GLOBAL_TBL; |
---|
attr only_check: BOOL; |
---|
**** | Holger |
attr optimize:BOOL; |
---|
**** |
attr prog:PROG; |
---|
attr sig_inprocout:FSET{SIG}; |
---|
**** | Ivin: Signatures of routines that have been called recursively. |
attr sig_list:FLIST{SIG}; |
---|
**** | Signatures to still consider outputting. |
attr sig_recursive:FSET{SIG}; |
---|
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(p:PROG):SAME |
---|
err(s:STR) |
---|
**** | Report an error. |
err_loc(t:$PROG_ERR) |
---|
**** | Set where a future error should be reported at. |
generate_am |
---|
**** | Get optimize attr and whether code should be generated. |
output_abs_sig(s:SIG) |
---|
**** | Do the output for the abstract call `s'. |
output_externals_with_bodies |
---|
output_sig(s:SIG) |
---|
**** | Transform and output the signature `s' if it hasn't already been done. Put the routines and iters that it calls on `sig_list'. Now searches depth first on routines, so these don't get put on the list. Puts information in the inline table for inlining. |
warning(s:STR) |
---|
**** | report a warning (doesn't stop compile); |