31349988d7c44fe453bde9525fd10a371e543c28 |
|
18-May-2016 |
Roland Levillain <rpl@google.com> |
Enforce class definition ordering rules in v37 Dex files. These new checks also reject classes extending or implementing themselves directly or transitively within a single Dex file. (cherry picked from commit 621b5eab8eed7746925bca489114d706ad455572) Bug: 28812524 Bug: 28797012 Bug: 28685551 Bug: 27682580 Change-Id: I51c43f8b4b6a7abaade63682411e61f21767f5d4
|
f0fe04cbaf189702e9dad7252ed834cb4735c877 |
|
13-Apr-2016 |
Alex Light <allight@google.com> |
Allow private methods in interfaces. Private methods may be generated in interfaces during compilation of some default methods. Change the verifier to allow these methods. Bug: 27999840 (cherry picked from commit b55f1ac873f9541f391625c13fe9129fbd38e74c) Change-Id: Ib8120a8f6cb036021334d9af0ed78ae372974ecb
|
08305325d3468d5ef413eb0b36b1ea1b3746a6c4 |
|
05-Apr-2016 |
Jeff Hao <jeffhao@google.com> |
Remove AnnotationAccess and its remaining uses. Art side of this change. Adds a test to ensure annotations not marked for runtime retention can't be seen at runtime. Bug: 27912552 (cherry picked from commit 1133db79350060158f99210c56f111c6dad43563) Change-Id: I090a90bc82fc9b5e51aba02dcb3d8cccb6fb0f90
|
1133db79350060158f99210c56f111c6dad43563 |
|
05-Apr-2016 |
Jeff Hao <jeffhao@google.com> |
Remove AnnotationAccess and its remaining uses. Art side of this change. Adds a test to ensure annotations not marked for runtime retention can't be seen at runtime. Bug: 27912552 Change-Id: I078069b7b3cb72bfe7d0b9ea61e527fee04d56a3
|
76ed99d5ec208d5adcd63b41c2c290194ee0ecf7 |
|
29-Mar-2016 |
Andreas Gampe <agampe@google.com> |
ART: Postpone interface-related dex failure to version 37 For app compat, at least for now make the check for public-final-static of interface members not fail on dex file versions less than 37. This may be changed in future releases. Bug: 27831184 Change-Id: If8ee50321298b951d4a78062c8eb583fec27394f
|
2190d929695c31ad7195e2c366f4102836a7d827 |
|
23-Mar-2016 |
Alex Light <allight@google.com> |
Add support for Dex version 37 in Runtime. We are skipping version 36 of the dex file format due to a bug in Dalvik dating back to ICS where dex files marked version 036 would erroneously be accepted. Bug: 27538761 Bug: 27809626 (cherry picked from commit c49618160d5fa64ca4883d2e09fa34b83491c8ea) Change-Id: Ic053f7e25f5a8c3df83ff34b6656528824b2df12
|
c49618160d5fa64ca4883d2e09fa34b83491c8ea |
|
23-Mar-2016 |
Alex Light <allight@google.com> |
Add support for Dex version 37 in Runtime. We are skipping version 36 of the dex file format due to a bug in Dalvik dating back to ICS where dex files marked version 036 would erroneously be accepted. Bug: 27538761 Bug: 27809626 Change-Id: Ic053f7e25f5a8c3df83ff34b6656528824b2df12
|
3a2bd29d274f60fdcfabebb052078edef0190164 |
|
27-Jan-2016 |
Andreas Gampe <agampe@google.com> |
ART: Make sure dex files are verified in the compiler Follow-up to 9bdf108885a27ba05fae8501725649574d7c491b. Make sure that dex files from the oat writer are verified with the dex file verifier. Bug: 26793137 Bug: 26808512 Change-Id: I1a5f51751491eead21d8f9f1b31e37c7374c72a5
|
76172164667d565c1d3316935a24b0d9712bb2f6 |
|
26-Jan-2016 |
Mathieu Chartier <mathieuc@google.com> |
Convert to UTF8 before doing dex file location comparison Need to have strings in the same format or else the lengths might not match due to UTF8 conversion. Added regression test. Bug: 26799552 (cherry picked from commit 3776db4e51ab61a6e535772417c2adf95920b569) Change-Id: Ifbc8c38418c9da307a0ff4446d18cea4fb5e71bc
|
3776db4e51ab61a6e535772417c2adf95920b569 |
|
26-Jan-2016 |
Mathieu Chartier <mathieuc@google.com> |
Convert to UTF8 before doing dex file location comparison Need to have strings in the same format or else the lengths might not match due to UTF8 conversion. Added regression test. Bug: 26799552 Change-Id: If2c9e029e4096eeff6eabbbaec35663f6d2bcdb4
|
9bdf108885a27ba05fae8501725649574d7c491b |
|
21-Jan-2016 |
Vladimir Marko <vmarko@google.com> |
Revert "Revert "Write dex files to oat file early."" This reverts commit 919f5536182890d2e03f59b961acf8f7c836ff61. Fix linker error (Mac build): Replace inline definition of art::ZipArchive::~ZipArchive() with an out-of-line definition in zip_archive.cc to avoid direct reference to CloseArchive() from libart-compiler due to inlining. Note that libart is linked against -lziparchive but libart-compiler is not. Change-Id: I92620ea0200282ca7ba9b7f61a592cb6468d90d8
|
919f5536182890d2e03f59b961acf8f7c836ff61 |
|
20-Jan-2016 |
Vladimir Marko <vmarko@google.com> |
Revert "Write dex files to oat file early." This reverts commit 625a64aad13905d8a2454bf3cc0e874487b110d5. Breaks the Mac build: Undefined symbols for architecture i386: "_CloseArchive", referenced from: ... in oat_writer.o ld: symbol(s) not found for architecture i386 Change-Id: I21608bc51437834e1e6abde9bcbe5e7d9998197e
|
91d65e024846717fce3572106cffe9b957b8902c |
|
19-Jan-2016 |
Roland Levillain <rpl@google.com> |
Fix various typos in ART's comments and string literals. Change-Id: I85d628055b1a61647a77fef730c9631c234e22a2
|
625a64aad13905d8a2454bf3cc0e874487b110d5 |
|
26-Nov-2015 |
Vladimir Marko <vmarko@google.com> |
Write dex files to oat file early. Write dex files to oat file before we actually open and verify them. Instead, open and verify the copies from the oat file and use these. This way, in the most common case of zipped dex files, we have mmapped dex files instead of inflated dex files. That reduces the number of dirty pages used by dex2oat. Reading /proc/self/statm after we write the oat file for a compilation of a certain large app on Nexus 5 AOSP build with -j1, three attempts before and after this CL gave before: 346061 189462 6269 26 0 140723 0 346189 189450 6269 26 0 140851 0 346061 189463 6269 26 0 140723 0 after: 346186 185808 23040 27 0 140468 0 346186 185819 23040 27 0 140468 0 346186 185822 23040 27 0 140468 0 These values are in pages (4KiB), so while the "size" (=VmSize) is essentially unchanged, the "resident" (=VmRSS) is over 14MiB less and the "shared" (i.e. backed by a file) is 65.5MiB more. That is, the amount of dirty non-pageable memory used is reduced by about 80MiB. The oat file format has changed slightly, the class offset table has been moved from the OatDexFile to its own section. This actually fixes the alignment of these offsets as they could have been unaligned previously, yet accessed as normal with significant performance impact if the kernel has to emulate the unaligned access (say, mips). Change-Id: I0f4799bb1f1ca28e3533156a3494f55345c3e10a
|
b06e28e5b9fbabe3e69b18f31bf353eaff5d0c1f |
|
10-Dec-2015 |
David Srbecky <dsrbecky@google.com> |
Refactor DexFile::DecodeDebugInfo. Split the method into two - one for locals and one for positions. All uses of the method request only one of the two and it makes the code slightly cleaner. The position variant requires fewer parameters. Expose additional line table information which was previously ignored by the decode method (prologue, epilogue, source file). Change-Id: Idf8ba98fa58ea0d2103932b5cc0af81365885107
|
50a2f8deb8982c11966764ada4c01df95d8310c5 |
|
11-Dec-2015 |
Shinichiro Hamaji <hamaji@google.com> |
Get DCHECK back to EncodedStaticFieldValueIterator This is a follow-up of https://android-review.googlesource.com/#/c/185000/ Change-Id: Ia7311ab948712324f92814e4d415a0a78d16bb84
|
82863f0ce9fa45f6b14d12c35a6a50e2772ab26a |
|
05-Nov-2015 |
Shinichiro Hamaji <hamaji@google.com> |
Output static field values in dexdump This is necessary to generate table-of-contents of .dex files to prevent unnecessary rebuilds for implementation-only changes because these values can be used while compiling other modules. Also modify EncodedStaticFieldValueIterator so it can be used without ClassLoader/Linker. Bug: 24597504 Change-Id: Ida0c839f9dd6961e1c1b3a380e2092042fad03bb
|
9139e008abe30b7beaf4afd6533228a1dd9b202c |
|
10-Oct-2015 |
Alex Light <allight@google.com> |
Correct exception behavior for default methods Default methods are defined to throw an IncompatibleClassChangeError (ICCE) when they are called and there is no "best" implementation. Previously we would simply throw an ICCE during class loading as soon as we noticed that this would happen if called. This makes us wait until we actually attempt to execute the method. Furthermore, this allows us to use other, non-conflicting, methods on the object as normal. Furthermore, this makes us correctly throw AbstractMethodErrors in cases where all default implementations of a method are overridden by abstract declarations. Adds 3 tests for this new behavior. Bug: 24618811 Change-Id: Id891958a81f9b3862b2ce5919636aabef7d3422e
|
d9786b0e5be23ea0258405165098b4216579209c |
|
14-Oct-2015 |
Artem Udovichenko <artem.u@samsung.com> |
Implementation of fast lookup table to search class_def by descriptor Lookup table is a hash table which built at compile time and stored into oat file. At runtime the table is restored and used in the method DexFile::FindClassDef(const char*) to perform fast search of the class_def_idx by class descriptor. Advantages of the lookup table over the HashSet (runtime/base/hash_set.h) are: 1. Lookup table is built at compile time and uses read-only memory at runtime 2. Lookup table uses less memory then DexFile::Index (less by 80% for /system/framework/framework.jar on Nexus5) 3. Lookup table does less string comparisons compared with HashSet (less by 70% for zygote process on Nexus5) The disadvantage of the lookup table is it increased boot.oat size by 0.2% on Nexus5 and application .oat file by 0.3% in average on Nexus5. mathieuc changes: Create lookup table in dex2oat to speed up compilation. Clean up code to follow style guide and use less static functions. Added performance measurements. Compile ~100 APKs 5 times with filter interpret-only: Before: real 1m8.989s user 0m59.318s sys 0m7.773s After: real 1m1.493s user 0m52.055s sys 0m7.581s App launch (AOSP N5 maps, average of 45 runs): Before: 966.84ms After: 923.733ms Launch speedup is 4.7% Memory usage compared to HashSet index on 50 various APK: 32 bit: HashSet ~625694b vs TypeLookupTable ~404268b 64 bit: HashSet ~1251390b vs TypeLookupTable ~404268b Bug: 10921004 Bug: 20269715 Change-Id: I7246c1d9ad9fe81fe5c5907a4bf70396d8f9242a
|
e6215c0ec4b1bb71b722fdbf7e62eaf3be8a91d5 |
|
01-Sep-2015 |
Andreas Gampe <agampe@google.com> |
ART: Move access flags checking to dex file verifier Actually implement all the access flags checking in the dex file verifier. Add tests. Change-Id: I8b797357831b588589d56d6e2e22f7b410f33008
|
2a5892f9ebcd4b7bd7343db50e578bd24b8e55a6 |
|
01-Sep-2015 |
Jeff Hao <jeffhao@google.com> |
Move more Class annotations to native. Art side of this change. There is also a corresponding Libcore change. Seeing speedup in AnnotatedElementBenchmark. GetDeclaredClasses 21.61x GetDeclaringClass 108.73x GetEnclosingClass 87.81x GetEnclosingConstructor 23.35x GetEnclosingMethod 22.71x GetModifiers 152.47x GetSimpleName 106.11x IsAnonymousClass 91.28x IsLocalClass 51.95x Change-Id: I2b7f7eb7785fc20671fd7c338ffa9c7048a44a48
|
13e748b28c5f2bd1e83674d2ca899ff61ae5c0a1 |
|
25-Aug-2015 |
Jeff Hao <jeffhao@google.com> |
Revert "Revert "Move annotations to native."" This reverts commit 7db6dd79a24570448ae737ee1946b00396696cac. Adds check if field's declaring class is proxy. Bug: 23508574 Change-Id: Ie829f1526e74427711e818b56d1588d92946cbf6
|
7db6dd79a24570448ae737ee1946b00396696cac |
|
25-Aug-2015 |
Roland Levillain <rpl@google.com> |
Revert "Move annotations to native." This reverts commit 0042c6d49b8488c78f0b937063e316e8d6244439. Reverting this change (as well as the companion CL https://android-review.googlesource.com/#/c/167510/ in platform/libcore) as they make libcore test libcore.java.lang.reflect.ProxyTest#test24846 fail. Change-Id: Ie0676cabb128277c7df5dab7bde17aefd3b2c09c
|
0042c6d49b8488c78f0b937063e316e8d6244439 |
|
30-Jul-2015 |
Jeff Hao <jeffhao@google.com> |
Move annotations to native. Art side of this change. There is also a corresponding Libcore change. Seeing ~2-3x speedup over dalvik KK MR1 in AnnotatedElementBenchmark. Benchmark Speedup of Art AOSP to Dalvik KK MR1 GetAllReturnsLargeAnnotation 2.99 GetAllReturnsMarkerAnnotation 2.20 GetAllReturnsNoAnnotation 2.43 GetAllReturnsSmallAnnotation 2.52 GetAllReturnsThreeAnnotations 2.87 GetAnnotationsOnSubclass 2.42 GetDeclaredAnnotationsOnSubclass 2.49 GetFieldAnnotation 2.68 GetFieldAnnotations 2.60 GetMethodAnnotation 2.66 GetMethodAnnotations 2.61 GetParameterAnnotations 2.52 GetTypeAnnotation 2.56 GetTypeAnnotations 2.17 IsFieldAnnotationPresent 3.26 IsMethodAnnotationPresent 4.99 IsTypeAnnotationPresent 1.34 Change-Id: Ibdbb6d23b17eaab6e83c8774b1bb9401e8227941
|
68ad649d3918f2eed3a37209c01a7f0a0faf09f0 |
|
18-Aug-2015 |
Calin Juravle <calin@google.com> |
Refactor BuildInvoke. BuildInvoke got to be too complex an unreadble. This breaks it down in smaller pieces. Change-Id: Ibda63f69f5a1be537ae13e18a5f67c361173f4a6
|
2a5c4681ba19411c1cb22e9a7ab446dab910af1c |
|
14-Aug-2015 |
Andreas Gampe <agampe@google.com> |
ART: Some header cleaning around bit-utils Try to remove dependencies where they are not necessary. Change-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e
|
90443477f9a0061581c420775ce3b7eeae7468bc |
|
17-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move to newer clang annotations Also enable -Wthread-safety-negative. Changes: Switch to capabilities and negative capabilities. Future work: Use capabilities to implement uninterruptible annotations to work with AssertNoThreadSuspension. Bug: 20072211 Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
|
6852942773fde6ac40cec204f5ad63daacd3c74d |
|
07-Jul-2015 |
David Srbecky <dsrbecky@google.com> |
Accept 0xFFFFFFFF as dex debug info offset. Bug: 22023362 Change-Id: I03e5c74f5ece4dbe1fab37d8b5f857582b04f57c
|
c449e8b79aaaf156ce055524c41474cc1200ed5a |
|
11-Jun-2015 |
Igor Murashkin <iam@google.com> |
runtime: Minor cleanup and extra comments around interpreter Change-Id: I24c0b261de8cf737babd9d01bf679482d48c8bc9
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|
8b83b55de8abbc195c038789f1034107f4974597 |
|
30-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Allow oat files with duplicates classes in corner case When the oat file is actually an odex file, that is, a preopted /system app, then it is impossible to fall back to the original APK, as that has been stripped. When it looks like it will be impossible to successfully open the original dex location, grudgingly allow to open the found oat file, even if it has duplicate classes, but warn accordingly. Bug: 20697582 (cherry picked from commit 0cba004b97245300d7f39318d5921ee8edbef1ac) Change-Id: I1dd459563d977a2e77806eacd03e49334d5b1f14
|
0cba004b97245300d7f39318d5921ee8edbef1ac |
|
30-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Allow oat files with duplicates classes in corner case When the oat file is actually an odex file, that is, a preopted /system app, then it is impossible to fall back to the original APK, as that has been stripped. When it looks like it will be impossible to successfully open the original dex location, grudgingly allow to open the found oat file, even if it has duplicate classes, but warn accordingly. Bug: 20697582 Change-Id: I1dd459563d977a2e77806eacd03e49334d5b1f14
|
90e34043ff7bf8926e8fe6a6d5011a9daa68d320 |
|
28-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Remove multidex limit Remove the arbitrary multidex limit. If users want to use many files, allow them, but print a warning after a considerable amount. Bug: 20071800 (cherry picked from commit 32c26b8f9b995250479c185172f4ffd881a59996) Change-Id: Ic51c96b84042f769a7d33ec53fe587b68cd69df4
|
32c26b8f9b995250479c185172f4ffd881a59996 |
|
28-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Remove multidex limit Remove the arbitrary multidex limit. If users want to use many files, allow them, but print a warning after a considerable amount. Bug: 20071800 Change-Id: Ic51c96b84042f769a7d33ec53fe587b68cd69df4
|
2cebb24bfc3247d3e9be138a3350106737455918 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Replace NULL with nullptr Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
|
c785344b87221f5e4e6473e5b762e4e61fe65dcf |
|
27-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move ArtField to native Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
|
07b3c2351bb527ea91c084dc19434600af9ae66b |
|
01-Apr-2015 |
Richard Uhler <ruhler@google.com> |
Store OatDexFile instead of OatFile in DexFile. This requires moving OatDexFile out of the OatFile class so that a forward class declaration can be used for OatDexFile. Bug: 19071355 Change-Id: Ibda85b78d0577e9e81073090616fc0f2fa526be3
|
e5fed03772144595c0904faf3d6974cc55214c8c |
|
18-Mar-2015 |
Richard Uhler <ruhler@google.com> |
Support relative encoded dex locations in oat files. Now when opening an oat file, the caller can pass an absolute dex location used to resolve the absolute path for any relative encoded dex locations in the oat file. Bug: 19550105 Change-Id: I6e9559afe4d86ac12cf0b90176b5ea696a83d0e7
|
e5f13e57ff8fa36342beb33830b3ec5942a61cca |
|
24-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Add JIT"" Added missing EntryPointToCodePointer. This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399. Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af
|
a5ca888d715cd0c6c421313211caa1928be3e399 |
|
24-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Add JIT" Sorry, run-test crashes on target: 0-05 12:15:51.633 I/DEBUG (27995): Abort message: 'art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast<uintptr_t>(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc=71e3366b code=0x71e3362d size=ad000000' 10-05 12:15:51.633 I/DEBUG (27995): r0 00000000 r1 0000542b r2 00000006 r3 00000000 10-05 12:15:51.633 I/DEBUG (27995): r4 00000006 r5 b6f9addc r6 00000002 r7 0000010c 10-05 12:15:51.633 I/DEBUG (27995): r8 b63fe1e8 r9 be8e1418 sl b6427400 fp b63fcce0 10-05 12:15:51.633 I/DEBUG (27995): ip 0000542b sp be8e1358 lr b6e9a27b pc b6e9c280 cpsr 40070010 10-05 12:15:51.633 I/DEBUG (27995): Bug: 17950037 This reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4. Change-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3
|
2535abe7d1fcdd0e6aca782b1f1932a703ed50a4 |
|
17-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add JIT Currently disabled by default unless -Xjit is passed in. The proposed JIT is a method JIT which works by utilizing interpreter instrumentation to request compilation of hot methods async during runtime. JIT options: -Xjit / -Xnojit -Xjitcodecachesize:N -Xjitthreshold:integervalue The JIT has a shared copy of a compiler driver which is accessed by worker threads to compile individual methods. Added JIT code cache and data cache, currently sized at 2 MB capacity by default. Most apps will only fill a small fraction of this cache however. Added support to the compiler for compiling interpreter quickened byte codes. Added test target ART_TEST_JIT=TRUE and --jit for run-test. TODO: Clean up code cache. Delete compiled methods after they are added to code cache. Add more optimizations related to runtime checks e.g. direct pointers for invokes. Add method recompilation. Move instrumentation to DexFile to improve performance and reduce memory usage. Bug: 17950037 Change-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca
|
a48aef4234768ed37828df613919391c21f561a7 |
|
03-Dec-2014 |
Vladimir Marko <vmarko@google.com> |
Fix ImageWriter::ComputeEagerResolvedStringsCallback(). Change-Id: I1a2abd6d78dd7067d9bdbadbd81dd2fd7711fbc5
|
fd9eb3923dcf417afcf5ed4ebb13867fd10f2de3 |
|
07-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Simple structural class check Adds a simple check to class-loading when the embedded dex file in an oat file and the dex file on the class path where we found the class do not match. We require that the number of methods and fields do not change, as that will almost certainly mean that quickened and other compiled offsets are wrong now. This is a reasonably lightweight change, but we should investigate a full comparison including name and type of members. Bug: 17937814 Bug: 18708951 (cherry picked from commit 15a33b3f88546bce85dcb9d28caf200da51154d7) Change-Id: Icb9638bebd369ab23822817f4a97c8dd8625fea5
|
15a33b3f88546bce85dcb9d28caf200da51154d7 |
|
07-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Simple structural class check Adds a simple check to class-loading when the embedded dex file in an oat file and the dex file on the class path where we found the class do not match. We require that the number of methods and fields do not change, as that will almost certainly mean that quickened and other compiled offsets are wrong now. This is a reasonably lightweight change, but we should investigate a full comparison including name and type of members. Bug: 17937814 Bug: 18708951 Change-Id: Icb9638bebd369ab23822817f4a97c8dd8625fea5
|
fbef44de596d298dc6430f482dffc933a046dd28 |
|
23-Dec-2014 |
Richard Uhler <ruhler@google.com> |
Use unique_ptr to track ownership of dex files. Bug: 18809837 Change-Id: Ie571eae8fc19ee9207390cff5c7e2a38071b126a
|
e7c9a8c2b8481aafbc6af4ce6229bd361ba24742 |
|
07-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash map, reduce excessive hashing Changed the class def index to use a HashMap instead of unordered_map so that we can use FindWithHash to reduce how often we need to compute hashes. Fixed a bug in ClassLinker::UpdateClass where we didn't properly handle classes with the same descriptor but different class loaders. Introduced by previous CL. Before (fb launch): 1.74% art::ComputeModifiedUtf8Hash(char const*) After: 0.95% art::ComputeModifiedUtf8Hash(char const*) Bug: 18054905 Bug: 16828525 Change-Id: Iba2ee37c9837289e0ea187800ba4af322225a994 (cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)
|
564ff985184737977aa26c485d0c1a413e530705 |
|
07-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash map, reduce excessive hashing Changed the class def index to use a HashMap instead of unordered_map so that we can use FindWithHash to reduce how often we need to compute hashes. Fixed a bug in ClassLinker::UpdateClass where we didn't properly handle classes with the same descriptor but different class loaders. Introduced by previous CL. Before (fb launch): 1.74% art::ComputeModifiedUtf8Hash(char const*) After: 0.95% art::ComputeModifiedUtf8Hash(char const*) Bug: 18054905 Bug: 16828525 Change-Id: Iba2ee37c9837289e0ea187800ba4af322225a994
|
575e78c41ece0dec969d31f46be563d4eb7ae43b |
|
04-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Replace COMPILE_ASSERT with static_assert (runtime) Replace all occurrences of COMPILE_ASSERT in the runtime tree. Change-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2
|
6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f |
|
31-Oct-2014 |
Ian Rogers <irogers@google.com> |
Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags. Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
|
03b6eafba8ace9a9c4d5ee9c47723d1910ccd7a8 |
|
28-Oct-2014 |
Ian Rogers <irogers@google.com> |
Tidy MethodProtoHelper. Move to place of only use, class_linker.cc. Be lazy in computing the name. Change-Id: I1438efbda58369ddd0ac36eda8a5a0a6c6fdff77
|
13735955f39b3b304c37d2b2840663c131262c18 |
|
08-Oct-2014 |
Ian Rogers <irogers@google.com> |
stdint types all the way! Change-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08
|
5182932cf6704b53e957f7b4be021fe505a55e22 |
|
26-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Change access flag behavior in verifier Note: this moves the miranda modifier to the upper 16 bit. Bug: 16161620 (cherry picked from commit 7fc8f90b7160e879143be5cfd6ea3df866398884) Change-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5
|
ecaebd37bc9af576ddfe1be0bd4f3889e88d6f23 |
|
13-Sep-2014 |
Ian Rogers <irogers@google.com> |
Remove dex file index building mutex. First thread to get to max misses builds the index and sets an atomic, other threads continue and return null. Avoids lock contention and removes a member variable. Change-Id: Ia91e4a8fd915941aea849f019c85b67894ec6e71
|
7fc8f90b7160e879143be5cfd6ea3df866398884 |
|
26-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Change access flag behavior in verifier Note: this moves the miranda modifier to the upper 16 bit. Bug: 16161620 Change-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5
|
be4e64303cc66bda0a12eaab835caa0bcfda3cd9 |
|
05-Sep-2014 |
Vladimir Marko <vmarko@google.com> |
Improve dex location canonicalization-related performance. Eagerly add canonical dex file locations to the OatFile's primary lookup map in Setup(). This moves the boot.oat work from every app startup to the zygote initialization. Since we always ended up initializing the canonical location map anyway due to the way that we're loading dex files, the lazy initialization didn't save anything. Clean up dex file name canonicalization to make sure we free() the memory returned by realpath() rather than using std::unique_ptr<> with the default deleter. Avoid some unnecessary duplicate OatDexFile lookups. Bug: 16828525 Bug: 17346103 (cherry picked from commit aa4497db59f1eeec954f2ba5da6d458fcdf9b3a4) Change-Id: Icc4b14ebe903282ca91ce24e33a6d7c75dff991c
|
aa4497db59f1eeec954f2ba5da6d458fcdf9b3a4 |
|
05-Sep-2014 |
Vladimir Marko <vmarko@google.com> |
Improve dex location canonicalization-related performance. Eagerly add canonical dex file locations to the OatFile's primary lookup map in Setup(). This moves the boot.oat work from every app startup to the zygote initialization. Since we always ended up initializing the canonical location map anyway due to the way that we're loading dex files, the lazy initialization didn't save anything. Clean up dex file name canonicalization to make sure we free() the memory returned by realpath() rather than using std::unique_ptr<> with the default deleter. Avoid some unnecessary duplicate OatDexFile lookups. Bug: 16828525 Bug: 17346103 Change-Id: Id8fbc8992f62996138eb2006a0046c6529747c09
|
cc2f2393e69a9b1425bad1a89f41aaaf8c38f9e2 |
|
30-Aug-2014 |
Ian Rogers <irogers@google.com> |
Reduce and speed-up class def searches. Use the class linker for descriptor lookups from the compile driver so that dex caches are populated. Reduce the scope of functions for scanning class paths to just the class linker where they are performed. If we see more than a threshold number of find class def misses on a dex file lazily compute an index, so that future lookups are constant time (part of the collection code is taken from https://android-review.googlesource.com/#/c/103865/3). Note that we take a lazy approach so that we don't serialize on loading dex files, this avoids the reason the index was removed in 8b2c0b9abc3f520495f4387ea040132ba85cae69. Remove an implicit and unnecessary std::string creation for PrintableString. Single threaded interpret-only dex2oat performance is improved by roughly 10%. Bug: 16853450 Change-Id: Icf72df76b0a4328f2a24075e81f4ff267b9401f4 (cherry picked from commit 68b56858367e29461ae290fd797443a1ef6d8005)
|
31a7a0c981c5f6244b2c8c3a0c39f3e1d41ce154 |
|
30-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix dex file verifier type-list handling It is rare, but valid, to have an empty type list. Bug: 17327877 (cherry picked from commit 277a7c7b4bb9c421380592fd3998d2e79e4035b3) Change-Id: Ib3a8ff3e5ccd8fe7c04b1e97485bf3e6de72aa4d
|
68b56858367e29461ae290fd797443a1ef6d8005 |
|
30-Aug-2014 |
Ian Rogers <irogers@google.com> |
Reduce and speed-up class def searches. Use the class linker for descriptor lookups from the compile driver so that dex caches are populated. Reduce the scope of functions for scanning class paths to just the class linker where they are performed. If we see more than a threshold number of find class def misses on a dex file lazily compute an index, so that future lookups are constant time (part of the collection code is taken from https://android-review.googlesource.com/#/c/103865/3). Note that we take a lazy approach so that we don't serialize on loading dex files, this avoids the reason the index was removed in 8b2c0b9abc3f520495f4387ea040132ba85cae69. Remove an implicit and unnecessary std::string creation for PrintableString. Single threaded interpret-only dex2oat performance is improved by roughly 10%. Bug: 16853450 Change-Id: Icf72df76b0a4328f2a24075e81f4ff267b9401f4
|
277a7c7b4bb9c421380592fd3998d2e79e4035b3 |
|
30-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix dex file verifier type-list handling It is rare, but valid, to have an empty type list. Bug: 17327877 Change-Id: Ib3a8ff3e5ccd8fe7c04b1e97485bf3e6de72aa4d
|
67ef46adfb2c4990832e23aebeb9c0582d8519c4 |
|
22-Aug-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Avoid handle-less fields in ClassLinker::InitializeClass() There were some handle-less fields in a SafeMap across GC points. Bug: 12687968 Change-Id: Ib8c6527d4e23031f1d0074fa11d8f85499b68340
|
66d1caf42c20efba8305efb3a819993126e8abbf |
|
16-Jul-2014 |
Calin Juravle <calin@google.com> |
Use canonical paths when searching for dex files Apps which use the DexPathClassLoader directly may pass symlinks when trying to load dex files. This will not work as we use string comparision to find the dex in an oat file. The CL fixes this issue by using using dex conical paths for comparisons. Bug: 15313272 (cherry picked from commit 4e1d579d6401fef2dd57b16f8d406e33221a69d9) Change-Id: I441f1ef18388c4a17c747a7e55b57f917724db85
|
4e1d579d6401fef2dd57b16f8d406e33221a69d9 |
|
16-Jul-2014 |
Calin Juravle <calin@google.com> |
Use canonical paths when searching for dex files Apps which use the DexPathClassLoader directly may pass symlinks when trying to load dex files. This will not work as we use string comparision to find the dex in an oat file. The CL fixes this issue by using using dex conical paths for comparisons. Bug: 15313272 Change-Id: Ic314374b17612c3afbcadec93a88b2515a0aca5e
|
9157c0ca6a57fa9f6378aebcfb2e3ff76622499a |
|
25-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Account for multidex location strings in VMClassLoader To look up resources, look in the unadorned location. Bug: 16530747 (cherry picked from commit cb8f9e8a2941971c049b26745ea713c859342d9b) Change-Id: I5dce30c5e3c9f38fb5436c43a3f4a51fe4062c24
|
cb8f9e8a2941971c049b26745ea713c859342d9b |
|
25-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Account for multidex location strings in VMClassLoader To look up resources, look in the unadorned location. Bug: 16530747 Change-Id: Ia97e39366444f6666a78ade7298d3c22b4b79f8a
|
833a48501d560c9fa7fc78ef619888138c2d374f |
|
22-May-2014 |
Andreas Gampe <agampe@google.com> |
ART: Native support for multidex Native support for zip files with multiple classesX.dex. Works by explicitly looking for those files in ascending order. As these files have no file system representation for themselves, introduce synthetic dex locations: the name of the originating file plus a colon plus the name of the dex file, e.g., test.jar:classes2.dex. Opening a zip dex file will return all dex files in this way. This keeps the changes to dex2oat minimal. To hide multidex/synthetic names from the Java layer, let the handle of dalvik.system.DexFile refer to a vector of DexFile objects. When opening a location, test possible synthetic names and add them to the vector. Thus, the original multidex jar in the classpath will be associated with all embedded dex files. Change-Id: I0de107e1369cbc94416c544aca3b17525c9eac8b
|
576ca0cd692c0b6ae70e776de91015b8ff000a08 |
|
07-Jun-2014 |
Ian Rogers <irogers@google.com> |
Reduce header files including header files. Main focus is getting heap.h out of runtime.h. Change-Id: I8d13dce8512816db2820a27b24f5866cc871a04b
|
700a402244a1a423da4f3ba8032459f4b65fa18f |
|
20-May-2014 |
Ian Rogers <irogers@google.com> |
Now we have a proper C++ library, use std::unique_ptr. Also remove the Android.libcxx.mk and other bits of stlport compatibility mechanics. Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61
|
507dfdd147c97bfbadebfd63584d094b6a4e7b47 |
|
16-May-2014 |
Ian Rogers <irogers@google.com> |
Compatibility layer to transition from UniquePtr to std::unique_ptr. Use ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr, for the host switch to std::unique_ptr. For now the type remains called UniquePtr. Make dalvik compile with clang on the host, move its build to C++11. Change-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12
|
eb8167a4f4d27fce0530f6724ab8032610cd146b |
|
08-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add Handle/HandleScope and delete SirtRef. Delete SirtRef and replaced it with Handle. Handles are value types which wrap around StackReference*. Renamed StackIndirectReferenceTable to HandleScope. Added a scoped handle wrapper which wraps around an Object** and restores it in its destructor. Renamed Handle::get -> Get. Bug: 8473721 Change-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a
|
b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf |
|
29-Apr-2014 |
Ian Rogers <irogers@google.com> |
Force inlining on trivial accessors. Make volatility for GetFieldObject a template parameter. Move some trivial mirror::String routines to a -inl.h. Bug: 14285442 Change-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92
|
a2806550cefb7c70781d8ee6279e6ad5769804cb |
|
27-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Remove some stray stringpiece.h includes Bug: 13186058 Change-Id: I2cb313425864a5d4e988fcf71a99c60ad63c63fb
|
d2fe10a3a34af171bf1631219cd2d6ff6b7778b5 |
|
15-Jan-2014 |
Sebastien Hertz <shertz@google.com> |
Remove blacklist Removes the class initialization blacklist and use transaction to detect and revert class initialization attempting to invoke native method. This only concerns class initialization happening at compilation time when generating an image (like boot.art for the system). In transactional mode, we log every object's field assignment and array update. Therefore we're able to abort a transaction to restore values of fields and array as they were before the transaction starts. We also log changes to the intern string table so we can restore its state prior to transaction start. Since transactional mode only happens at compilation time, we don't need to log all these changes at runtime. In order to reduce the overhead of testing if transactional mode is on/off, we templatize interfaces of mirror::Object and mirror::Array, respectively responsible for setting a field and setting an array element. For various reasons, we skip some specific fields from transaction: - Object's class and array's length must remain unchanged so garbage collector can compute object's size. - Immutable fields only set during class loading: list of fields, method, dex caches, vtables, ... as all classes have been loaded and verified before a transaction occurs. - Object's monitor for performance reason. Before generating the image, we browse the heap to collect objects that need to be written into it. Since the heap may still holds references to unreachable objects due to aborted transactions, we trigger one collection at the end of the class preinitialization phase. Since the transaction is held by the runtime and all compilation threads share the same runtime, we need to ensure only one compilation thread has exclusive access to the runtime. To workaround this issue, we force class initialization phase to run with only one thread. Note this is only done when generating image so application compilation is not impacted. This issue will be addressed in a separate CL. Bug: 9676614 Change-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9
|
ef7d42fca18c16fbaf103822ad16f23246e2905d |
|
06-Jan-2014 |
Ian Rogers <irogers@google.com> |
Object model changes to support 64bit. Modify mirror objects so that references between them use an ObjectReference value type rather than an Object* so that functionality to compress larger references can be captured in the ObjectRefererence implementation. ObjectReferences are 32bit and all other aspects of object layout remain as they are currently. Expand fields in objects holding pointers so they can hold 64bit pointers. Its expected the size of these will come down by improving where we hold compiler meta-data. Stub out x86_64 architecture specific runtime implementation. Modify OutputStream so that reads and writes are of unsigned quantities. Make the use of portable or quick code more explicit. Templatize AtomicInteger to support more than just int32_t as a type. Add missing, and fix issues relating to, missing annotalysis information on the mutator lock. Refactor and share implementations for array copy between System and uses elsewhere in the runtime. Fix numerous 64bit build issues. Change-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822
|
b60847e72d040bf5e08b787d4b63708f7a506a31 |
|
06-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Merge "Fix apps with more than one dex file with the same name"
|
0d6adac2550113da33d42e88f0d87a57b25c5a60 |
|
06-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Fix apps with more than one dex file with the same name Reverts most of 60836d5a9bcf8b30984aae4279a4f6233b0bf622 which I believe was an incorrect attempt to address issue introduced in 8d31bbd3d6536de12bc20e3d29cfe03fe848f9da, which is also reverted here. Also adds some debugging aids include operator<< for DexFile and MemMap and checksum information to OatFile logging. Bug: 12802375 Change-Id: Idd6f7dd487f6e01e9479cd15cd4b61580160e8a3
|
d9cffeaa478bd30ad89a9dfc9680a27ce5efaadf |
|
25-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Faster Signature::operator==(const StringPiece& rhs). Avoid string allocation and resizing, return early if a parameter doesn't match. Change-Id: Ifc929d0c4a7a9d368432f7cae797d4326c6c44be
|
5c96e6b4dc354a7439b211b93462fbe8edea5e57 |
|
14-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Rewrite intrinsics detection. Intrinsic methods should be treated as a special case of inline methods. They should be detected early and used to guide other optimizations. This CL rewrites the intrinsics detection so that it can be moved to any compilation phase. Change-Id: I4424a6a869bd98b9c478953c9e3bcaf1c6de2b33
|
590fee9e8972f872301c2d16a575d579ee564bee |
|
13-Sep-2013 |
Mathieu Chartier <mathieuc@google.com> |
Compacting collector. The compacting collector is currently similar to semispace. It works by copying objects back and forth between two bump pointer spaces. There are types of objects which are "non-movable" due to current runtime limitations. These are Classes, Methods, and Fields. Bump pointer spaces are a new type of continuous alloc space which have no lock in the allocation code path. When you allocate from these it uses atomic operations to increase an index. Traversing the objects in the bump pointer space relies on Object::SizeOf matching the allocated size exactly. Runtime changes: JNI::GetArrayElements returns copies objects if you attempt to get the backing data of a movable array. For GetArrayElementsCritical, we return direct backing storage for any types of arrays, but temporarily disable the GC until the critical region is completed. Added a new runtime call called VisitObjects, this is used in place of the old pattern which was flushing the allocation stack and walking the bitmaps. Changed image writer to be compaction safe and use object monitor word for forwarding addresses. Added a bunch of added SIRTs to ClassLinker, MethodLinker, etc.. TODO: Enable switching allocators, compacting on background, etc.. Bug: 8981901 Change-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99
|
cf5077ac14f0922b6104a8a03fd66d97a490a3dd |
|
31-Oct-2013 |
Ian Rogers <irogers@google.com> |
Remove unused length from DexFile GetString calls. Address extra review comments from commit dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111. Change-Id: If76e81e7af5870431901de0bf561e0f827435fe3
|
dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111 |
|
30-Oct-2013 |
Ian Rogers <irogers@google.com> |
Don't use UTF16 length as length for MUTF8. Bug 11367555. Change-Id: Ia0b07072a1a49d435c3b71ed9a668b316b7ff5d8
|
8d31bbd3d6536de12bc20e3d29cfe03fe848f9da |
|
13-Oct-2013 |
Ian Rogers <irogers@google.com> |
Throw IOException at source of failing to open a dex file. Before is: java.lang.ClassNotFoundException: Didn't find class "GCBench" on path: DexPathList[[zip file "/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar"],nativeLibraryDirectories=[/disk2/dalvik-dev/out/host/linux-x86/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) Suppressed: java.lang.ClassNotFoundException: GCBench at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 1 more Caused by: java.lang.NoClassDefFoundError: Class "LGCBench;" not found ... 5 more And after is: java.lang.ClassNotFoundException: Didn't find class "GCBench" on path: DexPathList[[zip file "/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar"],nativeLibraryDirectories=[/disk2/dalvik-dev/out/host/linux-x86/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) Suppressed: java.io.IOException: Zip archive '/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar' doesn't contain classes.dex at dalvik.system.DexFile.openDexFile(Native Method) at dalvik.system.DexFile.<init>(DexFile.java:80) at dalvik.system.DexFile.<init>(DexFile.java:59) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:268) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:235) at dalvik.system.DexPathList.<init>(DexPathList.java:113) at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48) at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:38) at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:128) at java.lang.ClassLoader.access$000(ClassLoader.java:65) at java.lang.ClassLoader$SystemClassLoader.<clinit>(ClassLoader.java:81) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:137) Suppressed: java.lang.ClassNotFoundException: GCBench at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 1 more Caused by: java.lang.NoClassDefFoundError: Class "LGCBench;" not found ... 5 more Also, move dex file verifier messages out of logs. In the process the ClassLinker::dex_lock_ needed tidying to cover a smaller scope. Bug 11301553. Change-Id: I80058652e11e7ea63457cc01a0cb48afe1c15543
|
e810452722ac83b294d1f7aa80bdd88e547d5af0 |
|
16-Oct-2013 |
Brian Carlstrom <bdc@google.com> |
Preload DexCaches Bug: 11045348 Change-Id: I6f9c0d11613b6b4933a04ae23dbf4bc7879cea65
|
7c3d13aebdd8611cae58a1048bffb13cbdc465cb |
|
05-Sep-2013 |
Brian Carlstrom <bdc@google.com> |
Use file magic to determine file type, not file extension. Bug: 10614658 Change-Id: I9156dfca78ac8cd1c62fb258825cc791629270a4
|
d91d6d6a80748f277fd938a412211e5af28913b1 |
|
26-Sep-2013 |
Ian Rogers <irogers@google.com> |
Introduce Signature type to avoid string comparisons. Method resolution currently creates strings to then compare with strings formed from methods in other dex files. The temporary strings are purely created for the sake of comparisons. This change creates a new Signature type that represents a method signature but not as a string. This type supports comparisons and so can be used when searching for methods in resolution. With this change malloc is no longer the hottest method during dex2oat (now its memset) and allocations during verification have been reduced. The verifier is commonly what is populating the dex cache for methods and fields not declared in the dex file itself. Change-Id: I5ef0542823fbcae868aaa4a2457e8da7df0e9dae
|
fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f |
|
24-Sep-2013 |
Ian Rogers <irogers@google.com> |
StringPiece clean up. Profile guided clean up. Try to avoid creating StringPieces with the contents of a dex file where the length is known. Try to avoid RegTypeCache::FromDescriptor when there's a class available. Make ConstantType::ConstantValue inlinable. Saving of about 50ms from a 2 threaded ThinkFree compile on host. Change-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85
|
ee39a10e45a6a0880e8b829525c40d6055818560 |
|
19-Sep-2013 |
Ian Rogers <irogers@google.com> |
Use class def index from java.lang.Class. Bug: 10244719 This removes the computation of the dex file index, when necessary this is computed by searching the dex file. Its only necessary in dalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the latter not showing up significantly in profiling with this change. (cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69) Change-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c
|
8b2c0b9abc3f520495f4387ea040132ba85cae69 |
|
19-Sep-2013 |
Ian Rogers <irogers@google.com> |
Use class def index from java.lang.Class. Bug: 10244719 Depends on: https://googleplex-android-review.git.corp.google.com/362363 This removes the computation of the dex file index, when necessary this is computed by searching the dex file. Its only necessary in dalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the latter not showing up significantly in profiling with this change. Change-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c
|
e0948e13d5a4552e6a2728087573c07961e4a4f9 |
|
29-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Make DexFiles opened from files readonly by default, but writable during dex2oat Bug: 9618388 Change-Id: I83f2e16ee8446a79a94a84971146d807bb0c9ee0
|
ea46f950e7a51585db293cd7f047de190a482414 |
|
30-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Refactor java.lang.reflect implementation Cherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1. Move to ArtMethod/Field instead of AbstractMethod/Field and have java.lang.reflect APIs delegate to ArtMethod/ArtField. Bug: 10014286. Change-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7
|
b24bd9912579358687d45aec748853f1c53b4774 |
|
02-Aug-2013 |
Sebastien Hertz <shertz@google.com> |
Move some DexFile checks to debug build only. Change-Id: I6dae8345c47b610eca0c6820587639a435c83225
|
7934ac288acfb2552bb0b06ec1f61e5820d924a4 |
|
26-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/comments issues Change-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496
|
df62950e7a32031b82360c407d46a37b94188fbb |
|
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/parens issues Change-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9
|
fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d |
|
17-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix multiple inclusion guards to match new pathnames Change-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43
|
7940e44f4517de5e2634a7e07d58d0fb26160513 |
|
12-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Create separate Android.mk for main build targets The runtime, compiler, dex2oat, and oatdump now are in seperate trees to prevent dependency creep. They can now be individually built without rebuilding the rest of the art projects. dalvikvm and jdwpspy were already this way. Builds in the art directory should behave as before, building everything including tests. Change-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81
|