df2d4f22d5e89692c90b443da82fe2930518418b |
|
30-Jun-2016 |
Artem Udovichenko <artem.u@samsung.com> |
Revert "Revert "Optimize IMT"" This reverts commit 88f288e3564d79d87c0cd8bb831ec5a791ba4861. Test: Includes smali tests to exercise cts failures that led to revert. These tests check that objects that don't implement any interfaces are handled properly when interface methods are invoked on them. Bug: 29188168 (for initial CL) Bug: 29778499 (reason for revert) Change-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115
|
fd43db68d204caaa0e411ca79a37af15d1c001af |
|
29-Jun-2016 |
Jeff Hao <jeffhao@google.com> |
Revert "Optimize IMT" This reverts commit 0790af1391b316c5c12b4e135be357008c060696. Bug: 29188168 (for initial CL) Bug: 29778499 (reason for revert) Change-Id: I2c3e4ec2cebdd40faec67ddb721b7acdc8e90061
|
0790af1391b316c5c12b4e135be357008c060696 |
|
13-May-2016 |
Nelli Kim <nelli.kim@samsung.com> |
Optimize IMT * Remove IMT for classes which do not implement interfaces * Remove IMT for array classes * Share same IMT Saved memory (measured on hammerhead): boot.art: Total number of classes: 3854 Number of affected classes: 1637 Saved memory: 409kB Chrome (excluding classes in boot.art): Total number of classes: 2409 Number of affected classes: 1259 Saved memory: 314kB Google Maps (excluding classes in boot.art): Total number of classes: 6988 Number of affected classes: 2574 Saved memory: 643kB Performance regression on benchmarks/InvokeInterface.java benchmark (measured timeCall10Interface) 1st launch: 9.6% 2nd launch: 6.8% Bug: 29188168 (cherry picked from commit badee9820fcf5dca5f8c46c3215ae1779ee7736e) Change-Id: If8db765e3333cb78eb9ef0d66c2fc78a5f17f497
|
f517e283d477dd2ae229ee3f054120c6953895db |
|
28-Apr-2016 |
Andreas Gampe <agampe@google.com> |
ART: Disambiguate access-checks mode from lock-counting Lock-counting (when structural locking verification failed) is a special sub-mode of access-checks and must be disambiguated, because we currently use access-checks mode class-wide when at least one method soft-fails, but do not stop the compiler/JIT to compile the "working" methods. So we may end up in the access-checks interpreter for a working method through deopt without knowing which locks are already held. Bug: 28351535 Change-Id: I083032f064d88df8f8f0611ad8b57d1b39cd09fb
|
cdca476bf3394ce9d97a369e84e701b427009318 |
|
28-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Write conflict tables in image"" Added test. Bug: 27906566 This reverts commit 8e2478d23e89a7022c93ddc608dcbba7b29b91e6. Change-Id: I0894f5f7cd11af29ed9d0345b51f527fc8a41d19
|
8e2478d23e89a7022c93ddc608dcbba7b29b91e6 |
|
27-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Write conflict tables in image" Some strange issues on angler. This reverts commit cda9386add68d94697449c6cb08b356747e55c21. Change-Id: Iba3a8bac6ce40ee16d83163823356951fecb6787
|
cda9386add68d94697449c6cb08b356747e55c21 |
|
14-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Write conflict tables in image Add image sections for runtime methods and conflict tables. This makes it that we do not need to fake up a length prefixed array for runtime methods. Reduces .art private dirty and PSS. System wide .art PSS goes from 32.5MB to 30.5MB after system boot. Business card .art private dirty goes from 588K to 504K. Increases image size by ~100K. Bug: 27906566 Change-Id: I38cbe3150c3eeb385b8cad7cf93614e3980f4162
|
62e631a678ef18c80f37862a2dc74004954a8502 |
|
20-Apr-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add flag to ArtMethod to skip compilation. To ensure even the JIT will not try to compile methods with soft failures a runtime_throw. bug:28293819 bug:28313047 (cherry picked from commit 250a378d5a2152662e0fa820f2b38f794ddd3596) Change-Id: Ic6d019bc2dd24e35e1377a6c3f8530348c1049df
|
49b5cede15d69930a8c156a3aea240164ca7af80 |
|
14-Apr-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add support for eagerly calculating conflict tables Will be used to put them in the image by having the compiler eagerly calculate them. Enabled for debug builds (non compiler). Support for having conflict tables written in the image will come in the next CL. Bug: 27906566 Change-Id: I03d1671a4b49317aaab5a741bbeaed7957cd6229
|
1d011d9306fd4ff57d72411775d415a86f5ed398 |
|
04-Apr-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp"""" Bug: 28081559 This reverts commit 961ea9fe42edcc2c57469bf451d1ca421da5cd59. Change-Id: I98a5bb8112646706ae7bd73bf6393cb956466be3
|
961ea9fe42edcc2c57469bf451d1ca421da5cd59 |
|
01-Apr-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""" This reverts commit 4a8ac9cee4312ac910fabf31c64d28d4c8362836. 570-checker-osr intermittently failing. Bug: 27939339
|
d6190dcdfb1f247ff0bf8268dacf413c93b58cf5 |
|
31-Mar-2016 |
Calin Juravle <calin@google.com> |
Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""" This reverts commit 4a8ac9cee4312ac910fabf31c64d28d4c8362836. Bug: 27939339
|
4a8ac9cee4312ac910fabf31c64d28d4c8362836 |
|
25-Mar-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp"" Ready for review. This reverts commit 6aef867f4d1a98a12bcdd65e9bf2ff894f0f2d7e. Change-Id: I5d53ed2bedc7e429ce7d3cdf80b6696a9628740e
|
6aef867f4d1a98a12bcdd65e9bf2ff894f0f2d7e |
|
25-Mar-2016 |
Calin Juravle <calin@google.com> |
Revert "ART: Improve JitProfile perf in arm/arm64 mterp" This reverts commit c1d6b341eed646e5adafc6c4fd4e3748f0292368.
|
c1d6b341eed646e5adafc6c4fd4e3748f0292368 |
|
02-Mar-2016 |
buzbee <buzbee@google.com> |
ART: Improve JitProfile perf in arm/arm64 mterp ART currently requires two profiling-related things from the interpreters: hotness updates and OSR switch checks. The hotness updates previously used the existing instrumentation framework - which is flexible, but quite heavyweight. For most things, the instrumentation framework overhead is acceptable, but because we do a hotness update on every backwards branch the overhead is unacceptable. Prior to this CL, branch profiling dominates interpreter cost. Here, we bypass the instrumentation framework for hotness updates and deliver a significant performance improvement. Running interpreter-only (dalvikvm -Xint) on a Nexus 6, we see the logic subtest of Caffeinemark improving from 2600 to 9200, and the overall score going from 1979 to over 3000. Compared to the C++ switch interpreter, we see a 6x improvement on the branchy logic subtest and a 2.6x improvement overall. Compared with the previous mterp which did not have support for jit profiling, we see a few (1% to 5%) performance loss on the standard command-line benchmarks. I consider this acceptable (we could create an alternate non-profiling mterp which would have no penalty, but I don't consider this overhead big enough to justify that). Change-Id: I50b5b8c5ed8ebda3c8b4e65d27ba7393c3feae04
|
796d63050a18f263b93ea34951a61deaecab3422 |
|
13-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add an ImtConflictTable to better resolve IMT conflicts. - Attach a ImtConflictTable to conflict runtime ArtMethod. - Initially 0, a new one will be created at the first hit of the conflict method. - If the assembly code does not find a target method in the table, we will create a new one again, copying the data from the previous table and adding the new mapping. Implemented for arm/arm64/x86/x64. bug:27556801 bug:24769046 Change-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7
|
0b4cbd0c2a75b47ae09d21e5d73d2b1709cb5b9e |
|
09-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add oatdump support for app images Example usage on host: oatdumpd --app-oat=art/plus32.odex --app-image=art/plus32.art --image=art/oats/system@framework@boot.art --instruction-set=arm TODO: Add to oatdump test. Bug: 27408512 Bug: 22858531 (cherry picked from commit bcb6a72569a1401b36a3ad3b6aa4d13e29966cf0) Change-Id: I9d1aa7eaa16795e5fbabc6974d245849e16b1d03
|
bcb6a72569a1401b36a3ad3b6aa4d13e29966cf0 |
|
09-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add oatdump support for app images Example usage on host: oatdumpd --app-oat=art/plus32.odex --app-image=art/plus32.art --image=art/oats/system@framework@boot.art --instruction-set=arm TODO: Add to oatdump test. Bug: 27408512 Bug: 22858531 Change-Id: I320db8b76c780c6eadabcb45ce88f45950741484
|
7ead0c009c64f1e10aa39e44ea10383dd859d332 |
|
22-Feb-2016 |
Alex Light <allight@google.com> |
Make JNI work correctly with default methods. Also adds some tests for JNI and DefaultMethods. Bug: 27259142 Bug: 24618811 (cherry picked from commit 3612149aee482ab7a17da68b0ef5fef3879729a2) Change-Id: I31222e3e41059d803be1dbb0f40e1144ac4bf457
|
3612149aee482ab7a17da68b0ef5fef3879729a2 |
|
22-Feb-2016 |
Alex Light <allight@google.com> |
Make JNI work correctly with default methods. Also adds some tests for JNI and DefaultMethods. Bug: 27259142 Bug: 24618811 Change-Id: I31222e3e41059d803be1dbb0f40e1144ac4bf457
|
d07e1b338ddedd03728136f136a2c4cb6df50dc4 |
|
17-Feb-2016 |
Alex Light <allight@google.com> |
Fix issue with copied methods not being checked. In several places we were using IsMiranda to check if a method is copied. This misses cases involving default methods. (cherrypicked commit fcea56f9cc51957161fe7a6e35e895fd8c4c4a7f) Bug: 27216437 Change-Id: I8c800e3e622a9c0ca0f8752c3d5202f433af9a1c
|
fcea56f9cc51957161fe7a6e35e895fd8c4c4a7f |
|
17-Feb-2016 |
Alex Light <allight@google.com> |
Fix issue with copied methods not being checked. In several places we were using IsMiranda to check if a method is copied. This misses cases involving default methods. Bug: 27216437 Change-Id: I8c800e3e622a9c0ca0f8752c3d5202f433af9a1c
|
df707e406877e9c0426dd051c00933ebb331673e |
|
03-Feb-2016 |
Igor Murashkin <iam@google.com> |
runtime: Don't skip verification for -Xverify:soft-fail When forcing the interpreter into access checks mode, make sure that the regular verification is still run, giving the verifier an opportunity to throw a VerifyError. If verification would've succeeded (without -Xverify:soft-fail flag), override this and soft-fail, to force the interpreter-with-access-checks to be run instead of the normal faster interpreter. This fixes the following run-tests under the interpeter-access-checks: * 135 * 412 * 471 * 506 * 800 Bug: 22414682 Change-Id: I5cb86a8bba71c7af9361a63c0802786c852b857b
|
e7f75f35371cf32954d94f9bb10fc96924f7edb4 |
|
02-Feb-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add read barrier option to UpdateEntrypoints Also call this without read barrier for image relocation. Bug: 26786304 Change-Id: Ia718c1491b54cadb7283c62afc1eb9031a15b4ef
|
fbc31087932a65e036a153afab3049dc5298656a |
|
24-Jan-2016 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Load app images"" This reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c. Bug: 22858531 Change-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295
|
1bc977cf2f8199311a97f2ba9431a184540e3e9c |
|
23-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Load app images" Fails when a method is duplicated (see test 097-duplicate-method) Bug: 22858531 This reverts commit f7fd970244f143b1abb956e29794c446e4d57f46. Change-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20
|
f7fd970244f143b1abb956e29794c446e4d57f46 |
|
09-Nov-2015 |
Mathieu Chartier <mathieuc@google.com> |
Load app images Support in-place patching of the app image based on boot image location and app oat location. Only loads for art run test so far since we do not automatically generate app images for app installs. N5 maps launch time (~200 runs): Before: 930ms After: 878.18ms After + image class table: 864.57ms TODO: Oatdump support. Store class loaders as class roots in image. Bug: 22858531 Change-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1
|
705ad49f353d3f90d8b63625aca2c2035bacdbef |
|
21-Sep-2015 |
Alex Light <allight@google.com> |
Support directly invoking interface default methods With the Java 8 Language one is allowed to directly call default interface methods of interfaces one (directly) implements through the use of the super keyword. We support this behavior through the invoke-super opcode with the target being an interface. We add 3 tests for this behavior. Currently only supports slow-path interpreter. Invoke-super is currently extremely slow. Bug: 24618811 Change-Id: I7e06e17326f7dbae0116bd7dfefca151f0092bd2
|
6c8467ffc427a513dc2fdea7ed9eeb0bb54d30ef |
|
21-Nov-2015 |
Alex Light <allight@google.com> |
Make debugger support default methods. Supports breaking on, stepping into and through default methods. Bug: 25549445 Bug: 24618811 Change-Id: I1a47e3263a0624adbd9e83b99d0acd7bef7757a4
|
a7a4759946d9f11c88dc108b2b6a9518ce9c1e18 |
|
24-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "lambda: Add support for invoke-interface for boxed innate lambdas" 955-lambda is flaky Bug: 24618608 Bug: 25107649 This reverts commit 457e874459ae638145cab6d572e34d48480e39d2. (cherry picked from commit 3a0909248e04b22c3981cbf617bc2502ed5b6380) Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
|
3a0909248e04b22c3981cbf617bc2502ed5b6380 |
|
24-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "lambda: Add support for invoke-interface for boxed innate lambdas" 955-lambda is flaky Bug: 24618608 Bug: 25107649 This reverts commit 457e874459ae638145cab6d572e34d48480e39d2. Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
|
457e874459ae638145cab6d572e34d48480e39d2 |
|
23-Oct-2015 |
Igor Murashkin <iam@google.com> |
lambda: Add support for invoke-interface for boxed innate lambdas Lambda closures created with the 'create-lambda' instruction (termed "innate lambdas") can be turned into an object with 'box-lambda'. This CL enables support for those kinds of lambdas to work with 'invoke-interface' by generating a proxy class for the lambda. Note: MIPS32/64 support not included. Bug: 24618608 Bug: 25107649 Change-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb
|
9139e008abe30b7beaf4afd6533228a1dd9b202c |
|
10-Oct-2015 |
Alex Light <allight@google.com> |
Correct exception behavior for default methods Default methods are defined to throw an IncompatibleClassChangeError (ICCE) when they are called and there is no "best" implementation. Previously we would simply throw an ICCE during class loading as soon as we noticed that this would happen if called. This makes us wait until we actually attempt to execute the method. Furthermore, this allows us to use other, non-conflicting, methods on the object as normal. Furthermore, this makes us correctly throw AbstractMethodErrors in cases where all default implementations of a method are overridden by abstract declarations. Adds 3 tests for this new behavior. Bug: 24618811 Change-Id: Id891958a81f9b3862b2ce5919636aabef7d3422e
|
a5891e81a2fb833307cf7c7e7267070dc0223dc8 |
|
06-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix interaction between JIT and instrumentation. - The JIT needs to go through the instrumentation to update entry points. - The instrumention needs to know if a method got JITted to know if needs to deoptimize. bug:25438583 Change-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1
|
22cf3d361695ff1d585a8a412ebeade69749811f |
|
02-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix tests flakiness with jit when using Proxy classes. We cannot copy the entry point between ArtMethod when the entry point has been JITted. We put the interpreter bridge instead. bug:25334878 Change-Id: I65a50cc1f10a5a152733807f8c85fb3ed81c5829
|
26705e2b1245b65989a0341b24c5dbf2658d4bb6 |
|
28-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add support for collection ProfilingInfo objects. Change-Id: I8bb6069530253a7372acdf2b5aee71e1de644822
|
1dad3f68b7f5a4a4cb2b281413357adc2309a8fd |
|
23-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Support garbage collection of JITted code. Change-Id: I9afc544460ae4fb31149644b6196ac7f5182c784
|
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
|
eb7c144a6aff7da673ba53d501c46f00311d4d7f |
|
31-Aug-2015 |
Alex Light <allight@google.com> |
Add initial default method support to Art This commit starts the process of adding default methods and their associated pieces to ART. This adds full support for calling default methods using invoke-interface and invoke-virtual on objects implementing the interfaces. Verifier is changed to allow this when the runtime is started with -Xexperimental:default-methods. This also adds support for defining and calling static methods on interface classes with invoke-static. Directly calling overridden default methods using invoke-super is not yet supported. This adds 5 new run-tests for this functionality. Bug: 24618811 Change-Id: I35ca800d99d3329348b277789b70ceeeba6e7f03
|
6bc4374e3fa00e3ee5e832e1761c43e0b8a71558 |
|
12-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add an abstraction over a compiled code. That's just step 1, moving code-related functions of ArtMethod to another class. That class is only a wrapper on an ArtMethod, but will be changed to be a wrapper around compiled code. Change-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6
|
cbc96b802f505ebcc71bb505c9a069ebec66df49 |
|
30-Sep-2015 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "ART: Remove unnecessary SHARED_REQUIRES in ArtMethod"" This reverts commit 38b8287004770e4d20dcc0e0fe4697060917ec72. Do not always use ScopedObjectAccess. The GC might call this during sanity checking, at which point the state is not runnable, but the mutator lock is still held. Currently needs an ugly NO_THREAD_SAFETY_ANALYSIS helper, as the assert isn't correctly handled (establishing the held mutator lock). Change-Id: Ie79e85e2afedc9b989382d88155b09e426fe7f75
|
38b8287004770e4d20dcc0e0fe4697060917ec72 |
|
30-Sep-2015 |
Andreas Gampe <agampe@google.com> |
Revert "ART: Remove unnecessary SHARED_REQUIRES in ArtMethod" This reverts commit 6dd332933a570f5e413dd0d784481607798fbcf5. Interestingly fails for sdk build. Change-Id: I28d8fc05575ff1d744b4a831c32ef4414775561a
|
6dd332933a570f5e413dd0d784481607798fbcf5 |
|
29-Sep-2015 |
Andreas Gampe <agampe@google.com> |
ART: Remove unnecessary SHARED_REQUIRES in ArtMethod Move DCHECKs in GetAccessFlags into their own block and let them acquire the mutator lock, if necessary. Then remove the old annotations. Change-Id: I29e24f17b001d0e16dc66c01a0f6450efb64ebc6
|
1147b9bd68323c753ed1a0b6106b205fd640c820 |
|
15-Sep-2015 |
Mathieu Chartier <mathieuc@google.com> |
Use image pointer size for profile info May fix some random crashes in dex2oat due to cross compilation. Change-Id: I633652500e8c7dfec38044dffd07eb467973d82a
|
f1fbd5220551aeae1025a1058fd501ad41167425 |
|
15-Sep-2015 |
David Brazdil <dbrazdil@google.com> |
Rename parameter in ArtMethod::ToNativeQuickPc Addressing a nit for CL Idb2b34aabf1ac7249c30a00806af7d63d7e682dd. Change-Id: I1112312b90aa6123e7e9ca8f67132dd7cc57a62f
|
72f7b880d5d0057b9fac3a51ef3a0f22909bc633 |
|
15-Sep-2015 |
David Brazdil <dbrazdil@google.com> |
ART: Fix 004-ReferenceMap run test This patch adds a new option to ArtMethod::ToNativeQuickPc to select the order of iteration over stack maps. The method is only used by the runtime to find native_pc of catch blocks, but also by the 004-ReferenceMap test which uses it to find native_pc of a safepoint. Change-Id: Idb2b34aabf1ac7249c30a00806af7d63d7e682dd
|
5550ca8bcc742b109d77e62f3a0877c667d894d3 |
|
21-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Record profiling information before Jitting. - Add a new instrumentation kind to record dynamic invokes. - Use the JNI entry point field to store the profiling data. - Record seen receivers for every dynamic invoke. Change-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c
|
05792b98980741111b4d0a24d68cff2a8e070a3a |
|
03-Aug-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Move DexCache arrays to native. This CL has a companion CL in libcore/ https://android-review.googlesource.com/162985 Change-Id: Icbc9e20ad1b565e603195b12714762bb446515fa
|
e418dda75998e0186f7580c2c54705767c3c8f1f |
|
12-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Be more flexible on the code unit size when inlining. This change increases the maximum code unit size, and fold parameters in the inlinee in the hope to reduce the overall size of the graph. We then make sure we don't inline methods that have more than N HInstructions. Also, remove the kAccDontInline flag on ArtMethod. The compiler does not need it anymore. Change-Id: I4cd3da40e551f30ba83b8b274728b87e67f6812e
|
2a5c4681ba19411c1cb22e9a7ab446dab910af1c |
|
14-Aug-2015 |
Andreas Gampe <agampe@google.com> |
ART: Some header cleaning around bit-utils Try to remove dependencies where they are not necessary. Change-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e
|
14632857428b7e37761e6e811c19021715a400f8 |
|
17-Aug-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Rename ArtMethod's size and alignment methods. Remove the historical prefix "Object" to avoid confusion with Java objects. Change-Id: Ib36422c9a24878d8d4bd757977d99cbf66b3d567
|
cf36d493124d8048efa0bd6f67d817ce3cd6b725 |
|
12-Aug-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Compress LengthPrefixedArray on 32-bit targets. Previously, the LengthPrefixedArray<ArtMethod> on 32-bit targets contained a 64-bit length field followed by the ArtMethod elements with size only a multiple of 4, not 8. Consequently, an odd-length array broke the alignment for the following array which would have the 64-bit length placed at an unaligned address. To fix that, we make the length field 32-bit and explicitly pass the alignment information to the LengthPrefixedArray. This also makes the 32-bit boot image a bit smaller. On Nexus 5, AOSP, ToT, the field section is 11528B smaller and the method section is 21036B smaller. 64-bit targets should see the same savings for the field section but no difference for the methods section. Change-Id: I3e03e7b94129025c8a1c117c27645a34dec516d2
|
10e5ea90e20375e5ad2ff26cb760c0e7c586cc16 |
|
13-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Visit declaring class of methods on call stack Bug: 22720414 Change-Id: Iab9727dde243d76fd9dfdb1db73899fedd1ab6ea
|
da7c650022a974be10e2f00fa07d5109e3d8826f |
|
24-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Visit class native roots from VisitReferences Visit class roots when we call Class::VisitReferences instead of in the class linker. This makes it easier to implement class unloading since unmarked classes won't have their roots visited by the class linker. Bug: 22181835 Change-Id: I63f31e5ebef7b2a0b764b3ba3cb038b3f561b379
|
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
|
9523a3ed0ae6fa31cd978a3999fd88233218f98b |
|
17-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Use the quickened metadata to compile -QUICK opcodes."" This reverts commit 8ab9a9010f3929acbb6c671008b8885b762b01e1. Change-Id: I1e654d5010ea2112982c3055fcb8c8f9c10e9ac8
|
8ab9a9010f3929acbb6c671008b8885b762b01e1 |
|
17-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use the quickened metadata to compile -QUICK opcodes." Broke sdk build. Investigating. This reverts commit 4515a67434c9e3e1627586629a1f2aba1a99aa6a. Change-Id: I6c1107ab626758570a59dc6bf3e4228c70a57196
|
4515a67434c9e3e1627586629a1f2aba1a99aa6a |
|
16-Jul-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Use the quickened metadata to compile -QUICK opcodes. Change-Id: I28a8d68921698bea81f54c95cc6e4c6d2c03f2b4
|
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
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|