Mercurial > hg > truffle
diff src/share/vm/graal/graalCompilerToVM.cpp @ 13306:dfb780080923
moved most CompilerToVM.getLocalVariableTable to Java
author | twisti |
---|---|
date | Thu, 12 Dec 2013 14:56:52 -0800 |
parents | a63d65b682a8 |
children | 5a4293f24642 |
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp Wed Dec 11 20:42:50 2013 -0800 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Thu Dec 12 14:56:52 2013 -0800 @@ -784,38 +784,20 @@ return result; C2V_END -C2V_VMENTRY(jobject, getLocalVariableTable, (JNIEnv *, jobject, jobject hotspot_method)) +C2V_VMENTRY(jlong, getLocalVariableTableStart, (JNIEnv *, jobject, jobject hotspot_method)) ResourceMark rm; - Method* method = getMethodFromHotSpotMethod(JNIHandles::resolve(hotspot_method)); if (!method->has_localvariable_table()) { - return NULL; + return 0; } - int localvariable_table_length = method->localvariable_table_length(); - - objArrayHandle local_array = oopFactory::new_objArray(SystemDictionary::LocalImpl_klass(), localvariable_table_length, CHECK_NULL); - LocalVariableTableElement* table = method->localvariable_table_start(); - for (int i = 0; i < localvariable_table_length; i++) { - u2 start_bci = table[i].start_bci; - u4 end_bci = (u4)(start_bci + table[i].length); - u2 nameCPIdx = table[i].name_cp_index; - u2 typeCPIdx = table[i].descriptor_cp_index; - u2 slot = table[i].slot; - - char* name = method->constants()->symbol_at(nameCPIdx)->as_C_string(); - Handle nameHandle = java_lang_String::create_from_str(name, CHECK_NULL); - - char* typeInfo = method->constants()->symbol_at(typeCPIdx)->as_C_string(); - Handle typeHandle = java_lang_String::create_from_str(typeInfo, CHECK_NULL); - - Handle holderHandle = GraalCompiler::createHotSpotResolvedObjectType(method, CHECK_0); - Handle local = VMToCompiler::createLocal(nameHandle, typeHandle, (int) start_bci, (int) end_bci, (int) slot, holderHandle, Thread::current()); - local_array->obj_at_put(i, local()); - } - - return JNIHandles::make_local(local_array()); + return (jlong) (address) method->localvariable_table_start(); C2V_END +C2V_VMENTRY(jint, getLocalVariableTableLength, (JNIEnv *, jobject, jobject hotspot_method)) + ResourceMark rm; + Method* method = getMethodFromHotSpotMethod(JNIHandles::resolve(hotspot_method)); + return method->localvariable_table_length(); +C2V_END C2V_VMENTRY(void, reprofile, (JNIEnv *env, jobject, jlong metaspace_method)) Method* method = asMethod(metaspace_method); @@ -882,7 +864,6 @@ #define CONSTANT_POOL "Lcom/oracle/graal/api/meta/ConstantPool;" #define CONSTANT "Lcom/oracle/graal/api/meta/Constant;" #define KIND "Lcom/oracle/graal/api/meta/Kind;" -#define LOCAL "Lcom/oracle/graal/api/meta/Local;" #define RUNTIME_CALL "Lcom/oracle/graal/api/code/RuntimeCall;" #define REFLECT_METHOD "Ljava/lang/reflect/Method;" #define REFLECT_CONSTRUCTOR "Ljava/lang/reflect/Constructor;" @@ -932,7 +913,8 @@ {CC"executeCompiledMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)}, {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)}, - {CC"getLocalVariableTable", CC"("HS_RESOLVED_METHOD")["LOCAL, FN_PTR(getLocalVariableTable)}, + {CC"getLocalVariableTableStart", CC"("HS_RESOLVED_METHOD")J", FN_PTR(getLocalVariableTableStart)}, + {CC"getLocalVariableTableLength", CC"("HS_RESOLVED_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)},