Mercurial > hg > graal-compiler
changeset 22592:357e73d0091c
moved cstring utilities into UnsafeUtil and made them require the caller to have the Unsafe capability
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 07 Sep 2015 22:26:14 +0200 |
parents | c8faebfb7aed |
children | a107ab4c3011 |
files | graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterface.java graal/com.oracle.nfi.test/test/com/oracle/nfi/test/NativeFunctionInterfaceTest.java mx.graal/suite.py |
diffstat | 3 files changed, 58 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterface.java Mon Sep 07 16:03:02 2015 +0200 +++ b/graal/com.oracle.graal.truffle.hotspot/src/com/oracle/graal/truffle/hotspot/nfi/HotSpotNativeFunctionInterface.java Mon Sep 07 22:26:14 2015 +0200 @@ -22,27 +22,34 @@ */ package com.oracle.graal.truffle.hotspot.nfi; -import jdk.internal.jvmci.code.*; -import jdk.internal.jvmci.code.CallingConvention.*; - -import com.oracle.graal.debug.*; -import com.oracle.graal.debug.Debug.*; +import static com.oracle.graal.truffle.hotspot.nfi.NativeCallStubGraphBuilder.getGraph; +import static jdk.internal.jvmci.code.CodeUtil.getCallingConvention; +import static jdk.internal.jvmci.common.UnsafeAccess.unsafe; +import static jdk.internal.jvmci.common.UnsafeUtil.createCString; +import static jdk.internal.jvmci.common.UnsafeUtil.writeCString; +import jdk.internal.jvmci.code.CallingConvention; +import jdk.internal.jvmci.code.CallingConvention.Type; +import jdk.internal.jvmci.code.CompilationResult; +import jdk.internal.jvmci.code.InstalledCode; +import jdk.internal.jvmci.hotspot.HotSpotVMConfig; +import jdk.internal.jvmci.meta.DefaultProfilingInfo; +import jdk.internal.jvmci.meta.TriState; -import jdk.internal.jvmci.hotspot.*; -import jdk.internal.jvmci.meta.*; -import static com.oracle.graal.truffle.hotspot.nfi.NativeCallStubGraphBuilder.*; -import static jdk.internal.jvmci.code.CodeUtil.*; -import static jdk.internal.jvmci.common.UnsafeAccess.*; - -import com.oracle.graal.compiler.*; -import com.oracle.graal.compiler.target.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.lir.asm.*; -import com.oracle.graal.lir.phases.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.phases.*; -import com.oracle.graal.phases.tiers.*; -import com.oracle.nfi.api.*; +import com.oracle.graal.compiler.GraalCompiler; +import com.oracle.graal.compiler.target.Backend; +import com.oracle.graal.debug.Debug; +import com.oracle.graal.debug.Debug.Scope; +import com.oracle.graal.hotspot.meta.HotSpotProviders; +import com.oracle.graal.lir.asm.CompilationResultBuilderFactory; +import com.oracle.graal.lir.phases.LIRSuites; +import com.oracle.graal.nodes.StructuredGraph; +import com.oracle.graal.phases.OptimisticOptimizations; +import com.oracle.graal.phases.PhaseSuite; +import com.oracle.graal.phases.tiers.HighTierContext; +import com.oracle.graal.phases.tiers.Suites; +import com.oracle.nfi.api.NativeFunctionInterface; +import com.oracle.nfi.api.NativeFunctionPointer; +import com.oracle.nfi.api.NativeLibraryHandle; public class HotSpotNativeFunctionInterface implements NativeFunctionInterface { @@ -77,7 +84,7 @@ // file name simplifies deallocation below. long buffer = unsafe.allocateMemory(ebufLen + libPath.length() + 1); long ebuf = buffer; - long libPathCString = writeCString(libPath, buffer + ebufLen); + long libPathCString = writeCString(unsafe, libPath, buffer + ebufLen); try { long handle = (long) libraryLookupFunctionHandle.call(libPathCString, ebuf, ebufLen); if (handle == 0) { @@ -124,7 +131,8 @@ if (dllLookupFunctionHandle == null) { dllLookupFunctionHandle = createHandle(functionLookupFunctionPointer, long.class, long.class, long.class); } - long nameCString = createCString(name); + + long nameCString = createCString(unsafe, name); try { long functionPointer = (long) dllLookupFunctionHandle.call(((HotSpotNativeLibraryHandle) library).value, nameCString); if (functionPointer == 0L) {
--- a/graal/com.oracle.nfi.test/test/com/oracle/nfi/test/NativeFunctionInterfaceTest.java Mon Sep 07 16:03:02 2015 +0200 +++ b/graal/com.oracle.nfi.test/test/com/oracle/nfi/test/NativeFunctionInterfaceTest.java Mon Sep 07 22:26:14 2015 +0200 @@ -22,19 +22,32 @@ */ package com.oracle.nfi.test; -import static java.io.File.*; -import static java.lang.System.*; -import static jdk.internal.jvmci.common.UnsafeAccess.*; -import static org.junit.Assert.*; -import static org.junit.Assume.*; +import static java.io.File.separatorChar; +import static java.lang.System.getProperty; +import static java.lang.System.mapLibraryName; +import static jdk.internal.jvmci.common.UnsafeAccess.unsafe; +import static jdk.internal.jvmci.common.UnsafeUtil.writeCString; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.junit.Assume.assumeTrue; -import java.io.*; -import java.util.*; +import java.io.File; +import java.util.ArrayList; +import java.util.List; -import org.junit.*; +import org.junit.After; +import org.junit.Assert; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; -import com.oracle.nfi.*; -import com.oracle.nfi.api.*; +import com.oracle.nfi.NativeFunctionInterfaceRuntime; +import com.oracle.nfi.api.NativeFunctionHandle; +import com.oracle.nfi.api.NativeFunctionInterface; +import com.oracle.nfi.api.NativeFunctionPointer; +import com.oracle.nfi.api.NativeLibraryHandle; public class NativeFunctionInterfaceTest { @@ -82,7 +95,7 @@ String string = "GRAAL"; int bufferLength = string.length() + 1; long cString = (long) malloc.call(bufferLength); - writeCString(string, cString); + writeCString(unsafe, string, cString); long cStringCopy = malloc(bufferLength); int result = (int) snprintf.call(cStringCopy, bufferLength, cString); @@ -97,7 +110,7 @@ public void test2() { assumeTrue(nfi.isDefaultLibrarySearchSupported()); String formatString = "AB %f%f"; - long formatCString = writeCString("AB %f%f", malloc(formatString.length() + 1)); + long formatCString = writeCString(unsafe, "AB %f%f", malloc(formatString.length() + 1)); String referenceString = "AB 1.0000001.000000"; int bufferLength = referenceString.length() + 1; @@ -114,7 +127,7 @@ public void test3() { assumeTrue(nfi.isDefaultLibrarySearchSupported()); String format = "%i%i%i%i%i%i%i%i%i%i%i%i"; - long formatCString = writeCString(format, malloc(format.length() + 1)); + long formatCString = writeCString(unsafe, format, malloc(format.length() + 1)); String referenceString = "01234567891011"; int bufferLength = referenceString.length() + 1; @@ -225,7 +238,7 @@ public void test8() { assumeTrue(nfi.isDefaultLibrarySearchSupported()); String formatString = "AB %f%f"; - long formatCString = writeCString("AB %f%f", malloc(formatString.length() + 1)); + long formatCString = writeCString(unsafe, "AB %f%f", malloc(formatString.length() + 1)); String expected = "AB 1.0000001.000000"; int bufferLength = expected.length() + 1;
--- a/mx.graal/suite.py Mon Sep 07 16:03:02 2015 +0200 +++ b/mx.graal/suite.py Mon Sep 07 22:26:14 2015 +0200 @@ -6,7 +6,7 @@ "suites": [ { "name" : "jvmci", - "version" : "23db6926b163fbf0495d2cb0559326a123020ea2", + "version" : "cbab86a6c7f6a78bd4e0e878ab609fd183644c4b", "urls" : [ {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/graal-jvmci-8", "kind" : "hg"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},