public static ValueNode createOverrideStamp(ConstantFieldProvider constantFields, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, StampPair stamp, ValueNode object, ResolvedJavaField field, boolean canonicalizeReads, boolean allUsagesAvailable) { return canonical(null, stamp, object, field, constantFields, constantReflection, options, metaAccess, canonicalizeReads, allUsagesAvailable); }
public static ValueNode create(ConstantFieldProvider constantFields, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Assumptions assumptions, ValueNode object, ResolvedJavaField field, boolean canonicalizeReads, boolean allUsagesAvailable) { return canonical(null, StampFactory.forDeclaredType(assumptions, field.getType(), false), object, field, constantFields, constantReflection, options, metaAccess, canonicalizeReads, allUsagesAvailable); }
@Override public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject) { NodeView view = NodeView.from(tool); if (tool.allUsagesAvailable() && hasNoUsages() && !isVolatile()) { if (isStatic() || StampTool.isPointerNonNull(forObject.stamp(view))) { return null; } if (graph().getGuardsStage().allowsGuardInsertion()) { return new FixedGuardNode(new IsNullNode(forObject), DeoptimizationReason.NullCheckException, DeoptimizationAction.InvalidateReprofile, true, getNodeSourcePosition()); } } return canonical(this, StampPair.create(stamp, uncheckedStamp), forObject, field, tool.getConstantFieldProvider(), tool.getConstantReflection(), tool.getOptions(), tool.getMetaAccess(), tool.canonicalizeReads(), tool.allUsagesAvailable()); }
if (node instanceof LoadFieldNode) { LoadFieldNode loadFieldNode = (LoadFieldNode) node; return loadFieldNode.canonical(canonicalizerTool); } else if (node instanceof FixedGuardNode) { FixedGuardNode guard = (FixedGuardNode) node;