Mercurial > hg > graal-jvmci-8
changeset 7219:69b3b2695fea
added Unsafe.*Ordered* intrinsics
fixed an issue that certain intrinsics were not inlined
author | Christian Haeubl <haeubl@ssw.jku.at> |
---|---|
date | Thu, 06 Dec 2012 13:53:36 +0100 |
parents | df6a4adb2ab5 |
children | fcae6d960acd |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/UnsafeSnippets.java src/share/vm/graal/graalCompiler.hpp |
diffstat | 2 files changed, 19 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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; }