# HG changeset patch # User Christian Haeubl # Date 1354798416 -3600 # Node ID 69b3b2695feac7c9c77f65ca50566f5254ff3c20 # Parent df6a4adb2ab5cab72bf3981dd1b3d244b2751f5c added Unsafe.*Ordered* intrinsics fixed an issue that certain intrinsics were not inlined diff -r df6a4adb2ab5 -r 69b3b2695fea graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/UnsafeSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/UnsafeSnippets.java Tue Dec 04 14:58:05 2012 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/UnsafeSnippets.java Thu Dec 06 13:53:36 2012 +0100 @@ -68,6 +68,12 @@ MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); } + public void putOrderedObject(Object o, long offset, Object x) { + MembarNode.memoryBarrier(MemoryBarriers.JMM_PRE_VOLATILE_WRITE); + putObject(o, offset, x); + MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); + } + public int getInt(Object o, long offset) { Integer value = UnsafeLoadNode.load(o, 0, offset, Kind.Int); return value; @@ -90,6 +96,12 @@ MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); } + public void putOrderedInt(Object o, long offset, int x) { + MembarNode.memoryBarrier(MemoryBarriers.JMM_PRE_VOLATILE_WRITE); + putInt(o, offset, x); + MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); + } + public boolean getBoolean(Object o, long offset) { @JavacBug(id = 6995200) Boolean result = UnsafeLoadNode.load(o, 0, offset, Kind.Boolean); @@ -205,6 +217,12 @@ MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); } + public void putOrderedLong(Object o, long offset, long x) { + MembarNode.memoryBarrier(MemoryBarriers.JMM_PRE_VOLATILE_WRITE); + putLong(o, offset, x); + MembarNode.memoryBarrier(MemoryBarriers.JMM_POST_VOLATILE_WRITE); + } + public float getFloat(Object o, long offset) { @JavacBug(id = 6995200) Float result = UnsafeLoadNode.load(o, 0, offset, Kind.Float); diff -r df6a4adb2ab5 -r 69b3b2695fea src/share/vm/graal/graalCompiler.hpp --- a/src/share/vm/graal/graalCompiler.hpp Tue Dec 04 14:58:05 2012 +0100 +++ b/src/share/vm/graal/graalCompiler.hpp Thu Dec 06 13:53:36 2012 +0100 @@ -48,7 +48,7 @@ virtual const char* name() { return "G"; } - virtual bool supports_native() { return false; } + virtual bool supports_native() { return true; } virtual bool supports_osr () { return true; } bool is_graal() { return true; }