harpoon.Analysis.Maps
Interface Derivation<HCE extends HCodeElement>

All Superinterfaces:
TypeMap<HCE>
All Known Subinterfaces:
BackendDerivation
All Known Implementing Classes:
DerivationGenerator, DerivationMap, MyLowQuadNoSSA, MyLowQuadSSI

public interface Derivation<HCE extends HCodeElement>
extends TypeMap<HCE>

Derivation provides a means to access the derivation of a particular derived pointer. Given a compiler temporary, it will enumerate the base pointers and signs needed to allow proper garbage collection of the derived pointer.

See Diwan, Moss, and Hudson, "Compiler Support for Garbage Collection in a Statically Typed Language" in PLDI'92 for background on the derivation structure and its motivations.

Version:
$Id: Derivation.java,v 1.5 2002/09/02 19:23:26 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>

Nested Class Summary
static class Derivation.DList
          Structure of the derivation information.
 
Nested classes/interfaces inherited from interface harpoon.Analysis.Maps.TypeMap
TypeMap.TypeNotKnownException
 
Method Summary
 Derivation.DList derivation(HCE hce, Temp t)
          Map compiler temporaries to their derivations.
 
Methods inherited from interface harpoon.Analysis.Maps.TypeMap
typeMap
 

Method Detail

derivation

Derivation.DList derivation(HCE hce,
                            Temp t)
                            throws TypeMap.TypeNotKnownException
Map compiler temporaries to their derivations.

Parameters:
t - The temporary to query.
hce - A definition point for t.
Returns:
null if the temporary has no derivation (is a base pointer, for example), or the derivation otherwise.
Throws:
NullPointerException - if t or hc is null.
TypeNotKnownException - if the Derivation has no information about t as defined at hce.
TypeMap.TypeNotKnownException