basis.compiler.cfg.linear-scan.*: fixing boostrap problems due to the
word rename Sorry for the noise.locals-and-roots
							parent
							
								
									eb68ad6932
								
							
						
					
					
						commit
						a60f122c5e
					
				| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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> live-interval } ;
 | 
			
		||||
{ $subsections <live-interval> live-interval-state }
 | 
			
		||||
"Recording liveness info:"
 | 
			
		||||
{ $subsections record-def record-use record-temp } ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ABOUT: "compiler.cfg.linear-scan.live-intervals"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue