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 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 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}; |
---|
create(p:PROG):SAME |
---|
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. |