bf9611f821697b14bf9e170f503c3f47613b046b |
|
26-Mar-2016 |
Andreas Gampe <agampe@google.com> |
ART: Clean up verifier Clean up verifier post-Quick. Change-Id: I0b05e10dd06edd228fe2068c8afffc4b7d7fdffa
|
98e6ce44c700abd9375fe17f0aa31fea1e1e938b |
|
16-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Remove string init map. Partial revert of the String init change. - Make Quick bailout in the presence of String allocation. - Rely on the compiler for knowing when dex registers alias. bug:27173201 Change-Id: I0bf58ba3825c71cef110b53f3a0a6f567cb2ef9a
|
0760a81257fa427646c309500d603194009265ef |
|
27-Aug-2015 |
Andreas Gampe <agampe@google.com> |
ART: Propagate verifier failure types to the compilers Add a bit-set encoding of seen failure types to the verifier and make it available. Store this in VerifiedMethod, so that compilers can inspect it and make choices based on failures. Rewrite the current punting of runtime-throw errors to be at the compiler-driver level. Bug: 23502994 Change-Id: I1cfc7cbdf2aec1f14ba18f0169e432ba4ae16883
|
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
|
286763464072ffb599846f76720c7ec54392ae6e |
|
24-Jun-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Use a flag from the verifier to know if we should compile. Only used for the lack of bottom type in the aget-object case for now. Could be used for more. bug:21865466 (cherry picked from commit 4824c27988c8eeb302791624bb3ce1d557b0db6c) Change-Id: I2bb7fe1d4737bd92c1076b5193607d74d8761ee7
|
4824c27988c8eeb302791624bb3ce1d557b0db6c |
|
24-Jun-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Use a flag from the verifier to know if we should compile. Only used for the lack of bottom type in the aget-object case for now. Could be used for more. bug:21865466 Change-Id: I64c2c84dfa1c0d259631e65e5f44b94e4139e6a7
|
c449e8b79aaaf156ce055524c41474cc1200ed5a |
|
11-Jun-2015 |
Igor Murashkin <iam@google.com> |
runtime: Minor cleanup and extra comments around interpreter Change-Id: I24c0b261de8cf737babd9d01bf679482d48c8bc9
|
848f70a3d73833fc1bf3032a9ff6812e429661d9 |
|
15-Jan-2014 |
Jeff Hao <jeffhao@google.com> |
Replace String CharArray with internal uint16_t array. Summary of high level changes: - Adds compiler inliner support to identify string init methods - Adds compiler support (quick & optimizing) with new invoke code path that calls method off the thread pointer - Adds thread entrypoints for all string init methods - Adds map to verifier to log when receiver of string init has been copied to other registers. used by compiler and interpreter Change-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01
|
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
|
f1c6d9e87cbfd27702103ccc7c7f08ce784dc872 |
|
13-Apr-2015 |
Calin Juravle <calin@google.com> |
Fallback to quick in case of soft verification errors Add a regression test: using uninitialized values triggers a soft verification error and optimizing should not crash. Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report. Bug: 19988704 Change-Id: I67174538eed853baff735694b3ae8eb34afe2a39
|
031af41d1debbdbd8964d7c504a789068dfe6029 |
|
13-Apr-2015 |
Calin Juravle <calin@google.com> |
Revert "Fallback to quick in case of soft verification errors" This reverts commit c751d37e692d89b360f3c09421401f581b5c6d06. Change-Id: I2183df8e856410989bc019f6a1f58af37d5d7eab
|
c751d37e692d89b360f3c09421401f581b5c6d06 |
|
01-Apr-2015 |
Calin Juravle <calin@google.com> |
Fallback to quick in case of soft verification errors Add a regression test: using uninitialized values triggers a soft verification error and optimizing should not crash. Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report. Bug: 19988704 Change-Id: I2493f737efd3fad72f6b41fb60eff1d3731613fb
|
66cdcbeeedc6e51b4c56da6969ce193b8c520bbc |
|
06-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix incompatible class change error for JIT stress mode There was a problem with miranda methods, when we would dequicken to one of these, it wouldn't resolve as virtual during the method lowering resolve. The solution is to try resolving as interface if we fail to resolve as virtual. Fixed a bug in dequickening where unreachable register lines with quick invokes would cause CHECK failuers. In this case we punt to the interpreter (test 435-try-*). Added test regression test. Example failure: java.lang.IncompatibleClassChangeError: The method 'void Main$TheInterface.m()' was expected to be of type virtual but instead was found to be of type interface (declaration of 'java.lang.reflect.ArtMethod' appears in out/host/linux-x86/framework/core-libart-hostdex.jar) at Main.DoStuff(Main.java:37) at Main.main(Main.java:44) Bug: 17950037 (cherry picked from commit 091d238936809f6668ca6b7606c62bc224add430) Change-Id: I90d2bea1cec81a3acac1da875320e1f90510edf4
|
091d238936809f6668ca6b7606c62bc224add430 |
|
06-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix incompatible class change error for JIT stress mode There was a problem with miranda methods, when we would dequicken to one of these, it wouldn't resolve as virtual during the method lowering resolve. The solution is to try resolving as interface if we fail to resolve as virtual. Fixed a bug in dequickening where unreachable register lines with quick invokes would cause CHECK failuers. In this case we punt to the interpreter (test 435-try-*). Added test regression test. Example failure: java.lang.IncompatibleClassChangeError: The method 'void Main$TheInterface.m()' was expected to be of type virtual but instead was found to be of type interface (declaration of 'java.lang.reflect.ArtMethod' appears in out/host/linux-x86/framework/core-libart-hostdex.jar) at Main.DoStuff(Main.java:37) at Main.main(Main.java:44) Bug: 17950037 Change-Id: I39c32cc8849bf02032a4f61a7ce57462b7fcac75
|
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
|
36b58f5ebb85d58f8b5966b8577a6dfe720d1e16 |
|
10-Dec-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add verifier support for dequickening Also some cleanup. Bug: 17950037 Change-Id: I1f50fe07f1558e9c4f78953b7afa639d7f310b3c
|
719d1a33f6569864f529e5a3fff59e7bca97aad0 |
|
06-Mar-2014 |
Ian Rogers <irogers@google.com> |
Enable annotalysis on clang ART builds. Fix clang build errors aswell as restructure locking/mutex code for correct thread safety analysis support. Reorder make dependencies so that host builds build first as they should provide better compilation errors than target. Remove host's use of -fno-omit-frame-pointer as it has no value with correct use of CFI, which we should have. Change-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90
|
c7f832061fea59fd6abd125f26c8ca1faec695a5 |
|
24-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Refactor verification results. Rename VerificationMethodsData to VerificationResults. Create new class VerifiedMethod to hold all the data for a given method. Change-Id: Ife1ac67cede20f3a2f9c7f5345f08a851cf1ed20
|