compiler.*: a bunch of random doc additions
							parent
							
								
									4b919b19ce
								
							
						
					
					
						commit
						75a3e191b2
					
				| 
						 | 
					@ -2,6 +2,10 @@ USING: assocs compiler.cfg compiler.cfg.instructions compiler.cfg.stack-frame
 | 
				
			||||||
help.markup help.syntax kernel ;
 | 
					help.markup help.syntax kernel ;
 | 
				
			||||||
IN: compiler.cfg.build-stack-frame
 | 
					IN: compiler.cfg.build-stack-frame
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: build-stack-frame
 | 
				
			||||||
 | 
					{ $values { "cfg" cfg } }
 | 
				
			||||||
 | 
					{ $description "Main word of the " { $vocab-link "compiler.cfg.build-stack-frame" } " compiler pass." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: compute-stack-frame
 | 
					HELP: compute-stack-frame
 | 
				
			||||||
{ $values { "cfg" cfg } { "stack-frame/f" stack-frame } }
 | 
					{ $values { "cfg" cfg } { "stack-frame/f" stack-frame } }
 | 
				
			||||||
{ $description "Initializes a stack frame for a cfg, if it needs one." }
 | 
					{ $description "Initializes a stack frame for a cfg, if it needs one." }
 | 
				
			||||||
| 
						 | 
					@ -20,6 +24,9 @@ HELP: finalize-stack-frame
 | 
				
			||||||
{ $description "Calculates and stores the " { $slot "allot-area-base" } ", " { $slot "spill-area-base" } " and " { $slot "total-size" } " slots of a stack frame." } ;
 | 
					{ $description "Calculates and stores the " { $slot "allot-area-base" } ", " { $slot "spill-area-base" } " and " { $slot "total-size" } " slots of a stack frame." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ARTICLE: "compiler.cfg.build-stack-frame" "Computing stack frame size and layout"
 | 
					ARTICLE: "compiler.cfg.build-stack-frame" "Computing stack frame size and layout"
 | 
				
			||||||
"The " { $vocab-link "compiler.cfg.build-stack-frame" } " vocab builds stack frames for cfg:s." ;
 | 
					"The " { $vocab-link "compiler.cfg.build-stack-frame" } " vocab builds stack frames for cfg:s."
 | 
				
			||||||
 | 
					$nl
 | 
				
			||||||
 | 
					"Main word:"
 | 
				
			||||||
 | 
					{ $subsections build-stack-frame } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ABOUT: "compiler.cfg.build-stack-frame"
 | 
					ABOUT: "compiler.cfg.build-stack-frame"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -107,6 +107,10 @@ HELP: end-word
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
{ $description "Ends the word by adding a basic block containing a " { $link ##return } " instructions to the " { $link cfg } "." } ;
 | 
					{ $description "Ends the word by adding a basic block containing a " { $link ##return } " instructions to the " { $link cfg } "." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: height-changes
 | 
				
			||||||
 | 
					{ $values { "#shuffle" #shuffle } { "height-changes" sequence } }
 | 
				
			||||||
 | 
					{ $description "Returns a two-tuple which represents how much the " { $link #shuffle } " node increases or decreases the data and retainstacks." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: trivial-branch?
 | 
					HELP: trivial-branch?
 | 
				
			||||||
{ $values
 | 
					{ $values
 | 
				
			||||||
  { "nodes" "a " { $link sequence } " of " { $link node } " instances" }
 | 
					  { "nodes" "a " { $link sequence } " of " { $link node } " instances" }
 | 
				
			||||||
| 
						 | 
					@ -130,6 +134,8 @@ ARTICLE: "compiler.cfg.builder"
 | 
				
			||||||
"Final stage of compilation generates machine code from dataflow IR"
 | 
					"Final stage of compilation generates machine code from dataflow IR"
 | 
				
			||||||
"The compiler first builds an SSA IR tree of the word to be compiled (see " { $vocab-link "compiler.tree.builder" } ") then this vocab converts it to a CFG IR tree. The result is not in SSA form; this is constructed later by calling compiler.cfg.ssa.construction:construct-ssa."
 | 
					"The compiler first builds an SSA IR tree of the word to be compiled (see " { $vocab-link "compiler.tree.builder" } ") then this vocab converts it to a CFG IR tree. The result is not in SSA form; this is constructed later by calling compiler.cfg.ssa.construction:construct-ssa."
 | 
				
			||||||
$nl
 | 
					$nl
 | 
				
			||||||
 | 
					"Each tree node type has its own implementation of the " { $link emit-node } " generic. In that word, cfg instructions (tuples prefixed with ##) are outputted to basic blocks and the cfg constructed."
 | 
				
			||||||
 | 
					$nl
 | 
				
			||||||
"Main word:"
 | 
					"Main word:"
 | 
				
			||||||
{ $subsections
 | 
					{ $subsections
 | 
				
			||||||
  build-cfg
 | 
					  build-cfg
 | 
				
			||||||
| 
						 | 
					@ -161,6 +167,11 @@ $nl
 | 
				
			||||||
    emit-loop
 | 
					    emit-loop
 | 
				
			||||||
    emit-recursive
 | 
					    emit-recursive
 | 
				
			||||||
    end-branch
 | 
					    end-branch
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					"Helpers for " { $link #shuffle } ":"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    $subsections
 | 
				
			||||||
 | 
					    height-changes
 | 
				
			||||||
} ;
 | 
					} ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ABOUT: "compiler.cfg.builder"
 | 
					ABOUT: "compiler.cfg.builder"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -158,7 +158,7 @@ M: #push emit-node ( block node -- block' )
 | 
				
			||||||
    [ make-input-map ] [ mapping>> ] [ extract-outputs ] tri
 | 
					    [ make-input-map ] [ mapping>> ] [ extract-outputs ] tri
 | 
				
			||||||
    [ first2 [ [ of of peek-loc ] 2with map ] dip 2array ] 2with map ;
 | 
					    [ first2 [ [ of of peek-loc ] 2with map ] dip 2array ] 2with map ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
M: #shuffle emit-node ( block node -- block' )
 | 
					M: #shuffle emit-node ( block node -- block )
 | 
				
			||||||
    [ out-vregs/stack ] keep store-height-changes
 | 
					    [ out-vregs/stack ] keep store-height-changes
 | 
				
			||||||
    [ first2 store-vregs ] each ;
 | 
					    [ first2 store-vregs ] each ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,9 @@
 | 
				
			||||||
USING: alien arrays assocs byte-arrays classes combinators compiler.cfg
 | 
					USING: alien arrays assocs byte-arrays classes combinators
 | 
				
			||||||
compiler.cfg.intrinsics.fixnum compiler.cfg.linear-scan.assignment
 | 
					compiler.cfg compiler.cfg.builder compiler.cfg.intrinsics.fixnum
 | 
				
			||||||
compiler.cfg.liveness compiler.cfg.ssa.destruction compiler.cfg.value-numbering
 | 
					compiler.cfg.linear-scan.assignment compiler.cfg.liveness
 | 
				
			||||||
compiler.codegen.gc-maps cpu.architecture help.markup help.syntax kernel
 | 
					compiler.cfg.ssa.destruction compiler.cfg.value-numbering
 | 
				
			||||||
layouts math sequences slots.private system vm ;
 | 
					compiler.codegen.gc-maps cpu.architecture help.markup help.syntax
 | 
				
			||||||
 | 
					kernel layouts math sequences slots.private system vm ;
 | 
				
			||||||
IN: compiler.cfg.instructions
 | 
					IN: compiler.cfg.instructions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##alien-invoke
 | 
					HELP: ##alien-invoke
 | 
				
			||||||
| 
						 | 
					@ -11,7 +12,7 @@ HELP: ##alien-invoke
 | 
				
			||||||
  { $table
 | 
					  { $table
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        { $slot "reg-inputs" }
 | 
					        { $slot "reg-inputs" }
 | 
				
			||||||
        { "Registers to use for the arguments to the function call. Each sequence item is a 3-tuple consisting of a " { $link spill-slot } ", register representation and a register." }
 | 
					        { "Registers to use for the arguments to the function call. Each sequence item is a 3-tuple consisting of a " { $link spill-slot } ", register representation and a register. When the function is called, the parameter is copied from the spill slot to the given register." }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        { $slot "stack-inputs" }
 | 
					        { $slot "stack-inputs" }
 | 
				
			||||||
| 
						 | 
					@ -83,8 +84,15 @@ HELP: ##compare-float-ordered-branch
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
} ;
 | 
					} ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: ##compare-imm
 | 
				
			||||||
 | 
					{ $class-description "Instruction used to implement trivial ifs and not ifs." }
 | 
				
			||||||
 | 
					{ $see-also emit-trivial-if emit-trivial-not-if } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: ##compare-imm-branch
 | 
				
			||||||
 | 
					{ $class-description "The instruction used to implement branching for the " { $link if } " word." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##compare-integer
 | 
					HELP: ##compare-integer
 | 
				
			||||||
{ $class-description "This instruction is emitted for integer (" { $link fixnum } ") comparisons." }
 | 
					{ $class-description "This instruction is emitted for " { $link fixnum } " comparisons." }
 | 
				
			||||||
{ $see-also emit-fixnum-comparison } ;
 | 
					{ $see-also emit-fixnum-comparison } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##copy
 | 
					HELP: ##copy
 | 
				
			||||||
| 
						 | 
					@ -132,6 +140,9 @@ HELP: ##load-reference
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
} ;
 | 
					} ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: ##load-tagged
 | 
				
			||||||
 | 
					{ $class-description "Loads a tagged value into a register." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##load-vector
 | 
					HELP: ##load-vector
 | 
				
			||||||
{ $class-description
 | 
					{ $class-description
 | 
				
			||||||
  "Loads a " { $link byte-array } " into an SSE register."
 | 
					  "Loads a " { $link byte-array } " into an SSE register."
 | 
				
			||||||
| 
						 | 
					@ -245,14 +256,14 @@ HELP: ##shuffle-vector-imm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##slot-imm
 | 
					HELP: ##slot-imm
 | 
				
			||||||
{ $class-description
 | 
					{ $class-description
 | 
				
			||||||
  "Instruction for reading a slot value from an object."
 | 
					  "Instruction for reading a slot with a given index from an object."
 | 
				
			||||||
  { $table
 | 
					  { $table
 | 
				
			||||||
    { { $slot "dst" } { "Register to read the slot value into." } }
 | 
					    { { $slot "dst" } { "Register to read the slot value into." } }
 | 
				
			||||||
    { { $slot "obj" } { "Register containing the object with the slot." } }
 | 
					    { { $slot "obj" } { "Register containing the object with the slot." } }
 | 
				
			||||||
    { { $slot "slot" } { "Slot index." } }
 | 
					    { { $slot "slot" } { "Slot index." } }
 | 
				
			||||||
    { { $slot "tag" } { "Type tag for obj." } }
 | 
					    { { $slot "tag" } { "Type tag for obj." } }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
} ;
 | 
					} { $see-also %slot-imm } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##spill
 | 
					HELP: ##spill
 | 
				
			||||||
{ $class-description "Instruction that copies a value from a register to a " { $link spill-slot } "." } ;
 | 
					{ $class-description "Instruction that copies a value from a register to a " { $link spill-slot } "." } ;
 | 
				
			||||||
| 
						 | 
					@ -270,6 +281,10 @@ HELP: ##store-memory-imm
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
{ $see-also %store-memory-imm } ;
 | 
					{ $see-also %store-memory-imm } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: ##test-branch
 | 
				
			||||||
 | 
					{ $class-description "Instruction inserted by the " { $vocab-link "compiler.cfg.value-numbering" } " compiler pass." }
 | 
				
			||||||
 | 
					{ $see-also ##compare-integer-imm-branch } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ##unbox-any-c-ptr
 | 
					HELP: ##unbox-any-c-ptr
 | 
				
			||||||
{ $class-description "Instruction that unboxes a pointer in a register so that it can be fed to a C FFI function. For example, if 'src' points to a " { $link byte-array } ", then in 'dst' will be put a pointer to the first byte of that byte array."
 | 
					{ $class-description "Instruction that unboxes a pointer in a register so that it can be fed to a C FFI function. For example, if 'src' points to a " { $link byte-array } ", then in 'dst' will be put a pointer to the first byte of that byte array."
 | 
				
			||||||
  { $table
 | 
					  { $table
 | 
				
			||||||
| 
						 | 
					@ -384,6 +399,7 @@ $nl
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
"Control flow:"
 | 
					"Control flow:"
 | 
				
			||||||
{ $subsections
 | 
					{ $subsections
 | 
				
			||||||
 | 
					  ##branch
 | 
				
			||||||
  ##call
 | 
					  ##call
 | 
				
			||||||
  ##jump
 | 
					  ##jump
 | 
				
			||||||
  ##no-tco
 | 
					  ##no-tco
 | 
				
			||||||
| 
						 | 
					@ -423,6 +439,7 @@ $nl
 | 
				
			||||||
{ $subsections
 | 
					{ $subsections
 | 
				
			||||||
  ##compare
 | 
					  ##compare
 | 
				
			||||||
  ##compare-imm
 | 
					  ##compare-imm
 | 
				
			||||||
 | 
					  ##compare-imm-branch
 | 
				
			||||||
  ##compare-integer
 | 
					  ##compare-integer
 | 
				
			||||||
  ##compare-integer-branch
 | 
					  ##compare-integer-branch
 | 
				
			||||||
  ##compare-integer-imm-branch
 | 
					  ##compare-integer-imm-branch
 | 
				
			||||||
| 
						 | 
					@ -435,6 +452,7 @@ $nl
 | 
				
			||||||
{ $subsections
 | 
					{ $subsections
 | 
				
			||||||
  ##load-integer
 | 
					  ##load-integer
 | 
				
			||||||
  ##load-reference
 | 
					  ##load-reference
 | 
				
			||||||
 | 
					  ##load-tagged
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
"Floating point SIMD instructions:"
 | 
					"Floating point SIMD instructions:"
 | 
				
			||||||
{ $subsections
 | 
					{ $subsections
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
USING: assocs compiler.cfg compiler.cfg.instructions
 | 
					USING: assocs compiler.cfg compiler.cfg.instructions
 | 
				
			||||||
compiler.cfg.registers hash-sets hashtables help.markup help.syntax
 | 
					compiler.cfg.registers compiler.cfg.stacks hash-sets hashtables
 | 
				
			||||||
sequences ;
 | 
					help.markup help.syntax math sequences ;
 | 
				
			||||||
IN: compiler.cfg.stacks.local
 | 
					IN: compiler.cfg.stacks.local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: emit-changes
 | 
					HELP: emit-changes
 | 
				
			||||||
| 
						 | 
					@ -37,12 +37,22 @@ HELP: loc>vreg
 | 
				
			||||||
{ $values { "loc" loc } { "vreg" "virtual register" } }
 | 
					{ $values { "loc" loc } { "vreg" "virtual register" } }
 | 
				
			||||||
{ $description "Maps a stack location to a virtual register." } ;
 | 
					{ $description "Maps a stack location to a virtual register." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: local-kill-set
 | 
				
			||||||
 | 
					{ $values
 | 
				
			||||||
 | 
					  { "ds-height" integer }
 | 
				
			||||||
 | 
					  { "rs-height" integer }
 | 
				
			||||||
 | 
					  { "state" sequence }
 | 
				
			||||||
 | 
					  { "set" hash-set }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					{ $description "The set of stack locations that was killed." }
 | 
				
			||||||
 | 
					{ $see-also compute-local-kill-set } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: local-peek-set
 | 
					HELP: local-peek-set
 | 
				
			||||||
{ $var-description "A " { $link hash-set } " used during local block analysis to keep track of peeked stack locations." } ;
 | 
					{ $var-description "A " { $link hash-set } " used during local block analysis to keep track of peeked stack locations." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: peek-loc
 | 
					HELP: peek-loc
 | 
				
			||||||
{ $values { "loc" loc } { "vreg" "virtaul register" } }
 | 
					{ $values { "loc" loc } { "vreg" "virtual register" } }
 | 
				
			||||||
{ $description "Retrieves the virtual register at the given stack location." } ;
 | 
					{ $description "Retrieves the virtual register at the given stack location. If no register has been stored at that location, then a new vreg is returned." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: replace-loc
 | 
					HELP: replace-loc
 | 
				
			||||||
{ $values { "vreg" "virtual register" } { "loc" loc } }
 | 
					{ $values { "vreg" "virtual register" } { "loc" loc } }
 | 
				
			||||||
| 
						 | 
					@ -53,7 +63,7 @@ HELP: replace-sets
 | 
				
			||||||
{ $var-description "An " { $link assoc } " in which each key is a " { $link basic-block } " and each value a " { $link hash-set } " with locations that were replaced in that block." } ;
 | 
					{ $var-description "An " { $link assoc } " in which each key is a " { $link basic-block } " and each value a " { $link hash-set } " with locations that were replaced in that block." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: replaces
 | 
					HELP: replaces
 | 
				
			||||||
{ $var-description "An " { $link assoc } " that maps from stack locations to virtual registers that were put on the stack." }
 | 
					{ $var-description "An " { $link assoc } " that maps from stack locations to virtual registers that were put on the stack during the local analysis phase. " { $link ds-push } " and similar words writes to it." }
 | 
				
			||||||
{ $see-also replace-loc } ;
 | 
					{ $see-also replace-loc } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: translate-local-loc
 | 
					HELP: translate-local-loc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ IN: compiler.cfg.stacks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: ds-push
 | 
					HELP: ds-push
 | 
				
			||||||
{ $values { "vreg" "a virtual register" } }
 | 
					{ $values { "vreg" "a virtual register" } }
 | 
				
			||||||
{ $description "Used when translating the " { $link #push } " SSA node to CFG form for pushing a literal value onto the data stack." } ;
 | 
					{ $description "Used when translating the " { $link #push } " SSA node to CFG form. The node pushes a literal value onto the data stack." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: begin-stack-analysis
 | 
					HELP: begin-stack-analysis
 | 
				
			||||||
{ $description "Initializes a set of variables related to stack analysis of Factor words." }
 | 
					{ $description "Initializes a set of variables related to stack analysis of Factor words." }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,10 @@ HELP: rel-decks-offset
 | 
				
			||||||
{ $values { "class" "a relocation class" } }
 | 
					{ $values { "class" "a relocation class" } }
 | 
				
			||||||
{ $description "Adds a decks offset relocation. It is used for marking cards when emitting write barriers." } ;
 | 
					{ $description "Adds a decks offset relocation. It is used for marking cards when emitting write barriers." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: rel-literal
 | 
				
			||||||
 | 
					{ $values { "literal" "a literal" } { "class" "a relocation class" } }
 | 
				
			||||||
 | 
					{ $description "Adds a refrence to a literal value to the current code offset." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: rel-safepoint
 | 
					HELP: rel-safepoint
 | 
				
			||||||
{ $values { "class" "a relocation class" } }
 | 
					{ $values { "class" "a relocation class" } }
 | 
				
			||||||
{ $description "Adds a safe point to the " { $link relocation-table } " for the current code offset. This word is used by the " { $link %safepoint } " generator." } ;
 | 
					{ $description "Adds a safe point to the " { $link relocation-table } " for the current code offset. This word is used by the " { $link %safepoint } " generator." } ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ HELP: backend
 | 
				
			||||||
{ $see-also generate } ;
 | 
					{ $see-also generate } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: compiled
 | 
					HELP: compiled
 | 
				
			||||||
{ $var-description { "An " { $link assoc } " used by the optimizing compiler for intermediate storage of generated code. The keys are the labels to the CFG:s and the values the generated code as given by the " { $link generate } " word." } } ;
 | 
					{ $var-description { "An " { $link assoc } " used by the optimizing compiler for intermediate storage of generated code. The keys are the labels to the CFG:s and the values the generated code as described by the " { $link generate } " word." } } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: compile-word
 | 
					HELP: compile-word
 | 
				
			||||||
{ $values { "word" word } }
 | 
					{ $values { "word" word } }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,10 @@ HELP: rt-decks-offset
 | 
				
			||||||
{ $description "Relocation offset type for the decks table." }
 | 
					{ $description "Relocation offset type for the decks table." }
 | 
				
			||||||
{ $see-also rel-decks-offset } ;
 | 
					{ $see-also rel-decks-offset } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: rt-literal
 | 
				
			||||||
 | 
					{ $description "Relocation type for a literal. The literal can be either an immediate such as a fixnum or " { $link f } " or an object reference." }
 | 
				
			||||||
 | 
					{ $see-also rel-literal } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: string-offset
 | 
					HELP: string-offset
 | 
				
			||||||
{ $values { "n" integer } }
 | 
					{ $values { "n" integer } }
 | 
				
			||||||
{ $description "hm" } ;
 | 
					{ $description "hm" } ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue