public class ConditionalEliminationUtil extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
ConditionalEliminationUtil.GuardedCondition |
static interface |
ConditionalEliminationUtil.GuardFolding |
static interface |
ConditionalEliminationUtil.GuardRewirer |
static class |
ConditionalEliminationUtil.InfoElement |
static interface |
ConditionalEliminationUtil.InfoElementProvider |
static class |
ConditionalEliminationUtil.InputFilter
Checks for safe nodes when moving pending tests up.
|
static class |
ConditionalEliminationUtil.Marks |
| Constructor and Description |
|---|
ConditionalEliminationUtil() |
| Modifier and Type | Method and Description |
|---|---|
static Stamp |
getOtherSafeStamp(ValueNode x)
We can only use the stamp of a second value involved in the condition if we are sure that we
are not implicitly creating a dependency on a pi node that is responsible for that stamp.
|
static Stamp |
getSafeStamp(ValueNode x)
Get the stamp that may be used for the value for which we are registering the condition.
|
static org.graalvm.collections.Pair<ConditionalEliminationUtil.InfoElement,Stamp> |
recursiveFoldStamp(ConditionalEliminationUtil.InfoElementProvider infoElementProvider,
Node node) |
static org.graalvm.collections.Pair<ConditionalEliminationUtil.InfoElement,Stamp> |
recursiveFoldStampFromInfo(ConditionalEliminationUtil.InfoElementProvider infoElementProvider,
Node node)
Recursively try to fold stamps within this expression using information from
ConditionalEliminationUtil.InfoElementProvider.infoElements(ValueNode). |
static boolean |
rewireGuards(GuardingNode guard,
boolean result,
ValueNode proxifiedInput,
Stamp guardedValueStamp,
ConditionalEliminationUtil.GuardRewirer rewireGuardFunction) |
static boolean |
tryProveGuardCondition(ConditionalEliminationUtil.InfoElementProvider infoElementProvider,
ArrayDeque<ConditionalEliminationUtil.GuardedCondition> conditions,
ConditionalEliminationUtil.GuardFolding guardFolding,
DeoptimizingGuard thisGuard,
LogicNode node,
ConditionalEliminationUtil.GuardRewirer rewireGuardFunction) |
public static Stamp getSafeStamp(ValueNode x)
public static Stamp getOtherSafeStamp(ValueNode x)
public static org.graalvm.collections.Pair<ConditionalEliminationUtil.InfoElement,Stamp> recursiveFoldStamp(ConditionalEliminationUtil.InfoElementProvider infoElementProvider, Node node)
public static org.graalvm.collections.Pair<ConditionalEliminationUtil.InfoElement,Stamp> recursiveFoldStampFromInfo(ConditionalEliminationUtil.InfoElementProvider infoElementProvider, Node node)
ConditionalEliminationUtil.InfoElementProvider.infoElements(ValueNode). It's only safe to use constants and one
ConditionalEliminationUtil.InfoElement otherwise more than one guard would be required.node - public static boolean rewireGuards(GuardingNode guard, boolean result, ValueNode proxifiedInput, Stamp guardedValueStamp, ConditionalEliminationUtil.GuardRewirer rewireGuardFunction)
public static boolean tryProveGuardCondition(ConditionalEliminationUtil.InfoElementProvider infoElementProvider, ArrayDeque<ConditionalEliminationUtil.GuardedCondition> conditions, ConditionalEliminationUtil.GuardFolding guardFolding, DeoptimizingGuard thisGuard, LogicNode node, ConditionalEliminationUtil.GuardRewirer rewireGuardFunction)