diff --git a/basis/compiler/cfg/linear-scan/allocation/spilling/spilling-docs.factor b/basis/compiler/cfg/linear-scan/allocation/spilling/spilling-docs.factor index e22f298a09..0715fa9271 100644 --- a/basis/compiler/cfg/linear-scan/allocation/spilling/spilling-docs.factor +++ b/basis/compiler/cfg/linear-scan/allocation/spilling/spilling-docs.factor @@ -4,7 +4,7 @@ compiler.cfg.linear-scan.live-intervals help.markup help.syntax math ; IN: compiler.cfg.linear-scan.allocation.spilling HELP: assign-spill -{ $values { "live-interval" live-interval } } +{ $values { "live-interval" live-interval-state } } { $description "Assigns a spill slot for the live interval." } { $see-also assign-spill-slot } ; @@ -30,10 +30,10 @@ HELP: spill-before HELP: split-for-spill { $values - { "live-interval" live-interval } + { "live-interval" live-interval-state } { "n" integer } - { "before" live-interval } - { "after" live-interval } + { "before" live-interval-state } + { "after" live-interval-state } } { $description "During register allocation an interval needs to be split so that the 'after' part of it can be placed in a spill slot." } ; HELP: spill-intersecting @@ -57,7 +57,7 @@ HELP: spill-partially-available { $description "A register would be available for part of the new interval's lifetime if all active and inactive intervals using that register were split and spilled." } ; HELP: trim-before-ranges -{ $values { "live-interval" live-interval } } +{ $values { "live-interval" live-interval-state } } { $description "Extends the last intervals range to one after the last use point and removes all intervals beyond that." } ; ARTICLE: "compiler.cfg.linear-scan.allocation.spilling" "Spill slot assignment" diff --git a/basis/compiler/cfg/linear-scan/live-intervals/live-intervals-docs.factor b/basis/compiler/cfg/linear-scan/live-intervals/live-intervals-docs.factor index c6171189e9..52c7a2e4b4 100644 --- a/basis/compiler/cfg/linear-scan/live-intervals/live-intervals-docs.factor +++ b/basis/compiler/cfg/linear-scan/live-intervals/live-intervals-docs.factor @@ -31,7 +31,7 @@ HELP: compute-live-intervals HELP: find-use { $values { "insn#" integer } - { "live-interval" live-interval } + { "live-interval" live-interval-state } { "vreg-use/f" vreg-use } } { $description "Finds the live intervals " { $link vreg-use } " at the given instruction number, if it has one." } ; @@ -44,7 +44,11 @@ HELP: from { $var-description "An integer representing a sequence number one lower than all numbers in the currently processed block." } ; HELP: intervals-intersect? -{ $values { "interval1" live-interval } { "interval2" live-interval } { "?" boolean } } +{ $values + { "interval1" live-interval-state } + { "interval2" live-interval-state } + { "?" boolean } +} { $description "Checks if two live intervals intersect each other." } ; HELP: live-interval-state @@ -79,6 +83,10 @@ HELP: live-interval-state HELP: live-intervals { $var-description "Mapping from vreg to " { $link live-interval-state } "." } ; +HELP: record-def +{ $values { "vreg" integer } { "n" integer } { spill-slot? boolean } } +{ $description "Records that the 'vreg' is defined at the instruction numbered 'n'." } ; + HELP: record-temp { $values { "vreg" number } { "n" number } } { $description "Assigns the interval [n,n] to vreg:s live interval." } ; @@ -96,10 +104,12 @@ HELP: to { $var-description "An integer representing a sequence number equal to the highest number in the currently processed block." } ; ARTICLE: "compiler.cfg.linear-scan.live-intervals" "Live interval utilities" -"This vocab contains words for managing live intervals." +"This vocab contains words for managing live intervals. The main word is " { $link compute-live-intervals } " which goes through the " { $link cfg } " and returns a sequence of " { $link live-interval-state } " instances which encodes all liveness information for it." $nl "Liveness classes and constructors:" -{ $subsections live-interval } ; +{ $subsections live-interval-state } +"Recording liveness info:" +{ $subsections record-def record-use record-temp } ; ABOUT: "compiler.cfg.linear-scan.live-intervals"