# HG changeset patch # User Roland Schatz # Date 1401272150 -7200 # Node ID b2c18c498f139554a13e57ab6b5ee30e53431267 # Parent 57303ce74a21c7952a38efe2c48499435b8efb88 Remove isCompressible flags from memory access nodes. diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java --- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java Wed May 28 12:15:50 2014 +0200 @@ -211,7 +211,7 @@ for (int slot : objectSlots) { int offset = slot * wordSize; LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, Kind.Int, index * intSize, getGraph()); - append(new WriteNode(objectParametersOffsets, ConstantNode.forInt(offset, getGraph()), location, BarrierType.NONE, false, false)); + append(new WriteNode(objectParametersOffsets, ConstantNode.forInt(offset, getGraph()), location, BarrierType.NONE, false)); index++; } } @@ -234,12 +234,12 @@ ParameterNode javaParameter = javaParameters[javaParametersIndex]; int javaParameterOffset = javaParameterOffsetsInKernelParametersBuffer[javaParametersIndex]; LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, javaParameter.getKind(), javaParameterOffset, getGraph()); - append(new WriteNode(buf, javaParameter, location, BarrierType.NONE, false, false)); + append(new WriteNode(buf, javaParameter, location, BarrierType.NONE, false)); updateDimArg(method, sig, sigIndex++, args, javaParameter); } if (returnKind != Kind.Void) { LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, wordKind, bufSize - wordSize, getGraph()); - append(new WriteNode(buf, nullWord, location, BarrierType.NONE, false, false)); + append(new WriteNode(buf, nullWord, location, BarrierType.NONE, false)); } HIRFrameStateBuilder fsb = new HIRFrameStateBuilder(method, getGraph(), true); diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Wed May 28 12:15:50 2014 +0200 @@ -43,7 +43,6 @@ import com.oracle.graal.lir.sparc.SPARCMove.NullCheckOp; import com.oracle.graal.lir.sparc.SPARCMove.StoreConstantOp; import com.oracle.graal.lir.sparc.SPARCMove.StoreOp; -import com.oracle.graal.nodes.extended.*; public class SPARCHotSpotLIRGenerator extends SPARCLIRGenerator implements HotSpotLIRGenerator { @@ -167,33 +166,11 @@ append(new SPARCHotSpotDeoptimizeCallerOp()); } - private static boolean isCompressCandidate(Access access) { - return access != null && access.isCompressible(); - } - @Override public Variable emitLoad(PlatformKind kind, Value address, LIRFrameState state) { SPARCAddressValue loadAddress = asAddressValue(address); Variable result = newVariable(kind); - if (isCompressCandidate(null)) { - if (config.useCompressedOops && kind == Kind.Object) { - // append(new LoadCompressedPointer(kind, result, loadAddress, access != null ? - // state(access) : - // null, config.narrowOopBase, config.narrowOopShift, - // config.logMinObjAlignment)); - throw GraalInternalError.unimplemented(); - } else if (config.useCompressedClassPointers && kind == Kind.Long) { - // append(new LoadCompressedPointer(kind, result, loadAddress, access != null ? - // state(access) : - // null, config.narrowKlassBase, config.narrowKlassShift, - // config.logKlassAlignment)); - throw GraalInternalError.unimplemented(); - } else { - append(new LoadOp((Kind) kind, result, loadAddress, state)); - } - } else { - append(new LoadOp((Kind) kind, result, loadAddress, state)); - } + append(new LoadOp((Kind) kind, result, loadAddress, state)); return result; } @@ -202,42 +179,13 @@ SPARCAddressValue storeAddress = asAddressValue(address); if (isConstant(inputVal)) { Constant c = asConstant(inputVal); - if (canStoreConstant(c, isCompressCandidate(null))) { - if (inputVal.getKind() == Kind.Object) { - append(new StoreConstantOp((Kind) kind, storeAddress, c, state, config.useCompressedOops && isCompressCandidate(null))); - } else if (inputVal.getKind() == Kind.Long) { - append(new StoreConstantOp((Kind) kind, storeAddress, c, state, config.useCompressedClassPointers && isCompressCandidate(null))); - } else { - append(new StoreConstantOp((Kind) kind, storeAddress, c, state, false)); - } + if (canStoreConstant(c, false)) { + append(new StoreConstantOp((Kind) kind, storeAddress, c, state, false)); return; } } Variable input = load(inputVal); - if (isCompressCandidate(null)) { - if (config.useCompressedOops && kind == Kind.Object) { - // if (input.getKind() == Kind.Object) { - // Variable scratch = newVariable(Kind.Long); - // append(new StoreCompressedPointer(kind, storeAddress, input, scratch, state, - // config.narrowOopBase, config.narrowOopShift, - // config.logMinObjAlignment)); - // } else { - // // the input oop is already compressed - // append(new StoreOp(input.getKind(), storeAddress, input, state)); - // } - throw GraalInternalError.unimplemented(); - } else if (config.useCompressedClassPointers && kind == Kind.Long) { - // Variable scratch = newVariable(Kind.Long); - // append(new StoreCompressedPointer(kind, storeAddress, input, scratch, state, - // config.narrowKlassBase, config.narrowKlassShift, - // config.logKlassAlignment)); - throw GraalInternalError.unimplemented(); - } else { - append(new StoreOp((Kind) kind, storeAddress, input, state)); - } - } else { - append(new StoreOp((Kind) kind, storeAddress, input, state)); - } + append(new StoreOp((Kind) kind, storeAddress, input, state)); } public Value emitCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue) { diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Wed May 28 12:15:50 2014 +0200 @@ -383,11 +383,11 @@ throw new GraalInternalError("too many counters, reduce number of counters or increase -XX:GraalCounterSize=... (current value: " + config.graalCountersSize + ")"); } ConstantLocationNode arrayLocation = ConstantLocationNode.create(LocationIdentity.ANY_LOCATION, wordKind, config.graalCountersThreadOffset, graph); - ReadNode readArray = graph.add(new ReadNode(thread, arrayLocation, StampFactory.forKind(wordKind), BarrierType.NONE, false)); + ReadNode readArray = graph.add(new ReadNode(thread, arrayLocation, StampFactory.forKind(wordKind), BarrierType.NONE)); ConstantLocationNode location = ConstantLocationNode.create(LocationIdentity.ANY_LOCATION, Kind.Long, Unsafe.ARRAY_LONG_INDEX_SCALE * index, graph); - ReadNode read = graph.add(new ReadNode(readArray, location, StampFactory.forKind(Kind.Long), BarrierType.NONE, false)); + ReadNode read = graph.add(new ReadNode(readArray, location, StampFactory.forKind(Kind.Long), BarrierType.NONE)); IntegerAddNode add = graph.unique(new IntegerAddNode(StampFactory.forKind(Kind.Long), read, counter.getIncrement())); - WriteNode write = graph.add(new WriteNode(readArray, add, location, BarrierType.NONE, false)); + WriteNode write = graph.add(new WriteNode(readArray, add, location, BarrierType.NONE)); graph.addBeforeFixed(counter, thread); graph.addBeforeFixed(counter, readArray); diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Wed May 28 12:15:50 2014 +0200 @@ -194,7 +194,7 @@ // compiled code entry as HotSpot does not guarantee they are final // values. ReadNode compiledEntry = graph.add(new ReadNode(metaspaceMethod, ConstantLocationNode.create(ANY_LOCATION, wordKind, runtime.getConfig().methodCompiledEntryOffset, graph), - StampFactory.forKind(wordKind), BarrierType.NONE, false)); + StampFactory.forKind(wordKind), BarrierType.NONE)); loweredCallTarget = graph.add(new HotSpotIndirectCallTargetNode(metaspaceMethod, compiledEntry, parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(), CallingConvention.Type.JavaCall)); @@ -305,7 +305,7 @@ int size = HIRFrameStateBuilder.stackSlots(osrLocal.getKind()); int offset = localsOffset - (osrLocal.index() + size - 1) * 8; IndexedLocationNode location = IndexedLocationNode.create(ANY_LOCATION, osrLocal.getKind(), offset, ConstantNode.forLong(0, graph), graph, 1); - ReadNode load = graph.add(new ReadNode(buffer, location, osrLocal.stamp(), BarrierType.NONE, false)); + ReadNode load = graph.add(new ReadNode(buffer, location, osrLocal.stamp(), BarrierType.NONE)); osrLocal.replaceAndDelete(load); graph.addBeforeFixed(migrationEnd, load); } @@ -388,7 +388,7 @@ assert vtableEntryOffset > 0; // We use LocationNode.ANY_LOCATION for the reads that access the vtable // entry as HotSpot does not guarantee that this is a final value. - ReadNode metaspaceMethod = graph.add(new ReadNode(hub, ConstantLocationNode.create(ANY_LOCATION, wordKind, vtableEntryOffset, graph), StampFactory.forKind(wordKind), BarrierType.NONE, false)); + ReadNode metaspaceMethod = graph.add(new ReadNode(hub, ConstantLocationNode.create(ANY_LOCATION, wordKind, vtableEntryOffset, graph), StampFactory.forKind(wordKind), BarrierType.NONE)); return metaspaceMethod; } @@ -406,7 +406,7 @@ hubStamp = StampFactory.forKind(wordKind); } - FloatingReadNode memoryRead = graph.unique(new FloatingReadNode(object, location, null, hubStamp, guard, BarrierType.NONE, false)); + FloatingReadNode memoryRead = graph.unique(new FloatingReadNode(object, location, null, hubStamp, guard, BarrierType.NONE)); if (config.useCompressedClassPointers) { return CompressionNode.uncompress(memoryRead, config.getKlassEncoding()); } else { @@ -424,7 +424,7 @@ writeValue = CompressionNode.compress(value, config.getKlassEncoding()); } - return graph.add(new WriteNode(object, writeValue, location, BarrierType.NONE, false)); + return graph.add(new WriteNode(object, writeValue, location, BarrierType.NONE)); } @Override diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/HeapAccess.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/HeapAccess.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/HeapAccess.java Wed May 28 12:15:50 2014 +0200 @@ -49,9 +49,4 @@ * Gets the write barrier type for that particular access. */ BarrierType getBarrierType(); - - /** - * Returns whether or not the heap access is a compressed pointer candidate. - */ - boolean isCompressible(); } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Wed May 28 12:15:50 2014 +0200 @@ -63,12 +63,12 @@ return initialization; } - public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible) { - this(object, value, location, barrierType, compressible, false); + public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { + this(object, value, location, barrierType, false); } - public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { - super(object, location, StampFactory.forVoid(), barrierType, compressible); + public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { + super(object, location, StampFactory.forVoid(), barrierType); this.value = value; this.initialization = initialization; } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Wed May 28 12:15:50 2014 +0200 @@ -37,7 +37,6 @@ @Input(InputType.Association) private ValueNode location; private boolean nullCheck; private BarrierType barrierType; - private boolean compressible; public ValueNode object() { return object; @@ -65,20 +64,19 @@ } public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp) { - this(object, location, stamp, null, BarrierType.NONE, false); + this(object, location, stamp, null, BarrierType.NONE); } - public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType, boolean compressible) { - this(object, location, stamp, null, barrierType, compressible); + public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { + this(object, location, stamp, null, barrierType); } - public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { + public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { super(stamp); this.object = object; this.location = location; this.guard = guard; this.barrierType = barrierType; - this.compressible = compressible; } @Override @@ -101,9 +99,4 @@ public BarrierType getBarrierType() { return barrierType; } - - @Override - public boolean isCompressible() { - return compressible; - } } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java Wed May 28 12:15:50 2014 +0200 @@ -35,12 +35,12 @@ super(object, location, stamp); } - public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { - super(object, location, stamp, guard, barrierType, compressible); + public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + super(object, location, stamp, guard, barrierType); } - public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType, boolean compressible) { - super(object, location, stamp, barrierType, compressible); + public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { + super(object, location, stamp, barrierType); } public abstract FloatingAccessNode asFloatingNode(MemoryNode lastLocationAccess); diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Wed May 28 12:15:50 2014 +0200 @@ -32,7 +32,6 @@ @Input private ValueNode object; @Input(InputType.Association) private LocationNode location; private BarrierType barrierType; - private boolean compressible; public ValueNode object() { return object; @@ -56,12 +55,11 @@ this.location = location; } - public FloatingAccessNode(ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { + public FloatingAccessNode(ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { super(stamp, guard); this.object = object; this.location = location; this.barrierType = barrierType; - this.compressible = compressible; } @Override @@ -69,11 +67,6 @@ return barrierType; } - @Override - public boolean isCompressible() { - return compressible; - } - public boolean canNullCheck() { return true; } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Wed May 28 12:15:50 2014 +0200 @@ -38,15 +38,15 @@ @Input(InputType.Memory) private MemoryNode lastLocationAccess; public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp) { - this(object, location, lastLocationAccess, stamp, null, BarrierType.NONE, false); + this(object, location, lastLocationAccess, stamp, null, BarrierType.NONE); } public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard) { - this(object, location, lastLocationAccess, stamp, guard, BarrierType.NONE, false); + this(object, location, lastLocationAccess, stamp, guard, BarrierType.NONE); } - public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { - super(object, location, stamp, guard, barrierType, compressible); + public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + super(object, location, stamp, guard, barrierType); this.lastLocationAccess = lastLocationAccess; } @@ -69,14 +69,14 @@ @Override public Node canonical(CanonicalizerTool tool) { if (object() instanceof PiNode && ((PiNode) object()).getGuard() == getGuard()) { - return graph().unique(new FloatingReadNode(((PiNode) object()).getOriginalNode(), location(), getLastLocationAccess(), stamp(), getGuard(), getBarrierType(), isCompressible())); + return graph().unique(new FloatingReadNode(((PiNode) object()).getOriginalNode(), location(), getLastLocationAccess(), stamp(), getGuard(), getBarrierType())); } - return ReadNode.canonicalizeRead(this, location(), object(), tool, isCompressible()); + return ReadNode.canonicalizeRead(this, location(), object(), tool); } @Override public FixedAccessNode asFixedNode() { - return graph().add(new ReadNode(object(), accessLocation(), stamp(), getGuard(), getBarrierType(), isCompressible())); + return graph().add(new ReadNode(object(), accessLocation(), stamp(), getGuard(), getBarrierType())); } @Override diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Wed May 28 12:15:50 2014 +0200 @@ -32,8 +32,11 @@ */ public final class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode { + private final boolean compressible; + public JavaReadNode(ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { - super(object, location, StampFactory.forKind(location.getValueKind()), barrierType, compressible); + super(object, location, StampFactory.forKind(location.getValueKind()), barrierType); + this.compressible = compressible; } public void lower(LoweringTool tool) { @@ -43,4 +46,8 @@ public boolean canNullCheck() { return true; } + + public boolean isCompressible() { + return compressible; + } } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Wed May 28 12:15:50 2014 +0200 @@ -31,8 +31,11 @@ */ public final class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single { + private final boolean compressible; + public JavaWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { - super(object, value, location, barrierType, compressible, initialization); + super(object, value, location, barrierType, initialization); + this.compressible = compressible; } public void lower(LoweringTool tool) { @@ -42,4 +45,8 @@ public boolean canNullCheck() { return true; } + + public boolean isCompressible() { + return compressible; + } } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Wed May 28 12:15:50 2014 +0200 @@ -36,21 +36,21 @@ */ public final class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, PiPushable, Virtualizable, GuardingNode { - public ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType, boolean compressible) { - super(object, location, stamp, barrierType, compressible); + public ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { + super(object, location, stamp, barrierType); } - public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { - super(object, location, stamp, guard, barrierType, compressible); + public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + super(object, location, stamp, guard, barrierType); } - private ReadNode(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType, boolean compressible) { + private ReadNode(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType) { /* * Used by node intrinsics. Really, you can trust me on that! Since the initial value for * location is a parameter, i.e., a ParameterNode, the constructor cannot use the declared * type LocationNode. */ - super(object, location, StampFactory.forNodeIntrinsic(), (GuardingNode) guard, barrierType, compressible); + super(object, location, StampFactory.forNodeIntrinsic(), (GuardingNode) guard, barrierType); } @Override @@ -63,17 +63,17 @@ @Override public Node canonical(CanonicalizerTool tool) { if (object() instanceof PiNode && ((PiNode) object()).getGuard() == getGuard()) { - ReadNode readNode = graph().add(new ReadNode(((PiNode) object()).getOriginalNode(), location(), stamp(), getGuard(), getBarrierType(), isCompressible())); + ReadNode readNode = graph().add(new ReadNode(((PiNode) object()).getOriginalNode(), location(), stamp(), getGuard(), getBarrierType())); readNode.setNullCheck(getNullCheck()); readNode.setStateBefore(stateBefore()); return readNode; } - return canonicalizeRead(this, location(), object(), tool, isCompressible()); + return canonicalizeRead(this, location(), object(), tool); } @Override public FloatingAccessNode asFloatingNode(MemoryNode lastLocationAccess) { - return graph().unique(new FloatingReadNode(object(), location(), lastLocationAccess, stamp(), getGuard(), getBarrierType(), isCompressible())); + return graph().unique(new FloatingReadNode(object(), location(), lastLocationAccess, stamp(), getGuard(), getBarrierType())); } @Override @@ -81,7 +81,7 @@ return (getNullCheck() && type == InputType.Guard) ? true : super.isAllowedUsageType(type); } - public static ValueNode canonicalizeRead(ValueNode read, LocationNode location, ValueNode object, CanonicalizerTool tool, boolean compressible) { + public static ValueNode canonicalizeRead(ValueNode read, LocationNode location, ValueNode object, CanonicalizerTool tool) { MetaAccessProvider metaAccess = tool.getMetaAccess(); if (read.usages().isEmpty()) { GuardingNode guard = ((Access) read).getGuard(); @@ -94,7 +94,7 @@ } } if (tool.canonicalizeReads()) { - if (metaAccess != null && object != null && object.isConstant() && !compressible) { + if (metaAccess != null && object != null && object.isConstant()) { if ((location.getLocationIdentity() == LocationIdentity.FINAL_LOCATION || location.getLocationIdentity() == LocationIdentity.ARRAY_LENGTH_LOCATION) && location instanceof ConstantLocationNode) { long displacement = ((ConstantLocationNode) location).getDisplacement(); diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Wed May 28 12:15:50 2014 +0200 @@ -34,12 +34,12 @@ */ public final class WriteNode extends AbstractWriteNode implements LIRLowerable, Simplifiable, Virtualizable { - public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible) { - super(object, value, location, barrierType, compressible); + public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { + super(object, value, location, barrierType); } - public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { - super(object, value, location, barrierType, compressible, initialization); + public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { + super(object, value, location, barrierType, initialization); } @Override @@ -48,7 +48,7 @@ // It's possible a constant was forced for other usages so inspect the value directly and // use a constant if it can be directly stored. Value v; - if (value().isConstant() && gen.getLIRGeneratorTool().canStoreConstant(value().asConstant(), isCompressible())) { + if (value().isConstant() && gen.getLIRGeneratorTool().canStoreConstant(value().asConstant(), false)) { v = value().asConstant(); } else { v = gen.operand(value()); @@ -65,7 +65,7 @@ } @NodeIntrinsic - public static native void writeMemory(Object object, Object value, Location location, @ConstantNodeParameter BarrierType barrierType, @ConstantNodeParameter boolean compressible); + public static native void writeMemory(Object object, Object value, Location location, @ConstantNodeParameter BarrierType barrierType); @Override public void virtualize(VirtualizerTool tool) { diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Wed May 28 12:15:50 2014 +0200 @@ -40,8 +40,8 @@ @Input private ValueNode newValue; @Input(InputType.State) private FrameState stateAfter; - public LoweredAtomicReadAndWriteNode(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType, boolean compressible) { - super(object, location, newValue.stamp().unrestricted(), barrierType, compressible); + public LoweredAtomicReadAndWriteNode(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType) { + super(object, location, newValue.stamp().unrestricted(), barrierType); this.newValue = newValue; } diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Wed May 28 12:15:50 2014 +0200 @@ -61,8 +61,8 @@ return newValue; } - public LoweredCompareAndSwapNode(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType, boolean compressible) { - super(object, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType, compressible); + public LoweredCompareAndSwapNode(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) { + super(object, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType); assert expectedValue.getKind() == newValue.getKind(); this.expectedValue = expectedValue; this.newValue = newValue; diff -r 57303ce74a21 -r b2c18c498f13 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Tue May 27 21:20:01 2014 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Wed May 28 12:15:50 2014 +0200 @@ -113,7 +113,7 @@ ConstantLocationNode location = createFieldLocation(graph, field, false); assert location != null : "Field that is loaded must not be eliminated"; - ReadNode memoryRead = graph.add(new ReadNode(object, location, loadStamp, fieldLoadBarrierType(field), false)); + ReadNode memoryRead = graph.add(new ReadNode(object, location, loadStamp, fieldLoadBarrierType(field))); ValueNode readValue = implicitLoadConvert(graph, field.getKind(), memoryRead); loadField.replaceAtUsages(readValue); graph.replaceFixed(loadField, memoryRead); @@ -141,7 +141,7 @@ graph.removeFixed(storeField); return; } - WriteNode memoryWrite = graph.add(new WriteNode(object, value, location, fieldStoreBarrierType(storeField.field()), false)); + WriteNode memoryWrite = graph.add(new WriteNode(object, value, location, fieldStoreBarrierType(storeField.field()))); memoryWrite.setStateAfter(storeField.stateAfter()); graph.replaceFixedWithFixed(storeField, memoryWrite); memoryWrite.setGuard(createNullCheck(object, memoryWrite, tool)); @@ -160,7 +160,7 @@ LocationNode location = createArrayLocation(graph, elementKind, loadIndexed.index(), false); Stamp loadStamp = loadStamp(loadIndexed.stamp(), elementKind, true); - ReadNode memoryRead = graph.add(new ReadNode(loadIndexed.array(), location, loadStamp, BarrierType.NONE, false)); + ReadNode memoryRead = graph.add(new ReadNode(loadIndexed.array(), location, loadStamp, BarrierType.NONE)); ValueNode readValue = implicitLoadConvert(graph, elementKind, memoryRead); memoryRead.setGuard(createBoundsCheck(loadIndexed, tool)); @@ -197,7 +197,7 @@ } } - WriteNode memoryWrite = graph.add(new WriteNode(array, implicitStoreConvert(graph, elementKind, value), location, arrayStoreBarrierType(storeIndexed.elementKind()), false)); + WriteNode memoryWrite = graph.add(new WriteNode(array, implicitStoreConvert(graph, elementKind, value), location, arrayStoreBarrierType(storeIndexed.elementKind()))); memoryWrite.setGuard(boundsCheck); memoryWrite.setStateAfter(storeIndexed.stateAfter()); graph.replaceFixedWithFixed(storeIndexed, memoryWrite); @@ -213,7 +213,7 @@ ValueNode array = arrayLengthNode.array(); ConstantLocationNode location = ConstantLocationNode.create(ARRAY_LENGTH_LOCATION, Kind.Int, arrayLengthOffset(), graph); - ReadNode arrayLengthRead = graph.add(new ReadNode(array, location, StampFactory.positiveInt(), BarrierType.NONE, false)); + ReadNode arrayLengthRead = graph.add(new ReadNode(array, location, StampFactory.positiveInt(), BarrierType.NONE)); arrayLengthRead.setGuard(createNullCheck(array, arrayLengthNode, tool)); graph.replaceFixedWithFixed(arrayLengthNode, arrayLengthRead); } @@ -235,7 +235,7 @@ ValueNode expectedValue = implicitStoreConvert(graph, valueKind, cas.expected()); ValueNode newValue = implicitStoreConvert(graph, valueKind, cas.newValue()); - LoweredCompareAndSwapNode atomicNode = graph.add(new LoweredCompareAndSwapNode(cas.object(), location, expectedValue, newValue, compareAndSwapBarrierType(cas), false)); + LoweredCompareAndSwapNode atomicNode = graph.add(new LoweredCompareAndSwapNode(cas.object(), location, expectedValue, newValue, compareAndSwapBarrierType(cas))); atomicNode.setStateAfter(cas.stateAfter()); graph.replaceFixedWithFixed(cas, atomicNode); } @@ -247,7 +247,7 @@ ValueNode newValue = implicitStoreConvert(graph, valueKind, n.newValue()); - LoweredAtomicReadAndWriteNode memoryRead = graph.add(new LoweredAtomicReadAndWriteNode(n.object(), location, newValue, atomicReadAndWriteBarrierType(n), false)); + LoweredAtomicReadAndWriteNode memoryRead = graph.add(new LoweredAtomicReadAndWriteNode(n.object(), location, newValue, atomicReadAndWriteBarrierType(n))); memoryRead.setStateAfter(n.stateAfter()); ValueNode readValue = implicitLoadConvert(graph, valueKind, memoryRead); @@ -277,7 +277,7 @@ Kind readKind = load.accessKind(); LocationNode location = createLocation(load); Stamp loadStamp = loadStamp(load.stamp(), readKind, compressible); - ReadNode memoryRead = graph.add(new ReadNode(load.object(), location, loadStamp, guard, BarrierType.NONE, false)); + ReadNode memoryRead = graph.add(new ReadNode(load.object(), location, loadStamp, guard, BarrierType.NONE)); ValueNode readValue = implicitLoadConvert(graph, readKind, memoryRead, compressible); load.replaceAtUsages(readValue); return memoryRead; @@ -290,7 +290,7 @@ boolean compressible = store.value().getKind() == Kind.Object; Kind valueKind = store.accessKind(); ValueNode value = implicitStoreConvert(graph, valueKind, store.value(), compressible); - WriteNode write = graph.add(new WriteNode(object, value, location, unsafeStoreBarrierType(store), false)); + WriteNode write = graph.add(new WriteNode(object, value, location, unsafeStoreBarrierType(store))); write.setStateAfter(store.stateAfter()); graph.replaceFixedWithFixed(store, write); } @@ -300,7 +300,7 @@ Kind valueKind = read.location().getValueKind(); Stamp loadStamp = loadStamp(read.stamp(), valueKind, read.isCompressible()); - ReadNode memoryRead = graph.add(new ReadNode(read.object(), read.location(), loadStamp, read.getBarrierType(), false)); + ReadNode memoryRead = graph.add(new ReadNode(read.object(), read.location(), loadStamp, read.getBarrierType())); ValueNode readValue = implicitLoadConvert(graph, valueKind, memoryRead, read.isCompressible()); memoryRead.setGuard(read.getGuard()); read.replaceAtUsages(readValue); @@ -312,7 +312,7 @@ Kind valueKind = write.location().getValueKind(); ValueNode value = implicitStoreConvert(graph, valueKind, write.value(), write.isCompressible()); - WriteNode memoryWrite = graph.add(new WriteNode(write.object(), value, write.location(), write.getBarrierType(), false, write.isInitialization())); + WriteNode memoryWrite = graph.add(new WriteNode(write.object(), value, write.location(), write.getBarrierType(), write.isInitialization())); memoryWrite.setStateAfter(write.stateAfter()); graph.replaceFixedWithFixed(write, memoryWrite); memoryWrite.setGuard(write.getGuard()); @@ -368,7 +368,7 @@ barrierType = arrayInitializationBarrier(entryKind); } if (location != null) { - WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, entryKind, value), location, barrierType, false); + WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, entryKind, value), location, barrierType); graph.addAfterFixed(newObject, graph.add(write)); } } @@ -400,7 +400,7 @@ barrierType = BarrierType.PRECISE; } if (location != null) { - WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, Kind.Object, allocValue), location, barrierType, false); + WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, Kind.Object, allocValue), location, barrierType); graph.addBeforeFixed(commit, graph.add(write)); } } @@ -625,7 +625,7 @@ ValueNode arrayLength = readArrayLength(n.graph(), array, tool.getConstantReflection()); if (arrayLength == null) { Stamp stamp = StampFactory.positiveInt(); - ReadNode readArrayLength = graph.add(new ReadNode(array, ConstantLocationNode.create(ARRAY_LENGTH_LOCATION, Kind.Int, arrayLengthOffset(), graph), stamp, BarrierType.NONE, false)); + ReadNode readArrayLength = graph.add(new ReadNode(array, ConstantLocationNode.create(ARRAY_LENGTH_LOCATION, Kind.Int, arrayLengthOffset(), graph), stamp, BarrierType.NONE)); graph.addBeforeFixed(n, readArrayLength); readArrayLength.setGuard(createNullCheck(array, readArrayLength, tool)); arrayLength = readArrayLength;