Mercurial > hg > truffle
diff src/share/vm/graal/graalCompilerToVM.cpp @ 18719:6484e5c068c7
Generalize object reading in HotSpotMemoryAccessProvider.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 18 Dec 2014 15:31:12 +0100 |
parents | a8cff27ca2e1 |
children | 8f2fb6bec986 |
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp Thu Dec 18 15:23:08 2014 +0100 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Thu Dec 18 15:31:12 2014 +0100 @@ -699,6 +699,17 @@ return klass; C2V_END +C2V_VMENTRY(jobject, readUnsafeOop, (JNIEnv*, jobject, jobject base, jlong displacement, jboolean compressed)) + address addr = (address)JNIHandles::resolve(base); + oop ret; + if (compressed) { + ret = oopDesc::load_decode_heap_oop((narrowOop*)(addr + displacement)); + } else { + ret = oopDesc::load_decode_heap_oop((oop*)(addr + displacement)); + } + return JNIHandles::make_local(ret); +C2V_END + C2V_VMENTRY(jlongArray, collectCounters, (JNIEnv*, jobject)) typeArrayOop arrayOop = oopFactory::new_longArray(GraalCounterSize, CHECK_NULL); JavaThread::collect_counters(arrayOop); @@ -1078,6 +1089,7 @@ {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)}, {CC"getJavaMirror", CC"("METASPACE_KLASS")"CLASS, FN_PTR(getJavaMirror)}, {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)}, + {CC"readUnsafeOop", CC"("OBJECT"JZ)"OBJECT, FN_PTR(readUnsafeOop)}, {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, {CC"getGPUs", CC"()"STRING, FN_PTR(getGPUs)}, {CC"allocateCompileId", CC"("METASPACE_METHOD"I)I", FN_PTR(allocateCompileId)},