375fb116bcb817b37509ab579dbd55cdbb765cbf |
|
15-Jun-2011 |
Carl Shapiro <cshapiro@google.com> |
Normalize the include guard style. An leading underscore followed by a capital letter is a reserved name space in C and C++. This change also moves any #include directives within the include guard in some of the compiler/codegen/arm header files. Change-Id: I9715e2c5301699d31886e61d0fe6e29483555a2a
|
d862faa2ceae186da5518607505eb942d634ced9 |
|
28-Apr-2011 |
Carl Shapiro <cshapiro@google.com> |
Get rid of uneeded extern, enum, typedef and struct qualifiers. Change-Id: I236c5a1553a51f82c9bc3eaaab042046c854d3b4
|
2d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bf |
|
14-Apr-2011 |
Carl Shapiro <cshapiro@google.com> |
Move JDWP into C++ and add extern "C" to remaining non-compiler includes. Change-Id: I19cba56e8f75b76f902c87ff5c5b3e2c17cb5c00
|
57fd399d1265ec627d28a15b3d4b98e5f239ac88 |
|
04-Mar-2011 |
Andy McFadden <fadden@android.com> |
Low-level support for in-memory DEX We want to be able to load classes from a DEX file in memory, rather than insisting that they always be loaded from disk. This provides the underpinnings. The code was previously using the "are we in dexopt" flag to decide if it needed to mprotect(RW) DEX data before altering it. We now have an explicit flag. Also, scraped off some "opt header flags" checks that never did much. Bug 1338213 Change-Id: If7128bf246992156662e089a2a87cebf475a6f2a
|
d18fcbcee7115ff99673222650fda0f7e982c60a |
|
25-Feb-2011 |
Andy McFadden <fadden@android.com> |
Update dexopt control logic This adds a new mode, -Xdexopt:full. In most ways it behaves like -Xdexopt:verified (the default), but when an un-optimized class is loaded we will do a full set of optimizations instead of just the "essential" set. For classes that are verified and optimized by dexopt (which is to say, most of them), this has no effect. For the others, this trades off speed for space, substituting quickened instructions but causing copy-on-write of pages mapped from the DEX file. This also demotes the substitution of execute-inline opcodes to "non-essential" status. Change-Id: I392fb2ff0bf0af83c000937079895d25ce7f0cb1
|
65a54dc66d2c7b6e16fc24a6ce66e50483620745 |
|
28-Jan-2011 |
Andy McFadden <fadden@android.com> |
Make more DEX optimizations "essential" This shifts two dexopt optimizations from the "non-essential" category to "essential", which means they will be performed at class load time for classes that did not successfully verify in dexopt. (This has an impact on memory and start time, but measurements have indicated that it's negligible because dexopt usually succeeds.) First, invoke-direct --> invoke-direct-empty. This is part of the work needed for bug 3342343, which needs to do a little extra work when returning from Object.<init> in a finalizable class. Second, invoke-* --> execute-inline. We currently have three copies of methods like String.length(): one in libcore, one in InlineNatives.c, and one in the JIT's code generator. If we guarantee inlining, we can get rid of the copy in libcore. We also ensure that certain libcore tests (which are organized in a way that makes dexopt unhappy) are using the version that will most likely be used on production. Note there is currently no support for "jumbo" opcodes here. Also, made the inline method lookup abort-on-failure. Once upon a time these were "best effort" optimizations, but now they're mandatory. And seriously, if you don't have String.length() and Math.min() you shouldn't be trying to run anyway. dvmInlineNativeCheck() is now redundant and has been removed. Change-Id: I4244e011839f77311fea0570195b3b0df4d84dcf
|
d8b5f50d0c6c9a0ce157e89df4ee1e8eb8b334c3 |
|
30-Sep-2010 |
Andy McFadden <fadden@android.com> |
Correct dexopt for uniprocessors. The SMP flag was defaulting to "true" for dexopt, even on uniprocessors. With this change the VM now has three choices: dexopt for SMP, dexopt for uniprocessor, or dexopt for current system. The last is used for just-in-time dexopt (used by -eng and -userdebug builds on bootstrap DEX files) and installd dexopt (used for apps on all builds). The dexopt used by the build system during -user builds will either be explicitly SMP or explicitly uniprocessor, since "current system" has no meaning when you're cross-dexopting. Also, unified the dexopt control flags into a single enum. (cherry-pick from dalvik-dev) Change-Id: Id1d9c548ca8567585a28ef9ee911cc2ac6b116dd
|
b91b37eb8b8746d1057dd86ed3835de824439e65 |
|
30-Sep-2010 |
Andy McFadden <fadden@android.com> |
Correct dexopt for uniprocessors. The SMP flag was defaulting to "true" for dexopt, even on uniprocessors. With this change the VM now has three choices: dexopt for SMP, dexopt for uniprocessor, or dexopt for current system. The last is used for just-in-time dexopt (used by -eng and -userdebug builds on bootstrap DEX files) and installd dexopt (used for apps on all builds). The dexopt used by the build system during -user builds will either be explicitly SMP or explicitly uniprocessor, since "current system" has no meaning when you're cross-dexopting. Also, unified the dexopt control flags into a single enum. Change-Id: I02e22d53ccde2e8603cac8090ca3aae59f792f70
|
148283d71a7e35b9b506cbb49294b6822719c25e |
|
29-Sep-2010 |
Dan Bornstein <danfuzz@android.com> |
Plumb SMP optimization control through to dexopt. Change-Id: I3bfaf6723e7b14d001f9de60cc1c1fd4f8e1ed99
|
fbdcfb9ea9e2a78f295834424c3f24986ea45dac |
|
29-May-2010 |
Brian Carlstrom <bdc@google.com> |
Merge remote branch 'goog/dalvik-dev' into dalvik-dev-to-master Change-Id: I0c0edb3ebf0d5e040d6bbbf60269fab0deb70ef9
|
2e1ee50a08cc3dd07ce4e956b925c1f0f28cf329 |
|
24-Mar-2010 |
Andy McFadden <fadden@android.com> |
Rearrange some things. This splits DexOptimize into DexPrepare (which deals with file shuffling and fork/exec) and Optimize (which does the actual quickening of instructions). The Optimize functions are now effectively private to the "analysis" directory. Twiddled some comments. No substantive code changes. Change-Id: Ia51865b259fb32822132e2373997866e360ca86a
|