public class DynamicCounterNode extends FixedWithNextNode implements LIRLowerable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable| Modifier and Type | Field and Description |
|---|---|
protected String |
group |
static long |
MAX_INCREMENT |
static long |
MIN_INCREMENT |
protected String |
name |
static NodeClass<DynamicCounterNode> |
TYPE |
protected boolean |
withContext |
nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
DynamicCounterNode(NodeClass<? extends DynamicCounterNode> c,
String group,
String name,
ValueNode increment,
boolean withContext) |
|
DynamicCounterNode(String group,
String name,
ValueNode increment,
boolean withContext) |
| Modifier and Type | Method and Description |
|---|---|
static void |
addCounterBefore(String group,
String name,
long increment,
boolean withContext,
FixedNode position) |
static void |
addCounterBefore(String group,
String name,
ValueNode increment,
boolean withContext,
FixedNode position) |
static long |
clampIncrement(long value)
Clamps
value to a value between DynamicCounterNode.MIN_INCREMENT and DynamicCounterNode.MAX_INCREMENT. |
static void |
counter(String group,
String name,
long increment,
boolean addContext) |
void |
generate(NodeLIRBuilderTool generator) |
String |
getGroup() |
ValueNode |
getIncrement() |
String |
getName() |
boolean |
isWithContext() |
asFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitasFixedNodeasNodepublic static final NodeClass<DynamicCounterNode> TYPE
protected final String group
protected final String name
protected final boolean withContext
public static final long MIN_INCREMENT
public static final long MAX_INCREMENT
public DynamicCounterNode(String group, String name, ValueNode increment, boolean withContext)
protected DynamicCounterNode(NodeClass<? extends DynamicCounterNode> c, String group, String name, ValueNode increment, boolean withContext)
public static long clampIncrement(long value)
value to a value between DynamicCounterNode.MIN_INCREMENT and DynamicCounterNode.MAX_INCREMENT.
This mitigates the possibility of overflowing benchmark counters.public ValueNode getIncrement()
public String getName()
public String getGroup()
public boolean isWithContext()
public static void addCounterBefore(String group, String name, long increment, boolean withContext, FixedNode position)
public static void addCounterBefore(String group, String name, ValueNode increment, boolean withContext, FixedNode position)
public void generate(NodeLIRBuilderTool generator)
generate in interface LIRLowerable