OSDN Git Service
Roland Levillain [Wed, 25 Nov 2015 17:05:40 +0000 (17:05 +0000)]
Merge "ARM64 read barrier support for concurrent GC in Optimizing."
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
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 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
Alex Light [Fri, 20 Nov 2015 01:24:59 +0000 (01:24 +0000)]
Merge "Revert "Use arc4random when available to select delta for image relocation.""
Alex Light [Fri, 20 Nov 2015 01:24:47 +0000 (01:24 +0000)]
Revert "Use arc4random when available to select delta for image relocation."
This reverts commit
7ecbd49c6c78e6c633883aa6766675df8abaa7dd.
Change-Id: Ifb37e23584722b31cb2369bcc9b91da6146d2cf6
Alex Light [Fri, 20 Nov 2015 01:17:20 +0000 (01:17 +0000)]
Merge "Use arc4random when available to select delta for image relocation."
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: I1c4cc992977b5d6fe782ff819903a802a40391ee
Mathieu Chartier [Fri, 20 Nov 2015 00:41:58 +0000 (00:41 +0000)]
Merge "Remove thread suspension assertion for SuspendAllForDebugger"
Mathieu Chartier [Fri, 20 Nov 2015 00:35:00 +0000 (00:35 +0000)]
Merge "Create parent class loader for dex2oat"
Mathieu Chartier [Fri, 20 Nov 2015 00:05:58 +0000 (16:05 -0800)]
Create parent class loader for dex2oat
This means we also put the class loader in the app image so that it
can be used for verifying the dex file order.
Bug:
22858531
Change-Id: I30761b59421c8a24cffd62b469134b25d2929e2e
Hiroshi Yamauchi [Thu, 19 Nov 2015 22:51:15 +0000 (22:51 +0000)]
Merge "Relax CAS in some uses of Object::AtomicSetReadBarrierPointer."
Hiroshi Yamauchi [Wed, 18 Nov 2015 01:52:15 +0000 (17:52 -0800)]
Relax CAS in some uses of Object::AtomicSetReadBarrierPointer.
Aside from the call to change the object from gray to black, the CAS in
AtomicSetReadBarrierPointer doesn't need to be a release CAS.
CC collector Ritz EAAC GC time: 28.4 -> 26.5s (-6.7%) on N5.
Bug:
12687968
Change-Id: Ic162717981b98e7f1e762fd6b27bd0c146187ca4
Nicolas Geoffray [Thu, 19 Nov 2015 18:18:19 +0000 (18:18 +0000)]
Merge "Fix cmdline parser test."
Nicolas Geoffray [Thu, 19 Nov 2015 18:17:41 +0000 (18:17 +0000)]
Fix cmdline parser test.
Change-Id: I6f03552d8d48e875f80a69455397146b132ed623
Calin Juravle [Thu, 19 Nov 2015 17:46:50 +0000 (17:46 +0000)]
Merge "Allow NullConstant to be untyped in GraphVisualiser."
Mark Mendell [Mon, 16 Nov 2015 17:21:53 +0000 (12:21 -0500)]
Allow NullConstant to be untyped in GraphVisualiser.
The NullConstant may be added to the graph during other passes that
happen between ReferenceTypePropagation and Inliner (e.g.
InstructionSimplifier). If the inliner doesn't run or doesn't inline
anything, the NullConstant remains untyped.
The infrastructure to properly type NullConstants everywhere is to
complex to add for the benefits
Bug:
25786318
Change-Id: I904a3e605b57f8cac9936e82f19a4994c7b1a82a
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Andreas Gampe [Thu, 19 Nov 2015 16:12:57 +0000 (16:12 +0000)]
Merge "MIPS64: Add java.lang.String.equals intrinsic."
Vladimir Marko [Thu, 19 Nov 2015 15:48:33 +0000 (15:48 +0000)]
Clean up the special input in HInvokeStaticOrDirect.
Change-Id: I4042aefbdac1a8c236d00e2e7145349a64f6486b
Nicolas Geoffray [Thu, 19 Nov 2015 15:48:01 +0000 (15:48 +0000)]
Merge "Rename options for shorter names."
Nicolas Geoffray [Thu, 19 Nov 2015 14:25:43 +0000 (14:25 +0000)]
Rename options for shorter names.
Change-Id: I2ea98ead4cd99d6a51cbfa149b0aab5e036ffb96
Roland Levillain [Thu, 19 Nov 2015 14:01:37 +0000 (14:01 +0000)]
Merge "ARM read barrier support for concurrent GC in Optimizing."
Vladimir Marko [Thu, 19 Nov 2015 13:12:09 +0000 (13:12 +0000)]
Merge "Fix ClinitCheck pruning."
Vladimir Marko [Fri, 13 Nov 2015 14:47:00 +0000 (14:47 +0000)]
Fix ClinitCheck pruning.
Make sure we merge the ClinitCheck only with LoadClass and
HInvokeStaticOrDirect that is a part of the very same dex
instruction. This fixes incorrect stack traces from class
initializers (wrong dex pcs).
Rewrite the pruning to do all the ClinitCheck merging when
we see the ClinitCheck, instead of merging ClinitCheck into
LoadClass and then LoadClass into HInvokeStaticOrDirect.
When we later see an HInvokeStaticOrDirect with an explicit
check (i.e. not merged), we know that some other instruction
is doing the check and the invoke doesn't need to, so we
mark it as not requiring the check at all. (Previously it
would have been marked as having an implicit check.)
Remove the restriction on merging with inlined invoke static
as this is not necessary anymore. This was a workaround for
X.test():
invoke-static C.foo() [1]
C.foo():
invoke-static C.bar() [2]
After inlining and GVN we have
X.test():
LoadClass C (from [1])
ClinitCheck C (from [1], to be merged to LoadClass)
InvokeStaticOrDirect C.bar() (from [2])
and the LoadClass must not be merged into the invoke as this
would cause the resolution trampoline to see an inlined
frame from the not-yet-loaded class C during the stack walk
and try to load the class. However, we're not allowed to
load new classes at that point, so an attempt to do so leads
to an assertion failure. With this CL, LoadClass is not
merged when it comes from a different instruction, so we can
guarantee that all inlined frames seen by the stack walk in
the resolution trampoline belong to already loaded classes.
Change-Id: I2b8da8d4f295355dce17141f0fab2dace126684d
Nicolas Geoffray [Thu, 19 Nov 2015 11:40:15 +0000 (11:40 +0000)]
Merge "Increase code cache after 1 full collection."
Nicolas Geoffray [Wed, 18 Nov 2015 11:15:22 +0000 (11:15 +0000)]
Increase code cache after 1 full collection.
Also add a max capacity option.
Change-Id: Icd442b72e9be0c6b091b588b4c4473c69b7cde10