cfg-metrics ( cfg -- metrics )


Vocabulary
compiler.cfg.metrics

Inputs
cfgan object


Outputs
metricsan object


Definition


:: cfg-metrics ( cfg -- metrics )
cfg cfg>insns :> insns insns length :> instructions insns
[ ##spill? ] count :> spills insns [ ##reload? ] count
:> reloads insns [ ##copy? ] count
:> copies cfg linearization-order length :> blocks cfg
stack-frame>> [ spill-area-size>> ] [ 0 ] if*
:> spill-bytes cfg stack-frame>> [ total-size>> ] [ 0 ] if*
:> frame-bytes H{
{ "reloads" reloads }
{ "instructions" instructions }
{ "frame-bytes" frame-bytes }
{ "spill-bytes" spill-bytes }
{ "blocks" blocks }
{ "copies" copies }
{ "spills" spills }
} ;