JNI 函数表 - 函数Dalvik源码中的实现
我正在尝试找到 Dalvik 解释器循环的入口点。
我已经阅读了 Android (2.1 froyo) 启动代码,直到调用“env->CallStaticVoidMethod()”。这意味着“在 Dalvik 中开始运行 JAVA static void 方法”。就我而言,指定的方法是 ZygoteInit 的 main 方法。
但是,我在代码中的任何地方都找不到此入口方法(“CallStaticVoidMethod”)的 c/cpp 实现 - 只有引用和声明。
这同样适用于所有其他解释器入口点 - CallObjectMethod、CallBooleanMethod 等。
在源代码的 dalvik/vm/Jni.c 文件中,有一个全局变量 gNativeInterface,它保存指向所有这些函数的指针。它是用我找不到定义的符号初始化的(我怀疑这是因为使用了一些宏来定义它们)。
首先感谢所有回复者。
I'm trying to find the entry point to Dalvik's interperter loop.
I've read the Android (2.1 froyo) boot-up code up to the point where "env->CallStaticVoidMethod()" is called. This means "start running a JAVA static void method in Dalvik". In my case the specified method is the ZygoteInit's main method.
However, I cannot find the c/cpp implementation of this entry method ("CallStaticVoidMethod") anywhere in the code - only references and declerations.
The same goes to all of the other interpreter entry points - CallObjectMethod, CallBooleanMethod, etc...
In the file dalvik/vm/Jni.c of the source code, there is a global variable gNativeInterface which holds pointers to all of these functions. It is initialized with symbols that I cannot find the definitions of (I suspect this is because some Macro was used to define them).
Thanks up front to all repliers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CallStaticVoidMethod() 是通过 dalvik/vm/Jni.c
(头文件首先将 CallStaticVoidMethod 映射到 CallStaticVoideMethodV)
dvmCallMethodV 在 davlik/vm/interp/Stack.c
CallStaticVoidMethod() is implemented via a macro in dalvik/vm/Jni.c
(a header file first maps CallStaticVoidMethod to CallStaticVoideMethodV)
dvmCallMethodV is implemented in davlik/vm/interp/Stack.c