OSDN Git Service
Vladimir Marko [Thu, 4 Jun 2015 09:53:59 +0000 (10:53 +0100)]
resolved conflicts for merge of
7cc8f9aa to lmp-mr1-ub-dev
Change-Id: I6203b6d8be029440f635b9575559ba6add9a46d6
Vladimir Marko [Fri, 20 Mar 2015 12:47:30 +0000 (12:47 +0000)]
Quick: Create GC map based on compiler data. DO NOT MERGE
The Quick compiler and verifier sometimes disagree on dalvik
register types (fp/core/ref) for 0/null constants and merged
registers involving 0/null constants. Since the verifier is
more lenient it can mark a register as a reference for GC
where Quick considers it a floating point register or a dead
register (which would have a ref/fp conflict if not dead).
If the compiler used an fp register to hold the zero value,
the core register or stack location used by GC based on the
verifier data can hold an invalid value.
Previously, as a workaround we stored the fp zero value also
in the stack location or core register where GC would look
for it. This wasn't precise and may have missed some cases.
To fix this properly, we now generate GC maps based on the
compiler's notion of references if register promotion is
enabled.
Bug: https://code.google.com/p/android/issues/detail?id=147187
(cherry picked from commit
767c752fddc64e280dba507457e4f06002b5f678)
Change-Id: Id75428fd0a2f6bdd2ccb20ce75cdeab01150e455
Mathieu Chartier [Tue, 5 May 2015 01:00:30 +0000 (01:00 +0000)]
am
3c683c5d: Revert "HACK: Disable native stack trace dumping for tetra. DO NOT MERGE"
* commit '
3c683c5d107cb43e8027d740ed579ef92a88af2e':
Revert "HACK: Disable native stack trace dumping for tetra. DO NOT MERGE"
Mathieu Chartier [Mon, 4 May 2015 19:59:55 +0000 (19:59 +0000)]
Revert "HACK: Disable native stack trace dumping for tetra. DO NOT MERGE"
This reverts commit
471b7cb6c1b8128bb343b49198f2654f9f5b8f86.
Change-Id: Ia22615b401fd28ea94e6269f9eac5653e103a6fd
Mathieu Chartier [Tue, 28 Apr 2015 23:27:58 +0000 (23:27 +0000)]
am
471b7cb6: HACK: Disable native stack trace dumping for tetra. DO NOT MERGE
* commit '
471b7cb6c1b8128bb343b49198f2654f9f5b8f86':
HACK: Disable native stack trace dumping for tetra. DO NOT MERGE
Mathieu Chartier [Tue, 28 Apr 2015 22:07:07 +0000 (15:07 -0700)]
HACK: Disable native stack trace dumping for tetra. DO NOT MERGE
Hopefully stops deadlocks.
Bug:
20640601
Change-Id: I3e19217b6da002d328ffa7d941e14bfe734442c3
Andreas Gampe [Sun, 26 Apr 2015 01:12:54 +0000 (01:12 +0000)]
am
6b501251: am
2c31b5ac: Merge "ART: Fix Trace types, check minimum buf size"
* commit '
6b501251111559585b08f1c6641ffec39a96699d':
ART: Fix Trace types, check minimum buf size
Andreas Gampe [Sun, 26 Apr 2015 01:12:52 +0000 (01:12 +0000)]
am
bd90c932: am
711d8400: Merge "ART: Fix addpd opcode, add Quick x86 assembler test"
* commit '
bd90c932e570b28406932e33f2aa3c113ba2efa3':
ART: Fix addpd opcode, add Quick x86 assembler test
Andreas Gampe [Sun, 26 Apr 2015 01:00:42 +0000 (01:00 +0000)]
am
2c31b5ac: Merge "ART: Fix Trace types, check minimum buf size"
* commit '
2c31b5ac1d45f2f96932c8ff0d299abb2dbde862':
ART: Fix Trace types, check minimum buf size
Andreas Gampe [Sun, 26 Apr 2015 01:00:40 +0000 (01:00 +0000)]
am
711d8400: Merge "ART: Fix addpd opcode, add Quick x86 assembler test"
* commit '
711d84008f5b3cda849611102118316c29a75b16':
ART: Fix addpd opcode, add Quick x86 assembler test
Andreas Gampe [Sun, 26 Apr 2015 00:41:53 +0000 (00:41 +0000)]
Merge "ART: Fix Trace types, check minimum buf size"
Andreas Gampe [Sun, 26 Apr 2015 00:39:03 +0000 (00:39 +0000)]
Merge "ART: Fix addpd opcode, add Quick x86 assembler test"
Andreas Gampe [Sat, 25 Apr 2015 21:44:29 +0000 (14:44 -0700)]
ART: Fix Trace types, check minimum buf size
Also make streaming mode adhere to the given buffer (and fix the
case where the buffer is too small for a packet). This is important
to not lose too much tracing information when the runtime is destroyed
with an unflushed buffer.
Change-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7
Chao-ying Fu [Wed, 22 Apr 2015 17:51:21 +0000 (10:51 -0700)]
ART: Fix addpd opcode, add Quick x86 assembler test
This patch fixes the addpd opcode that may be used by vectorizations,
and adds an assembler test for the Quick x86 assembler, currently
lightly testing addpd, subpd and mulpd.
Change-Id: I29455a86212829c75fd75737679280f167da7b5b
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Andreas Gampe [Sat, 25 Apr 2015 23:16:46 +0000 (23:16 +0000)]
am
8b8315bb: am
3f4fa70a: Merge "ART: Test for GVN skipping"
* commit '
8b8315bb06df616cecb267f662ecdc17023cfe51':
ART: Test for GVN skipping
Andreas Gampe [Sat, 25 Apr 2015 23:04:57 +0000 (23:04 +0000)]
am
3f4fa70a: Merge "ART: Test for GVN skipping"
* commit '
3f4fa70a251443b7e35ee0464120e53daf4ae9c1':
ART: Test for GVN skipping
Andreas Gampe [Sat, 25 Apr 2015 22:59:23 +0000 (22:59 +0000)]
Merge "ART: Test for GVN skipping"
Andreas Gampe [Sat, 25 Apr 2015 22:27:38 +0000 (15:27 -0700)]
ART: Test for GVN skipping
Add a deeply nested loop to test 090 that will make the GVN skip.
Change-Id: I7c160293e76fd858c550f792b357eaaccdde77a9
Mathieu Chartier [Sat, 25 Apr 2015 22:54:45 +0000 (22:54 +0000)]
am
8ef054db: am
0cd91f05: Merge "Move Class.newInstance to native"
* commit '
8ef054dbe2d89f226af70f57c9d7fa7c8faaad14':
Move Class.newInstance to native
Mathieu Chartier [Sat, 25 Apr 2015 22:43:52 +0000 (22:43 +0000)]
am
0cd91f05: Merge "Move Class.newInstance to native"
* commit '
0cd91f05f11ccf7d55bf744053b0aae5e0e7aa36':
Move Class.newInstance to native
Andreas Gampe [Sat, 25 Apr 2015 22:38:51 +0000 (22:38 +0000)]
am
14fd800f: am
18772f08: Merge "ART: Fix missing dependency between GVN and other passes"
* commit '
14fd800f5a2501a90e04ffdd520ca5eceb154802':
ART: Fix missing dependency between GVN and other passes
Mathieu Chartier [Sat, 25 Apr 2015 22:36:26 +0000 (22:36 +0000)]
Merge "Move Class.newInstance to native"
Andreas Gampe [Sat, 25 Apr 2015 22:27:13 +0000 (22:27 +0000)]
am
18772f08: Merge "ART: Fix missing dependency between GVN and other passes"
* commit '
18772f087eb0eb14ba816ed088107c43958eb8c3':
ART: Fix missing dependency between GVN and other passes
Andreas Gampe [Sat, 25 Apr 2015 22:18:23 +0000 (22:18 +0000)]
Merge "ART: Fix missing dependency between GVN and other passes"
Andreas Gampe [Sat, 25 Apr 2015 21:47:31 +0000 (14:47 -0700)]
ART: Fix missing dependency between GVN and other passes
The GVN may be turned off completely, or skip running when the
method is too complex. Turn off DCE in that case.
The dependent cleanup pass is not an optimization pass, so can't be
turned off that way. Check whether the GVN skipped in the gate function.
A possible follow-up is proper dependencies between passes.
Change-Id: I5b7951ecd6c74ebbfa5b23726a3d2f3ea1a23a47
Mathieu Chartier [Fri, 24 Apr 2015 23:55:16 +0000 (16:55 -0700)]
Move Class.newInstance to native
Avoids 1 allocation and several JNI transitions.
Before:
Class_classNewInstance: 4462.39 ns; σ=39.42 ns @ 3 trials
After:
Class_classNewInstance: 1073.39 ns; σ=24.14 ns @ 10 trials
Bug:
20269715
Bug:
20566996
Change-Id: Icd52155ce79a978a4d869855bfdfd7735abd8187
Andreas Gampe [Sat, 25 Apr 2015 19:58:50 +0000 (19:58 +0000)]
am
3aabf605: am
3d58dea2: Merge "ART: Refactor utils/assembler test"
* commit '
3aabf6052069588c9aa2d79da9496c5326e8ea4c':
ART: Refactor utils/assembler test
Andreas Gampe [Sat, 25 Apr 2015 19:47:41 +0000 (19:47 +0000)]
am
3d58dea2: Merge "ART: Refactor utils/assembler test"
* commit '
3d58dea2a9d82aed045908fd9ea68c41f3d1f63d':
ART: Refactor utils/assembler test
Andreas Gampe [Sat, 25 Apr 2015 19:38:39 +0000 (19:38 +0000)]
Merge "ART: Refactor utils/assembler test"
Vladimir Marko [Sat, 25 Apr 2015 14:42:37 +0000 (14:42 +0000)]
am
e19a9eef: am
4a35e768: Merge "Disable Quick\'s GVN-based dead code elimination."
* commit '
e19a9eefa66c8af72c582bbfd07087b39a5d84bc':
Disable Quick's GVN-based dead code elimination.
Vladimir Marko [Sat, 25 Apr 2015 14:32:43 +0000 (14:32 +0000)]
am
4a35e768: Merge "Disable Quick\'s GVN-based dead code elimination."
* commit '
4a35e768dcb12ffecfed07e0417610afcb9472eb':
Disable Quick's GVN-based dead code elimination.
Vladimir Marko [Sat, 25 Apr 2015 14:20:53 +0000 (14:20 +0000)]
Merge "Disable Quick's GVN-based dead code elimination."
Roland Levillain [Sat, 25 Apr 2015 11:17:24 +0000 (12:17 +0100)]
Disable Quick's GVN-based dead code elimination.
Quick's GVN/DCE seems to trouble the builds.
Bug:
20572509
Change-Id: I1e315b4eee4443f04c7cb2cef953d8e4eff619ce
Nicolas Geoffray [Sat, 25 Apr 2015 13:59:57 +0000 (13:59 +0000)]
am
8198883c: am
948dfff2: Merge "Mark the test as failing while investigating."
* commit '
8198883c836af7e8fe6bb2ee59a1c0903c1b3d37':
Mark the test as failing while investigating.
Nicolas Geoffray [Sat, 25 Apr 2015 13:49:30 +0000 (13:49 +0000)]
am
948dfff2: Merge "Mark the test as failing while investigating."
* commit '
948dfff2ee9c3411088a89e1a8664652f46fbf35':
Mark the test as failing while investigating.
Nicolas Geoffray [Sat, 25 Apr 2015 13:41:55 +0000 (13:41 +0000)]
Merge "Mark the test as failing while investigating."
Nicolas Geoffray [Sat, 25 Apr 2015 13:39:59 +0000 (14:39 +0100)]
Mark the test as failing while investigating.
Recent linker changes required to increase the scope
of our chroot-like environment on devices. There is however just this
test failing.
Change-Id: I496be04693b6cebefe68a0ac04947ed238b53e0d
Andreas Gampe [Sat, 25 Apr 2015 04:41:45 +0000 (21:41 -0700)]
ART: Refactor utils/assembler test
Split out the part that compares a buffer with the product of a
host assembler. That will allow to reuse this for the Quick
assemblers.
Change-Id: Ie15777cb0a22f7532d8a8ea35403db0f229cd26f
Andreas Gampe [Sat, 25 Apr 2015 04:12:46 +0000 (04:12 +0000)]
am
ce8b3fea: am
1e3ab9ad: Merge "ART: Fix DBG_START_LOCAL verification."
* commit '
ce8b3feaf57c692e11cc48d3fa4837521990bf72':
ART: Fix DBG_START_LOCAL verification.
Andreas Gampe [Sat, 25 Apr 2015 04:01:32 +0000 (04:01 +0000)]
am
1e3ab9ad: Merge "ART: Fix DBG_START_LOCAL verification."
* commit '
1e3ab9ad421d471ca8eadac03084ce19fd06d4eb':
ART: Fix DBG_START_LOCAL verification.
Andreas Gampe [Sat, 25 Apr 2015 03:56:59 +0000 (03:56 +0000)]
am
4c9dd79c: am
940c65d6: Merge "[optimizing] Rename HasArrayAccesses and check it"
* commit '
4c9dd79c58353ca6612eb352bea2656c0c5bc1d7':
[optimizing] Rename HasArrayAccesses and check it
Andreas Gampe [Sat, 25 Apr 2015 03:51:07 +0000 (03:51 +0000)]
Merge "ART: Fix DBG_START_LOCAL verification."
Andreas Gampe [Sat, 25 Apr 2015 03:44:54 +0000 (03:44 +0000)]
am
e08556a2: am
808db527: Merge "[optimizing] Handle x86 const length BoundsCheck"
* commit '
e08556a2c9416f2f6cfdac4497c10aa98c09673a':
[optimizing] Handle x86 const length BoundsCheck
Andreas Gampe [Sat, 25 Apr 2015 03:44:53 +0000 (03:44 +0000)]
am
6bcc8378: am
c435e014: Merge "ART: Duplicate-classes cleanup"
* commit '
6bcc83784f3ed50644f8c0ff270b7bb71eed7814':
ART: Duplicate-classes cleanup
Andreas Gampe [Sat, 25 Apr 2015 03:44:50 +0000 (03:44 +0000)]
am
940c65d6: Merge "[optimizing] Rename HasArrayAccesses and check it"
* commit '
940c65d6757130d2e9f864d4c2220838f0312bea':
[optimizing] Rename HasArrayAccesses and check it
Logan Chien [Sun, 19 Apr 2015 15:27:52 +0000 (23:27 +0800)]
ART: Fix DBG_START_LOCAL verification.
The third ULEB128 of DBG_START_LOCAL and DBG_START_LOCAL_EXTENDED
entries should be interpreted as type_idx instead.
see also. dalvik/dx/src/com/android/dx/dex/file/DebugInfoEncoder.java
Change-Id: Ic0d52ed20cc2614acb9fa54b61095d1bd64f73fe
Andreas Gampe [Sat, 25 Apr 2015 03:38:14 +0000 (03:38 +0000)]
Merge "[optimizing] Rename HasArrayAccesses and check it"
Andreas Gampe [Sat, 25 Apr 2015 03:34:43 +0000 (03:34 +0000)]
am
808db527: Merge "[optimizing] Handle x86 const length BoundsCheck"
* commit '
808db5276827c909818d5595a5600e64b97f66e0':
[optimizing] Handle x86 const length BoundsCheck
Andreas Gampe [Sat, 25 Apr 2015 03:34:41 +0000 (03:34 +0000)]
am
c435e014: Merge "ART: Duplicate-classes cleanup"
* commit '
c435e014f7c0c93b0459a0d04e3f7e893d6ce9c6':
ART: Duplicate-classes cleanup
Andreas Gampe [Sat, 25 Apr 2015 03:25:43 +0000 (03:25 +0000)]
Merge "[optimizing] Handle x86 const length BoundsCheck"
Andreas Gampe [Sat, 25 Apr 2015 03:23:30 +0000 (03:23 +0000)]
Merge "ART: Duplicate-classes cleanup"
Andreas Gampe [Sat, 25 Apr 2015 03:22:06 +0000 (20:22 -0700)]
ART: Duplicate-classes cleanup
Disable old test. Improve collision warning message. Add a comment
about the algorithm.
Change-Id: Ibd29d79565732162150aebd7fe08d0895ccf3d79
Andreas Gampe [Sat, 25 Apr 2015 01:53:43 +0000 (01:53 +0000)]
am
0965ce8f: am
6e655afb: Merge "ART: Check for duplicate classes when loading oat files"
* commit '
0965ce8fa35b487bbf36bbfb7bed795e9547f647':
ART: Check for duplicate classes when loading oat files
Andreas Gampe [Sat, 25 Apr 2015 01:42:27 +0000 (01:42 +0000)]
am
6e655afb: Merge "ART: Check for duplicate classes when loading oat files"
* commit '
6e655afb37a528cfd90aa702b1600e1eb5d10a58':
ART: Check for duplicate classes when loading oat files
Andreas Gampe [Sat, 25 Apr 2015 01:35:00 +0000 (01:35 +0000)]
Merge "ART: Check for duplicate classes when loading oat files"
Andreas Gampe [Sat, 25 Apr 2015 01:10:53 +0000 (01:10 +0000)]
am
3856df46: am
b5aad4c5: Merge "ART: Add GENERATE_CFI to the ZygoteHooks debug flags"
* commit '
3856df46f8ceb741b39dd40392b9485b47c35a54':
ART: Add GENERATE_CFI to the ZygoteHooks debug flags
Andreas Gampe [Sat, 25 Apr 2015 00:59:30 +0000 (00:59 +0000)]
am
b5aad4c5: Merge "ART: Add GENERATE_CFI to the ZygoteHooks debug flags"
* commit '
b5aad4c54e0bf1aff6a0c49cb682defaafb81e1e':
ART: Add GENERATE_CFI to the ZygoteHooks debug flags
Andreas Gampe [Sat, 25 Apr 2015 00:48:45 +0000 (00:48 +0000)]
Merge "ART: Add GENERATE_CFI to the ZygoteHooks debug flags"
Mark Mendell [Wed, 22 Apr 2015 20:18:52 +0000 (16:18 -0400)]
[optimizing] Handle x86 const length BoundsCheck
Allow a constant length for BoundsCheck.
Change-Id: I2c7adc6e733cf8ce6997aba76aa763d0835bd2d6
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Andreas Gampe [Fri, 24 Apr 2015 23:49:15 +0000 (23:49 +0000)]
am
21225131: am
33984b4d: Merge "ART: Do not log non-swap usage"
* commit '
2122513125735bbe9ca4e971bbdd888fb4bcbb4e':
ART: Do not log non-swap usage
Andreas Gampe [Fri, 24 Apr 2015 23:36:03 +0000 (23:36 +0000)]
am
33984b4d: Merge "ART: Do not log non-swap usage"
* commit '
33984b4d6b79b2d65258e69506e5669be704db82':
ART: Do not log non-swap usage
Andreas Gampe [Fri, 24 Apr 2015 23:33:43 +0000 (16:33 -0700)]
ART: Add GENERATE_CFI to the ZygoteHooks debug flags
Add code to understand the implications of the debug.gencfi system
property that forces generation of CFI data.
Change-Id: Ida66f8c1567634d05cfdbba1a982be3684e94369
Andreas Gampe [Fri, 24 Apr 2015 23:30:18 +0000 (23:30 +0000)]
Merge "ART: Do not log non-swap usage"
Mark Mendell [Fri, 24 Apr 2015 21:06:35 +0000 (17:06 -0400)]
[optimizing] Rename HasArrayAccesses and check it
Since the flag is only used to see if there is a HBoundsCheck, rename
HasArrayAccesses() to HasBoundsChecks().
Add a check in graph_checker to see that the flag is set if we see a
HBoundsCheck instruction.
Change-Id: I10fe92897374fb247082152dd75c3611cc40ff30
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Andreas Gampe [Fri, 24 Apr 2015 23:22:18 +0000 (16:22 -0700)]
ART: Do not log non-swap usage
Reduce logcat noise.
Bug:
20501758
Change-Id: I5cbc28614d4be9e7fd120b7ccb97ca489e341f54
Mathieu Chartier [Fri, 24 Apr 2015 23:19:52 +0000 (23:19 +0000)]
am
63921cfe: am
16b5d29f: Merge "Guard against name == null in ShortDump"
* commit '
63921cfe407e093a527c94f5e01b03e89669f18a':
Guard against name == null in ShortDump
Mathieu Chartier [Fri, 24 Apr 2015 23:08:43 +0000 (23:08 +0000)]
am
16b5d29f: Merge "Guard against name == null in ShortDump"
* commit '
16b5d29f1755e50ab92a3bee0b85b26460e69cf8':
Guard against name == null in ShortDump
Mathieu Chartier [Fri, 24 Apr 2015 23:02:39 +0000 (23:02 +0000)]
Merge "Guard against name == null in ShortDump"
Roland Levillain [Fri, 24 Apr 2015 22:58:55 +0000 (22:58 +0000)]
am
233f1575: am
93cf23f9: Merge "Fix DCHECKs about clinit checks in Optimizing\'s code generators."
* commit '
233f1575843c6f94d96be90ba145a2623bff6d8f':
Fix DCHECKs about clinit checks in Optimizing's code generators.
Roland Levillain [Fri, 24 Apr 2015 22:47:16 +0000 (22:47 +0000)]
am
93cf23f9: Merge "Fix DCHECKs about clinit checks in Optimizing\'s code generators."
* commit '
93cf23f9966cdbe88650b822ad8471284a21bacb':
Fix DCHECKs about clinit checks in Optimizing's code generators.
Roland Levillain [Fri, 24 Apr 2015 22:35:49 +0000 (22:35 +0000)]
Merge "Fix DCHECKs about clinit checks in Optimizing's code generators."
Roland Levillain [Fri, 24 Apr 2015 22:01:24 +0000 (23:01 +0100)]
Fix DCHECKs about clinit checks in Optimizing's code generators.
These assertions are not true for the baseline compiler. As
a temporary workaround, remove a clinit check as last input
of a static invoke if it is still present at the stage of
code generation.
Change-Id: I5655f4a0873e2e7ee7790b6a341c18b4b7b52af1
Mathieu Chartier [Fri, 24 Apr 2015 22:28:36 +0000 (15:28 -0700)]
Guard against name == null in ShortDump
Bug:
20561804
Change-Id: If1e4adb74d5b936cf171f2402bf4525bf8c2d209
Andreas Gampe [Fri, 24 Apr 2015 20:41:32 +0000 (20:41 +0000)]
am
d27c57cf: am
76f14134: Merge "[optimizing] Ensure FillNewArray sets array access"
* commit '
d27c57cfec7f781c4d8bac39734b43391214628f':
[optimizing] Ensure FillNewArray sets array access
Andreas Gampe [Fri, 24 Apr 2015 20:28:52 +0000 (20:28 +0000)]
am
76f14134: Merge "[optimizing] Ensure FillNewArray sets array access"
* commit '
76f1413492c228bfa710e1eaa4c60370eaffbb8a':
[optimizing] Ensure FillNewArray sets array access
Andreas Gampe [Fri, 24 Apr 2015 20:18:20 +0000 (20:18 +0000)]
Merge "[optimizing] Ensure FillNewArray sets array access"
Mark Mendell [Fri, 24 Apr 2015 18:39:42 +0000 (14:39 -0400)]
[optimizing] Ensure FillNewArray sets array access
A method that only used filled new like 'int[]{0,0}' didn't have the
array access flag set, so BCE didn't remove the checks.
Change-Id: Iedec50daf0d25b1cc3872eb1a4cfc7b8bb31e6bf
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Roland Levillain [Fri, 24 Apr 2015 18:34:56 +0000 (18:34 +0000)]
am
c16be4d4: am
3507b795: Merge "Reduce the number of explicit clinit checks for static invokes."
* commit '
c16be4d4e3aa194474039a23e808ac463f5e3165':
Reduce the number of explicit clinit checks for static invokes.
Roland Levillain [Fri, 24 Apr 2015 18:34:54 +0000 (18:34 +0000)]
am
9c0a5aa8: am
eb5459ca: Merge "Ensure inlined static calls perform clinit checks in Optimizing."
* commit '
9c0a5aa8b95ffae383fb61cab30628af686e5331':
Ensure inlined static calls perform clinit checks in Optimizing.
Vladimir Marko [Fri, 24 Apr 2015 18:34:52 +0000 (18:34 +0000)]
am
bcbd49c6: am
ae803f6e: Merge "Quick: Fix and enable DCE and improve GVN/DCE cleanup."
* commit '
bcbd49c65ab8c5cdc4aece32b79ef34f6bdc454a':
Quick: Fix and enable DCE and improve GVN/DCE cleanup.
Roland Levillain [Fri, 24 Apr 2015 18:31:05 +0000 (18:31 +0000)]
am
3507b795: Merge "Reduce the number of explicit clinit checks for static invokes."
* commit '
3507b795c034617e1c94fc9544a208d6c6f75735':
Reduce the number of explicit clinit checks for static invokes.
Roland Levillain [Fri, 24 Apr 2015 18:21:14 +0000 (18:21 +0000)]
am
eb5459ca: Merge "Ensure inlined static calls perform clinit checks in Optimizing."
* commit '
eb5459ca861b58ee8a9907789f11400dcdddb87b':
Ensure inlined static calls perform clinit checks in Optimizing.
Vladimir Marko [Fri, 24 Apr 2015 18:21:13 +0000 (18:21 +0000)]
am
ae803f6e: Merge "Quick: Fix and enable DCE and improve GVN/DCE cleanup."
* commit '
ae803f6efbe8378b5423c51ee3c5564cae0e6e59':
Quick: Fix and enable DCE and improve GVN/DCE cleanup.
Roland Levillain [Fri, 24 Apr 2015 18:20:53 +0000 (18:20 +0000)]
Merge "Reduce the number of explicit clinit checks for static invokes."
Roland Levillain [Fri, 24 Apr 2015 18:14:22 +0000 (19:14 +0100)]
Reduce the number of explicit clinit checks for static invokes.
Do not generate explicit clinit checks for static invokes
when the class of the called method is a super class of the
caller method's class (referrer class).
Change-Id: I86ba18facef261fbb71f7ed20867756630ed3c53
Roland Levillain [Fri, 24 Apr 2015 18:17:40 +0000 (18:17 +0000)]
Merge "Ensure inlined static calls perform clinit checks in Optimizing."
Andreas Gampe [Fri, 24 Apr 2015 05:23:47 +0000 (22:23 -0700)]
ART: Check for duplicate classes when loading oat files
Oat files are usually produced standalone, and the compilers take
advantage of any information they get. It is thus possible that
when compile-time and runtime class-path are not the same, classes
are resolved differently and optimized code is incorrect.
This is a very conservative check, scanning the complete class tables
of dex files. In case any duplicate class is found, the new oat file
will be rejected and the original dex files will be used in interpreted
mode.
A possible refinement to this is actual tracking of the compile-time
class-path instead. That is however significantly complicated by the
DexFile API and the non-standard uses it allows.
An alternative for both optimized code and correct resolution is
native multidex. Apps should switch to multidex and benefit from
the optimization as well as the shift of all compile time to install
time. Split APKs are currently compiled separately, but it is a goal
to change that install flow to simulated multidex.
Change-Id: Ib9e0db5091e060e3bb2c0e5e6c007430becbfc21
Vladimir Marko [Fri, 24 Apr 2015 18:11:10 +0000 (18:11 +0000)]
Merge "Quick: Fix and enable DCE and improve GVN/DCE cleanup."
Vladimir Marko [Fri, 24 Apr 2015 16:38:50 +0000 (16:38 +0000)]
am
2c1ce5bb: am
83134ec5: Merge "Remove ArtMethod* parameter from dex cache entry points."
* commit '
2c1ce5bb6a9472dc253f68cb937bc6a8727ff4eb':
Remove ArtMethod* parameter from dex cache entry points.
David Brazdil [Fri, 24 Apr 2015 16:29:07 +0000 (16:29 +0000)]
am
b4364ee9: am
52b63e20: Merge "ART: Fix gtests broken by dead block elimination"
* commit '
b4364ee9078736d64318080e3d3a5b8805664356':
ART: Fix gtests broken by dead block elimination
Vladimir Marko [Fri, 24 Apr 2015 16:28:46 +0000 (16:28 +0000)]
am
83134ec5: Merge "Remove ArtMethod* parameter from dex cache entry points."
* commit '
83134ec5f26979cbb9131dccaf849a72cdd752f6':
Remove ArtMethod* parameter from dex cache entry points.
Vladimir Marko [Fri, 24 Apr 2015 16:21:36 +0000 (16:21 +0000)]
Merge "Remove ArtMethod* parameter from dex cache entry points."
David Brazdil [Fri, 24 Apr 2015 16:16:48 +0000 (16:16 +0000)]
am
52b63e20: Merge "ART: Fix gtests broken by dead block elimination"
* commit '
52b63e20eaef3abfda928833101f67ff581140ad':
ART: Fix gtests broken by dead block elimination
Roland Levillain [Fri, 24 Apr 2015 16:12:32 +0000 (16:12 +0000)]
am
9b096834: am
7bf9bc78: Merge "Minor improvements to 458-checker-instruction-simplification."
* commit '
9b096834aed2fbb69ecc07e999bc1f273f1a7017':
Minor improvements to 458-checker-instruction-simplification.
David Brazdil [Fri, 24 Apr 2015 16:09:15 +0000 (16:09 +0000)]
Merge "ART: Fix gtests broken by dead block elimination"
David Brazdil [Fri, 24 Apr 2015 16:04:38 +0000 (17:04 +0100)]
ART: Fix gtests broken by dead block elimination
Change-Id: If5de97f928f9e214d64871eabfbfb3f2d15451b7
Roland Levillain [Fri, 24 Apr 2015 16:05:29 +0000 (16:05 +0000)]
am
7bf9bc78: Merge "Minor improvements to 458-checker-instruction-simplification."
* commit '
7bf9bc7854f5c8ccc2cb2ef4be4f728c5fbd3236':
Minor improvements to 458-checker-instruction-simplification.
Roland Levillain [Fri, 24 Apr 2015 15:53:25 +0000 (15:53 +0000)]
Merge "Minor improvements to 458-checker-instruction-simplification."
Roland Levillain [Fri, 24 Apr 2015 15:43:49 +0000 (16:43 +0100)]
Ensure inlined static calls perform clinit checks in Optimizing.
Calls to static methods have implicit class initialization
(clinit) checks of the method's declaring class in
Optimizing. However, when such a static call is inlined,
the implicit clinit check vanishes, possibly leading to an
incorrect behavior.
To ensure that inlining static methods does not change the
behavior of a program, add explicit class initialization
checks (art::HClinitCheck) as well as load class
instructions (art::HLoadClass) as last input of static
calls (art::HInvokeStaticOrDirect) in Optimizing' control
flow graphs, when the declaring class is reachable and not
known to be already initialized. Then when considering the
inlining of a static method call, proceed only if the method
has no implicit clinit check requirement.
The added explicit clinit checks are already removed by the
art::PrepareForRegisterAllocation visitor. This CL also
extends this visitor to turn explicit clinit checks from
static invokes into implicit ones after the inlining step,
by removing the added art::HLoadClass nodes mentioned
hereinbefore.
Change-Id: I9ba452b8bd09ae1fdd9a3797ef556e3e7e19c651
David Brazdil [Fri, 24 Apr 2015 15:40:11 +0000 (15:40 +0000)]
am
b4e284f2: am
f16d7b38: Merge "ART: Dead block removal"
* commit '
b4e284f26aa1eda0cae0b37bf78cbb8de1651704':
ART: Dead block removal