Mercurial > hg > truffle
diff graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java @ 14943:e5a55d280f24
Floating nodes for compressing and uncompressing pointers.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 01 Apr 2014 15:59:32 +0200 |
parents | 88dfaf6448e0 |
children | b14cb2d9253d |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Tue Apr 01 15:50:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Tue Apr 01 15:59:32 2014 +0200 @@ -40,6 +40,7 @@ import com.oracle.graal.hotspot.amd64.AMD64HotSpotMove.StoreCompressedConstantOp; import com.oracle.graal.hotspot.amd64.AMD64HotSpotMove.StoreCompressedPointer; import com.oracle.graal.hotspot.meta.*; +import com.oracle.graal.hotspot.nodes.type.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.StandardOp.NoOp; @@ -419,4 +420,18 @@ } } + @Override + public Value emitCompress(Value pointer, CompressEncoding encoding) { + Variable result = newVariable(NarrowOopStamp.NarrowOop); + append(new AMD64HotSpotMove.CompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding)); + return result; + } + + @Override + public Value emitUncompress(Value pointer, CompressEncoding encoding) { + Variable result = newVariable(Kind.Object); + append(new AMD64HotSpotMove.UncompressPointer(result, asAllocatable(pointer), getProviders().getRegisters().getHeapBaseRegister().asValue(), encoding)); + return result; + } + }