e09a766f3a964fb98296939ce1f92b8c95bf8c25 |
|
14-Oct-2010 |
buzbee <buzbee@google.com> |
x86 mterp: fix cherry-pick/merge, issue 3095771 Bug http://b/issue?id=3095771 Change https://android-git.corp.google.com/g/#change,70700 was a cherry-pick/merge of https://android-git.corp.google.com/g/#change,70388 It was not properly merged, and resulting in the register holding the object head to be trashed (and subsequently broke GC). Change-Id: Ic480104e3a643a5b744d36eb0aefaedd3e4f925c
|
b78c76f88ea42e7a3b295c210ca9ee86e7290043 |
|
01-Oct-2010 |
buzbee <buzbee@google.com> |
GC Card marking fix for SPUT_OBJECT - use correct object head Change-Id: I8b84a4f1e1690f5b62de7404ea6ede00317848bb
|
d82097f6b409c5cd48568e54eb701604c3cceb18 |
|
27-Sep-2010 |
buzbee <buzbee@google.com> |
Change GC card making to use object head, bug fix for volatile sput obj This CL changes the way we mark GC card to consistently use the object head (previously, we marked somewhere in the object - often the head, but not always). Also, previously a coding error caused us to skip the card mark for OP_APUT_OBJECT_VOLATILES. Fixed here. Change-Id: I133ef6395c51a0466c9708209b08e79c3083aff2
|
0d615c3ce5bf97ae65b9347ee77968f38620d5e8 |
|
18-Aug-2010 |
Andy McFadden <fadden@android.com> |
Always support debugging and profiling. This eliminates the use of the WITH_DEBUGGER and WITH_PROFILER conditional compilation flags. We've never shipped a device without these features, and it's unlikely we ever will. They're not worth the code clutter they cause. As usual, since I can't test the x86-atom code I left that alone and added an item to the TODO list. Bug 2923442. Change-Id: I335ebd5193bc86f7641513b1b41c0378839be1fe
|
f079e1d5c51fc33ab537bbdfc79cbac8e771d7e9 |
|
05-Aug-2010 |
buzbee <buzbee@google.com> |
Tweaks to x86 mterp periodic checks [issue 2634642] Update the x86 mterp main interpetation loop to match Arm and the portable interpreter by checking for debugger/profiler after suspends. Also, enable ability to skip a load when checking for active debugger (both Arm and x86). Related cl: https://android-git.corp.google.com/g/#change,50229 Change-Id: Ic5d0f102b2250393eaf4405e4cafb7678b1a563e
|
3d95064ad1d8e6da4f9a523b2c2f11cf1f1ea952 |
|
16-Jul-2010 |
buzbee <buzbee@google.com> |
x86 interpreter write barrier support Fix for 2837703. Also added support for new Dalvik volatile ops. Change-Id: Ic2b8d31afc8806077c5bf27ec90c643f7e47591e
|
c35a2ef53d0cccd6f924eeba36633220ec67c32e |
|
17-Jun-2010 |
Andy McFadden <fadden@android.com> |
Add opcodes for volatile field accesses This adds instructions for {i,s}{get,put}{,-object}-volatile, for a total of eight new instructions. On SMP systems, these instructions will be substituted in for existing field access instructions, either by dexopt or during just-in-time verification. Unlike the wide-volatile instructions, these will not be used at all when the VM is not built for SMP. (Ideally we'd omit the volatile instruction implementations entirely on non-SMP builds, but that requires a little work in gen-mterp.py.) The change defines and implements the opcodes and support methods, but does not cause them to be used. Also, changed dvmQuasiAtomicRead64's argument to be const. Change-Id: I9e44fe881e87f27aa41f6c6e898ec4402cb5493e
|
7365493ad8d360c1dcf9cd8b6eee62747af01cae |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove repeated newlines at the end of files. Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
|
de75089fb7216d19e9c22cce4dc62a49513477d3 |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove trailing whitespace. Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
|
8ba2708ea118381f2df5ca55b9bad2ae4c050504 |
|
21-May-2010 |
Andy McFadden <fadden@android.com> |
Added EXPORT_PC to "throw" instruction. For bug 2700761. Change-Id: I889e59ea35d9cadd99fc884e5b1301a4cf103f93
|
fbdcfb9ea9e2a78f295834424c3f24986ea45dac |
|
29-May-2010 |
Brian Carlstrom <bdc@google.com> |
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master Change-Id: I0c0edb3ebf0d5e040d6bbbf60269fab0deb70ef9
|
c95e0fbce4f77b2b08eb48205e405793de0d4248 |
|
29-Apr-2010 |
Andy McFadden <fadden@android.com> |
Rework common_periodicChecks. The function was rewritten to optimize the common path. The control flow now matches the C version, which tests for debugger/profiler even if the previous test for suspension came up true. This also adds a minor optimization on the test for debugger attachment, allowing us to skip a load from memory if the process is simply not debuggable. (The optimization isn't yet enabled because a similar change must be made to the x86 asm code.) The VM apparently hadn't been built without debugging/profiling support for a while, so this fixes those places (necessary to be able to test all forms of the new code). Bug 2634642. Change-Id: I096b58c961bb73ee0d128ba776d68dbf29bba924
|
5387824f19033ed51a945fbc8c2b574998404b3d |
|
05-Mar-2010 |
Andy McFadden <fadden@android.com> |
Add instructions for volatile wide fields. This adds four new instructions for accessing volatile wide fields (long and double). The JLS requires that such accesses are atomic, but the VM doesn't otherwise make guarantees about the atomicity of reads and writes on 64-bit fields. There are no behavioral changes. This just adds definitions for the new instructions and a couple of tests. The current implementation is just the non-volatile form of the instructions or a C stub, but since we're not generating them it doesn't really matter yet. Also: - bumped Dalvik version to 1.3.0 - added a note to the x86-atom TODO list For bug 1633591.
|
668628abe05cb30f86bd02c824f7219a7e20b82c |
|
16-Feb-2010 |
Bill Buzbee <buzbee@google.com> |
Jit: Monitor exit, possible fix for Issue 2396073 Two problems with monitor-exit: 1. The Jit code wasn't checking for exception thrown following unlocks of fat locks using dvmUnlockObject(). 2. The mterp interpreter unlock code branched to handle exceptions thrown during dvmUnlockObject() with the wrong dalvik PC (the dPC of the unlock, rather than the instruction following the unlock). Similar issue with the x86 interpreter fixed. Also, deleted armv7-a MONITOR_ENTER template, which turned out to be identical to the armv5te one.
|
6bbdd6b005ec5cb567ec9576190a7cd784248c5c |
|
16-Feb-2010 |
Bill Buzbee <buzbee@google.com> |
Jit: Monitor exit, possible fix for Issue 2396073 Two problems with monitor-exit: 1. The Jit code wasn't checking for exception thrown following unlocks of fat locks using dvmUnlockObject(). 2. The mterp interpreter unlock code branched to handle exceptions thrown during dvmUnlockObject() with the wrong dalvik PC (the dPC of the unlock, rather than the instruction following the unlock). Similar issue with the x86 interpreter fixed. Also, deleted armv7-a MONITOR_ENTER template, which turned out to be identical to the armv5te one.
|
b0a0541b59d1126ff77c88de742b4a74579fe296 |
|
19-Nov-2009 |
Andy McFadden <fadden@android.com> |
Add execute-inline/range instruction. Like "execute-inline", this is an instruction generated by dexopt that replaces a method invoke instruction. It's useful for small, frequently called methods in the core libs. As with execute-inline, we allow at most 4 arguments, but with /range we're no longer limited to the low 16 registers. Also: marked execute-inline as being able to throw an exception. Needed: native x86 implementation; support in JIT. For bug 2268232.
|
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
|
6ed1a0f396a1857c31b486d3e93ee2dbeb49a6cd |
|
11-Sep-2009 |
Andy McFadden <fadden@android.com> |
Display additional information on stack overflow. This required passing an additional argument into dvmHandleStackOverflow, which is called directly from mterp. Fortunately the method being called is sitting in a register for both ARM and x86, so this is a fairly simple change. For internal bug 2110533.
|
d5ab726b65d7271be261864c7e224fb90bfe06e0 |
|
25-Aug-2009 |
Andy McFadden <fadden@android.com> |
Another round of scary indirect ref changes. This change adds a not-really-working implementation to Jni.c, with various changes #ifdefed throughout the code. The ifdef is currently disabled, so the old behavior should continue. Eventually the old version will be stripped out and the ifdefs removed. This renames the stack's "localRefTop" field, which nudged a bunch of code. The name wasn't really right before (it's the *bottom* of the local references), and it's even less right now. This and one other mterp-visible constant were changed, which caused some ripples through mterp and the JIT, but the ifdeffing was limited to one in asm-constants.h (and the constant is the same both ways, so toggling the ifdef won't require rebuilding asm sources). Some comments and arg names in ReferenceTable were updated for the correct orientation of bottom vs. top. Some adjustments were made to the JNI code, e.g. dvmCallMethod now needs to understand if it needs to convert reference arguments from local/global refs to pointers (it's called from various places throughout the VM).
|
be74aeb457df67355ce7c16721ecc436c8fd770a |
|
29-Jul-2009 |
Bill Buzbee <buzbee@google.com> |
Fix for 1857865: Need x86 implementation for OP_THROW_VERIFICATION_ERROR
|
b51ea11c70602918c42764bfafe92a997d3b1803 |
|
09-May-2009 |
Andy McFadden <fadden@android.com> |
Defer reporting of certain verifier failures. The verifier currently reports all failures immediately. Certain failures, such as the failure to resolve a method, or the determination that access to a field is not allowed, are supposed to deferred until the first time that executing code does something that could cause the resolution. With this change, several kinds of verification failures are deferred. This is done by making a writable copy of the bytecode and replacing the failing instruction with an "always throw" opcode. Gory details: - Added throw-verification-error instruction. Implemented in "portable" and ARM interpreters. x86 uses portable form through stub. - Added a function that creates a copy of a DexCode area and makes the bytecodes writable. - Added code that replaces a single instruction with an "always throw". - Replaced runtime check for abstract/interface in new-instance with a check at verification time. - Added a test to exercise the deferred error mechanism. - Minor cleanups (replaced tab, bad valgrind command, ...).
|
3a1aedbc9777eab6275a360b93b81b079464238e |
|
07-May-2009 |
Andy McFadden <fadden@android.com> |
Added throw-verification-error instruction. This is for the deferred verifier error reporting. It replaces OP_UNUSED_ED. The instructions aren't actually used yet, which is good since the x86 version hasn't been written yet. The mterp regen also pushed out some recent-ish changes that hadn't propagated to the armv4t sources.
|
99409883d9c4c0ffb49b070ce307bb33a9dfe9f1 |
|
19-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import //branches/master/...@140412
|
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
|
31e30105703263782efd450d356cd67ea01af3b7 |
|
03-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@132589
|
6dcac3deb3c19dc634470eb30b2daedf2b201bd4 |
|
03-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@137055
|
5d709784bbf5001012d7f25172927d46f6c1abe1 |
|
11-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@130745
|
c4080f6bdeda19901a508cc75f96ac7e07903918 |
|
11-Feb-2009 |
Johnnie Birch <johnnie.l.birch.jr@intel.com> |
This patch rewrites common_invokeOld for the x86 fast interpreter. The implementation is similar to what is done for the armv5 code. Testing shows the patch provides a performance boost to benchmarks such as Caffeine Mark. When testing the simulator build on an Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz, the string score for Caffeine Mark improved by 6%, the Method score improved by 12% and the overall score improved by 3%. This patch is one of our incremental efforts to merge some Intel's x86 fast interpreter features in http://review.source.android.com/Gerrit#change,6041 to the mterp/x86 directory.
|
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
|