[讨论] [HotSpot VM] 关于向HotSpot VM添加固化方法的问题
l857527302
2014-12-10
最近由于工作需要,需要做出一个尝试,通过LuaJava项目把执行Lua脚本的功能添加到OpenJDK中,以提升Java执行Lua脚本的性能。
其中需要把pushString()与toString()这两个使用频繁的方法固化到HotSpot VM中。 JRT_LEAF(void, SharedRuntime::lua_pushstring_1(long l,typeArrayOop byte_arr,int byte_len)) lua_State * L; L = (lua_State*)l; const char * ch_t = (char *)byte_arr->byte_base(); lua_pushlstring(L,ch_t,byte_len); JRT_END char * lua_tostring_1(long l, int idx){ lua_State * L = (lua_State*)l; const char * pat = lua_tostring(L,idx); return (char *)pat; } 以上两个方法是我在library_call.cpp中会通过make_runtime_call来调用的函数,编译完测试后pushstring可以达到效果,但是tostring却不能正确返回。通过和R大的沟通,R大指出我这两个方法其实都是有问题的,但我有找不到问题所在,故恳请大家的帮助。 其实JVM这块是刚刚深入研究一点,但由于没有C、C++的基础,还是为了看JVM才刚学的,水平菜到不行,HotSpot的代码也是看得麻爪。 能不能有人告诉我,我这么做是否可行,可行的话应该怎么做,至少能有个参考的也行。 |
相关讨论
相关资源推荐
- 关于Java&JavaScript中(伪)Stream式API对比的一些笔记
- java Stack(虚拟机栈)
- JVM_03 运行时数据区1-[程序寄存器+虚拟机栈+本地方法栈]
- JVM_03.程序计数器+虚拟机栈+本地方法栈详解
- 运行数据区 ① --- 程序计数器+虚拟机栈+本地方法栈
- 《Hadoop Operations》读书笔记 - 3 - 第四章 规划集群
- JVM之运行时数据区(PC寄存器、虚拟机栈、本地方法栈)
- JVM-03 运行时数据区- [程序计数器+虚拟机栈+本地方法栈]
- jvm-02运行时输据区(程序计数器&虚拟机栈&本地方法栈)
- (三)JVM成神路之全面详解执行引擎子系统与JIT即时编译原理