43b06bc2d11c5fcd69c3554c0e525abad8480fab |
|
10-Aug-2011 |
jeffhao <jeffhao@google.com> |
Dexopt verifier checks that int/float and double/long uses do not mix. Added new types to dexopt indicating a type is derived from a constant, which may or may not be floating point. After such a value is used, its type can be determined, and the verifier enforces that it is always used that way afterwards. Change-Id: I150deaa162aec17bcc9c3e3200bc0350ae5b3f24
|
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
|
ae188c676c681e47a93ade7fdf0144099b470e03 |
|
08-Apr-2011 |
Carl Shapiro <cshapiro@google.com> |
Compile the garbage collector and heap profiler as C++. Change-Id: I25d8fa821987a3dd6d7109d07fd42dbf2fe0e589
|
9fd527f3258381b33365cb18fd37c7864e2bbb40 |
|
11-Dec-2010 |
Andy McFadden <fadden@android.com> |
Progress on live-precise GC. This implements computation of register liveness. This is still a work in progress. The computation is disabled by default, and when enabled it's not yet used during the generation of register maps. The code has not been thoughly tested. While working on this I fiddled around with the verifier's verbose debugging stuff a bit. This also changes some stuff in BitVector. Unsigned ints are now prevalent, and functions like dvmSetBit abort rather than returning a boolean value when an illegal operation is attempted. (Some parallel functions in the compiler were also updated.) Bug 2534655 Change-Id: Iea161c6d63a310e1dbdac2aeeb7b7aeadda8807c
|
701d2720fa693621a3c0c4d0bdf9e32e3eb8e731 |
|
02-Dec-2010 |
Andy McFadden <fadden@android.com> |
Progress on liveness analysis. Compute basic blocks and their predecessors, necessary for backward flow analysis. This is a work in progress and isn't yet enabled. (When enabled, verification takes 20% longer, so there's some room for improvement on performance.) Also, this changes the "generate register maps" setting to be enabled by default, and allows a "no" prefix on -Xgenregmap to disable it. Bug 2534655 Change-Id: Id2e8512f53fc454ce2184879ab663ed7121274b6
|
f7576b296b88cbe13b86464efbbebbca5cff22ba |
|
29-Nov-2010 |
Andy McFadden <fadden@android.com> |
Minor tweaks. Use dexOpCodeFromCodeUnit instead of (*insns & 0xff). (Not strictly necessary in its current incarnation, but the code will soon be checking opcode flags.) Mark some local functions "static". Make instruction widths >= 65536 a warning rather than an error. I don't think you can get there with converted Java bytecode because of the method size limit, but it's possible in directly-generated DEX. Change-Id: Ic9714b855c606f8b5c618793b271436e1c2cdc44
|
3f64a024dec2c080b9abde74502826b29263152a |
|
13-Nov-2010 |
Andy McFadden <fadden@android.com> |
Check monitors during bytecode verification This adds tracking of monitor-enter and monitor-exit instructions to the bytecode verifier. The idea is to guarantee that all lock operations in a method are paired with unlock operations, whether the method completes normally or abnormally. Because of an issue in "dx", the code only verifies that the operation stack has the right size at all times. We do not yet confirm that the correct monitor is being unlocked by monitor-exit (the code is present but ifdefed out). Also, when monitor verification is enabled, we do not add the "can throw" path from monitor-exit to the work list, potentially causing some "dead code" warnings. (Not coincidentally, "dead code" checking is now only enabled in libdvm_assert.so.) Overall increase in bootstrap verification time is about 9%, dropping to 6% when the new checks are disabled. The feature is currently disabled by default. -Xverifyopt:checkmon enables it. Bug 2534655 Change-Id: I0eac54ce2623fb1d48cc80889fcdb4fd69de3231
|
319a33bf2d40e11a0074952d537584a0332b8e45 |
|
10-Nov-2010 |
Andy McFadden <fadden@android.com> |
Progress toward structured lock checks This change replaces the old array-of-arrays with an array of structs that have a pointer to the register array. The struct will soon also hold the additional data required to perform structured lock checks, which confirm that every monitor-enter instruction is paired with a monitor-exit. (Prototype fields have been added but are currently unused.) No change in behavior is expected, although verification of the bootstrap classes does take about 5% longer now. Bug 2534655 Change-Id: Idf25f9a72c5e6cdefe201eebe7c3f5a37064ffca
|
228a6b01918304f2cd1213c722e028a6e25252bb |
|
05-May-2010 |
Andy McFadden <fadden@android.com> |
Forward progress on verifier. Promoted VerifierData to a more prominent role in passing state around. This will (a) allow us to pass fewer explicit arguments around in the core of the verifier, and (b) make it easier to maintain some fancier data structures that we will need shortly. Made use of dexGetInstrOrTableWidthAbs() in a couple of places where we were still explicitly calculating the sizes of NOP data chunks. Converted some things from int to size_t. Change-Id: I206f588bf1fc116a9d1f50fb631a9af33479b291
|
de75089fb7216d19e9c22cce4dc62a49513477d3 |
|
09-Jun-2010 |
Carl Shapiro <cshapiro@google.com> |
Remove trailing whitespace. Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
|
72e93344b4d1ffc71e9c832ec23de0657e5b04a5 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
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, ...).
|
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
|
5d709784bbf5001012d7f25172927d46f6c1abe1 |
|
11-Feb-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@130745
|
cc05ad238516f1303687aba4a978e24e57c0c07a |
|
10-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@125939
|
2ad60cfc28e14ee8f0bb038720836a4696c478ad |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|