| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Change-Id: I463a62898e5dd8eb01d1dfbaf71f67d8e1b4e67c
|
|
|
|
| |
Change-Id: I764889011cc259cdca306e2145bcc4c8c75eced5
|
|
|
|
|
| |
Bug: 6369821
Change-Id: Iae06cf1570a14ddefad6b31eec904d9fa598d89f
|
|
|
|
|
|
|
|
|
| |
See https://android-git.corp.google.com/g/#/c/157220
Also fix an occurrence of LOGW missed in an earlier change.
Bug: 5449033
Change-Id: I2e3b23839e6dcd09015d6402280e9300c75e3406
|
|
|
|
|
|
|
| |
See https://android-git.corp.google.com/g/157065
Bug: 5449033
Change-Id: Ia5d301248024df26c2a29dabdfe738e39ec87c82
|
|
|
|
|
|
|
| |
See https://android-git.corp.google.com/g/156801
Bug: 5449033
Change-Id: Ic558031c75b3702d90eb78bd730501ae5d3c077b
|
|
|
|
|
|
|
| |
See https://android-git.corp.google.com/g/156016
Bug: 5449033
Change-Id: Ic663376d1ad6a6cb14bf81405ad9afd247cf2f60
|
|
|
|
|
|
|
| |
See https://android-git.corp.google.com/g/#/c/143865
Bug: 5449033
Change-Id: I8bd96961e369a08e86ff78b82d90f20f42787eb1
|
|
|
|
|
|
| |
Bug: 5010576
Change-Id: I544b54b673d9fd42197a5c97a291578a0bd0db5f
|
|
|
|
|
|
|
| |
These aren't necessarily good abstractions, but they're no worse than what
we had, and having them factored out is a step in the right direction.
Change-Id: I5b839608317d2ca1ca54d8a38624fb686f2c37de
|
|
|
|
| |
Change-Id: I5abd4f8ab06db0c77fa369fcd97d8f1259b343df
|
|
|
|
|
|
| |
Also use std::vector instead of the cutils/array cruft.
Change-Id: I273147335cafbac5d336955f53b0b29d015f0589
|
|
|
|
|
|
| |
I exist to serve.
Change-Id: I8e2880b20eefd466da8515d5b6b0c5cb75d56169
|
|
|
|
|
|
| |
Friends don't let friends end LOG() strings with newlines.
Change-Id: I5a18c766c90c4ab5f03caa6acd601d34d91beb00
|
|
|
|
|
|
|
|
|
|
| |
Previously, the struct name and its typedef name were identical. This
confuses emacs and etags. This change eliminates the typedef names and
removes the extern "C" wrapping the libdex header files. To support
this change the transitive C dependencies have been made to compile as
C++ instead.
Change-Id: I7065f32d61d776f9b09c7b461adf2502268d852f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clean up replaceFailingInstruction() a little. In particular, use
the appropriate method for extracting the opcode, and assert that
the instruction we're replacing was marked "can throw" (if it wasn't,
the list of predecessors in the catch handler will be wrong). Also
remove a declaration that became redundant when we started replacing
instructions in place (as opposed to making a copy of the method body).
Strip out a bit of stale #if 0 code.
Change-Id: Iccf80647237672e2da4b1b46ca9627ae3344704d
|
|
|
|
|
|
| |
Shows up without NDEBUG.
Change-Id: I1270266369beb783242283af60ee268118c8fb3d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Change-Id: I3bfaf6723e7b14d001f9de60cc1c1fd4f8e1ed99
|
|
|
|
| |
Change-Id: I29a78ccb6312d12b3ef0ed02cfbc638a5b01db9c
|
|
|
|
|
|
| |
Thanks to Elliott for catching this.
Change-Id: Ibb89ece3dd2e1d39a8a2d51cb8b7278842e057a1
|
|
|
|
| |
Change-Id: Ib36cc0fd134a6916100060c8e2eee5158ac87201
|
|
|
|
|
|
|
| |
I didn't catch the warnings among the build spew before. Also, made
"--preopt" use stderr for its complaints about arguments.
Change-Id: I8d470ccc40c4cdc9131beb0991060358039e2727
|
|
|
|
|
|
|
|
| |
This change takes much of what used to be in the function fromZip()
(the "--zip" mode implementation) and pulls it into a helper function,
which is then also used by the new preopt() function.
Change-Id: Id54618047896366448adaec0bf973627a9f1f397
|
|
|
|
| |
Change-Id: Id166ab03a01833e06ec1a9aa0059e4eb28ec04ce
|
|
|
|
| |
Change-Id: I1e3d103a7b932ef21acedb6438c0f26b315df28f
|
|\
| |
| |
| | |
Change-Id: I54a5b9996252a22e8dd0214f4a4ccc8914f876ea
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Moved quasiatomic 64-bit operations in here. They still need work.
Use the new libcutils atomic-inline header for our memory barriers.
Adjust makefiles to set SMP definition appropriately.
Change-Id: Id2ab2123724bb0baeb32f862b5568392aba35a59
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Change the way zip archives are handled. This is necessary to deal with
very large (~1GB) APK files, for which our current approach of mapping
the entire file falls over.
We now do the classic scavenger hunt for the End Of Central Directory magic
on a buffer of data read from the file, instead of a memory-mapped section.
We use what we find to create a map that covers the Central Directory only.
For most uses in the VM this is all we really need, since we just want
to check file attributes vs. the optimized DEX to see if we're out of date.
If the caller is interested in unpacking the file contents, we have to
do an additional file read to discover the size of the Local File Header
section so we can skip past it. We also now do a file-to-file extraction
using read() calls instead of a buffer-to-file extraction on mmap()ed data.
No difference in performance (as measured by first-boot dexopt).
Since this is more of a rewrite than an update, I also took the opportunity
to change buffer size variables from "long" to "size_t", and normalized
return values to int (some were using bool, which is common in the VM but
was mixed in the zip code). Failure messages are now all LOGW with the
word "Zip" up front (didn't want to change log tag away from "dalvikvm").
Also, removed a not-quite-right check in the "map part of a file" code,
and clarified that the file offset is absolute.
For bug 2620103.
Change-Id: I745fb15abb541376f467969ffe422222676f1e5f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Change the way zip archives are handled. This is necessary to deal with
very large (~1GB) APK files, for which our current approach of mapping
the entire file falls over.
We now do the classic scavenger hunt for the End Of Central Directory magic
on a buffer of data read from the file, instead of a memory-mapped section.
We use what we find to create a map that covers the Central Directory only.
For most uses in the VM this is all we really need, since we just want
to check file attributes vs. the optimized DEX to see if we're out of date.
If the caller is interested in unpacking the file contents, we have to
do an additional file read to discover the size of the Local File Header
section so we can skip past it. We also now do a file-to-file extraction
using read() calls instead of a buffer-to-file extraction on mmap()ed data.
No difference in performance (as measured by first-boot dexopt).
Since this is more of a rewrite than an update, I also took the opportunity
to change buffer size variables from "long" to "size_t", and normalized
return values to int (some were using bool, which is common in the VM but
was mixed in the zip code). Failure messages are now all LOGW with the
word "Zip" up front (didn't want to change log tag away from "dalvikvm").
Also, removed a not-quite-right check in the "map part of a file" code,
and clarified that the file offset is absolute.
For bug 2620103.
Change-Id: I745fb15abb541376f467969ffe422222676f1e5f
|
|/
|
|
|
|
| |
provided by Common.h if WITH_DALVIK_ASSERTS is defined. The include
from HeapBitmap.h was notable as it redefined the Dalvik friendly
assert macro with the useless libc macro across all of the GC sources.
|
|
|
|
|
| |
libraries are linked though dependencies of other libraries. While that works,
it is not the right thing to do.
|
|
|
|
|
|
|
|
|
|
|
|
| |
For a first pass, I inlined the various flavors of abs(), min()/max() on
integers, sqrt(), cos(), and sin(). These were selected based on a
static analysis of a few of our jar files.
A test of repeated sin/cos/sqrt calls on a G1-class device showed an
improvement of 28%. This would improve more on devices with VFP
support if the VM is compiled with -mfpu=vfp.
Also: clarified a warning and removed some "#if 0" stuff.
|
| |
|
| |
|
| |
|
| |
|
|
|