dalvikVM 掘削

dalvik/vm/interp/Interp.c の dvmInterpret 手続き。コメントと手続き定義の先頭部分が以下。

/*
 * Main interpreter loop entry point.  Select "standard" or "debug"
 * interpreter and switch between them as required.
 *
 * This begins executing code at the start of "method".  On exit, "pResult"
 * holds the return value of the method (or, if "method" returns NULL, it
 * holds an undefined value).
 *
 * The interpreted stack frame, which holds the method arguments, has
 * already been set up.
 */
void dvmInterpret(Thread* self, const Method* method, JValue* pResult)

基本的には

  • dvmMterpStd 手続き
  • dvmInterpretStd 手続き

のどちらかが呼び出されるらしいんですが、以前のエントリによれば dvmInterpretStd というシンボルが解決できなかった模様。

dvmMterpStd 手続き

dalvik/vm/mterp/Mterp.c で定義されててここから呼んでる

    changeInterp = dvmMterpStdRun(glue);

アセンブラなのか。
命令がどう評価されてるのか、もなんですが、どんな命令があるのか、ってのも確認したかったのかどうか。

GOTO_NEXT なマクロが見つけれない、と思ってたら以下のエントリで見つけている模様。

場所がどこか、とかな情報が無いな。
と思ったら継続して色々している記録を発見。

別途確認の方向。これから出社。