harpoon.Tools.PatMat
Class Spec

java.lang.Object
  extended by harpoon.Tools.PatMat.Spec

public class Spec
extends Object

Spec represents the parsed specification of a set of Instruction Patterns for a target backend .
NOTE: Current documentation was written late at night and therefore may be misleading; I'm worried that it isn't META enough. Must go over it and make sure that its clear that I'm talking about the specification for a set of instruction patterns, and NOT the actual IR for the code being analyzed and optimized by the compiler.

Version:
$Id: Spec.java,v 1.7 2004/02/08 01:59:54 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>, Felix S. Klock II <pnkfelix@mit.edu>

Nested Class Summary
static class Spec.Detail
          A detail is an abstract representation for a piece of data about the Instruction Pattern or Rule.
static class Spec.DetailExtra
          Extension of Spec.Detail that requests an extra temporary register for the use of the action clause.
static class Spec.DetailList
          Linked list representation for representing the series of Spec.Details in this Spec.
static class Spec.DetailPredicate
          Extension of Spec.Detail that stores a predicate_string which is a piece of Java code that decides if a particular Spec.Rule can be applied.
static class Spec.DetailVisitor
          Visitor class for traversing a set of Spec.Details and performing some action depending on the type of Spec.Detail visited.
static class Spec.DetailWeight
          Extension of Spec.Detail that stores a (name,weight) pair.
static class Spec.Exp
          Abstract immutable representation of an Expression in an Instruction Pattern.
static class Spec.ExpBinop
          Extension of Spec.Exp that represents a Binary Operation in the code.
static class Spec.ExpConst
          Extension of Spec.Exp that represents a Constant value in the code.
static class Spec.ExpId
          Extension of Spec.Exp that represents an Identifier in the code.
static class Spec.ExpList
          Linked list representation for representing the series of Spec.Exps in a given Spec.Exp or Spec.Stm.
static class Spec.ExpMem
          Extension of Spec.Exp that represents a Memory Access in the code (could be either Load or Store; Context-Sensitive).
static class Spec.ExpName
          Extension of Spec.Exp that represents a symbolic constant.
static class Spec.ExpTemp
          Extension of Spec.Exp that represents a Temporary value in the code.
static class Spec.ExpUnop
          Extension of Spec.Exp that represents a Unary operation.
static class Spec.ExpVisitor
          Visitor class for traversing a set of Spec.Exps and performing some action depending on the type of Spec.Exp visited.
static class Spec.IdList
          Linked list representation for representing a series of Identifier Strings in this Spec.
static class Spec.Leaf
          Abstract representation of leaves in the instruction pattern.
static class Spec.LeafId
          Extension of Spec.Leaf which represents an Identifier.
static class Spec.LeafNull
          Extension of Spec.Leaf representing a null constant.
static class Spec.LeafNumber
          Extension of Spec.Leaf which represents a explicit number in the specification.
static class Spec.LeafOp
          Extension of Spec.Leaf representing an opcode for Uop and/or Bop.
static class Spec.LeafSegType
          Extension of Spec.Leaf which represents a segment type in the specification.
static class Spec.LeafVisitor
          Visitor class for traversing a set of Spec.Leaf objects and performing some action depending on the type of Spec.Leaf visited.
static class Spec.Rule
          Abstract immutable representation of an Instruction Pattern.
static class Spec.RuleExp
          Extension of Spec.Rule that also contains a Spec.Exp to match Tree expressions and the identifier for the result that this produces.
static class Spec.RuleList
          Linked list representation for representing the series of Spec.Rules in this Spec.
static class Spec.RuleStm
          Extension of Spec.Rule that also contains a Spec.Stm to match Tree statements.
static class Spec.RuleVisitor
          Visitor class for traversing a set of Spec.Rules and performing some action depending on the type of Spec.Rule visited.
static class Spec.Stm
          Abstract immutable representation of a Statement in an Instruction Pattern.
static class Spec.StmAlign
          Extension of Spec.Stm representing an alignment request.
static class Spec.StmCall
          Extension of Spec.Stm that represents a call to a procedure.
static class Spec.StmCjump
          Extension of Spec.Stm representing a conditional branch.
static class Spec.StmData
          Extension of Spec.Stm representing a raw datum in memory.
static class Spec.StmExp
          Extension of Spec.Stm representing an expression which is evaluated for its side effects (i.e. we throw away the return value).
static class Spec.StmJump
          Extension of Spec.Stm representing an unconditional branch.
static class Spec.StmLabel
          Extension of Spec.Stm representing a label which is the target of a branch or call.
static class Spec.StmMethod
          Extension of Spec.Stm representing a method header.
static class Spec.StmMove
          Extension of Spec.Stm representing an expression which moves a value from one place to another.
static class Spec.StmNativeCall
          Extension of Spec.Stm representing an expression which is evaluated for its side effects (i.e. we throw away the return value).
static class Spec.StmReturn
          Extension of Spec.Stm representing an expression which is evaluated for its side effects (i.e. we throw away the return value).
static class Spec.StmSegment
          Extension of Spec.Stm representing a change of output segment.
static class Spec.StmSeq
          Extension of Spec.Stm representing a sequence of statements to be executed in order.
static class Spec.StmThrow
          Extension of Spec.Stm representing a operation to throw an exception.
static class Spec.StmVisitor
          Visitor class for traversing a set of Spec.Stms and performing some action depending on the type of Spec.Stm visited.
static class Spec.TypeSet
          A representation for storing Types that values can be.
 
Field Summary
 String class_stms
          Java code statements that are going to be placed inside class body (helper methods, fields, inner classes).
 String global_stms
          Java code statements that are going to be placed outside class body (package declaration, import statements).
 String method_epilogue_stms
          Java code statements to be inserted in the epilogue of the code generator method body.
 String method_prologue_stms
          Java code statements to be inserted in the prologue of the code generator method body.
 Spec.RuleList rules
          List of Instruction Patterns for this machine specification.
 
Constructor Summary
Spec(String global_stms, String class_stms, String method_prologue_stms, String method_epilogue_stms, Spec.RuleList rules)
          Creates a Spec.
 
Method Summary
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

global_stms

public final String global_stms
Java code statements that are going to be placed outside class body (package declaration, import statements).


class_stms

public final String class_stms
Java code statements that are going to be placed inside class body (helper methods, fields, inner classes).


method_prologue_stms

public final String method_prologue_stms
Java code statements to be inserted in the prologue of the code generator method body.


method_epilogue_stms

public final String method_epilogue_stms
Java code statements to be inserted in the epilogue of the code generator method body.


rules

public final Spec.RuleList rules
List of Instruction Patterns for this machine specification. null is a legal value.

Constructor Detail

Spec

public Spec(String global_stms,
            String class_stms,
            String method_prologue_stms,
            String method_epilogue_stms,
            Spec.RuleList rules)
Creates a Spec.

Method Detail

toString

public String toString()
Overrides:
toString in class Object