harpoon.Analysis.DynamicSyncRemoval
Class SyncRemover

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

public class SyncRemover
extends MethodMutator<Quad>

SyncRemover calls a "magic" native method to determine if synchronization should be done on this object, and skips the MONITORENTER/MONITOREXIT sequence if the answer is no. We need to duplication and split the code between MONITORENTER and MONITOREXIT for this to play nicely with the Transactions transformation. For best results, run TreePostPass after this transformation.

Version:
$Id: SyncRemover.java,v 1.6 2004/02/08 03:19:25 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
See Also:
Serialized Form

Constructor Summary
SyncRemover(HCodeFactory parent, Linker l)
          Creates a SyncRemover.
 
Method Summary
protected  HCode<Quad> mutateHCode(HCodeAndMaps<Quad> input)
          Override this method to effect transformations on split methods.
static HCodeFactory treeCodeFactory(Frame f, HCodeFactory hcf)
          Return an HCodeFactory that will clean up the tree form of the transformed code by performing some optimizations which can't be represented in quad form.
 
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

SyncRemover

public SyncRemover(HCodeFactory parent,
                   Linker l)
Creates a SyncRemover.

Method Detail

treeCodeFactory

public static HCodeFactory treeCodeFactory(Frame f,
                                           HCodeFactory hcf)
Return an HCodeFactory that will clean up the tree form of the transformed code by performing some optimizations which can't be represented in quad form.


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>