[讨论] [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的代码也是看得麻爪。
能不能有人告诉我,我这么做是否可行,可行的话应该怎么做,至少能有个参考的也行。
Global site tag (gtag.js) - Google Analytics