# HG changeset patch # User Roland Schatz # Date 1366903097 -7200 # Node ID 9ee5f3bfa755bc6b0e90fae2fb1a542e412d351b # Parent a5f2b9012865fe761c38a1fe4010eda620c5b23d Restructure load/store/lea LIR instructions. diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Thu Apr 25 17:18:17 2013 +0200 @@ -144,7 +144,9 @@ } private static AMD64LIRInstruction createMove(AllocatableValue dst, Value src) { - if (isRegister(src) || isStackSlot(dst)) { + if (src instanceof AMD64AddressValue) { + return new LeaOp(dst, (AMD64AddressValue) src); + } else if (isRegister(src) || isStackSlot(dst)) { return new MoveFromRegOp(dst, src); } else { return new MoveToRegOp(dst, src); @@ -156,7 +158,8 @@ append(createMove(dst, src)); } - private AMD64AddressValue prepareAddress(Value base, long displacement, Value index, int scale) { + @Override + public AMD64AddressValue emitAddress(Value base, long displacement, Value index, int scale) { AllocatableValue baseRegister; long finalDisp = displacement; if (isConstant(base)) { @@ -206,17 +209,25 @@ return new AMD64AddressValue(target().wordKind, baseRegister, indexRegister, scaleEnum, displacementInt); } + private AMD64AddressValue asAddress(Value address) { + if (address instanceof AMD64AddressValue) { + return (AMD64AddressValue) address; + } else { + return emitAddress(address, 0, Value.ILLEGAL, 0); + } + } + @Override - public Variable emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode deopting) { - AMD64AddressValue loadAddress = prepareAddress(base, displacement, index, scale); + public Variable emitLoad(Kind kind, Value address, DeoptimizingNode deopting) { + AMD64AddressValue loadAddress = asAddress(address); Variable result = newVariable(kind); append(new LoadOp(kind, result, loadAddress, deopting != null ? state(deopting) : null)); return result; } @Override - public void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value inputVal, DeoptimizingNode deopting) { - AMD64AddressValue storeAddress = prepareAddress(base, displacement, index, scale); + public void emitStore(Kind kind, Value address, Value inputVal, DeoptimizingNode deopting) { + AMD64AddressValue storeAddress = asAddress(address); LIRFrameState state = deopting != null ? state(deopting) : null; if (isConstant(inputVal)) { @@ -232,15 +243,7 @@ } @Override - public Variable emitLea(Value base, long displacement, Value index, int scale) { - Variable result = newVariable(target().wordKind); - AMD64AddressValue address = prepareAddress(base, displacement, index, scale); - append(new LeaOp(result, address)); - return result; - } - - @Override - public Variable emitLea(StackSlot address) { + public Variable emitAddress(StackSlot address) { Variable result = newVariable(target().wordKind); append(new StackLeaOp(result, address)); return result; diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java --- a/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Thu Apr 25 17:18:17 2013 +0200 @@ -133,7 +133,8 @@ } } - private PTXAddressValue prepareAddress(Value base, long displacement, Value index, int scale) { + @Override + public PTXAddressValue emitAddress(Value base, long displacement, Value index, int scale) { AllocatableValue baseRegister; long finalDisp = displacement; if (isConstant(base)) { @@ -174,28 +175,31 @@ return new PTXAddressValue(target().wordKind, baseRegister, finalDisp); } + private PTXAddressValue asAddress(Value address) { + if (address instanceof PTXAddressValue) { + return (PTXAddressValue) address; + } else { + return emitAddress(address, 0, Value.ILLEGAL, 0); + } + } + @Override - public Variable emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode deopting) { - PTXAddressValue loadAddress = prepareAddress(base, displacement, index, scale); + public Variable emitLoad(Kind kind, Value address, DeoptimizingNode deopting) { + PTXAddressValue loadAddress = asAddress(address); Variable result = newVariable(kind); append(new LoadOp(kind, result, loadAddress, deopting != null ? state(deopting) : null)); return result; } @Override - public void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value inputVal, DeoptimizingNode deopting) { - PTXAddressValue storeAddress = prepareAddress(base, displacement, index, scale); + public void emitStore(Kind kind, Value address, Value inputVal, DeoptimizingNode deopting) { + PTXAddressValue storeAddress = asAddress(address); Variable input = load(inputVal); append(new StoreOp(kind, storeAddress, input, deopting != null ? state(deopting) : null)); } @Override - public Variable emitLea(Value base, long displacement, Value index, int scale) { - throw new InternalError("NYI"); - } - - @Override - public Variable emitLea(StackSlot address) { + public Variable emitAddress(StackSlot address) { throw new InternalError("NYI"); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java --- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Thu Apr 25 17:18:17 2013 +0200 @@ -214,25 +214,25 @@ } @Override - public Value emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode canTrap) { + public Value emitAddress(Value base, long displacement, Value index, int scale) { // SPARC: Auto-generated method stub return null; } @Override - public void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value input, DeoptimizingNode canTrap) { + public Value emitLoad(Kind kind, Value address, DeoptimizingNode canTrap) { + // SPARC: Auto-generated method stub + return null; + } + + @Override + public void emitStore(Kind kind, Value address, Value input, DeoptimizingNode canTrap) { // SPARC: Auto-generated method stub } @Override - public Value emitLea(Value base, long displacement, Value index, int scale) { - // SPARC: Auto-generated method stub - return null; - } - - @Override - public Value emitLea(StackSlot address) { + public Value emitAddress(StackSlot address) { // SPARC: Auto-generated method stub return null; } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Thu Apr 25 17:18:17 2013 +0200 @@ -168,8 +168,8 @@ @Override public Value setResult(ValueNode x, Value operand) { - assert (isVariable(operand) && x.kind() == operand.getKind()) || (isRegister(operand) && !attributes(asRegister(operand)).isAllocatable()) || - (isConstant(operand) && x.kind() == operand.getKind().getStackKind()) : operand.getKind() + " for node " + x; + assert (!isVariable(operand) || x.kind() == operand.getKind()) : operand.getKind() + " for node " + x; + assert (!isRegister(operand) || !attributes(asRegister(operand)).isAllocatable()); assert operand(x) == null : "operand cannot be set twice"; assert operand != null && isLegal(operand) : "operand must be legal"; assert operand.getKind().getStackKind() == x.kind() : operand.getKind().getStackKind() + " must match " + x.kind(); diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -73,7 +73,7 @@ HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen; StackSlot slot = hsGen.getLockSlot(lockDepth); if (!eliminated) { - Value result = gen.emitLea(slot); + Value result = gen.emitAddress(slot); gen.setResult(this, result); } } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -57,7 +57,7 @@ HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen; StackSlot slot = hsGen.getLockSlot(lockDepth); // The register allocator cannot handle stack -> register moves so we use an LEA here - Value result = gen.emitMove(gen.emitLea(slot)); + Value result = gen.emitMove(gen.emitAddress(slot)); gen.setResult(this, result); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -47,7 +47,7 @@ public void generate(LIRGenerator gen) { int size = rank * 4; StackSlot array = gen.frameMap().allocateStackBlock(size, false); - Value result = gen.emitLea(array); + Value result = gen.emitAddress(array); gen.setResult(this, result); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -43,7 +43,7 @@ public void generate(LIRGenerator gen) { assert graph().getNodes().filter(MonitorCounterNode.class).count() == 1 : "monitor counters not canonicalized to single instance"; StackSlot counter = gen.frameMap().allocateStackBlock(gen.target().wordSize, false); - Value result = gen.emitLea(counter); + Value result = gen.emitAddress(counter); gen.setResult(this, result); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorExitStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorExitStubCall.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorExitStubCall.java Thu Apr 25 17:18:17 2013 +0200 @@ -60,7 +60,7 @@ HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen; StackSlot slot = hsGen.getLockSlot(lockDepth); RuntimeCallTarget stub = gen.getRuntime().lookupRuntimeCall(MonitorExitStubCall.MONITOREXIT); - gen.emitCall(stub, stub.getCallingConvention(), this, gen.operand(object), gen.emitLea(slot)); + gen.emitCall(stub, stub.getCallingConvention(), this, gen.operand(object), gen.emitAddress(slot)); } @NodeIntrinsic diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -69,7 +69,8 @@ parameters.add(frameState.localAt(slot)); } Value[] args = gen.visitInvokeArguments(cc, parameters); - Value entry = gen.emitLoad(Kind.Long, gen.operand(target), config.nmethodEntryOffset, Value.ILLEGAL, 0, null); + Value address = gen.emitAddress(gen.operand(target), config.nmethodEntryOffset, Value.ILLEGAL, 0); + Value entry = gen.emitLoad(Kind.Long, address, null); HotSpotLIRGenerator hsgen = (HotSpotLIRGenerator) gen; hsgen.emitTailcall(args, entry); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -91,18 +91,6 @@ return getY().generateAddress(gen, xAddr); } - @Override - public Value generateLoad(LIRGeneratorTool gen, Value base, DeoptimizingNode deopting) { - Value xAddr = getX().generateAddress(gen, base); - return getY().generateLoad(gen, xAddr, deopting); - } - - @Override - public void generateStore(LIRGeneratorTool gen, Value base, Value value, DeoptimizingNode deopting) { - Value xAddr = getX().generateAddress(gen, base); - getY().generateStore(gen, xAddr, value, deopting); - } - @NodeIntrinsic public static native Location addLocation(@ConstantNodeParameter Object identity, @ConstantNodeParameter Kind kind, Location x, Location y); } diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -24,7 +24,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; -import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; /** @@ -56,16 +55,6 @@ @Override public Value generateAddress(LIRGeneratorTool gen, Value base) { - return gen.emitLea(base, displacement(), Value.ILLEGAL, 0); - } - - @Override - public Value generateLoad(LIRGeneratorTool gen, Value base, DeoptimizingNode deopting) { - return gen.emitLoad(getValueKind(), base, displacement(), Value.ILLEGAL, 0, deopting); - } - - @Override - public void generateStore(LIRGeneratorTool gen, Value base, Value value, DeoptimizingNode deopting) { - gen.emitStore(getValueKind(), base, displacement(), Value.ILLEGAL, 0, value, deopting); + return gen.emitAddress(base, displacement(), Value.ILLEGAL, 0); } } diff -r a5f2b9012865 -r 9ee5f3bfa755 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 Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -24,6 +24,7 @@ import java.util.*; +import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -53,7 +54,8 @@ @Override public void generate(LIRGeneratorTool gen) { - gen.setResult(this, location().generateLoad(gen, gen.operand(object()), this)); + Value address = location().generateAddress(gen, gen.operand(object())); + gen.setResult(this, gen.emitLoad(location().getValueKind(), address, this)); } @Override diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -91,17 +91,7 @@ @Override public Value generateAddress(LIRGeneratorTool gen, Value base) { - return gen.emitLea(base, displacement, gen.operand(index()), indexScaling()); - } - - @Override - public Value generateLoad(LIRGeneratorTool gen, Value base, DeoptimizingNode deopting) { - return gen.emitLoad(getValueKind(), base, displacement, gen.operand(index()), indexScaling(), deopting); - } - - @Override - public void generateStore(LIRGeneratorTool gen, Value base, Value value, DeoptimizingNode deopting) { - gen.emitStore(getValueKind(), base, displacement, gen.operand(index()), indexScaling(), value, deopting); + return gen.emitAddress(base, displacement, gen.operand(index()), indexScaling()); } @NodeIntrinsic diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -24,7 +24,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.Node.ValueNumberable; -import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; @@ -100,8 +99,4 @@ } public abstract Value generateAddress(LIRGeneratorTool gen, Value base); - - public abstract Value generateLoad(LIRGeneratorTool gen, Value base, DeoptimizingNode deopting); - - public abstract void generateStore(LIRGeneratorTool gen, Value base, Value value, DeoptimizingNode deopting); } diff -r a5f2b9012865 -r 9ee5f3bfa755 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 Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -57,7 +57,8 @@ @Override public void generate(LIRGeneratorTool gen) { - gen.setResult(this, location().generateLoad(gen, gen.operand(object()), this)); + Value address = location().generateAddress(gen, gen.operand(object())); + gen.setResult(this, gen.emitLoad(location().getValueKind(), address, this)); } @Override diff -r a5f2b9012865 -r 9ee5f3bfa755 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 Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -22,10 +22,11 @@ */ package com.oracle.graal.nodes.extended; +import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -import com.oracle.graal.graph.*; /** * Writes a given {@linkplain #value() value} a {@linkplain AccessNode memory location}. @@ -84,7 +85,8 @@ @Override public void generate(LIRGeneratorTool gen) { - location().generateStore(gen, gen.operand(object()), gen.operand(value()), this); + Value address = location().generateAddress(gen, gen.operand(object())); + gen.emitStore(location().getValueKind(), address, gen.operand(value()), this); } @NodeIntrinsic diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/LIRGeneratorTool.java Thu Apr 25 17:18:17 2013 +0200 @@ -57,13 +57,13 @@ void emitMove(AllocatableValue dst, Value src); - Value emitLoad(Kind kind, Value base, long displacement, Value index, int scale, DeoptimizingNode deopting); + Value emitAddress(Value base, long displacement, Value index, int scale); - void emitStore(Kind kind, Value base, long displacement, Value index, int scale, Value input, DeoptimizingNode deopting); + Value emitAddress(StackSlot slot); - Value emitLea(Value base, long displacement, Value index, int scale); + Value emitLoad(Kind kind, Value address, DeoptimizingNode deopting); - Value emitLea(StackSlot slot); + void emitStore(Kind kind, Value address, Value input, DeoptimizingNode deopting); Value emitNegate(Value input); diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -47,7 +47,7 @@ @Override public void generate(LIRGeneratorTool gen) { - gen.setResult(this, gen.emitLoad(readKind, gen.operand(address), 0, Value.ILLEGAL, 0, null)); + gen.setResult(this, gen.emitLoad(readKind, gen.operand(address), null)); } @SuppressWarnings("unchecked") diff -r a5f2b9012865 -r 9ee5f3bfa755 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Thu Apr 25 16:15:10 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Thu Apr 25 17:18:17 2013 +0200 @@ -50,7 +50,7 @@ @Override public void generate(LIRGeneratorTool gen) { Value v = gen.operand(value); - gen.emitStore(kind, gen.operand(address), 0, Value.ILLEGAL, 0, v, null); + gen.emitStore(kind, gen.operand(address), v, null); } /*