harpoon.Backend.CSAHack.RegAlloc
Class DerivationGenerator

java.lang.Object
  extended by harpoon.Backend.CSAHack.RegAlloc.DerivationGenerator
All Implemented Interfaces:
Derivation, TypeMap

public class DerivationGenerator
extends Object
implements Derivation

DerivationGenerator helps maintain the accuracy of the Derivation while the register allocator creates spills.

Version:
$Id: DerivationGenerator.java,v 1.6 2004/02/08 03:20:48 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>

Nested Class Summary
 
Nested classes/interfaces inherited from interface harpoon.Analysis.Maps.Derivation
Derivation.DList
 
Nested classes/interfaces inherited from interface harpoon.Analysis.Maps.TypeMap
TypeMap.TypeNotKnownException
 
Constructor Summary
DerivationGenerator(Instr instrs, Derivation deriv)
          Creates a DerivationGenerator.
 
Method Summary
 Derivation.DList derivation(HCodeElement hce, Temp t)
          Map compiler temporaries to their derivations.
 HClass typeMap(HCodeElement hce, Temp t)
          Return the type of a given temporary t, as defined at the definition point hce.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DerivationGenerator

public DerivationGenerator(Instr instrs,
                           Derivation deriv)
Creates a DerivationGenerator.

Method Detail

typeMap

public HClass typeMap(HCodeElement hce,
                      Temp t)
               throws TypeMap.TypeNotKnownException
Description copied from interface: TypeMap
Return the type of a given temporary t, as defined at the definition point hce. Iff the type of the temporary is not known, or if hce does not define t, throws TypeNotKnownException. If the temporary represents a derived pointer, null should be returned; in which case the Derivation must return a non-null value. Obviously, TypeMaps for high-level representations without derived pointers should never return null. As a special case, HClass.Void may be returned in low-level IRs to indicate an opaque pointer value which does not correspond to a java object pointer or some derivation thereof --- for example, a pointer into a method dispatch table. The only other time HClass.Void should be returned is for known-null pointer values.

Specified by:
typeMap in interface TypeMap
Parameters:
hce - The HCodeElement defining t.
t - The temporary to examine.
Returns:
the static type of t.
Throws:
TypeMap.TypeNotKnownException - if the TypeMap does not have any information about t as defined at hc.

derivation

public Derivation.DList derivation(HCodeElement hce,
                                   Temp t)
                            throws TypeMap.TypeNotKnownException
Description copied from interface: Derivation
Map compiler temporaries to their derivations.

Specified by:
derivation in interface Derivation
Parameters:
hce - A definition point for t.
t - The temporary to query.
Returns:
null if the temporary has no derivation (is a base pointer, for example), or the derivation otherwise.
Throws:
TypeMap.TypeNotKnownException