Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/block-placement/block-placement.sig
ViewVC logotype

View of /sml/trunk/src/MLRISC/block-placement/block-placement.sig

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1133 - (download) (as text) (annotate)
Tue Mar 12 03:56:23 2002 UTC (17 years, 6 months ago) by george
File size: 464 byte(s)
Tested the jump chain elimination on all architectures (except the
hppa).  This is on by default right now and is profitable for the
alpha and x86, however, it may not be profitable for the sparc and ppc
when compiling the compiler.

The gc test will typically jump to a label at the end of the cluster,
where there is another jump to an external cluster containing the actual
code to invoke gc. This is to allow factoring of common gc invocation
sequences. That is to say, we generate:

	   ja	L1	% jump if above to L1

	   jmp L2

After jump chain elimination the 'ja L1' instructions is converted to
'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
up being implemented in their long form (if L2 is far away) using:

	jbe	L3	% jump if below or equal to L3
        jmp 	L2

For large compilation units L2  may be far away.
(* block-placement.sig
 * COPYRIGHT (c) 2001 Bell Labs, Lucent Technologies

(* Perform code block placement *)

(* When several blocks are successors to the unique entry node, 
 * then block with the lowest block id appears first.
 * This usually corresponds to what one wants when doing dynamic 
 * code generation.
signature BLOCK_PLACEMENT = sig

  val blockPlacement : CFG.cfg -> (CFG.cfg * CFG.node list)


ViewVC Help
Powered by ViewVC 1.0.0