harpoon.Analysis.Quads
Class Nonvirtualize

java.lang.Object
  extended by harpoon.Analysis.Transformation.MethodMutator<Quad>
      extended by harpoon.Analysis.Quads.Nonvirtualize
All Implemented Interfaces:
Serializable

public class Nonvirtualize
extends MethodMutator<Quad>

Nonvirtualize uses a FinalMap to change virtual method invocations to non-virtual invocations, where this is safe. Virtual method invocation is slower than non-virtual invocation.

Version:
$Id: Nonvirtualize.java,v 1.4 2004/02/08 01:53:14 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
See Also:
DefaultFinalMap, CHFinalMap, Serialized Form

Constructor Summary
Nonvirtualize(HCodeFactory hcf, FinalMap fm)
          Creates a Nonvirtualize using the given FinalMap.
Nonvirtualize(HCodeFactory hcf, FinalMap fm, ClassHierarchy ch)
          Creates a Nonvirtualize using the given FinalMap; the given ClassHierarchy is used to avoid devirtualizing calls to uncallable methods (which artificially inflates the class hierarchy size).
 
Method Summary
protected  HCode<Quad> mutateHCode(HCodeAndMaps<Quad> input)
          Override this method to effect transformations on split methods.
 
Methods inherited from class harpoon.Analysis.Transformation.MethodMutator
cloneHCode, codeFactory, mutateCodeName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Nonvirtualize

public Nonvirtualize(HCodeFactory hcf,
                     FinalMap fm)
Creates a Nonvirtualize using the given FinalMap.

See Also:
DefaultFinalMap, CHFinalMap

Nonvirtualize

public Nonvirtualize(HCodeFactory hcf,
                     FinalMap fm,
                     ClassHierarchy ch)
Creates a Nonvirtualize using the given FinalMap; the given ClassHierarchy is used to avoid devirtualizing calls to uncallable methods (which artificially inflates the class hierarchy size).

See Also:
DefaultFinalMap, CHFinalMap
Method Detail

mutateHCode

protected HCode<Quad> mutateHCode(HCodeAndMaps<Quad> input)
Description copied from class: MethodMutator
Override this method to effect transformations on split methods.

Overrides:
mutateHCode in class MethodMutator<Quad>