Skip to main content

what is the difference among the three bytecode interpreters of phoneME?

1 reply [Last post]

there are three interpreters in phoneME:executejava_standard.c, executejava_align.c, executejava_split.c. I don't find difference among these three interpreters, although i don't think they are the same thing. who can tell me the difference among these interpreters. thank you~~

Message was edited by: runwithwind

Message was edited by: runwithwind

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Joined: 2006-10-16

_align and _split are experimental. They haven't been maintained in years, and I wouldn't be surprised if they don't even build.

The _align loop uses gcc tricks, plus shrinking the implementation of bigger opcodes, to force them all to be 32-bytes or less, and all to be 32-byte aligned. This allows for a faster dispatch. It also keeps the main loop smaller, allowing for better icache behaviour.

The split loop moved less commonly executed opcodes to a 2nd interpreter loop. The idea being that most time would then be spent in a very small interpreter loop executing the common opcodes. This was done to be more icache friendly.