6efd446399ba7a9bb68bf8ddb5a458072a1381b0 |
|
23-Apr-2010 |
Andy McFadden <fadden@android.com> |
Fix a deadlock in the breakpoint code. In froyo we started using "hard" breakpoints, where we replace the existing opcodes with breakpoint instructions. This requires some coordination to avoid confusing the verifier. The previous approach allowed the breakpoints to be inserted, and "undid" them while the verifier ran; this worked, but caused us to be holding a lock for an extended period. The new approach just avoids altering the bytecode of unverified classes, and then "flushes" the breakpoint set out between the time when verification completes and class initialization starts. This removes the possibility of blocking with the lock held, and makes everything much simpler. For bug 2615063. (cherry-pick from dalvik-dev) Change-Id: I75f19b0cc71fc0babb50ab299c6c5a865e06c919
|
96516932f1557d8f48a8b2dbbb885af01a11ef6e |
|
29-Oct-2009 |
Andy McFadden <fadden@android.com> |
Change the way breakpoints work. This replaces the breakpoint mechanism with a more efficient approach. We now insert breakpoint instructions into the bytecode stream instead of maintaining a table. This requires mapping DEX files as private instead of shared, which allows copy-on-write to work. mprotect() is used to guard the pages against inadvertent writes. Unused opcode EC is now OP_BREAKPOINT. It's not recognized by dexdump or any interpreter except portdbg, but it can be encountered by the bytecode verifier (the debugger can request breakpoints in unverified code). Breakpoint changes are blocked while the verifier runs to avoid races. This eliminates method->debugBreakpointCount, which is no longer needed. (Also, it clashed with LinearAlloc's read-only mode.) The deferred verification error mechanism was using a code-copying approach to modify the bytecode stream. That has been changed to use the same copy-on-write modification mechanism. Also, normalized all PAGE_SIZE/PAGESIZE references to a single SYSTEM_PAGE_SIZE define. Simple Fibonacci computation test times (opal-eng): JIT, no debugger: 10.6ms Fast interp, no debugger: 36ms Portable interp, no debugger: 43.8ms ORIG debug interp, no breakpoints set: 458ms ORIG debug interp, breakpoint set nearby: 697ms NEW debug interp, no breakpoints set: 341ms NEW debug interp, breakpoints set nearby: 341ms Where "nearby" means there's a breakpoint in the method doing the computation that isn't actually hit -- the VM had an optimization where it flagged methods with breakpoints and skipped some of the processing when possible. The bottom line is that code should run noticeably faster while a debugger is attached.
|
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
686e1e23324f1c1f358f29f13f23e57b41c00eaa |
|
27-May-2009 |
Andy McFadden <fadden@android.com> |
Correct handling of certain incompatible class changes. Tests 065 and 066 depened on the old behavior of the verifier. Updating them to the new behavior wasn't enough, though, because they weren't reporting the right error. The verifier's resolution code now examines the exception to see if the load failure was caused by an incompatible class change error. I also updated the description of test 071 to note that it will fail on the device if you don't have an sdcard. Added a method to get the exception "cause" field. It handles the "uninitialized" state, which I keep forgetting about. Spruced up dvmDumpObject, which hadn't been used in a while. Fixed a warning in Profile.c. For internal bug 1866729.
|
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 |
|
19-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import //branches/master/...@140412
|
af93f33a83ecbd44b8a946bbad5291a79aadc2e8 |
|
04-Mar-2009 |
Jean-Baptiste Queru <jbq@google.com> |
Use static const variable for speed. Clarify a comment. Fixes http://code.google.com/p/android/issues/detail?id=2088
|
f6c387128427e121477c1b32ad35cdcaa5101ba3 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
f72d5de56a522ac3be03873bdde26f23a5eeeb3c |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
5d709784bbf5001012d7f25172927d46f6c1abe1 |
|
11-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@130745
|
4c1a2915e40eceeb68dbc323d28b8bf8763af83b |
|
20-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@127101
|
cc05ad238516f1303687aba4a978e24e57c0c07a |
|
10-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@125939
|
89c1feb0a69a7707b271086e749975b3f7acacf7 |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
|
2ad60cfc28e14ee8f0bb038720836a4696c478ad |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|