OSDN Git Service
Chris Larsen [Wed, 18 Nov 2015 20:27:15 +0000 (12:27 -0800)]
MIPS32: int java.lang.*.numberOfLeadingZeros
- int java.lang.Integer.numberOfLeadingZeros(int)
- int java.lang.Long.numberOfLeadingZeros(long)
Change-Id: Icaf746cb807863f944ff4ebb5da6e6b2846eac58
Chris Larsen [Wed, 18 Nov 2015 20:26:08 +0000 (12:26 -0800)]
MIPS32: java.lang.*.reverse
- int java.lang.Integer.reverse(int)
- long java.lang.Long.reverse(long)
Change-Id: I18d0f784b9e4bffdc1bda3604f4ed7d3c57b8d68
Chih-hung Hsieh [Mon, 30 Nov 2015 19:46:10 +0000 (19:46 +0000)]
Merge "Do not build art with clang for mips64"
Lazar Trsic [Fri, 27 Nov 2015 13:33:06 +0000 (14:33 +0100)]
Do not build art with clang for mips64
Clang generates illegal instruction on mips64r6 with -O0.
https://dmz-portal.mips.com/bugz/show_bug.cgi?id=2218
BUG:
25928358
Change-Id: I8ccd644f1509b4b341384fa67facc07cb966dfa8
Jeff Hao [Mon, 30 Nov 2015 18:48:59 +0000 (18:48 +0000)]
Merge "Test case for getting annotations of renamed enums."
Jeff Hao [Wed, 25 Nov 2015 03:12:57 +0000 (19:12 -0800)]
Test case for getting annotations of renamed enums.
The crashing app was trying to get enums explicitly by name, but could
not find them since they had been renamed by Proguard.
Regression test for bug
25802263.
Change-Id: Iff78a82d81ca108f1289051916f4272cd0f1e6fe
Aart Bik [Mon, 30 Nov 2015 17:28:16 +0000 (17:28 +0000)]
Merge "Accept synthetic phi nodes and general names for blocks."
David Srbecky [Fri, 27 Nov 2015 14:08:26 +0000 (14:08 +0000)]
Merge "Temporarily omit MIPS floating point registers in DWARF."
David Srbecky [Fri, 27 Nov 2015 13:31:16 +0000 (13:31 +0000)]
Temporarily omit MIPS floating point registers in DWARF.
I am struggling to find authoritative source for the mapping,
so disable them in the meantime so they do not break tests.
Change-Id: I37340179f5d2fe91f318b64ddf64a725ce96ab76
Vladimir Marko [Fri, 27 Nov 2015 11:23:00 +0000 (11:23 +0000)]
Merge "MIPS64: Fix stub_test implementation"
Goran Jakovljevic [Fri, 27 Nov 2015 10:20:20 +0000 (11:20 +0100)]
MIPS64: Fix stub_test implementation
Clang doesn't recognize f0-f31 registers without '$' symbol in
inline assembly. So now they are $f0-$f31.
This change allows building ART tests.
Change-Id: Ie08e1a5aceee266f7b674c9883bed53473696178
David Srbecky [Fri, 27 Nov 2015 01:59:40 +0000 (01:59 +0000)]
Merge "Add stack locations to DWARF parameters."
Vladimir Marko [Thu, 26 Nov 2015 09:55:07 +0000 (09:55 +0000)]
Merge "ARM64: Use the shifter operands."
Mathieu Chartier [Wed, 25 Nov 2015 20:14:18 +0000 (20:14 +0000)]
Merge "Fix circular dependencies for ContainsBootClassLoaderNonImageClass"
Mathieu Chartier [Tue, 24 Nov 2015 23:37:12 +0000 (15:37 -0800)]
Fix circular dependencies for ContainsBootClassLoaderNonImageClass
Old behavior incorrectly updated the memoization array when there was
a circular dependency. The new behavior is to not update the array
in this case.
Bug:
25839261
Change-Id: I081c97c4f7a62a783fdaf2afbe23ea380ef6946d
Calin Juravle [Wed, 25 Nov 2015 19:15:23 +0000 (19:15 +0000)]
Merge "Fix jit profile saving flags."
Calin Juravle [Wed, 25 Nov 2015 19:05:42 +0000 (19:05 +0000)]
Fix jit profile saving flags.
Bug:
25886401
Change-Id: Ie7b9ead708736298f1d4a53b640434c988a5a0a8
Vladimir Marko [Wed, 25 Nov 2015 18:27:37 +0000 (18:27 +0000)]
Merge "ART: Clean up ordering of dex cache arrays in image files."
Roland Levillain [Wed, 25 Nov 2015 17:05:40 +0000 (17:05 +0000)]
Merge "ARM64 read barrier support for concurrent GC in Optimizing."
Vladimir Marko [Mon, 23 Nov 2015 18:05:08 +0000 (18:05 +0000)]
ART: Clean up ordering of dex cache arrays in image files.
Use the CompilerDriver::GetDexFilesForOatFile() ordering
and do not rely on the ordering of dex caches in the class
linker, even though the ordering is currently the same,
so we don't need to bump the image version.
Change-Id: Ie1807e42909058ab9983f5d0107a2a0a2641d9b7
Alexandre Rames [Wed, 25 Nov 2015 16:28:08 +0000 (16:28 +0000)]
ARM64: Use the shifter operands.
This introduces architecture-specific instruction simplification.
On ARM64 we try to merge shifts and sign-extension operations into
arithmetic and logical instructions.
For example for the Java code
int res = a + (b << 5);
we would generate
lsl w3, w2, #5
add w0, w1, w3
and we now generate
add w0, w1, w2, lsl #5
Change-Id: Ic03bdff44a1c12e21ddff1b0513bd32a730742b7
Calin Juravle [Wed, 25 Nov 2015 12:51:40 +0000 (12:51 +0000)]
Merge "Save jit profiling info to file."
Vladimir Marko [Wed, 25 Nov 2015 12:10:44 +0000 (12:10 +0000)]
Merge "ART: Improve utf_test for unpaired surrogates."
Vladimir Marko [Wed, 25 Nov 2015 11:10:20 +0000 (11:10 +0000)]
ART: Improve utf_test for unpaired surrogates.
This is a follow-up to
https://android-review.googlesource.com/180986
Change-Id: I8982a63c0ec48bf3b3198c278a96be7b5dfc2152
David Srbecky [Mon, 16 Nov 2015 16:39:10 +0000 (16:39 +0000)]
Add stack locations to DWARF parameters.
Translate StackMap to DWARF location attributes so that the
debugger knows where to read the run-time value from.
Change-Id: I8b2baf23f37e6e7ff6f76e18077d880f0c1cf57d
Vladimir Marko [Wed, 25 Nov 2015 11:14:08 +0000 (11:14 +0000)]
Merge "Optimize some commonly used utf8 functions by:"
Calin Juravle [Fri, 23 Oct 2015 16:56:15 +0000 (17:56 +0100)]
Save jit profiling info to file.
Currently saves only the hot method references and omits the inline
cache.
Change-Id: I79e91f855f6b52dc19a9a86662604f2eee16613c
Nicolas Geoffray [Tue, 24 Nov 2015 18:53:37 +0000 (18:53 +0000)]
Merge "Optimize HLoadClass when we know the class is in the cache."
Nicolas Geoffray [Tue, 24 Nov 2015 15:48:56 +0000 (15:48 +0000)]
Optimize HLoadClass when we know the class is in the cache.
Change-Id: Iaa74591eed0f2eabc9ba9f9988681d9582faa320
Nicolas Geoffray [Tue, 24 Nov 2015 17:50:24 +0000 (17:50 +0000)]
Merge "Add backward branch instumentation to the switch interpreter."
Vladimir Marko [Tue, 24 Nov 2015 17:20:34 +0000 (17:20 +0000)]
Merge "ART: Fix SafeMap::Put()/PutBefore() rvalue overloads."
Vladimir Marko [Tue, 24 Nov 2015 17:06:32 +0000 (17:06 +0000)]
ART: Fix SafeMap::Put()/PutBefore() rvalue overloads.
Remove the mistaken "const" qualifier which pretty much
defeats the intended optimizations and prevents using
the SafeMap with non-copyable values.
Change-Id: I07d3e083c0b9b8895cbd181cb1bb4ca2293c7c5d
Nicolas Geoffray [Tue, 24 Nov 2015 16:32:33 +0000 (16:32 +0000)]
Add backward branch instumentation to the switch interpreter.
Change-Id: I0328daa86d5f19311ab3bd6246a1c3e4b40b0ba9
Nicolas Geoffray [Tue, 24 Nov 2015 15:17:08 +0000 (15:17 +0000)]
Merge "A few more optimizations on avoiding HClinit."
Nicolas Geoffray [Tue, 24 Nov 2015 14:06:57 +0000 (14:06 +0000)]
A few more optimizations on avoiding HClinit.
Change-Id: I622a98b620e9d261cb654e2f5ab578bd8b3484b1
Nicolas Geoffray [Tue, 24 Nov 2015 14:49:44 +0000 (14:49 +0000)]
Merge "MIPS32: Record missing implicit null checks"
Goran Jakovljevic [Fri, 20 Nov 2015 16:22:57 +0000 (17:22 +0100)]
MIPS32: Record missing implicit null checks
ImplicitNullChecks are recorded for HandleFieldGet and HandleFieldSet
instructions for longs after accessing first word.
This fixes following CTS tests:
* dot.junit.opcodes.iget_wide.JUnit_Test_iget_wide#testE2
* dot.junit.opcodes.iput_wide.JUnit_Test_iput_wide#testE2
Change-Id: I0a93370d4a78d36805a8d5a6c304ca0329da2363
Roland Levillain [Tue, 24 Nov 2015 13:10:05 +0000 (13:10 +0000)]
ARM64 read barrier support for concurrent GC in Optimizing.
This first implementation uses slow paths to instrument heap
reference loads and GC root loads for the concurrent copying
collector, respectively calling the artReadBarrierSlow and
artReadBarrierForRootSlow runtime entry points.
Notes:
- This implementation does not instrument HInvokeVirtual
nor HInvokeInterface instructions (for class reference
loads), as the corresponding read barriers are not stricly
required with the current concurrent copying collector.
- Intrinsics which may eventually call (on slow path) are
disabled when read barriers are enabled, as the current
slow path infrastructure does not support this case.
- When read barriers are enabled, the code generated for a
HArraySet instruction always go into the array set slow
path for object arrays (delegating the operation to the
runtime), as we are lacking a mechanism to keep a
temporary register live accross a runtime call (needed for
the instrumentation of type checking code, which requires
two successive read barriers).
Bug:
12687968
Change-Id: Icfb74f67bf23ae80e7723ee6a0c9ff34ba325d48
Roland Levillain [Tue, 24 Nov 2015 12:05:25 +0000 (12:05 +0000)]
Merge "Revamp art::CheckEntrypointTypes uses."
Roland Levillain [Mon, 23 Nov 2015 18:53:50 +0000 (18:53 +0000)]
Revamp art::CheckEntrypointTypes uses.
Change-Id: I6e13e594539e766ed94524ac3282cec292ba91da
Bruce Hoult [Wed, 28 Oct 2015 12:06:12 +0000 (15:06 +0300)]
Optimize some commonly used utf8 functions by:
- using counted loops instead of searching for terminating null. In
the important cases the caller already knows the length: change
the API to pass it in. Keep the old API version as well to avoid
extensive changes to non-critical debug and test code.
- ensure the common cases are at the start of if/then/else chains.
Usually 99+% of characters are ASCII even in mixed strings.
- for the "convert" functions, when both utf8 and utf16 lengths are
passed, and are equal, it means the entire string is ASCII, and a
specialized loop can be used. The compiler might then unroll or
even vectorize this.
The functions improved are (tested on Nexus 5 with a 44 character
ASCII string):
CountModifiedUtf8Chars : 20% faster
ConvertUtf16ToModifiedUtf8: 80% faster
ConvertModifiedUtf8ToUtf16: 200% faster
Also for completeness CountUtf8Bytes has been cleaned up a little, but
the speed is unchanged. Unlike CountModifiedUtf8Chars, it was already
passed the length, rather than searching for null.
Change-Id: I1c9b7dea3eda869fc9f5f6b4dd6be8cdd5bc3ac0
Roland Levillain [Tue, 24 Nov 2015 10:34:22 +0000 (10:34 +0000)]
Merge "MIPS64: Support short and long branches"
Nicolas Geoffray [Tue, 24 Nov 2015 10:23:38 +0000 (10:23 +0000)]
Merge "Add another test for wide stores fix in optimizing."
Nicolas Geoffray [Tue, 3 Nov 2015 16:05:38 +0000 (16:05 +0000)]
Add another test for wide stores fix in optimizing.
Change is https://android-review.googlesource.com/#/c/183273/
Change-Id: I8013795dfa67e8e03f51a13dfa3016b89d3b56b7
Roland Levillain [Tue, 24 Nov 2015 09:54:46 +0000 (09:54 +0000)]
Merge "Clean up read barrier related comments in Optimizing."
Nicolas Geoffray [Tue, 24 Nov 2015 09:20:09 +0000 (09:20 +0000)]
Merge "Revert "lambda: Add support for invoke-interface for boxed innate lambdas""
Nicolas Geoffray [Tue, 24 Nov 2015 09:17:30 +0000 (09:17 +0000)]
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
Roland Levillain [Mon, 23 Nov 2015 19:29:22 +0000 (19:29 +0000)]
Clean up read barrier related comments in Optimizing.
Bug:
12687968
Change-Id: Idf2e371e01e10d9d32c95b150735e2c96244232e
Roland Levillain [Mon, 23 Nov 2015 19:25:48 +0000 (19:25 +0000)]
Merge "Disable JDWP tests with read barriers."
Roland Levillain [Mon, 23 Nov 2015 19:24:25 +0000 (19:24 +0000)]
Disable JDWP tests with read barriers.
This is temporary, so as to have the builds turn green
again, while the deadlock issue is explored.
Bug:
25800335
Change-Id: I4520a0aa24441160c3fbb8a7a19103bd3f9e3fe6
Alex Light [Mon, 23 Nov 2015 18:25:02 +0000 (18:25 +0000)]
Merge "Make target-sync work with verity."
Vladimir Marko [Mon, 23 Nov 2015 17:35:55 +0000 (17:35 +0000)]
Merge "ARM64: Add support for multiply-accumulate."
David Brazdil [Mon, 23 Nov 2015 14:17:53 +0000 (14:17 +0000)]
Merge "ART: Fix wide stores in Optimizing"
Vladimir Marko [Mon, 23 Nov 2015 14:10:50 +0000 (14:10 +0000)]
Merge "Optimizing: Avoid a PrettyMethod() call per compiled method."
Vladimir Marko [Fri, 20 Nov 2015 13:02:22 +0000 (13:02 +0000)]
Optimizing: Avoid a PrettyMethod() call per compiled method.
PrettyMethod() is expensive so avoid it unless it's actually
needed.
Change-Id: I06ab29cc18e426b7dfb8c53b163757c88b53c27f
David Brazdil [Thu, 19 Nov 2015 10:29:39 +0000 (10:29 +0000)]
ART: Fix wide stores in Optimizing
SsaBuilder::VisitStoreLocal did not take into account the following:
(a) when storing a wide value, the high vreg must be invalidated,
(b) when storing into the high vreg of a wide value, the low vreg
must be invalidated.
Both situations cause overestimation of liveness but only (b) has
implications on correctness. CodeGenerator::EmitEnvironment will skip
the high vreg, causing deoptimizing and try/catch to load a wrong
value for that vreg.
In order to fix this bug, several changes had to be made to the
SsaBuilder:
(1) phis need to be initialized with a type which matches its
inputs' size,
(2) eagerly created loop header phis may end up being undefined
because of their corresponding vregs being invalidated inside
the loop; these are marked dead during input setting,
(3) the entire SSA-building algorithm should never revive an
undefined loop header phi.
Bug:
25677992
Bug: https://code.google.com/p/android/issues/detail?id=194022
Change-Id: Id8a852e38c3f5ff1c2e608b1aafd6d5ac8311e32
Nicolas Geoffray [Mon, 23 Nov 2015 12:11:46 +0000 (12:11 +0000)]
Merge "Do not change to the access check entrypoint when inlined."
Nicolas Geoffray [Mon, 23 Nov 2015 12:04:37 +0000 (12:04 +0000)]
Do not change to the access check entrypoint when inlined.
The allocation entrypoint that deals with access checks does
not work with inlined methods.
Fixes 542-unresolved-access-check in jit mode.
Change-Id: I02290a8b2089fcf06e2216dabf8089920b529765
Vladimir Marko [Mon, 23 Nov 2015 11:20:35 +0000 (11:20 +0000)]
Merge "Optimizing/ARM: Improve long shifts by 1."
Vladimir Marko [Mon, 23 Nov 2015 10:15:01 +0000 (10:15 +0000)]
Merge "Optimizing/Thumb2: Improve load/store for large offsets."
Nicolas Geoffray [Mon, 23 Nov 2015 09:51:01 +0000 (09:51 +0000)]
Merge "Fix lint error."
David Brazdil [Mon, 23 Nov 2015 09:50:29 +0000 (09:50 +0000)]
Merge "ART: Fix uninitialized variable"
Nicolas Geoffray [Mon, 23 Nov 2015 09:50:18 +0000 (09:50 +0000)]
Fix lint error.
Change-Id: I29632dc7e49f7ec63040455fa40fcf87e9282e5e
David Brazdil [Mon, 23 Nov 2015 09:44:52 +0000 (09:44 +0000)]
ART: Fix uninitialized variable
Change-Id: I906de334b3c3cb1e36eff4944457f4598b7c174f
David Brazdil [Mon, 23 Nov 2015 09:16:02 +0000 (09:16 +0000)]
Merge "Simplify boolean condition compared to 0"
Nicolas Geoffray [Mon, 23 Nov 2015 08:59:29 +0000 (08:59 +0000)]
Merge "Revert "Add stats support for existing optimizations""
Nicolas Geoffray [Mon, 23 Nov 2015 08:59:07 +0000 (08:59 +0000)]
Revert "Add stats support for existing optimizations"
Breaks the build. Please ensure your changes build.
This reverts commit
06241b1b07fb031b7d2cf55f4b78d3444d07cc2d.
Change-Id: I68b18f99a9882719bf6654d3313531a7965b8483
Nicolas Geoffray [Mon, 23 Nov 2015 08:51:44 +0000 (08:51 +0000)]
Merge "Explicitly add HLoadClass/HClinitCheck for HNewInstance."
Nicolas Geoffray [Mon, 23 Nov 2015 08:51:21 +0000 (08:51 +0000)]
Merge "Add stats support for existing optimizations"
Jean-Philippe Halimi [Thu, 3 Sep 2015 15:28:38 +0000 (17:28 +0200)]
Add stats support for existing optimizations
This patch adds support for the --dump-stats facility with existing
optimizations.
Change-Id: I68751b119a030952a11057cb651a3c63e87e73ea
Signed-off-by: Jean-Philippe Halimi <jean-philippe.halimi@intel.com>
Alexey Frunze [Fri, 25 Sep 2015 05:57:20 +0000 (22:57 -0700)]
MIPS64: Support short and long branches
Change-Id: I618c960bd211048166d9fde78d4106bd3ca42b3a
Aart Bik [Sat, 21 Nov 2015 06:03:03 +0000 (22:03 -0800)]
Accept synthetic phi nodes and general names for blocks.
Rationale: these changes were already approved as part of the dynamic
bce changes, but I am now sending them out separately.
Change-Id: I3564bac9f6a0b6a89466457836ff54ad09164faf
Aart Bik [Sat, 21 Nov 2015 05:40:12 +0000 (05:40 +0000)]
Merge "Revert "Dynamic BCE (based on induction range analysis)""
Aart Bik [Sat, 21 Nov 2015 05:21:52 +0000 (05:21 +0000)]
Revert "Dynamic BCE (based on induction range analysis)"
This reverts commit
0b5849be045c5683d4a6b6b6c306abadba5f0fcc.
Change-Id: Id33f5da42bbdfb1aff7e2281417c8a7aa492df05
Rationale: so close :-( but bullhead-userdebug (linux) build in git_mnc-dr-dev-plus-aosp reported a breakage with a type inconsistency (long vs int in probably the codegen of dynamic bce); no time to investigate and fix this fully before my trip, so rolling back for now
Aart Bik [Sat, 21 Nov 2015 01:03:49 +0000 (01:03 +0000)]
Merge "Dynamic BCE (based on induction range analysis)"
Alex Light [Fri, 20 Nov 2015 23:35:48 +0000 (15:35 -0800)]
Make target-sync work with verity.
It will disable verity and restart and try again if the adb remount
does not actually work.
Change-Id: Icf3589c40682e09e1c4e099f173a2e51fe8a20f9
Aart Bik [Mon, 19 Oct 2015 21:59:26 +0000 (14:59 -0700)]
Dynamic BCE (based on induction range analysis)
Rationale: A rewritten dynamic BCE that uses induction variable analysis
to generate the run-time tests before a loop in order to
eliminate bounds-checks from its body. This CL removes now
obsoleted induction related code inside the BCE module.
Also, the dynamic test generation is placed more strategically,
since we missed a few cases where static analysis does better.
Most significant performance improvements (after filtering noise) is about:
Linpack +20%
LU > +10%
Change-Id: I4e7b8bab0288beff6f98a14856e3536103d32742
Igor Murashkin [Sat, 21 Nov 2015 00:55:35 +0000 (00:55 +0000)]
Merge "lambda: Add support for invoke-interface for boxed innate lambdas"
Igor Murashkin [Fri, 23 Oct 2015 00:37:50 +0000 (17:37 -0700)]
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
Jeff Hao [Fri, 20 Nov 2015 23:07:59 +0000 (23:07 +0000)]
Merge "Fix null pointer in processing of enum annotations."
Jeff Hao [Fri, 20 Nov 2015 22:56:09 +0000 (14:56 -0800)]
Fix null pointer in processing of enum annotations.
Bug:
25802263
Change-Id: Ib20b7049fd3824a5eb3e396d34ef32574771d074
Nicolas Geoffray [Thu, 19 Nov 2015 13:29:02 +0000 (13:29 +0000)]
Explicitly add HLoadClass/HClinitCheck for HNewInstance.
bug:
25735083
bug:
25173758
Change-Id: Ie81cfa4fa9c47cc025edb291cdedd7af209a03db
Mathieu Chartier [Fri, 20 Nov 2015 21:52:05 +0000 (21:52 +0000)]
Merge "Pass DexPathList.Element array to openDexFileNative"
Andreas Gampe [Fri, 20 Nov 2015 21:27:59 +0000 (21:27 +0000)]
Merge "MIPS32: Miscellaneous bit manipulations routines:"
Hiroshi Yamauchi [Fri, 20 Nov 2015 18:55:24 +0000 (18:55 +0000)]
Merge "Kill stale dalvikvm processes at the end of the jdwp test."
Alex Light [Fri, 20 Nov 2015 18:51:59 +0000 (18:51 +0000)]
Merge "Fix --jvm on run-tests 960 and 961"
Hiroshi Yamauchi [Fri, 20 Nov 2015 00:24:31 +0000 (16:24 -0800)]
Kill stale dalvikvm processes at the end of the jdwp test.
Bug:
25800335
Change-Id: I938437d6e1ecd362b30a1dfc4db7a25538cf3211
Alex Light [Fri, 20 Nov 2015 18:37:46 +0000 (10:37 -0800)]
Fix --jvm on run-tests 960 and 961
Change-Id: I2c20e96a27c92b15a201abeca6bc3461a0912703
Mathieu Chartier [Fri, 20 Nov 2015 18:29:42 +0000 (10:29 -0800)]
Pass DexPathList.Element array to openDexFileNative
App images will use this to check for conflicts. It is required to
pass down since the class loader won't have the element array until
after all of the elements in the dex path list are loaded.
Bug:
22858531
Change-Id: I4f3d85b5e0ad542298fc8458bafe6504c263dc41
Alex Light [Fri, 20 Nov 2015 17:48:47 +0000 (17:48 +0000)]
Merge "Use arc4random when available to select delta for image relocation."
David Srbecky [Fri, 20 Nov 2015 17:37:16 +0000 (17:37 +0000)]
Merge "Encode function signatures properly in DWARF."
Mark Mendell [Tue, 17 Nov 2015 16:16:56 +0000 (11:16 -0500)]
Simplify boolean condition compared to 0
CaffeineMarkRR Logic has some boolean flipping which can be helped by
some simplification.
Simplify non-FP (A COND_OP B) != 0 to A OPPOSITE_COND_OP B.
This is better than the original code, which would use a HBooleanNot
after the condition.
Also simplify non-FP (A COND_OP B) == 1 to A OPPOSITE_COND_OP B.
Move GetOppositeCondition to nodes.h/nodes.cc to share with Boolean
Simplification, renaming it to InsertOppositeCondition, as it inserts
the new HInstruction (unless it is a constant).
Change-Id: I34ded7758836e375de0d6fdba9239d2d451928d0
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
David Srbecky [Mon, 9 Nov 2015 18:05:48 +0000 (18:05 +0000)]
Encode function signatures properly in DWARF.
The signatures were previously stored as plain string.
The proper way in DWARF is to store them as structured tree of tags.
(for example, DW_TAG_subprogram containing DW_TAG_formal_parameter)
Note that this makes the debug sections smaller since DWARF
signatures are actually more efficient than just plain strings.
Change-Id: I6afbce28340570666d8674d07c0e324aad561dd5
Vladimir Marko [Fri, 20 Nov 2015 15:08:11 +0000 (15:08 +0000)]
Optimizing/ARM: Improve long shifts by 1.
Implement long
Shl(x,1) as LSLS+ADC,
Shr(x,1) as ASR+RRX and
UShr(x,1) as LSR+RRX.
Remove the simplification substituting Shl(x,1) with
ADD(x,x) as it interferes with some other optimizations
instead of helping them. And since it didn't help 64-bit
architectures anyway, codegen is the correct place for it.
This is now implemented for ARM and x86, so only mips32 can
be improved.
Change-Id: Idd14f23292198b2260189e1497ca5411b21743b3
Alexandre Rames [Fri, 20 Nov 2015 15:55:47 +0000 (15:55 +0000)]
ARM64: Add support for multiply-accumulate.
Change-Id: I88dc313df520480f3fd16bbabda27f9435d25368
David Brazdil [Fri, 20 Nov 2015 15:43:58 +0000 (15:43 +0000)]
Merge "Opt compiler: More strength reduction for multiplications."
Alexandre Rames [Fri, 20 Nov 2015 15:02:45 +0000 (15:02 +0000)]
Opt compiler: More strength reduction for multiplications.
We transform code looking like
MUL dst, src, (2^n + 1)
into
SHL tmp, src, n
ADD dst, src, tmp
and code looking like
MUL dst, src, (2^n - 1)
into
SHL tmp, src, n
SUB dst, tmp, src
Change-Id: Ia620ab68758caa70a01530b88cd65dd0444376d7
Vladimir Marko [Thu, 19 Nov 2015 21:13:52 +0000 (21:13 +0000)]
Optimizing/Thumb2: Improve load/store for large offsets.
This reduces the boot.oat size on Nexus 5 by 568KiB (0.8%).
Also change 32-bit ADD/SUB immediate to use the recommended
encoding T3 when both T3 and T4 are available.
Change-Id: I174382bda2b22da70560b947f5536acf8c1814a9
Vladimir Marko [Fri, 20 Nov 2015 10:53:56 +0000 (10:53 +0000)]
Merge "Clean up the special input in HInvokeStaticOrDirect."
Alex Light [Thu, 19 Nov 2015 19:03:10 +0000 (11:03 -0800)]
Use arc4random when available to select delta for image relocation.
Bug:
25776162
Change-Id: I5a5ca5d55c231508b61d4960049ab42e19c017e2