Mercurial > hg > graal-compiler
diff src/share/vm/graal/graalCompilerToVM.cpp @ 15052:5e6f29f287d6
added InstanceKlass::_graal_node_class field to accelerate Node.getNodeClass()
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 10 Apr 2014 00:01:30 +0200 |
parents | aa1a43bfdf4e |
children | d4a9d6f6e57d |
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp Wed Apr 09 23:48:22 2014 +0200 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Thu Apr 10 00:01:30 2014 +0200 @@ -727,11 +727,21 @@ HotSpotInstalledCode::set_codeBlob(hotspotInstalledCode, 0); C2V_END +C2V_VMENTRY(jobject, getJavaMirror, (JNIEnv *env, jobject, jlong metaspace_klass)) + Klass* klass = asKlass(metaspace_klass); + return JNIHandles::make_local(klass->java_mirror()); +C2V_END -C2V_VMENTRY(jobject, readUnsafeUncompressedPointer, (JNIEnv *env, jobject, jobject o, jlong offset)) - oop resolved_o = JNIHandles::resolve(o); - address addr = ((address)resolved_o) + offset; - return JNIHandles::make_local(*((oop*)addr)); +C2V_VMENTRY(jobject, getNodeClass, (JNIEnv *env, jobject, jobject java_class_handle)) + oop java_class = JNIHandles::resolve(java_class_handle); + InstanceKlass* iklass = (InstanceKlass*) java_lang_Class::as_Klass(java_class); + return JNIHandles::make_local(iklass->graal_node_class()); +C2V_END + +C2V_VMENTRY(void, setNodeClass, (JNIEnv *env, jobject, jobject java_class_handle, jobject value)) + oop java_class = JNIHandles::resolve(java_class_handle); + InstanceKlass* iklass = (InstanceKlass*) java_lang_Class::as_Klass(java_class); + iklass->set_graal_node_class(JNIHandles::resolve(value)); C2V_END C2V_VMENTRY(jlong, readUnsafeKlassPointer, (JNIEnv *env, jobject, jobject o)) @@ -787,6 +797,7 @@ #define HS_COMPILED_CODE "Lcom/oracle/graal/hotspot/HotSpotCompiledCode;" #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;" +#define NODE_CLASS "Lcom/oracle/graal/graph/NodeClass;" #define METASPACE_KLASS "J" #define METASPACE_METHOD "J" #define METASPACE_METHOD_DATA "J" @@ -835,7 +846,9 @@ {CC"getLocalVariableTableLength", CC"("METASPACE_METHOD")I", FN_PTR(getLocalVariableTableLength)}, {CC"reprofile", CC"("METASPACE_METHOD")V", FN_PTR(reprofile)}, {CC"invalidateInstalledCode", CC"("HS_INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)}, - {CC"readUnsafeUncompressedPointer", CC"("OBJECT"J)"OBJECT, FN_PTR(readUnsafeUncompressedPointer)}, + {CC"getJavaMirror", CC"("METASPACE_KLASS")"CLASS, FN_PTR(getJavaMirror)}, + {CC"getNodeClass", CC"("CLASS")"NODE_CLASS, FN_PTR(getNodeClass)}, + {CC"setNodeClass", CC"("CLASS NODE_CLASS")V", FN_PTR(setNodeClass)}, {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)}, {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, {CC"getGPUs", CC"()"STRING, FN_PTR(getGPUs)},