ae444410cca87be3942bc5491c98d4c1b8a4a4a5 |
|
28-Sep-2016 |
Alex Light <allight@google.com> |
DO NOT MERGE: Update Oat version to 088 Give N-MR1 a different oat version to prevent compatibility problems with NYC. Bug: 31789675 Test: mma test-art-host Test: Phone boots and runs apps Change-Id: I6a922e8ac932dbf36a19431c4f34c2ace6f34609
|
5872d7cd6ceffe67550d0b021191ec66f1a34c5d |
|
27-Apr-2016 |
Jeff Hao <jeffhao@google.com> |
Support to pass <uses-library> option through to dex2oat. This change takes an app's shared libraries specified by <uses-library> and passes it through to dex2oat to be used during compilation. Part of a multi-project change. Includes fix from a6d46161aea07ebd1cbd6ab78b2b323f940e9c1e Bug: 26880306 (cherry-picked from commit 26e8a2f150cd7f7195a10650ab8a5b6fa5014bc8) Change-Id: I6bfc13693dbb835ca52fed2d03ec5346d43ec5d9
|
9d07e3d128ccfa0ef7670feadd424a825e447d1d |
|
31-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
Clean up OatQuickMethodHeader after Quick removal. This reduces the size of the pre-header by 8 bytes, reducing oat file size and mmapped .text section size. The memory needed to store a CompiledMethod by dex2oat is also reduced, for 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The aosp_flounder-userdebug 32-bit and 64-bit boot.oat are each about 1.1MiB smaller. Disable the broken StubTest.IMT, b/27991555 . Change-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039
|
61b28a17d9b6e8e998103646e98e4a9772e11927 |
|
25-Feb-2016 |
David Srbecky <dsrbecky@google.com> |
Use bit-level packing for InlineInfo in stackmaps as well. Use the same approach as we do for stackmaps to reduce the size. It saves 4.0 MB from non-debuggable boot.oat (AOSP). It does not affect debuggable boot.oat. It saves 3.6 MB (of 96.6 MB) from /system/framework/arm/ (GOOG). It saves 0.6 MB (of 26.7 MB) from /system/framework/oat/arm/ (GOOG). Field loads from inline-info get around 5% slower. (based on the time it takes to load all inline-infos from boot.oat) Change-Id: I67b0fa5eef74c1fdb013680d0231fd44ea696176
|
09ed09866da6d8c7448ef297c148bfa577a247c2 |
|
12-Feb-2016 |
David Srbecky <dsrbecky@google.com> |
Pack stack map entries on bit level to save space. Use only the minimum number of bits required to store stack map data. For example, if native_pc needs 5 bits and dex_pc needs 3 bits, they will share the first byte of the stack map entry. The header is changed to store bit offsets of the fields rather than byte sizes. Offsets also make it easier to access later fields without calculating sum of all previous sizes. All of the header fields are byte sized or encoded as ULEB128 instead of the previous fixed size encoding. This shrinks it by about half. It saves 3.6 MB from non-debuggable boot.oat (AOSP). It saves 3.1 MB from debuggable boot.oat (AOSP). It saves 2.8 MB (of 99.4 MB) from /system/framework/arm/ (GOOG). It saves 1.0 MB (of 27.8 MB) from /system/framework/oat/arm/ (GOOG). Field loads from stackmaps seem to get around 10% faster. (based on the time it takes to load all stackmap entries from boot.oat) Bug: 27640410 Change-Id: I8bf0996b4eb24300c1b0dfc6e9d99fe85d04a1b7
|
1c4eb04b6cb1427f96e9587bd425ee269b8c8479 |
|
29-Mar-2016 |
Richard Uhler <ruhler@google.com> |
Don't return kPatchOatNeeded if there is no patch info. Bug: 27693977 (cherry picked from commit d1537b569b6cd18297c5e02d13cdd588c4366c51) Change-Id: Icd25da796fc2c2b7542a47d1d8d3bcbcace145fb
|
d1537b569b6cd18297c5e02d13cdd588c4366c51 |
|
29-Mar-2016 |
Richard Uhler <ruhler@google.com> |
Don't return kPatchOatNeeded if there is no patch info. Bug: 27693977 Change-Id: Ie1f27cc45f3cb434108a375136480cb92fd95e26
|
7bcfcb80a31f57a84d754e00bca8698829365208 |
|
23-Mar-2016 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "Use compiler filter to determine oat file status."" This reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d. Add an option to change what OatFileManager considers up-to-date. In our tests we're allowed to write to the dalvik-cache, so it cannot be kSpeed. (cherry picked from commit 29d38e77c553c6cf71fc4dafe2d22b4e3f814872) Bug: 27689078 Change-Id: I6274188610f31dcd9d086fc080b2be93afae5a6b
|
29d38e77c553c6cf71fc4dafe2d22b4e3f814872 |
|
23-Mar-2016 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "Use compiler filter to determine oat file status."" This reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d. Add an option to change what OatFileManager considers up-to-date. In our tests we're allowed to write to the dalvik-cache, so it cannot be kSpeed. Bug: 27689078 Change-Id: I0c578705a9921114ed1fb00d360cc7448addc93a
|
845e5064580bd37ad5014f7aa0d078be7265464d |
|
23-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use compiler filter to determine oat file status." Bots are red. Tentative reverting as this is likely the offender. Bug: 27689078 This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931. Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
|
a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931 |
|
18-Mar-2016 |
Richard Uhler <ruhler@google.com> |
Use compiler filter to determine oat file status. Record the compiler filter in the oat header. Use that to determine when the oat file is up-to-date with respect to a target compiler filter level. New xxx-profile filter levels are added to specify if a profile should be used instead of testing for the presence of a profile file. This change should allow for different compiler-filters to be set for different package manager use cases. Bug: 27689078 Change-Id: Id6706d0ed91b45f307142692ea4316aa9713b023
|
5d950769b607b4f76413212db640a32d796911de |
|
07-Mar-2016 |
David Srbecky <dsrbecky@google.com> |
Symbolize native debug information for AOTed methods in boot.oat. The oatdump symbolizer will produce all DWARF information now, not just the symtab. This allows us to recover almost all native debug information after the fact, even for non-debuggable oat files. The main drawback is that non-debuggable oat files do not have enough stackmaps to provide reasonable line stepping experience. We might also be missing inlined methods from backtraces. Change-Id: I73ff6f43a3a0e5a0907af353f74f04e9b0129590
|
b077e15d2d11b7c81aacbcd4a46c2b1e9c9ba20d |
|
18-Feb-2016 |
Calin Juravle <calin@google.com> |
Update GetDexOptNeeded to handle different levels of compilation extract-only or profile-guide oat files are considered up to date from runtime perspective as they don't necessary need (re)compilation or relocation. However, it is useful to return a more refined code to the caller so that they can decide whether or not that's good enough. For example, the package manager might decide to still compile a previous extract-only and during profile guide compilation we should always recompile even if we have an oat file. Note that dex files compiled via ClassLoaders will still be fully compiled. This change introduces: - a new key in the oat header kCompilationType to capture what type of compilation has been made. Note tha the key might be missing. The distinction is needed in order to avoid recompilation of a previous fully compiled file during profile guide compilation analysis. - a new argument to GetDexOptNeeded which tells the runtime to cast its opinion whether or not the oat file is up to date relative to the desired target type of compilation. Bug: 27189430 (cherry picked from commit d91b8a2464b99625efe03caf7d30c8372bc378ed) Change-Id: I6ce450350f388451f7bab7d285c1846d539a4b13
|
d91b8a2464b99625efe03caf7d30c8372bc378ed |
|
18-Feb-2016 |
Calin Juravle <calin@google.com> |
Update GetDexOptNeeded to handle the different levels of compilation extract-only or profile-guide oat files are considered up to date from runtime perspective as they don't necessary need (re)compilation or relocation. However, it is useful to return a more refined code to the caller so that they can decide whether or not that's good enough. For example, the package manager might decide to still compile a previous extract-only and during profile guide compilation we should always recompile even if we have an oat file. Note that dex files compiled via ClassLoaders will still be fully compiled. This change introduces: - a new key in the oat header kCompilationType to capture what type of compilation has been made. Note tha the key might be missing. The distinction is needed in order to avoid recompilation of a previous fully compiled file during profile guide compilation analysis. - a new argument to GetDexOptNeeded which tells the runtime to cast its opinion whether or not the oat file is up to date relative to the desired target type of compilation. Bug: 27189430 Change-Id: Icd9794b1df6f6e21242e1dd1d5b5d064963dbbb7
|
ce4b0ba4d762775a86b3529ac76cb89199c0cc1e |
|
28-Jan-2016 |
David Brazdil <dbrazdil@google.com> |
Ignore image checksum for ExtractOnly oat files Oat files compiled with --compiler-filter=verify-at-runtime contain no compiled code and therefore are independent of the boot image. This patch stores an ExtractOnly flag in the oat header and skips the image checksum test if the flag is set, rendering the oat file up to date even after OTAs. Bug: 26813999 Change-Id: I25291d5b49d9e9d0018844e957a2dc88ef6bdc27
|
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
|
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
|
dcdc85bbd569f0ee66c331b4219c19304a616214 |
|
04-Dec-2015 |
Jeff Hao <jeffhao@google.com> |
Dex2oat support for multiple oat file and image file outputs. Multiple changes to dex2oat and the runtime to support a --multi-image option. This generates a separate oat file and image file output for each dex file input. Change-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129
|
49b0f45d5a9023653ab00c355735910aa51ee0ba |
|
10-Dec-2015 |
Vladimir Marko <vmarko@google.com> |
Refactor and clean up OatWriter and Dex2Oat. This is in preparation for early writing of dex files to oat file. Change-Id: I31195f3c94eb8ff676c600c60bd35ae531f457b4
|
a4f1220c1518074db18ca1044e9201492975750b |
|
06-Aug-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
Optimizing: Add direct calls to math intrinsics Support the double forms of: cos, sin, acos, asin, atan, atan2, cbrt, cosh, exp, expm1, hypot, log, log10, nextAfter, sinh, tan, tanh Add these entries to the vector addressed off the thread pointer. Call the libc routines directly, which means that we have to implement the native ABI, not the ART one. For x86_64, that includes saving XMM12-15 as the native ABI considers them caller-save, while the ART ABI considers them callee-save. We save them by marking them as used by the call to the math function. For x86, this is not an issue, as all the XMM registers are caller-save. Other architectures will call Java as before until they are ready to implement the new intrinsics. Bump the OAT version since we are incompatible with old boot.oat files. Change-Id: Ic6332c3555c09393a17d1ad4daf62932488722fb Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
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
|
524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02 |
|
16-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Remove ArtCode. - Instead use OatQuickMethodHeader. - Various cleanups now that we don't have all those ArtMethod -> ArtCode -> OatQuickMethodHeader indirections. As a consequence of this cleanup, exception handling got a bit faster. ParserCombinators benchmark (exception intensive) on x64: (lower is better) Before: ParserCombinators(RunTime): 1062500.0 us. After: ParserCombinators(RunTime): 833000.0 us. Change-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3
|
3cfa4d05afa76e19ca99ec964b535a15c73683f0 |
|
07-Oct-2015 |
Andreas Gampe <agampe@google.com> |
ART: Remove interpreter entrypoints These are no longer used as entrypoints. Make them proper runtime functions local to the interpreter. Bump oat version. Change-Id: Icdd92e20eafc5668b68eeebf55cf624560f462b3
|
99170c636dfae4908b102347cfe9f92bad1881cc |
|
06-Jul-2015 |
Mingyao Yang <mingyao@google.com> |
Deoptimization support in optimizing compiler for setting local values Due to compiler optimizations, we may not always be able to update the value of a local variable in a compiled frame (like a variable seen as constant by the compiler). To avoid that situation, we simply deoptimize compiled frames updated by the debugger so they are executed by the interpreter with the updated value. When the debugger attempts to set a local variable (actually a DEX register or a pair of registers) in a compiled frame, we allocate a ShadowFrame associated to that frame (using its frame id) and set the new value in that ShadowFrame. When we know we are about to continue the execution of the compiled frame, we deoptimize the stack using the preallocated ShadowFrame (instead of creating a new one). We initialize it with the current value of all DEX registers except the ones that have been set by the debugger. Therefore, the ShadowFrame represent the runtime context modified by the debugger. Bumps oat version to force recompilation. Bug: 19944235 Change-Id: I0ebe6241264f7a3be0f14ee4516c1f7436e04da6
|
501fd635a557645ab05f893c56e1f358e21bab82 |
|
11-Sep-2015 |
Andreas Gampe <agampe@google.com> |
ART: Fix Quick-style LR vs PC core spill mask bug It's always been a bug that Quick marked PC as spilled instead of LR. The root cause was a mutation of the spill mask at frame exit, when LR is being restored into PC to return. A local should have been used to keep the actual spill mask safe and sound. This has only worked because nobody ever uses LR, even after long jumps for exception dispatch. However, single-frame deoptimization needs this to work, and I'd rather fix this than being forced to have machine-specific fixups. Also fix in optimizing, and bump the oat version. Change-Id: Ib032a533408bf464097fc96dcbfc5b6a68bf59a1
|
0747466fca310eedea5fc49e37d54f240a0b3c0f |
|
25-Aug-2015 |
Sebastien Hertz <shertz@google.com> |
Revert "Revert "Fix deoptimization with pending exception"" This reverts commit 6e2d5747d00697a25251d25dd33b953e54709507. Fixes the deoptimization path from compiled code (generated by the Optimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode. This wrapper, called through the matching assembler stub art_quick_deoptimize_from_compiled_code, pushes the deoptimization context just before deoptimizing the stack. Bug: 23371176 Bug: 19944235 Change-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e
|
6e2d5747d00697a25251d25dd33b953e54709507 |
|
25-Aug-2015 |
Sebastien Hertz <shertz@google.com> |
Revert "Fix deoptimization with pending exception" This reverts commit 54b62480636ae846d705fc180c7bd6cd08ec1e42. This is causing test failures with Optimizing compiler. Bug: 23371176 Bug: 19944235 Change-Id: Ie3ffbcf2b6d2ca8bc93cb008a4e29a7567d04a7c
|
54b62480636ae846d705fc180c7bd6cd08ec1e42 |
|
20-Aug-2015 |
Sebastien Hertz <shertz@google.com> |
Fix deoptimization with pending exception When deoptimizing the stack, we set a fake exception in the current Thread* (see method Thread::GetDeoptimizationException). On the next exception check, the QuickExceptionHandler will deoptimize the stack. The issue is when we deoptimize while an exception is already pending in the current Thread*: setting the fake exception will clobber the pending exception which is not correct. This happens in the artQuickToInterpreterBridge when returning from the interpreter and we want to deoptimize the stack for debugging (like single-stepping). This CL saves the pending exception before asking for deoptimization. Then the exception is restored just before executing the deoptimized frames with the interpreter. Also cleans up the way we save deoptimization context (return value and pending exception). Bug: 23371176 Bug: 19944235 Change-Id: I7f4c8347b328817c452beda3399e210eba3a88a4
|
1aee900d5a0b3a8d78725a7551356bda0d8554e1 |
|
15-Jul-2015 |
Man Cao <manc@google.com> |
Add read barrier support to the entrypoints. Also remove "THIS_LOAD_REQUIRES_READ_BARRIER" since reading an ArtMethod* no longer needs read barrier. stub_test should also work with read barriers now. Change-Id: I3fba18042de2f867a18dbdc38519986212bd9769
|
fab6788358dfb64e5c370611ddbbbffab0ed0553 |
|
14-Jul-2015 |
Richard Uhler <ruhler@google.com> |
Fix FieldGap priority queue ordering bug. The priority queue for keeping track of gaps when packing fields in a class object had the order reversed, giving priority to smaller gaps instead of priority to larger gaps. This led to cases where fields were not placed in gaps when they could be. Bug: 22460222 Change-Id: I062e772e030c034adc227d75deed31c3322e203e
|
eac4424b3420c280f97ff2f815b5dedd8dac9801 |
|
29-Jun-2015 |
Yu Li <yu.l.li@intel.com> |
ART: JNI thread state transition optimization This patch improves the JNI performance by removing the explicit acquiring and releasing the mutator lock when a thread state transits between suspended and runnable states. The functions responsible for changing the state were found to be the costliest part of the JNI. Originally, a thread needs to acquire a shared mutator lock by a CAS instruction when entering the runnable state and also needs to release the lock by a CAS when entering the native state from runnable. This patch removes these CAS operations when a thread state transits between suspended and runnable. A thread in the runnable state is considered to have shared ownership of the mutator lock and therefore transitions in and out of the runnable state have associated implication on the mutator lock ownership. Meanwhile, a barrier is added to control suspending all threads from running. JNI transition overhead was reduced by 25% on IA platform and by 17% on ARM platform by this patch, while it has little impact on GC pause time (measured with "suspend all histogram"). Change-Id: Icee95d8ffff1bbfc95309a41cc48836536fec689 Signed-off-by: Yu, Li <yu.l.li@intel.com> Signed-off-by: Haitao, Feng <haitao.feng@intel.com> Signed-off-by: Lei, Li <lei.l.li@intel.com>
|
0b71357fb52be9bb06d35396a3042b4381b01041 |
|
17-Jun-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Thread-local mark stacks for the CC collector. Thread-local mark stacks are assigned to mutators where they push references in read barriers to reduce the (CAS) synchronization cost in a global mark stack/queue. We step through three mark stack modes (thread-local, shared, GC-exclusive) and use per-thread flags to disable/enable system weak accesses (only for the CC collector) instead of the existing global one to safely perform the marking phase. The reasons are 1) thread-local mark stacks for mutators need to be revoked using a checkpoint to avoid races (incorrectly leaving a reference on mark stacks) when terminating marking, and 2) we can’t use a checkpoint while system weak accesses are disabled (or a deadlock would happen). More details are described in the code comments. Performance improvements in Ritzperf EAAC: a ~2.8% improvement (13290->12918) in run time and a ~23% improvement (51.6s->39.8s) in the total GC time on N5. Bug: 12687968 Change-Id: I5d234d7e48bf115cd773d38bdb62ad24ce9116c7
|
7bf2b4f1d08050f80782217febac55c8cfc5e4ef |
|
08-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Remove interpreter entrypoint in ArtMethod."" The start of the interned strings in the image was not aligned properly, now that ArtMethods just need to be word aligned. This reverts commit 7070ccd8b6439477eafeea7ed3736645d78e003f. bug:22242193 Change-Id: I580c23310c33c239fe0e5d15c72f23a936f58ed1
|
7070ccd8b6439477eafeea7ed3736645d78e003f |
|
08-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Remove interpreter entrypoint in ArtMethod." Build failures on bots. Investigating. This reverts commit fa2c054b28d4b540c1b3651401a7a091282a015f. Change-Id: Id65b2009aa66cb291fb8c39758a58e0b0d22616c
|
fa2c054b28d4b540c1b3651401a7a091282a015f |
|
01-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Remove interpreter entrypoint in ArtMethod. Saves 4/8 bytes for each ArtMethod. Change-Id: I110ecdddf8516b0759a31fa157609643e6d60b15
|
a8b41003a717ecf399b890c18e9b0df49f55472f |
|
15-Jun-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix reporting initialized classes by CompilerDriver. Fix a bug where the CompilerDriver was erroneously reporting classes as initialized during AOT compilation when they were not guaranteed to be initialized at runtime. This fix prevents the Quick compiler from inlining calls to static methods in classes that are not guaranteed to be initialized, so that the runtime performs the initialization required for correctness. Bug: 21847756 (cherry picked from commit 07785bb98dc8bbe192970e0f4c2cafd338a8dc68) Change-Id: I60c7361cb6e8f51be20a3cbfcae19f3240bdfbed
|
07785bb98dc8bbe192970e0f4c2cafd338a8dc68 |
|
15-Jun-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix reporting initialized classes by CompilerDriver. Fix a bug where the CompilerDriver was erroneously reporting classes as initialized during AOT compilation when they were not guaranteed to be initialized at runtime. This fix prevents the Quick compiler from inlining calls to static methods in classes that are not guaranteed to be initialized, so that the runtime performs the initialization required for correctness. Bug: 21847756 Change-Id: I6fee5ef9c05c2e5190ab8a9fe61365d5119011c5
|
094ff2c0c1f736521c634d5f606e274cb6c55345 |
|
13-May-2015 |
Sebastien Hertz <shertz@google.com> |
Fix debuggable compiler flag detection for secondary dex files Compiles secondary dex files like the primary dex file: if it has been compiled with the --debuggable flag, compile secondary dex files with the --debuggable flag too. Therefore, dex files loaded at runtime are compiled the same way as dex files compiled at install time on the classpath (excluding the boot image that is not compiled debuggable). Also adds debuggable key in the oat header and bump the oat version. Bug: 20944228 (cherry picked from commit 0de1133ba600f299b3d67938f650720d9f859eb2) Change-Id: If6b2236e7fe547cc421f57b573043748018d3ae0
|
0de1133ba600f299b3d67938f650720d9f859eb2 |
|
13-May-2015 |
Sebastien Hertz <shertz@google.com> |
Fix debuggable compiler flag detection for secondary dex files Compiles secondary dex files like the primary dex file: if it has been compiled with the --debuggable flag, compile secondary dex files with the --debuggable flag too. Therefore, dex files loaded at runtime are compiled the same way as dex files compiled at install time on the classpath (excluding the boot image that is not compiled debuggable). Also adds debuggable key in the oat header and bump the oat version. Bug: 20944228 Change-Id: I59119f3468adb27ab1d6026f2cefbebbd814224c
|
c3cde2c00bcbe97c9b0c119919500fcbbe824baa |
|
10-Apr-2015 |
Sebastien Hertz <shertz@google.com> |
JDWP: properly combine location events This CL properly groups JDWP events at the same location: Breakpoint, Single-step, Method Entry and Method Exit. This is necessary if the debugger is not the only instrumentation listener. This matches the behavior of Dalvik, especially for methods with a single return instruction. The interpreter was tuned so the instrumentation callbacks were called to satisfy the debugger with the idea the debugger was the only instrumentation listener. This is not true when method tracing is enabled at the same time. When tracing is enabled, there is always a listener for MethodEntry and MethodExit events (art::Trace class). However, if the debugger is only listening to DexPcMoved event (to manage JDWP Breakpoint event), it will not be notified of this event. We now properly call all the instrumentation callbacks in the interpreter and move the logic specific to debugging into the class DebugInstrumentationListener. This allows to properly group JDWP location events together depending on the sequence of instrumentation callbacks. We add Thread::tls_32bit_sized_values::debug_method_entry_ flag to remember we just entered a method. It replaces the local variable notified_method_entry_event in the interpreter and simplifies the code. Bump oat version to force recompilation because the layout of the Thread class is modified. Bug: 19829329 Bug: 20205350 (cherry picked from commit 9d6bf69ad3012a9d843268fdd5325b6719b6d5f2) Change-Id: I204af9112e37d2eebc86661fb7c961a41c74e598
|
1cc71ebf333ca323ae0e130fefbce4593e385c10 |
|
07-May-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Insert a read barrier in the JNI bridge. Bug: 20720510 Bug: 12687968 Change-Id: Ia9edb614853bad45ec25d6e2142361a8bda1eccf
|
9d6bf69ad3012a9d843268fdd5325b6719b6d5f2 |
|
10-Apr-2015 |
Sebastien Hertz <shertz@google.com> |
JDWP: properly combine location events This CL properly groups JDWP events at the same location: Breakpoint, Single-step, Method Entry and Method Exit. This is necessary if the debugger is not the only instrumentation listener. This matches the behavior of Dalvik, especially for methods with a single return instruction. The interpreter was tuned so the instrumentation callbacks were called to satisfy the debugger with the idea the debugger was the only instrumentation listener. This is not true when method tracing is enabled at the same time. When tracing is enabled, there is always a listener for MethodEntry and MethodExit events (art::Trace class). However, if the debugger is only listening to DexPcMoved event (to manage JDWP Breakpoint event), it will not be notified of this event. We now properly call all the instrumentation callbacks in the interpreter and move the logic specific to debugging into the class DebugInstrumentationListener. This allows to properly group JDWP location events together depending on the sequence of instrumentation callbacks. We add Thread::tls_32bit_sized_values::debug_method_entry_ flag to remember we just entered a method. It replaces the local variable notified_method_entry_event in the interpreter and simplifies the code. Bump oat version to force recompilation because the layout of the Thread class is modified. Bug: 19829329 Change-Id: I204af9112e37d2eebc86661fb7c961a41c74e598
|
7848da48a0a4241dedc1cc83ac4931e61575eb92 |
|
09-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Store classpath information into oat file Store a "dependency list" of class-path dex-files into the key-value store of an oat file. The list is made up of dex locations and corresponding checksums. Add tests for encoding, decoding and checking the list. Bug: 19781184 Change-Id: Ie700dd37e6e086db599c95d329ac1f1d2ff0b758
|
758a801b66c134361a7b43f7e83f85d1fb800c4c |
|
04-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Enable Clang's -Wdeprecated Replace throw() with noexcept. Add default copy constructors and copy assignment constructors for cases with destructors, as the implicit definition is deprecated. Change-Id: Ice306a3f510b072b00bec4d4360f7c8055135c9d
|
1412dfa4adcd511902e510fa0c948b168ab5840c |
|
20-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Use optimizing for apps."" This reverts commit 706cae36209932f258b2fe2e396f31d2dd7d585e. Change-Id: I75cc6206ec17ade52a6db0737b62aa37ea2fa300
|
d7cbf8a6629942e7bd315ffae7e1c77b082f3e11 |
|
19-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Change RETURN_VOID_BARRIER to RETURN_VOID_NO_BARRIER We want to default to having a barrier for the case where we don't dex to dex. Bug: 19762303 Change-Id: I60348d89eaf0b9e1e480298afcecbb5f52e8661b
|
706cae36209932f258b2fe2e396f31d2dd7d585e |
|
19-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use optimizing for apps." This reverts commit f3251d12dfa387493dbde4c4148a633802f5f7e3. Change-Id: I32514e10ece55ee7bd7382ce2e956d57c9b621e5
|
f3251d12dfa387493dbde4c4148a633802f5f7e3 |
|
11-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Use optimizing for apps. Doing it in dex2oat, to avoid messing up with our current testing. Change-Id: I76c58f11f0d4756b894e797fc52712453e35adb1
|
1558b577907b613864e98f05862543557263e864 |
|
25-Feb-2015 |
Sebastien Hertz <shertz@google.com> |
JDWP: allocate DebugInvokeReq only when requested Only allocates thread-local DebugInvokeReq when the debugger requests a thread to invoke a method. The JDWP thread allocates that structure then attaches it to the target thread. When the thread is resumed, it executes the method. Once the invocation completes, the thread detaches the DebugInvokeReq, signals the JDWP thread then suspends. Finally, the JDWP thread wakes up, prepares the reply with the invoke result (or exception) and deallocates the DebugInvokeReq. Also ensures GC safety for object returned by the invoke. We add the object to the JDWP object registry right after the invoke. We now reference that object with a JDWP ObjectID instead of an Object* in the DebugInvokeReq struct. This prevent from accessing a stale reference if the GC runs and moves the Object*. This CL includes the following changes: - Move former DebugInvokeReq::ready flag to Thread::tls_32bit_sized_values::ready_for_debug_invoke. It's needed to know whether a thread has been suspended by an event, thus ready to invoke a method from the debugger. - Remove DebugInvokeReq::invoke_needed: we now test if we attached a DebugInvokeReq* to the thread. - Rename misleading FinishMethod function to RequestMethod. Bug: 19142632 Bug: 18166750 Change-Id: I351fb4eb94bfe69fcafb544d21d55ff35a033000
|
14691c5e786e8c2c5734f687e4c96217340771be |
|
05-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Compute the right catch location for the debugger. Also remove tls ThrowLocation, it is not needed anymore. Change-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9
|
7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0 |
|
26-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Change how we report exceptions to the debugger. This is only a refactoring/cleanup. Bug fixes with respect to catch location, and more cleanups will follow. Change-Id: I30d3c6260b0c8f8115a811621397225b88f2063a
|
1c80becf5406cd6d95dc24bf47a0c5a3809ea281 |
|
03-Feb-2015 |
Sebastien Hertz <shertz@google.com> |
Fix transaction aborting During compilation, a java.lang.InternalError is used to indicate that class initialization failed and the enclosing transaction should be aborted and the changes rolled back. However there is nothing preventing the code executed from a class initializer from catching that exception (like catching Throwable and ignore it). Therefore we may return from the class initializer with no pending exception, even if the transaction was aborted, and not rollback the changes properly. To fix this, we now rely on the new Transaction::aborted_ field to know whether a transaction aborted. When returning from the class initializer without pending exception, we now check wether we aborted the enclosing transaction. If that's the case, we set the status of the class to kStatusError and throw a new java.lang.InternalError with the original abort message. This CL also contains some cleanup: - Renames Transaction::Abort to Transaction::Rollback which is less ambiguous and more reflect what is done. - Moves the code throwing the java.lang.InternalError exception into the Transaction::ThrowInternalError method so we do not duplicate code. Now we may abort transaction more than once (because we may have caught the java.lang.InternalError then execute code causing new transaction abort), we only keep the first abort message to throw the exception. - Updates transaction_test with more cases and more checks. - Bumps oat version to force recompilation with this fix. Bug: 19202032 Change-Id: Iedc6969528a68bbdf3123146e990df4dbc57834b
|
3e6a3bf797e49b7f449256455c7e522e888687d8 |
|
19-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
ART: Change x86 long param ABI (Quick/JNI/Opt) Ensure that we don't pass a long parameter across the last register and the stack: skip the register and allocate it only on the stack. This was requested to simplify the optimizing compiler code generation for x86. Optimizing (Baseline) compiler support for x86 longs: - Remove QuickParameter from Location, as there are no longer any uses of it. Bump oat.h version because we changed an ABI again. I changed IsParamALong() to return false for argument 0 (this argument). I am not sure why it differed from all other tests. I have not tested on ARM. I followed Nicolas's suggestions for setting the value of kSplitPairAcrossRegisterAndStack for different architectures. Change-Id: I2f16b33c1dac58dd4f4f503e9c2309d845f5fb7a Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
966c3ae95d3c699ee9fbdbccc1acdaaf02325faf |
|
27-Jan-2015 |
Mark P Mendell <mark.p.mendell@intel.com> |
Revert "Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)"" This reverts commit 949c91fb91f40a4a80b2b492913cf8541008975e. This time, don't clobber EBX before saving it. Redo some of the macros to make register usage explicit. Change-Id: I8db8662877cd006816e16a28f42444ab7c36bfef
|
949c91fb91f40a4a80b2b492913cf8541008975e |
|
27-Jan-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)" And the 3 Mac build fixes. Fix conflicts in context_x86.* . This reverts commits 3d2c8e74c27efee58e24ec31441124f3f21384b9 , 34eda1dd66b92a361797c63d57fa19e83c08a1b4 , f601d1954348b71186fa160a0ae6a1f4f1c5aee6 , bc503348a1da573488503cc2819c9e30807bea31 . Bug: 19150481 Change-Id: I6650ee30a7d261159380fe2119e14379e4dc9970
|
3d2c8e74c27efee58e24ec31441124f3f21384b9 |
|
13-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
ART: Implement X86 hard float (Quick/JNI/Baseline) Use XMM0-XMM3 as parameter registers for float/double on X86. X86_64 already uses XMM0-XMM7 for parameters. Change the 'hidden' argument register from XMM0 to XMM7 to avoid a conflict. Add support for FPR save/restore in runtime/arch/x86. Minimal support for Optimizing baseline compiler. Bump the version in runtime/oat.h because this is an ABI change. Change-Id: Ia6fe150e8488b9e582b0178c0dda65fc81d5a8ba Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
5c1960762510a916ffdc43331e5f43b37e034b39 |
|
29-Dec-2014 |
Chenfu Bao <emailwrong@gmail.com> |
Update oat version to 053. Oat version in class OatHeader had increased to 052, but commit 2bcb3b228bc418bcc7fdc3d58d0a0da422a0b6d5 (changeID I8cef1c6cc9cb2faa052167a3437e81b4c2cbefa7) changed it back to 045. Change-Id: I5bf7b995c9d99a536f6356d9fd5b5e746a933f2e Signed-off-by: Chenfu Bao <emailwrong@gmail.com>
|
2bcb3b228bc418bcc7fdc3d58d0a0da422a0b6d5 |
|
13-Dec-2014 |
Andreas Gampe <agampe@google.com> |
ART: Show invalid oat header cause in error message Include the IsValid failure cause in the error message of opening an oat file. Make oat magic and version constexpr so we can have static_asserts over the lengths. Bug: 17187621 Change-Id: I8cef1c6cc9cb2faa052167a3437e81b4c2cbefa7
|
956af0f0cb05422e38c1d22cbef309d16b8a1a12 |
|
11-Dec-2014 |
Elliott Hughes <enh@google.com> |
Remove portable. Change-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc
|
957ca1cd025104fccb0b08928f955f9bdb4ab91c |
|
22-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Delete ArtMethod gc_map_ field Moved the gc_map field from OatMethod to OatQuickMethodHeader. Deleted the ArtMethod gc_map_ field. Bug: 17643507 Change-Id: Ifa0470c3e4c2f8a319744464d94c6838b76b3d48 (cherry picked from commit 807140048f82a2b87ee5bcf337f23b6a3d1d5269)
|
c6fc909c6b42b4c365b1e7f86639ee4b360249fa |
|
22-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Delete ArtMethod gc_map_ field Moved the gc_map field from OatMethod to OatQuickMethodHeader. Deleted the ArtMethod gc_map_ field. Bug: 17643507 Change-Id: Ifa0470c3e4c2f8a319744464d94c6838b76b3d48
|
d582fa4ea62083a7598dded5b82dc2198b3daac7 |
|
06-Nov-2014 |
Ian Rogers <irogers@google.com> |
Instruction set features for ARM64, MIPS and X86. Also, refactor how feature strings are handled so they are additive or subtractive. Make MIPS have features for FPU 32-bit and MIPS v2. Use in the quick compiler rather than #ifdefs that wouldn't have worked in cross-compilation. Add SIMD features for x86/x86-64 proposed in: https://android-review.googlesource.com/#/c/112370/ Bug: 18056890 Change-Id: Ic88ff84a714926bd277beb74a430c5c7d5ed7666
|
48447025389cd67605041a28d4ded1528381bc4e |
|
22-Oct-2014 |
Igor Murashkin <iam@google.com> |
ART: Add support for patching and loading OAT files compiled with PIC * Images (.art) compiled with pic now have a new field added. * isDexOptNeeded will now skip patch-ing for apps compiled PIC * First-boot patching now only copies boot.art, boot.oat is linked As a result, all system preopted dex files (with --compile-pic) no longer take up any space in /data/dalvik-cache/<isa>. (cherry-picked from AOSP master 46774767fcf7780d1455e755729198648d08742e) Conflicts (from aosp master): compiler/image_test.cc compiler/image_writer.cc compiler/image_writer.h compiler/oat_test.cc dex2oat/dex2oat.cc oatdump/oatdump.cc runtime/elf_file.cc runtime/elf_file.h runtime/elf_file_impl.h runtime/oat_file.cc runtime/oat_file.h Bug: 18035729 (cherry picked from commit 90ca5c0301651101de0e363842e5d08ae65233f7) Change-Id: I8d99f95cc3d1fa221fc530ebb1fcc4b3263c183d
|
998ee7d0f62a1ee7efaaad49e728d19c38b4c9c3 |
|
23-Oct-2014 |
Andreas Gampe <agampe@google.com> |
ART: Add pic flag to oat header store Add the compile-time PIC flag to the oat-header key-value store. Ignore image offset and patch delta when loading PIC oat files. (cherry-picked from AOSP master 7ba649636c4475c3992fa15a57acd2546d69ff38) Bug: 18035729 Signed-off-by: Igor Murashkin <iam@google.com> (cherry picked from commit d7392faea80acb5d73a027bb384e3222bc2c2e43) Change-Id: If5f6cf13f4c7ecb6038415e68fbb0ae9cee5ec60
|
90ca5c0301651101de0e363842e5d08ae65233f7 |
|
22-Oct-2014 |
Igor Murashkin <iam@google.com> |
ART: Add support for patching and loading OAT files compiled with PIC * Images (.art) compiled with pic now have a new field added. * isDexOptNeeded will now skip patch-ing for apps compiled PIC * First-boot patching now only copies boot.art, boot.oat is linked As a result, all system preopted dex files (with --compile-pic) no longer take up any space in /data/dalvik-cache/<isa>. (cherry-picked from AOSP master 46774767fcf7780d1455e755729198648d08742e) Conflicts (from aosp master): compiler/image_test.cc compiler/image_writer.cc compiler/image_writer.h compiler/oat_test.cc dex2oat/dex2oat.cc oatdump/oatdump.cc runtime/elf_file.cc runtime/elf_file.h runtime/elf_file_impl.h runtime/oat_file.cc runtime/oat_file.h Bug: 18035729 Change-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62
|
d7392faea80acb5d73a027bb384e3222bc2c2e43 |
|
23-Oct-2014 |
Andreas Gampe <agampe@google.com> |
ART: Add pic flag to oat header store Add the compile-time PIC flag to the oat-header key-value store. Ignore image offset and patch delta when loading PIC oat files. (cherry-picked from AOSP master 7ba649636c4475c3992fa15a57acd2546d69ff38) Bug: 18035729 Signed-off-by: Igor Murashkin <iam@google.com> Change-Id: Ie1f1ef37125386a968228033d1e2bec565315510
|
46774767fcf7780d1455e755729198648d08742e |
|
22-Oct-2014 |
Igor Murashkin <iam@google.com> |
ART: Add support for patching and loading OAT files compiled with PIC * Images (.art) compiled with pic now have a new field added. * isDexOptNeeded will now skip patch-ing for apps compiled PIC * First-boot patching now only copies boot.art, boot.oat is linked As a result, all system preopted dex files (with --compile-pic) no longer take up any space in /data/dalvik-cache/<isa>. Bug: 18035729 Change-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62
|
7ba649636c4475c3992fa15a57acd2546d69ff38 |
|
23-Oct-2014 |
Andreas Gampe <agampe@google.com> |
ART: Add pic flag to oat header store Add the compile-time PIC flag to the oat-header key-value store. Ignore image offset and patch delta when loading PIC oat files. Change-Id: Ie1f1ef37125386a968228033d1e2bec565315510
|
677cd61ad05d993c4d3b22656675874f06d6aabc |
|
15-Oct-2014 |
Ian Rogers <irogers@google.com> |
Make ART compile with GCC -O0 again. Tidy up InstructionSetFeatures so that it has a type hierarchy dependent on architecture. Add to instruction_set_test to warn when InstructionSetFeatures don't agree with ones from system properties, AT_HWCAP and /proc/cpuinfo. Clean-up class linker entry point logic to not return entry points but to test whether the passed code is the particular entrypoint. This works around image trampolines that replicate entrypoints. Bug: 17993736 (cherry picked from commit 6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3) Change-Id: I3e7595f437db4828072589d475a5453b7f31003e
|
6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3 |
|
15-Oct-2014 |
Ian Rogers <irogers@google.com> |
Make ART compile with GCC -O0 again. Tidy up InstructionSetFeatures so that it has a type hierarchy dependent on architecture. Add to instruction_set_test to warn when InstructionSetFeatures don't agree with ones from system properties, AT_HWCAP and /proc/cpuinfo. Clean-up class linker entry point logic to not return entry points but to test whether the passed code is the particular entrypoint. This works around image trampolines that replicate entrypoints. Bug: 17993736 Change-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23
|
7b078e8c04f3e1451dbdd18543c8b9692b5b067e |
|
10-Sep-2014 |
Ian Rogers <irogers@google.com> |
Compile time performance improvements focusing on interpret-only. Reduce virtual method dispatch in the method verifier and make more code inline-able. Add a StringPiece with const char* equality operator to avoid redundant StringPieces and strlens. Remove back link from register line to verifier and pass as argument to reduce size of RegisterLine. Remove instruction length from instruction flags and compute from the instruction, again to reduce size. Add suspend checks to resolve and verify to allow for more easy monitor inflation and reduce contention on Locks::thread_list_suspend_thread_lock_. Change ThrowEarlierClassFailure to throw pre-allocated exception. Avoid calls to Thread::Current() by passing self. Template specialize IsValidClassName. Make ANR reporting with SIGQUIT run using checkpoints rather than suspending all threads. This makes the stack/lock analysis less lock error prone. Extra Barrier assertions and condition variable time out is now returned as a boolean both from Barrier and ConditionVariable::Wait. 2 threaded host x86-64 interpret-only numbers from 341 samples: Before change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms After change: Avg 139.163% 99% CI 3.027ms to 838.257ms Reduction in average compile time after change is 20.9%. Slow-down without change is 26.5%. Bug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable could return unresolved type when class loading is disabled. Bug: 17398101 Change-Id: Id59ce3cc520701c6ecf612f7152498107bc40684
|
a59dd80f9f48cb750d329d4d4af2d99d72b484d1 |
|
03-Jul-2014 |
Alex Light <allight@google.com> |
Runtime can now be set to require relocation Add a pair of runtime flags -Xrelocate and -Xnorelocate that can force the runtime to require that all files that are run are relocated, to prevent attacks based on the known art base address. Add support for running patchoat on oat files compiled without an image. Change run-test to have new --prebuild and --relocate flags. Bug: 15358152 Change-Id: I91166c62dd1ab80e5cbcb7883a2cd0d56afca32d
|
22f8e5c82d12951be38cd893426e13bee33fd69d |
|
09-Jul-2014 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "ART: Key-Value Store in Oat header"" This reverts commit 452bee5da9811f62123978e142bd67b385e9ff82. Heap-allocate a couple of objects in dex2oat to avoid large frame size. Includes fixes originally in 100596 and 100605. Change-Id: Id51a44198c973c91f0a3f87b9d992a5dc110c6f8
|
c87d27b25994da8670d82a8f7bad6327b693bfff |
|
27-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Key-Value Store in Oat header Allows the storage of string-string pairs in the oat header. The first significant use of this is storing the implicit-check flags, so that an oat file can be rejected if it doesn't agree with the current runtime. Bump the oat version as the header structure changes. Change-Id: I15a1c16886e6b8fa7b881c918c19c1efa5c7c00f
|
452bee5da9811f62123978e142bd67b385e9ff82 |
|
09-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "ART: Key-Value Store in Oat header" Broke arm64 build. This reverts commit c87d27b25994da8670d82a8f7bad6327b693bfff. Change-Id: I4c2ade295d2b5aa77fc3ad810e0e859629a5bf09
|
7624d25dad2d1ba25969ae704fccf68649103ae5 |
|
02-May-2014 |
Vladimir Marko <vmarko@google.com> |
Move quick frame info to OatQuickMethodHeader. Rename OatMethodHeader to OatQuickMethodHeader, move frame info from OatMethodOffsets to OatQuickMethodHeader. Retrieve the info from other places for non-quick methods (portable compiled bytecode or jni stub, generic jni, runtime, abstract and proxy). This change has a libcore/ companion CL "Remove ArtMethod's quick fields for frame size and spills." https://android-review.googlesource.com/94164 Bug: 11767815 Change-Id: I0e31a7875d76732e1ec479c86b9b5ca01203507f
|
8a630577ed2d9e9571c3434c505e5de223b23c07 |
|
09-Apr-2014 |
Vladimir Marko <vmarko@google.com> |
Move mapping table and vmap table offsets to OatMethodHeader. This change has a libcore/ companion CL "Remove ArtMethod's quick fields mapping table and vmap table." https://android-review.googlesource.com/91254 Bug: 11767815 Change-Id: I46ce2067e1ecd915da3890606498e31ffc332813
|
96c6ab93336b972a38bd2448bcccf19188b8389b |
|
08-Apr-2014 |
Vladimir Marko <vmarko@google.com> |
Separate maps from code in oat file. Write all GC maps first, then all mapping tables and then all vmap tables and only then align the offset to page size and write all method code chunks with headers. Bug: 11767815 Change-Id: Ic83555c8303c5be119afc43e95e58c0a32ff2a4f
|
2da882315a61072664f7ce3c212307342e907207 |
|
27-Feb-2014 |
Andreas Gampe <agampe@google.com> |
Initial changes towards Generic JNI option Some initial changes that lead to an UNIMPLEMENTED. Works by not compiling for JNI right now and tracking native methods which have neither quick nor portable code. Uses new trampoline. Change-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e
|
7020278bce98a0735dc6abcbd33bdf1ed2634f1d |
|
23-Oct-2013 |
Dave Allison <dallison@google.com> |
Support hardware divide instruction Bug: 11299025 Uses sdiv for division and a combo of sdiv, mul and sub for modulus. Only does this on processors that are capable of the sdiv instruction, as determined by the build system. Also provides a command line arg --instruction-set-features= to allow cross compilation. Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults it to something obtained from the target architecture. Provides a GetInstructionSetFeatures() function on CompilerDriver that can be queried for various features. The only feature supported right now is hasDivideInstruction(). Also adds a few more instructions to the ARM disassembler b/11535253 is an addition to this CL to be done later. Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
|
88474b416eb257078e590bf9bc7957cee604a186 |
|
24-Oct-2013 |
Jeff Hao <jeffhao@google.com> |
Implement Interface Method Tables (IMT). Change-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39
|
ba150c37d582eeeb8c11ba5245edc281cf31793c |
|
28-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Omit OatMethodOffsets for classes without compiled code Change-Id: If0d290f4aebc778ff12d8fed017c270ad2ac3220
|
7c3d13aebdd8611cae58a1048bffb13cbdc465cb |
|
05-Sep-2013 |
Brian Carlstrom <bdc@google.com> |
Use file magic to determine file type, not file extension. Bug: 10614658 Change-Id: I9156dfca78ac8cd1c62fb258825cc791629270a4
|
468532ea115657709bc32ee498e701a4c71762d4 |
|
05-Aug-2013 |
Ian Rogers <irogers@google.com> |
Entry point clean up. Create set of entry points needed for image methods to avoid fix-up at load time: - interpreter - bridge to interpreter, bridge to compiled code - jni - dlsym lookup - quick - resolution and bridge to interpreter - portable - resolution and bridge to interpreter Fix JNI work around to use JNI work around argument rewriting code that'd been accidentally disabled. Remove abstact method error stub, use interpreter bridge instead. Consolidate trampoline (previously stub) generation in generic helper. Simplify trampolines to jump directly into assembly code, keeps stack crawlable. Dex: replace use of int with ThreadOffset for values that are thread offsets. Tidy entry point routines between interpreter, jni, quick and portable. Change-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e (cherry picked from commit 848871b4d8481229c32e0d048a9856e5a9a17ef9)
|
848871b4d8481229c32e0d048a9856e5a9a17ef9 |
|
05-Aug-2013 |
Ian Rogers <irogers@google.com> |
Entry point clean up. Create set of entry points needed for image methods to avoid fix-up at load time: - interpreter - bridge to interpreter, bridge to compiled code - jni - dlsym lookup - quick - resolution and bridge to interpreter - portable - resolution and bridge to interpreter Fix JNI work around to use JNI work around argument rewriting code that'd been accidentally disabled. Remove abstact method error stub, use interpreter bridge instead. Consolidate trampoline (previously stub) generation in generic helper. Simplify trampolines to jump directly into assembly code, keeps stack crawlable. Dex: replace use of int with ThreadOffset for values that are thread offsets. Tidy entry point routines between interpreter, jni, quick and portable. Change-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e
|
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
|