Mercurial > hg > graal-jvmci-8
diff jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java @ 23703:9ac04c6047c8
sync with jdk9 changes for JDK-8159613
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 21 Jun 2016 09:48:02 +0200 |
parents | 9e1235406b59 |
children | 8b40dfc73eea |
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Sun Jun 19 16:08:40 2016 +0200 +++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Tue Jun 21 09:48:02 2016 +0200 @@ -22,6 +22,10 @@ */ package jdk.vm.ci.hotspot; +import static jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE; + +import sun.misc.Unsafe; + /** * Used to access native configuration details. */ @@ -224,6 +228,21 @@ final int vmSymbolsFirstSID = getConstant("vmSymbols::FIRST_SID", Integer.class); final int vmSymbolsSIDLimit = getConstant("vmSymbols::SID_LIMIT", Integer.class); + /** + * Returns the symbol in the {@code vmSymbols} table at position {@code index} as a + * {@link String}. + * + * @param index position in the symbol table + * @return the symbol at position id + */ + String symbolAt(int index) { + HotSpotJVMCIRuntime runtime = HotSpotJVMCIRuntime.runtime(); + assert vmSymbolsFirstSID <= index && index < vmSymbolsSIDLimit : "index " + index + " is out of bounds"; + assert symbolPointerSize == Unsafe.ADDRESS_SIZE : "the following address read is broken"; + int offset = index * symbolPointerSize; + return runtime.getCompilerToVM().getSymbol(UNSAFE.getAddress(vmSymbolsSymbols + offset)); + } + final int klassHasFinalizerFlag = getConstant("JVM_ACC_HAS_FINALIZER", Integer.class); // Modifier.SYNTHETIC is not so we get it via vmStructs.