org.jikesrvm.adaptive.util
Class UnResolvedWeightedCallTargets

java.lang.Object
  extended by org.jikesrvm.adaptive.util.UnResolvedWeightedCallTargets
Direct Known Subclasses:
UnResolvedWeightedCallTargets.UnResolvedMultiTarget, UnResolvedWeightedCallTargets.UnResolvedSingleTarget

public abstract class UnResolvedWeightedCallTargets
extends Object

A collection of weighted call targets. In some case we can't resolve a class too early in the process. So we recorded it as unresolved and resolve the method when the method is being compiled.


Nested Class Summary
private static class UnResolvedWeightedCallTargets.UnResolvedMultiTarget
          An implementation for storing a call site distribution that has multiple targets.
private static class UnResolvedWeightedCallTargets.UnResolvedSingleTarget
          An implementation for storing a call site distribution that has a single target.
static interface UnResolvedWeightedCallTargets.Visitor
          Used by visitTargets
 
Constructor Summary
UnResolvedWeightedCallTargets()
           
 
Method Summary
abstract  UnResolvedWeightedCallTargets augmentCount(MethodReference target, double amount)
          Augment the weight associated with the argument method by the argument amount.
static UnResolvedWeightedCallTargets create(MethodReference target, double weight)
           
abstract  void decay(double rate)
          Decay the weights of all call targets by the specified amount
abstract  UnResolvedWeightedCallTargets filter(MethodReference goal)
           
 UnResolvedWeightedCallTargets incrementCount(MethodReference target)
          Augment the weight associated with the argument method by 1.
abstract  double totalWeight()
          totalWeight of all call targets
abstract  void visitTargets(UnResolvedWeightedCallTargets.Visitor func)
          Iterate over all of the targets, evaluating the argument function on each edge.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UnResolvedWeightedCallTargets

public UnResolvedWeightedCallTargets()
Method Detail

visitTargets

public abstract void visitTargets(UnResolvedWeightedCallTargets.Visitor func)
Iterate over all of the targets, evaluating the argument function on each edge. NOTE: We guarantee that the targets will be iterated in monotonically decreasing edge weight. This simplifies the coding of the inlining clients that consume this information.

Parameters:
func - the function to evaluate on each target

incrementCount

public final UnResolvedWeightedCallTargets incrementCount(MethodReference target)
Augment the weight associated with the argument method by 1. NOTE: This method may change the representation of the target method. The caller must be sure to update their backing store of UnResolvedWeightedCallTargets accordingly to avoid losing the update.


augmentCount

public abstract UnResolvedWeightedCallTargets augmentCount(MethodReference target,
                                                           double amount)
Augment the weight associated with the argument method by the argument amount. NOTE: This method may change the representation of the target method. The caller must be sure to update their backing store of UnResolvedWeightedCallTargets accordingly to avoid losing the update.


decay

public abstract void decay(double rate)
Decay the weights of all call targets by the specified amount

Parameters:
rate - the value to decay by

totalWeight

public abstract double totalWeight()
totalWeight of all call targets


filter

public abstract UnResolvedWeightedCallTargets filter(MethodReference goal)
Parameters:
goal - MethodReference that is the only statically possible target
Returns:
the filtered call targets or null if no such target exists

create

public static UnResolvedWeightedCallTargets create(MethodReference target,
                                                   double weight)