4cdf4508903d13fd0f9fba5690aeac1b368db81b |
|
25-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Fix oatwriter code deduping Now that the GC maps are part of the oat method header they need to be checked in CodeOffsetsKeyComparator. Bug: 18523556 Change-Id: I539a6e7216166342b22515c1e2cf831dad32e41e
|
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
|
a8d6729501595d82004ec0d0e334d1ff33159d63 |
|
17-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Fix ordering of fields with the same name. While the Java language doesn't allow multiple fields with the same name in a single class (excluding fields from super classes), the bytecode specification permits it and tools such as proguard actually generate them. Define the order of these fields by their dex file index and relax the check of field ordering to permit identical names. Bug: 18211592 (cherry picked from commit 7a7c1db21782fb922d3ffc5c576117812624ea58) Change-Id: I8547eeac890b7483c8925367a85382197be9ea7a
|
ca45725c80d2836f3f7441b27ff6e7c2f6421fc7 |
|
12-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Fix LinkFieldsComparator. Define order for primitive types with the same sizes. Previously, the comparator would consider the fields equal so the order would depend on std::sort() implementation. Changing the STL implementation could silently change the field offsets. (And, unlike std::stable_sort(), the std::sort() doesn't even need to be deterministic.) (cherry picked from commit d577748c041aa6df599218f3cb31697ecf032730) Change-Id: I9b769d023864aa36c52918c7c3dd11c0f6b8f40e
|
b34674d246c7d678e5796d561af00d51ad43996c |
|
17-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Fix ordering of fields with the same name. While the Java language doesn't allow multiple fields with the same name in a single class (excluding fields from super classes), the bytecode specification permits it and tools such as proguard actually generate them. Define the order of these fields by their dex file index and relax the check of field ordering to permit identical names. Bug: 18211592 (cherry picked from commit 7a7c1db21782fb922d3ffc5c576117812624ea58) Change-Id: I8547eeac890b7483c8925367a85382197be9ea7a
|
938f966d399821d29075198cac4331d9a0c92bea |
|
12-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Fix LinkFieldsComparator. Define order for primitive types with the same sizes. Previously, the comparator would consider the fields equal so the order would depend on std::sort() implementation. Changing the STL implementation could silently change the field offsets. (And, unlike std::stable_sort(), the std::sort() doesn't even need to be deterministic.) (cherry picked from commit d577748c041aa6df599218f3cb31697ecf032730) Change-Id: I9b769d023864aa36c52918c7c3dd11c0f6b8f40e
|
a477bbb62ba197815d840d07708526a2bb9c8b4d |
|
14-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Bump oat version. Need to rebuild images after commit bfa3ed0ad988e1da13626ddbaf6dcae0c58ea79e Bug: 18211592 Change-Id: I10c7353ba0fc216ff73c3ff16480c7fe9da13f2d
|
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
|
f2d556401ec1d82fec31c0b29d712de18d838282 |
|
08-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Delete unused imtable field Bug: 17643507 Change-Id: I1fc7ca2d3bdf1810bcc3b46f867b68a4a6d28ed3
|
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
|
03c9785a8a6d712775cf406c4371d0227c44148f |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Reduce stack usage for overflow checks"" Fixes stack protection issue. Fixes mac build issue. This reverts commit 83b1940e6482b9d8feba5c492507735686650ea5. Change-Id: I7ba17252882b23a740bcda2ea94aacf398255406
|
ab9a0dbf3b63d517da5278b8298e6cd316e09f68 |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Reduce stack usage for overflow checks" This reverts commit 63c051a540e6dfc806f656b88ac3a63e99395429. Change-Id: I282a048994fcd130fe73842b16c21680053c592f
|
63c051a540e6dfc806f656b88ac3a63e99395429 |
|
26-Jul-2014 |
Dave Allison <dallison@google.com> |
Reduce stack usage for overflow checks This reduces the stack space reserved for overflow checks to 12K, split into an 8K gap and a 4K protected region. GC needs over 8K when running in a stack overflow situation. Also prevents signal runaway by detecting a signal inside code that resulted from a signal handler invokation. And adds a max signal count to the SignalTest to prevent it running forever. Also reduces the number of iterations for the InterfaceTest as this was taking (almost) forever with the --trace option on run-test. Bug: 15435566 Change-Id: Id4fd46f22d52d42a9eb431ca07948673e8fda694 Conflicts: compiler/optimizing/code_generator_x86_64.cc runtime/arch/x86/fault_handler_x86.cc runtime/arch/x86_64/quick_entrypoints_x86_64.S
|
83b1940e6482b9d8feba5c492507735686650ea5 |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Reduce stack usage for overflow checks" This reverts commit 63c051a540e6dfc806f656b88ac3a63e99395429. Change-Id: I282a048994fcd130fe73842b16c21680053c592f
|
320299b32285fe638ab46036759e374c905112ce |
|
29-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Bump oat version for embedded vtable Change-Id: Ieb84a8d9486a3d99d48e8395ef3634a365142f2f
|
eaa6da1b8381bc7cb9076e90b7ec06812b9d0d2d |
|
29-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Bump oat version for embedded vtable Change-Id: Ieb84a8d9486a3d99d48e8395ef3634a365142f2f
|
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
|
4e99b3d8955131f3fc71aa113f0fa71f0092cb6f |
|
24-Jun-2014 |
Sebastien Hertz <shertz@google.com> |
Add missing class initialization during compilation and tests Adds missing class initialization during compilation and tests, especially java.lang.Class. Otherwise, we'd be able to execute code while the referring class is not initialized or initializing. Also adds mirror::Class::AssertInitializedOrInitializingInThread method to check class initialization when entering the interpreter: the called method's declaring class must either be initialized or be initializing by the current thread (other threads must be waiting for the class initialization to complete holding its lock). Note we only do this check in debug build. Bump oat version to force compilation. Bug: 15899971 Change-Id: I9a4edd3739a3ca4cf1c4929dcbb44cdf7a1ca1fe
|
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
|
86797a791d692f81def5c1b5f0918992c49ed122 |
|
19-Jun-2014 |
Serban Constantinescu <serban.constantinescu@arm.com> |
AArch64: Add memcmp16() for Arm64; ensure xSELF not clobbered This patch modifies memcmp() to memcmp16(). Please note that this implementation of memcmp16() is based on the bionic's memcmp(). However, to reflect a recent specification change, the file has been modified to respect the new String.compareTo() behavior. A test for memcmp16() has been added. The string_compareto test in stub_test has been changed to invoke __memcmp16 in assembly stubs. Add artIsAssignableFromCode to the list of native downcalls to store and reload x18. Remove CheckSuspendFromCode, as it is unused. Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com> Change-Id: Ie0b5425ecfb62906d29a5d02e84c7e07ffb34a11
|
4d0589c90971e19c25894414ae7da579269e1fe2 |
|
11-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Move __memcmp16 from Bionic to ART Handle __memcmp16 / MemCmp16 in ART. Import assembly implementations for arm and mips from Bionic. Use a generic C version for all other platforms. Removes the memcmp16 quick entrypoint, as it is never used. Bump the oat version and update thread.cc and checks to reflect the structural change. Change-Id: I54a5a1da2a0a43ef271c8aeda0bf2276b8b11ac6
|
9f1020305292a21fd14a402b189c765a125226ab |
|
23-May-2014 |
Sebastien Hertz <shertz@google.com> |
Fix exception reporting from interpreter To comply with JDWP exception report rules, we must report an exception at the location of the throw (or the first instruction encountered after a native call). To do this, we use the CatchLocationFinder visitor to look for a catch handler until we reach a native frame or the top frame. Because interpreter handles pending exception on a method-by-method basis, we need a flag to remember we already reported the exception and avoid reporting it multiple times when unwinding methods. The drawback is we need to maintain the state of this flag. We clear it when the exception is cleared. In the case we temporarily clear the exception (when finding a catch handler for instance), we restore the flag to its previous value at the same time we restore the pending exception. Bump oat version to force recompilation because we modify Thread offsets. Bug: 14402770 Change-Id: Ic059c58f80b2023b118038301f8f0a24f1e18241
|
2a0d4ec9532a89abe722e5babdfbb846ffaad721 |
|
03-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix forbidden thread state change in interpreter While loading a type for assignability, it might happen that it's not available yet locally and must be resolved. Formerly, we disallowed a state change to ensure no GC taking place while a new shadow frame has not been pushed on the stack yet. As a fix, allow a "shadow frame under construction" in the thread, which is visited during GC. Change-Id: I973487a46b0e9e21fd6d49099d713b58f06d3b45
|
e1d07816510e0f6c9969cddd7d7b683698f93b26 |
|
21-May-2014 |
Sebastien Hertz <shertz@google.com> |
Fix interpreter entrypoint initialization in the image Sets the interpreter_to_interpreter_bridge entrypoint if the method is not compiled. This avoids the slow path through Quick compiler's world.i Bumps oat version to force recompilation of image. Bug: 15098601 Change-Id: I08f7dfce26ecc5ca88bdf21187b2909c0c069596
|
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 |
|
03-Jun-2014 |
Tim Murray <timmurray@google.com> |
DO NOT MERGE Merge ART from AOSP to lmp-preview-dev. Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
|
c0cf944b21ff07963660b780fd5d3701cc9215ab |
|
30-May-2014 |
Dave Allison <dallison@google.com> |
Switch on implicit checks and bump oat version to force recompilation This switches on the compiler's implicit null pointer and stack overflow checks. These use signals Change-Id: I7b536784bbca5f07e30379881a1eea6ab4c258ac
|
055c29fd0f752328981f1b7ccadb1862eecedd40 |
|
27-May-2014 |
buzbee <buzbee@google.com> |
Art compiler: remove unnecessary sqrt call For reasons lost in the mists of time, the Dalvik JIT tested the results of an inlined sqrt for NaN on Arm targets, and then called an out-of-line routine to recompute if true. The Quick compiler inherited this behavior. It is not necessary, and the CL purges it (along with the out-of-line sqrt entrypoint). Change-Id: I8c8fa6feacf9b7c3b9e190dfc6f728932fd948c6
|
9e36931cc79ca665908db9575126881d1cfdea5a |
|
21-May-2014 |
Chao-ying Fu <chao-ying.fu@intel.com> |
Move modify_ldt_lock into global lock order. Mutex modify_ldt_lock was being removed during runtime shutdown while daemons thread may still detach. Avoid this by placing in global lock order. This fixes cts dalvik vm-tests-tf that hang on some x86 devices. By irogers: also, tidy global locks to agree with enum constants and add extra verification that the global annotalysis order agrees with the LockLevel order. Bumped the oat version and moved the locks as LockLevel additions previously caused entrypoints to be moved. Make unattached lock not handle the default mutex level case by moving the allocated thread ids lock into the global order. Change-Id: I9d03f19d44ea254accf0ceae8022563c77f7a02f Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
|
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
|
5221bc717813a7f8826b367a1a2514ef355ef6aa |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Bump oat version to force recompile. Bug: 14661374 Change-Id: I9492419c848a198909e0085358a45d7f4146630d
|
f36d98500ed81d76c6b575185f7fe43c508640cb |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Bump oat version to force recompile. Bug: 14661374 Change-Id: I9492419c848a198909e0085358a45d7f4146630d
|
354aca961648aebacb173efb2a4c76ecaf0265fd |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Bump oat version again to force recompile Bug: 4674743 Change-Id: I8ba0b6935f071420af03765f89cf32b7d4439376
|
09bc9d27485bf78536590ce4e32ac06f6d7c535b |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Bump oat version again to force recompile Bug: 4674743 (cherry picked from commit 36a69e7d133d4d056e00962f275ee5b4959f9e93) Change-Id: I65f30a86abeca58bed74f4bd0f6e1e32c6f3dec8
|
36a69e7d133d4d056e00962f275ee5b4959f9e93 |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Bump oat version again to force recompile Bug: 4674743 Change-Id: I8ba0b6935f071420af03765f89cf32b7d4439376
|
73ae310e5d6616aa42de561f344de58bd90265c8 |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Up OAT version to force recompile Bug: 14638347 Change-Id: I19dbd779540d11950d77497df396adc5b3657274 Conflicts: runtime/oat.cc
|
ffcf226afd01dff868c0c919f0168d1ebf9ed104 |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Up OAT version to force recompile Bug: 14638347 (cherry picked from commit f582426e819830242706308601610132fca602ce) Change-Id: Ic86c1f0affa109b80bc1e8e85ee353db1c087bbd
|
f582426e819830242706308601610132fca602ce |
|
09-May-2014 |
Dave Allison <dallison@google.com> |
Up OAT version to force recompile Bug: 14638347 Change-Id: I19dbd779540d11950d77497df396adc5b3657274
|
2d1ab0a7bf7639d1af0c453415f9625110c34f6d |
|
09-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Use WaitHoldingLocks in ReferenceProcessor::GetReferent. The caller may be holding other locks, so we must use this or else we get bad mutexes held errors. Also added a lock level for the reference processor. Change-Id: I364a303a4106982bd9bfaac5b116cea1638ea6d3
|
8668c3cbdcf9471bd97e0da68a240051f2973074 |
|
25-Apr-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add finalizer references from the entrypoints. We now have an invariant where we never allocate finalizable objects with the Initialized or Resolved entrypoints. This speeds up allocation by only doing the check in the slow path. Before: MemAllocTest: 3625, 3707, 3641 EvaluateAndApplyChanges: 3448, 3421, 3413 After: MemAllocTest: 3164, 3109, 3135 EvaluateAndApplyChanges: 3272, 3299, 3353 Bug: 14078487 Change-Id: I2b0534af3e7c75ea5e5257cf3647744f7abfb74e
|
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
|
d6ed642458c8820e1beca72f3d7b5f0be4a4b64b |
|
10-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Revert "Use trampolines for calls to helpers""" This reverts commit f9487c039efb4112616d438593a2ab02792e0304. Change-Id: Id48a4aae4ecce73db468587967968a3f7618b700
|
f9487c039efb4112616d438593a2ab02792e0304 |
|
09-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Use trampolines for calls to helpers"" This reverts commit 081f73e888b3c246cf7635db37b7f1105cf1a2ff. Change-Id: Ibd777f8ce73cf8ed6c4cb81d50bf6437ac28cb61 Conflicts: compiler/dex/quick/mir_to_lir.h
|
f6b65c123dafad62004a93a43eb82de00ddc8214 |
|
02-Apr-2014 |
Dave Allison <dallison@google.com> |
Add r4 as promotable register if implicit suspend checks If we are doing implicit suspend checks we should be able to use r4 as a target for promotion. Also bump OAT version Change-Id: Ia27d14ece3b3259dbb74bcf89feaa9da2cda6db8
|
60d7a65f7fb60f502160a2e479e86014c7787553 |
|
14-Mar-2014 |
Brian Carlstrom <bdc@google.com> |
Fix stack overflow for mutual recursion. There was an error where we would have a pc that was in the method which generated the stack overflow. This didn't work however because the stack overflow check was before we stored the method in the stack. The result was that the stack overflow handler had a PC which wasnt necessarily in the method at the top of the stack. This is now fixed by always restoring the link register before branching to the throw entrypoint. Slight code size regression on ARM/Mips (unmeasured). Regression on ARM is 4 bytes of code per stack overflow check. Some of this regression is mitigated by having one less GC safepoint. Also adds test case for StackOverflowError issue (from bdc). Tests passing: ARM, X86, Mips Phone booting: ARM Bug: https://code.google.com/p/android/issues/detail?id=66411 Bug: 12967914 Change-Id: I96fe667799458b58d1f86671e051968f7be78d5d (cherry-picked from c0f96d03a1855fda7d94332331b94860404874dd)
|
c0f96d03a1855fda7d94332331b94860404874dd |
|
14-Mar-2014 |
Brian Carlstrom <bdc@google.com> |
Fix stack overflow for mutual recursion. There was an error where we would have a pc that was in the method which generated the stack overflow. This didn't work however because the stack overflow check was before we stored the method in the stack. The result was that the stack overflow handler had a PC which wasnt necessarily in the method at the top of the stack. This is now fixed by always restoring the link register before branching to the throw entrypoint. Slight code size regression on ARM/Mips (unmeasured). Regression on ARM is 4 bytes of code per stack overflow check. Some of this regression is mitigated by having one less GC safepoint. Also adds test case for StackOverflowError issue (from bdc). Tests passing: ARM, X86, Mips Phone booting: ARM Bug: https://code.google.com/p/android/issues/detail?id=66411 Bug: 12967914 Change-Id: I96fe667799458b58d1f86671e051968f7be78d5d
|
b373e091eac39b1a79c11f2dcbd610af01e9e8a9 |
|
21-Feb-2014 |
Dave Allison <dallison@google.com> |
Implicit null/suspend checks (oat version bump) This adds the ability to use SEGV signals to throw NullPointerException exceptions from Java code rather than having the compiler generate explicit comparisons and branches. It does this by using sigaction to trap SIGSEGV and when triggered makes sure it's in compiled code and if so, sets the return address to the entry point to throw the exception. It also uses this signal mechanism to determine whether to check for thread suspension. Instead of the compiler generating calls to a function to check for threads being suspended, the compiler will now load indirect via an address in the TLS area. To trigger a suspend, the contents of this address are changed from something valid to 0. A SIGSEGV will occur and the handler will check for a valid instruction pattern before invoking the thread suspension check code. If a user program taps SIGSEGV it will prevent our signal handler working. This will cause a failure in the runtime. There are two signal handlers at present. You can control them individually using the flags -implicit-checks: on the runtime command line. This takes a string parameter, a comma separated set of strings. Each can be one of: none switch off null null pointer checks suspend suspend checks all all checks So to switch only suspend checks on, pass: -implicit-checks:suspend There is also -explicit-checks to provide the reverse once we change the default. For dalvikvm, pass --runtime-arg -implicit-checks:foo,bar The default is -implicit-checks:none There is also a property 'dalvik.vm.implicit_checks' whose value is the same string as the command option. The default is 'none'. For example to switch on null checks using the option: setprop dalvik.vm.implicit_checks null It only works for ARM right now. Bumps OAT version number due to change to Thread offsets. Bug: 13121132 Change-Id: If743849138162f3c7c44a523247e413785677370
|
c6104ae36351591157fa09c482796256f82daddc |
|
12-Mar-2014 |
Dave Allison <dallison@google.com> |
Fix oatdump for apps. This fixes the assertion failure for the interpreter to interpreter bridge offset when dumping an app. Bug: 13433669 Change-Id: Ic405ef7e43b849573a27db2ffa570e87b80c6af7
|
173a8b477f4dae30947847e6f79fbf785ab0cad5 |
|
07-Mar-2014 |
Brian Carlstrom <bdc@google.com> |
Bump oat version due to InstructionSet enum renumbering in change: commit ed8dd492e43cbaaa435c4892447072c84dbaf2dc Author: Serban Constantinescu <serban.constantinescu@arm.com> Date: Tue Feb 11 14:15:10 2014 +0000 AArch64: Add ARM64 Assembler This patch adds the ARM64 Assembler and ManagedRegister backend. The implementation of the Arm64Assembler class is based on VIXL (a programmatic A64 Assembler - see external/vixl ). Change-Id: I842fd574637a953c19631eedf26f6c70d9ed7f9e Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com> Change-Id: I9e689b0a3586d996135f2c12265704ee139c9e4f
|
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
|
2e589aa58a1372909f95e731fd6b8895f6359c3a |
|
25-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Encode VmapTable entries offset by 2 to reduce size. We're using special values 0xffff and 0xfffe for an fp register marker and for method pointer, respectively. These values were being encoded as 3 bytes each and this changes their encoding to 1 byte. Bug: 9437697 Change-Id: Ic1720e898b131a5d3f6ca87d8e1ecdf76fb4160a
|
53bc8bae0890d59bc7c356c5cb718360a02fdc85 |
|
29-Jan-2014 |
Brian Carlstrom <bdc@google.com> |
Bump oat file version due to apparent recent code/runtime interface change (cherry picked from commit 7f9d66c7e889dc9ace6be7b794bd9df85a7685d3) Change-Id: I97aca6324a3beafcef66bdc4ee115c6f699bb8f8
|
7f9d66c7e889dc9ace6be7b794bd9df85a7685d3 |
|
29-Jan-2014 |
Brian Carlstrom <bdc@google.com> |
Bump oat file version due to apparent recent code/runtime interface change Change-Id: I1fe5a9ce388eed8f2e7ae6fdaa47473223a33f1c
|
5ddb4104ac605d66693b55b79f26f8b8a5505e63 |
|
07-Jan-2014 |
Ian Rogers <irogers@google.com> |
Remove intialized static storage from dex cache. The initialized static storage array is used by compiled code to determine if for a sget/sput class initialization is necessary. The compiled code typically doesn't require this test as the class is pre-initialized or the class being accessed is the same as the current method. Change-Id: Icbc45e692b3d0ac61e559e69edb6c9b29439e571
|
1e6cb63d77090ddc6aa19c755d7066f66e9ff87e |
|
28-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Delta-encoding of mapping tables. Both PC offsets and dalvik offsets are delta-encoded. Since PC offsets are increasing, the deltas are then compressed as unsigned LEB128. Dalvik offsets are not monotonic, so their deltas are compressed as signed LEB128. This reduces the size of the mapping tables by about 30% on average, 25% from the PC offset and 5% from the dalvik offset delta encoding. Bug: 9437697 Change-Id: I600ab9c22dec178088d4947a811cca3bc8bd4cf4
|
5da3778746375b73e7e77c5f1371f29684674776 |
|
26-Nov-2013 |
Brian Carlstrom <bdc@google.com> |
Turn up oat version to 11 Change-Id: Ic9627e3f38abf0ca3c143680dd372fb147413de8
|
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
|
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
|
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
|