summaryrefslogtreecommitdiff
path: root/test/138-duplicate-classes-check2/src
AgeCommit message (Collapse)Author
2017-07-17Do superclass validation at compile time and log with new class status.Jeff Hao
Tries to perform superclass validation for classes that are resolved, but not initialized at runtime. If successful, saves the result in the oat file with a new class status. At runtime, the superclass validation can be skipped during class initialization, saving some time and reducing string accesses. Results show savings of 50kB PSS in maps on startup, with slight decrease in startup time. Maps (average of 100 runs) Before: dex 9941.3 odex 15159.8 total 25101.1 launch 908 After: dex 9897.4 odex 15155.7 total 25053.1 launch 906.6 Bug: 63456114 Test: mm test-art-host Change-Id: If67a4a49d61781b6d561c26118d7e0c6b9cc0d6f
2017-06-02Tests: never use System.errKevin Brodsky
Always print stack traces to System.out, and replace all System.err.println()'s with System.out.println(). Follow-up of https://android-review.googlesource.com/#/c/187020/ and https://android-review.googlesource.com/#/c/407032/. Test: m test-art-host m test-art-target Change-Id: I9ab9cd955a8db25b2ec6673790e5bc924f62c88a
2016-07-22ART: Fix type parameter in testsAndreas Gampe
Move Class to Class<?>, Constructor to Constructor<?>, and in general clean up reflection. Test: m test-art-host-run-test Change-Id: I3a4223ee8d14d032015edf34bf27135757f7138c
2015-04-24ART: Check for duplicate classes when loading oat filesAndreas Gampe
Oat files are usually produced standalone, and the compilers take advantage of any information they get. It is thus possible that when compile-time and runtime class-path are not the same, classes are resolved differently and optimized code is incorrect. This is a very conservative check, scanning the complete class tables of dex files. In case any duplicate class is found, the new oat file will be rejected and the original dex files will be used in interpreted mode. A possible refinement to this is actual tracking of the compile-time class-path instead. That is however significantly complicated by the DexFile API and the non-standard uses it allows. An alternative for both optimized code and correct resolution is native multidex. Apps should switch to multidex and benefit from the optimization as well as the shift of all compile time to install time. Split APKs are currently compiled separately, but it is a goal to change that install flow to simulated multidex. Change-Id: Ib9e0db5091e060e3bb2c0e5e6c007430becbfc21