summaryrefslogtreecommitdiffstats
path: root/vm/mterp/README.txt
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-masterBrian Carlstrom2011-05-051-16/+53
|\ | | | | | | Change-Id: I99c4289bd34f63b0b970b6ed0fa992b44e805393
| * Refine & simplify the interBreak mechanismbuzbee2011-04-251-15/+52
|/ | | | | | | | | | | | Replace dvmUpdateInterpBreak() and friends with more direct enable/disable subMode calls. Hide breakFlags manipulation from higher-level callers and infer what is needed from the active subMode. Add documentation to the interpreter control section of mterp/README.txt Change-Id: If7ebee5d8e4db8154c4caed72cf89ec088045998
* Interpreter restructuringbuzbee2011-03-231-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a restructuring of the Dalvik ARM and x86 interpreters: o Combine the old portstd and portdbg interpreters into a single portable interpreter. o Add debug/profiling support to the fast (mterp) interpreters. o Delete old mechansim of switching between interpreters. Now, once you choose an interpreter at startup, you stick with it. o Allow JIT to co-exist with profiling & debugging (necessary for first-class support of debugging with the JIT active). o Adds single-step capability to the fast assembly interpreters without slowing them down (and, in fact, measurably improves their performance). o Remove old "polling for safe point" mechanism. Breakouts now achieved via modifying base of interpreter handler table. o Simplify interpeter control mechanism. o Allow thread-granularity control for profiling & debugging The primary motivation behind this change was to improve the responsiveness of debugging and profiling and to make it easier to add new debugging and profiling capabilities in the future. Instead of always bailing out to the slow debug portable interpreter, we can now stay in the fast interpreter. A nice side effect of the change is that the fast interpreters got a healthy speed boost because we were able to replace the polling safepoint check that involved a dozen or so instructions with a single table-base reload. When combined with the two earlier CLs related to this restructuring, we show a 5.6% performance improvement using libdvm_interp.so on the Checkers benchmark relative to Honeycomb. Change-Id: I8d37e866b3618def4e582fc73f1cf69ffe428f3c
* mterp generation cleanupbuzbee2011-03-021-34/+38
| | | | | | | | | | | | | | | | | | | | | Change I3a22048a introduced a new interpreter breakout mechanism, and with it a bit of hackish ugliness in the mechanism to automatically generate interpreter source files. This CL applies some Lipo and Botox: o New alt-op-start, alt-op-end commands removed - will just use existing op-start & op-end. o New command "handler-style" to explicitly declare interpreter style (computed-goto, jump-table or all-c). Previous trigger on "handler-size==0" removed. o Alternate handler stub no longer using fixed file name, but intead is named by command asm-alt-stub (which is modelled on existing alt-stub command). o Previous CL stated requirement for explicitly called-out handler for the Dalvik dispatch opcode. Turns out this was not necessary. Requirement removed. Change-Id: I20f7411820715476533c2073d28f357e28c1ae52
* New interpreter breakout mechanismbuzbee2011-02-281-11/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce parallel handler entry points for mterp interpreters as a step towards fully supporting debug, profile and JIT within mterp (instead of bailing out to the portable debug interpreter). This CL contains most of the structural changes that need to happen, but does not yet enable the new switch mode. In short, within the mterp assembly interpreter register rIBASE points to an array of handlers for Dalvik opcodes. Instead of periodically checking for suspend, debug, profiling and JIT trace selection breakouts, rIBASE may simply be altered to point to the parallel breakout handlers when control needs to be rerouted. This will enable us to eliminate the separate portable debug interpreter and the entire mechanism of switching between the fast and portable interpreters. The x86 implementation required a large number of changes because of the need to dedicate a register to holding the table base. It will now use %edx (which was previously scratch). Changes include: o Support for two styles of mterp assembly code generation: computed goto and jump table (ARM uses computed goto, x86 uses jump table) o New mterp config operators to trigger generation of alternate entry points. o Alternate entries route execution through new dvmCheckInst(). That's where the checking code will go. o For x86, reserved register edx as dedicated rIBASE. o For jump-table mterps, ignore "%break" operator and allow variable-sized handlers with no "sister" region. Note that the x86-atom implementation will need substantial changes to function in this new model. Change-Id: I3a22048adb7dcfdeba4f94fbb977b26c3ab2fcb3
* Another clarifying rename and a bit more automation.Dan Bornstein2010-12-031-2/+2
| | | | | | | | kNumDalvikInstructions is now kNumPackedOpcodes, there is a new kMaxOpcodeValue, and both are generated by opcode-gen. Change-Id: Ic46f1f52d2d21382452c8e777024f4a985ad31d3 Bonus: Reworded the switch and array data comment for clarity.
* Say kNumDalvikInstructions when appropriate.Dan Bornstein2010-11-191-5/+6
| | | | | | | In particular, use it instead of just saying 256, and similarly for 255. The number of opcodes will be changing soon. Change-Id: Icc77120c2673968dddd6b4003f717245d46e4159
* Remove repeated newlines at the end of files.Carl Shapiro2010-06-081-1/+0
| | | | Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-0/+216
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-216/+0
|
* auto import from //branches/cupcake/...@125939The Android Open Source Project2009-01-091-1/+1
|
* Code drop from //branches/cupcake/...@124589The Android Open Source Project2008-12-171-14/+42
|
* Initial ContributionThe Android Open Source Project2008-10-211-0/+188