OSDN Git Service
Mathieu Chartier [Tue, 21 Jun 2016 22:14:20 +0000 (15:14 -0700)]
Dump more dex file data in oatdump
Dump some statistics for each dex file along side with strings loaded
from code and dex code bytes.
Sample output:
Cumulative dex file data
Num string ids: 202809
Num method ids: 320464
Num field ids: 162822
Num type ids: 68151
Num class defs: 48061
Unique strings loaded from dex code: 51049
Total strings loaded from dex code: 106651
Number of unique dex code items: 247929
Total number of dex code bytes:
11090574
Added content testing to oat dump test. No significant slowdown.
TEST: test-art-host
Bug:
29462018
Change-Id: I60effd3087d8c427eda4ee26431d5d77165b3939
Treehugger Robot [Wed, 13 Jul 2016 18:07:04 +0000 (18:07 +0000)]
Merge "Improve search for available spill slots in RA"
Treehugger Robot [Wed, 13 Jul 2016 17:55:52 +0000 (17:55 +0000)]
Merge "Refactored a few dexdump alloc/free into unique_ptr"
Vladimir Marko [Wed, 13 Jul 2016 16:37:34 +0000 (16:37 +0000)]
Merge "X86: Use memory to do array range checks"
Treehugger Robot [Wed, 13 Jul 2016 15:42:18 +0000 (15:42 +0000)]
Merge changes I91249ba8,Ic93812d9
* changes:
Use "" to indicate the oat filename could not be computed.
Compute and cache oat file status in OatFileAssistant.
Mark Mendell [Tue, 12 Jul 2016 15:13:15 +0000 (11:13 -0400)]
X86: Use memory to do array range checks
Currently, an HBoundsCheck is fed by an HArrayLength, causing a load of
the array length, followed by a register compare.
Avoid the load when we can by comparing directly with the array length
in memory. Implement this by marking the HArrayLength as 'emitted at
use site', and then generating the code in the HBoundsCheck.
Only do this replacement when we are the only user of the ArrayLength
and it isn't visible to the environment.
Handle the special case where the array is 'null' and where an implicit
null check can't be eliminated.
This code moves the load of the length to the slow code for the failed
check, which is what we want.
Test: 609-checker-x86-bounds-check
Change-Id: I9cdb183301e048234bb0ffeda940eedcf4a655bd
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Nicolas Geoffray [Wed, 13 Jul 2016 09:19:45 +0000 (09:19 +0000)]
Merge "Blacklist flaky test."
Nicolas Geoffray [Wed, 13 Jul 2016 09:18:48 +0000 (10:18 +0100)]
Blacklist flaky test.
bug:
30107038
Change-Id: Id976c6c7d764a44c1b30155714fb64b4441cdac2
Treehugger Robot [Wed, 13 Jul 2016 00:35:48 +0000 (00:35 +0000)]
Merge "Update the get_process_name call."
Aart Bik [Tue, 12 Jul 2016 22:53:13 +0000 (15:53 -0700)]
Refactored a few dexdump alloc/free into unique_ptr
Rationale: easier to read
Test: dexdump's output is well-tested
Change-Id: Ib5b36dce68d442e555599f9427bd9bfa7c6f3831
Treehugger Robot [Tue, 12 Jul 2016 18:32:29 +0000 (18:32 +0000)]
Merge changes Iafd12677,I40595d15
* changes:
profile_changed should not effect GetBestOatFile.
Make OpenImageSpace static and ArtFileName internal.
Matthew Gharrity [Mon, 11 Jul 2016 21:45:01 +0000 (14:45 -0700)]
Improve search for available spill slots in RA
Previously we always searched for two adjacent spill slots, even if
we only needed one. This small change fixes that.
Test: m test-art-host
Change-Id: I021d355e6602ffee687c8537a959232b1504dcf1
Vladimir Marko [Tue, 12 Jul 2016 15:02:31 +0000 (15:02 +0000)]
Merge "ARM64: Shorter fast-path for read barrier field load."
Vladimir Marko [Tue, 12 Jul 2016 14:14:26 +0000 (14:14 +0000)]
Merge "Two more patterns for instruction simplifier"
Vladimir Marko [Mon, 11 Jul 2016 18:30:56 +0000 (19:30 +0100)]
ARM64: Shorter fast-path for read barrier field load.
Reduces the aosp_flounder-userdebug 64-bit boot.oat by
~4.2MiB, i.e. ~3.5%, in the ART_USE_READ_BARRIER=true
configuration.
Test: Tested with ART_USE_READ_BARRIER=true on Nexus 9.
Bug:
29966877
Bug:
12687968
Change-Id: Ic9853ec82747a1702e4091fcf9cbf06674fcd5f6
Vladimir Marko [Tue, 12 Jul 2016 12:03:02 +0000 (12:03 +0000)]
Merge "ARM: Shorter fast-path for read barrier field load."
Maxim Kazantsev [Tue, 12 Jul 2016 09:55:33 +0000 (15:55 +0600)]
Two more patterns for instruction simplifier
This patch allows the instruction simplifier to cover
two more cases:
x = a + b and x = a - b
y = x - b y = x + b
In both cases y can be replaced with a, if the types
of arguments are integral.
Change-Id: I4735737f471e31057f1df76ddace5d4d1c79cde6
Test: New tests in 458-checker-instruction-simplification.
Signed-off-by: Max Kazantsev <maxim.kazantsev@intel.com>
Roland Levillain [Tue, 12 Jul 2016 11:07:50 +0000 (11:07 +0000)]
Merge "Rename kCall to kCallOnMainOnly"
Vladimir Marko [Mon, 11 Jul 2016 14:52:00 +0000 (15:52 +0100)]
ARM: Shorter fast-path for read barrier field load.
Reduces the aosp_hammerhead-userdebug boot.oat by 2.2MiB,
i.e. ~2.2%, in the ART_USE_READ_BARRIER=true configuration.
Test: Tested with ART_USE_READ_BARRIER=true on Nexus 5.
Bug:
29966877
Bug:
12687968
Change-Id: I4454150003e12a1aa7f0cf451627dc1ee9a495ae
Dmitriy Filchenko [Tue, 12 Jul 2016 00:41:28 +0000 (17:41 -0700)]
Update the get_process_name call.
BUG:
29824203
Test: test-art-host
Change-Id: Iba75b48b836b6ec249e6c77b9895ab3575f1027b
Oleksiy Vyalov [Mon, 11 Jul 2016 22:38:45 +0000 (22:38 +0000)]
Merge "Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable."
Oleksiy Vyalov [Tue, 21 Jun 2016 23:21:37 +0000 (16:21 -0700)]
Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY) if app is debuggable.
Enabled Yama security may prevent non-privileged debugger from
attaching to the app. However, if app is marked is debuggable
then it should acceptable to allow debugger with arbitrary pid
to connect the app.
Bug:
29549463
Change-Id: I50c79dbca272dc473e489cc61471628e2fdc4a03
(cherry picked from commit
e21145f6625a7faa939c1ca17fb95285aa245c16)
Aart Bik [Mon, 11 Jul 2016 19:33:07 +0000 (19:33 +0000)]
Merge "Fix clang static analyzer on potential memory leaks."
Aart Bik [Sat, 9 Jul 2016 01:32:45 +0000 (18:32 -0700)]
Fix clang static analyzer on potential memory leaks.
Rationale:
First was not really a leak, but the combination of stack/heap
allocated data structures with a single re-allocation was a bit
complex for static analysis. Second was a true leak.
BUG=
30040701
Change-Id: I10c2095f3061bd2ad49f24f7c25fcd7ca0f95111
Serban Constantinescu [Thu, 7 Jul 2016 17:03:19 +0000 (18:03 +0100)]
Rename kCall to kCallOnMainOnly
This patch renames kCall to kCallOnMainOnly in preparation for
the next patch in this series which will be adding kCallOnMainAndSlowPath.
Note: With this patch there will be places where we use kCallOnMainOnly
even though we call on the slow path too. The next patch in this series
will fix that.
Test: ART host tests.
Change-Id: Iabfdb0901990d163be5d780f3bdd2fab6fa17b32
Roland Levillain [Mon, 11 Jul 2016 09:24:43 +0000 (09:24 +0000)]
Merge "Have LOCAL_ASFLAGS honor debug/non-debug configuration."
Treehugger Robot [Sat, 9 Jul 2016 02:27:50 +0000 (02:27 +0000)]
Merge "Fix unsafe weak reference usage in test 141"
Mathieu Chartier [Thu, 30 Jun 2016 22:20:26 +0000 (15:20 -0700)]
Fix unsafe weak reference usage in test 141
There were patterns like:
WeakRef<Class> klass = ...
klass.get().<method>
These are unsafe since background GC could unload and null out the
weak reference. We now pass the weak reference to another function.
Deleted bad and unsafe test.
Test: test-art-host
Bug:
29889416
Change-Id: I6a8daf678262757e54e5817ec63b7c33f4b156ab
Jeff Hao [Fri, 8 Jul 2016 20:06:58 +0000 (20:06 +0000)]
Merge "Revert "Revert "Optimize IMT"""
Treehugger Robot [Fri, 8 Jul 2016 17:31:52 +0000 (17:31 +0000)]
Merge "Fix missing patchoat dependency for dex2oat test."
Aart Bik [Fri, 8 Jul 2016 17:26:30 +0000 (17:26 +0000)]
Merge "MIPS64: java.lang.Math.round"
Roland Levillain [Fri, 8 Jul 2016 16:28:23 +0000 (16:28 +0000)]
Merge "Math Round Intrinsic Implementations For Java8."
Richard Uhler [Fri, 8 Jul 2016 16:22:33 +0000 (09:22 -0700)]
Fix missing patchoat dependency for dex2oat test.
Change-Id: I7d00e676b895da805a1e476214cb4c92d7581e2b
Test: rm -r out && m test-art-host-gtest-dex2oat_test
Test: rm -r out && m test-art-host-gtest-oat_file_assistant_test
Vladimir Marko [Fri, 8 Jul 2016 15:43:25 +0000 (15:43 +0000)]
Merge "ARM: Remove unnecessary VMOV from float/double-to-int."
Roland Levillain [Fri, 8 Jul 2016 15:15:17 +0000 (15:15 +0000)]
Merge "Fix the definition of THREAD_CURRENT_IBASE_OFFSET."
Treehugger Robot [Fri, 8 Jul 2016 14:36:43 +0000 (14:36 +0000)]
Merge "ARM: Use 64-bit literals for LoadDImmediate()."
Roland Levillain [Fri, 8 Jul 2016 13:21:44 +0000 (14:21 +0100)]
Fix the definition of THREAD_CURRENT_IBASE_OFFSET.
The difference between between
art::Thread::tlsPtr_.mterp_current_ibase and
art::Thread::tlsPtr_.thread_local_objects is sizeof(size_t),
not sizeof(void*) (even if they have the same value on all
supported platforms/compilers in practice).
Test: ART host tests.
Change-Id: I70d196732499bd0cd073983de564547d08ee59ef
xueliang.zhong [Fri, 27 May 2016 17:56:13 +0000 (18:56 +0100)]
Math Round Intrinsic Implementations For Java8.
According to Java 8 API definition Math.round() performs:
Return the closest long or int to the argument,
with ties rounding to positive infinity.
Before this patch, the Math.round intrinsics were disabled,
because they followed the old definition of Math.round: floor(input+0.5).
This patch reimplement Math.round intrinsic to follow the new definition.
Change-Id: I453c01a9857a3d461b230e4d4e98c2d7bdf7a3c7
Vladimir Marko [Thu, 7 Jul 2016 14:37:02 +0000 (15:37 +0100)]
ARM: Use 64-bit literals for LoadDImmediate().
And rewrite the medium-range long/fp literal to use
MOVW+ADD+LDRD/VLDR because the old instruction sequence
was broken if the "ADD ip, pc" was not 4-byte aligned.
Test: assembler_thumb2_test has been updated. Standard
ART test suite has been run on host and Nexus 5.
Change-Id: I37c6a62aa6e77c6a9701b5a1fb4db2e666c1eae9
Nicolas Geoffray [Fri, 8 Jul 2016 12:51:01 +0000 (12:51 +0000)]
Merge "Implement System.arraycopy intrinsic on x86."
Roland Levillain [Fri, 8 Jul 2016 11:19:03 +0000 (11:19 +0000)]
Merge "Mark ReadBarrierJni as a direct entry point on MIPS32."
Richard Uhler [Tue, 19 Apr 2016 19:41:04 +0000 (12:41 -0700)]
Use "" to indicate the oat filename could not be computed.
Instead of having an extra boolean flag.
Test: oat file assistant tests.
Change-Id: I91249ba862522e691c6b67fd28a2eac58dcde07e
Richard Uhler [Mon, 18 Apr 2016 17:40:50 +0000 (10:40 -0700)]
Compute and cache oat file status in OatFileAssistant.
Instead of computing and caching IsOutOfDate + IsUpToDate separately.
Test: oat file assistant tests.
Change-Id: Ic93812d99c547f54a1c29315d9a3572180cee8d1
Richard Uhler [Fri, 15 Apr 2016 22:18:56 +0000 (15:18 -0700)]
profile_changed should not effect GetBestOatFile.
This change moves the check for whether a profile changed from
GetBestOatFile to GetDexOptStatus, because profile_changed should not
effect what oat files are loaded.
Test: OatFileAssistantTest.ProfileOatUpToDate
Change-Id: Iafd12677f20d2844809337d1d83b688f17461cc0
Richard Uhler [Fri, 15 Apr 2016 22:51:21 +0000 (15:51 -0700)]
Make OpenImageSpace static and ArtFileName internal.
Test: m build-art-host
Test: m build-art-host-tests
Change-Id: I40595d158e63cc547eba988b6c19df00ff589b05
Bill Buzbee [Thu, 7 Jul 2016 21:53:29 +0000 (21:53 +0000)]
Merge "Revert "Revert "ART: Add Mterp export pc poison testing mode"""
Treehugger Robot [Thu, 7 Jul 2016 17:53:56 +0000 (17:53 +0000)]
Merge "Add missing dependency required for ahat-test."
Nicolas Geoffray [Wed, 6 Jul 2016 11:09:12 +0000 (12:09 +0100)]
Implement System.arraycopy intrinsic on x86.
Also remove wrong comments when doing the raw copying.
test:run-test, 537-checker-arraycopy, 610-arraycopy
Change-Id: I2495bc03cde8ccad03c93f7722dd29bf85138525
Bill Buzbee [Thu, 7 Jul 2016 14:42:43 +0000 (14:42 +0000)]
Revert "Revert "ART: Add Mterp export pc poison testing mode""
This reverts commit
d7af522c0f03cd926b13bbef7c21a8a504969f36.
Fixes mips assembly typo: "mov" -> "move"
TEST: Previously tested arm/arm64/x86/x86_64 via test-art-host,
test-art-target plus injected error. Neglected to test mips
builds. Now those tested as well.
Change-Id: If2f9fb06973f8c1220a7d7699d79e6b9f1ce3197
Treehugger Robot [Thu, 7 Jul 2016 13:38:44 +0000 (13:38 +0000)]
Merge "Fix System.arraycopy when doing same array copying."
Vladimir Marko [Thu, 7 Jul 2016 11:07:44 +0000 (12:07 +0100)]
ARM: Remove unnecessary VMOV from float/double-to-int.
Test: Run standard ART test suite on Nexus 5.
Change-Id: I780fd0cca68f89401d2a114e1022bed498d02979
Nicolas Geoffray [Thu, 7 Jul 2016 11:07:42 +0000 (12:07 +0100)]
Fix System.arraycopy when doing same array copying.
At compile time, if constant source < constant destination, and we don't
know if the arrays are the same, then we must emit code that checks
if the two arrays are the same. If so, we jump to the slow path.
test:610-arraycopy
Change-Id: Ida67993d472b0ba4056d9c21c68f6e5239421f7d
Artem Udovichenko [Thu, 30 Jun 2016 09:18:25 +0000 (09:18 +0000)]
Revert "Revert "Optimize IMT""
This reverts commit
88f288e3564d79d87c0cd8bb831ec5a791ba4861.
Change-Id: I49605d53692cbec1e2622e23ff2893fc51ed4115
Nicolas Geoffray [Thu, 7 Jul 2016 08:28:47 +0000 (08:28 +0000)]
Merge "Revert "Revert "Inline and optimize interface calls."""
Bill Buzbee [Wed, 6 Jul 2016 23:31:30 +0000 (23:31 +0000)]
Merge "Revert "ART: Add Mterp export pc poison testing mode""
Bill Buzbee [Wed, 6 Jul 2016 23:28:26 +0000 (23:28 +0000)]
Revert "ART: Add Mterp export pc poison testing mode"
This reverts commit
e664cfef4d373a037dcf18637bea6b41e0624302.
Change-Id: I521dfccd6c829946c93290163bf817b8a2c368e9
Richard Uhler [Fri, 1 Jul 2016 20:10:56 +0000 (13:10 -0700)]
Add missing dependency required for ahat-test.
Change-Id: I8f7afc97a82fadcdd2f18032900f2b8d8b2059bf
Test: rm -r out/ && m ahat-test
Test: rm -r out/ && m build-art-host
Test: rm -r out/ && m build-art-host-tests
Test: rm -r out/ && m build-art-target
Test: rm -r out/ && m build-art-target-tests
Bill Buzbee [Wed, 6 Jul 2016 21:06:06 +0000 (21:06 +0000)]
Merge "ART: Add Mterp export pc poison testing mode"
Richard Uhler [Wed, 6 Jul 2016 20:02:20 +0000 (20:02 +0000)]
Merge "Revert "Add missing dependency required for ahat-test.""
Richard Uhler [Wed, 6 Jul 2016 19:59:33 +0000 (19:59 +0000)]
Revert "Add missing dependency required for ahat-test."
This reverts commit
13f6d39da8ba6450dc861c4bfd09d21f3b403d4b.
Breaks 'build-art-target'.
https://build.chromium.org/p/client.art/builders/mips64-emulator-debug/builds/5651/steps/build%20target/logs/stdio
Change-Id: I1466f92308955604ecfcac65deff86cb581d6fdc
Treehugger Robot [Wed, 6 Jul 2016 18:21:34 +0000 (18:21 +0000)]
Merge "Add missing dependency required for ahat-test."
buzbee [Thu, 23 Jun 2016 20:35:39 +0000 (13:35 -0700)]
ART: Add Mterp export pc poison testing mode
One of the optimizations of the Mterp assembly interpreter is
that it attempts to limit the number of times it updates the saved
dex_pc_ value stored in the shadow frame. Instead, it maintains
a pointer to the current dex instruction in a dedicated register.
However, whenever execution flow exits the immediate mterp
environment and some other part of the runtime needs to know the
current dex pc (for example - exception throws), mterp must
save - or "export" the dex_pc back into it's home location in
the shadow frame.
Forgetting to do this is a typical bug when developing mterp
instruction handlers. And, the failures show up in odd and
sometimes hard to track down ways. This CL adds a testing mode
that poisons the saved dex_pc prior to each instruction
interpretation. Thus, if any individual handler neglects to
properly export the current dex pc and then goes on to use it
we'll segfault out with an identifiable fault address: 0xdead00ff.
TEST: test-art-target (Nexus 5x, Nexus 6p), test-art-host. Verified
expected failure by artificially neglecting an EXPORT_PC.
Bug:
26572899
Change-Id: I704fbb8ece693b94341aed0ffbb51a6acfb89697
Nicolas Geoffray [Wed, 6 Jul 2016 14:18:23 +0000 (14:18 +0000)]
Revert "Revert "Inline and optimize interface calls.""
This reverts commit
19dc255bf94a4229de8627a2079ee6f0e9005e2d.
Change-Id: Ifc3a92280878d4db1b460d486137497b3456beae
Nicolas Geoffray [Wed, 6 Jul 2016 14:02:13 +0000 (14:02 +0000)]
Merge "Revert "Inline and optimize interface calls.""
Nicolas Geoffray [Wed, 6 Jul 2016 14:01:50 +0000 (14:01 +0000)]
Revert "Inline and optimize interface calls."
Went ahead too quickly.
This reverts commit
d9faceaa8da92f4a56c2907de949081bd42faf79.
Change-Id: I1610deaf89b38037cf2786d135a59c48b10ced0c
Treehugger Robot [Wed, 6 Jul 2016 13:37:49 +0000 (13:37 +0000)]
Merge "Inline and optimize interface calls."
Roland Levillain [Wed, 6 Jul 2016 13:20:52 +0000 (13:20 +0000)]
Merge "Fix stack alignment in x86 read barrier entry points."
Roland Levillain [Wed, 6 Jul 2016 12:45:52 +0000 (13:45 +0100)]
Mark ReadBarrierJni as a direct entry point on MIPS32.
The ReadBarrierJni MIPS32 entry point is a direct reference
to the native (C++) method art::ReadBarrierJni.
Test: Build ART for MIPS32.
Bug:
12687968
Change-Id: I6475855f4696690a681f69931618a055be65a00a
Nicolas Geoffray [Wed, 6 Jul 2016 09:19:23 +0000 (10:19 +0100)]
Inline and optimize interface calls.
- Support for inlining methods with invoke-interface (the
previous performance limitation is now fixed with the new
ImtConflictTable).
- Turn non inlineable invoke-interface into invoke-virtual to
avoid any potential execution of the conflict trampoline.
test:609-checker-inline-interface
Change-Id: Ibe33bc945deaada8fb78541e6e0bf034ebb52420
Vladimir Marko [Wed, 6 Jul 2016 12:12:28 +0000 (12:12 +0000)]
Merge "Expect spurious wake-up from futex(2)/FUTEX_WAIT call."
Roland Levillain [Wed, 6 Jul 2016 09:35:26 +0000 (09:35 +0000)]
Merge "Remove stray end of macro."
Roland Levillain [Tue, 5 Jul 2016 17:43:51 +0000 (18:43 +0100)]
Remove stray end of macro.
These lines used to be part of the definition of
SETUP_REFS_ONLY_CALLEE_SAVE_FRAME_PRESERVE_RTEMP2,
which has been deleted.
Test: ART target (ARM) tests.
Bug:
29259539
Change-Id: I4eda77cb739e58d387ffab61a127dc7bc24e2374
Vladimir Marko [Tue, 5 Jul 2016 16:29:55 +0000 (17:29 +0100)]
Expect spurious wake-up from futex(2)/FUTEX_WAIT call.
Test: Run standard ART test suite.
Bug:
27913630
Change-Id: I742544f7a0a7f896e47293d209a874782577e971
Treehugger Robot [Tue, 5 Jul 2016 10:10:25 +0000 (10:10 +0000)]
Merge "MIPS32: Fix MipsInstructionSetFeatures::FromVariant()"
Nicolas Geoffray [Tue, 5 Jul 2016 08:24:46 +0000 (08:24 +0000)]
Merge "Simplification for associative and commutative operations on constants"
Nicolas Geoffray [Tue, 5 Jul 2016 08:07:44 +0000 (08:07 +0000)]
Merge "Never go to resolution while inspecting inlined frames."
Roland Levillain [Mon, 4 Jul 2016 15:59:53 +0000 (16:59 +0100)]
Have LOCAL_ASFLAGS honor debug/non-debug configuration.
With this change the NDEBUG macro can be used in assembly
files.
Change-Id: I640594a20d5654de62cd4116087040b565eef0ce
Test: ART host tests.
Nicolas Geoffray [Mon, 4 Jul 2016 09:15:47 +0000 (10:15 +0100)]
Never go to resolution while inspecting inlined frames.
Instead, do a manual inspection and decoding of the invoke
with the dex cache.
Also update oatdump to dump types in the dex cache.
bug:
27858645
Change-Id: I7c0b612ee96e6865fa438c3a1d253686231337bd
test:run-test
Treehugger Robot [Mon, 4 Jul 2016 12:10:53 +0000 (12:10 +0000)]
Merge "MIPS32: Improve method invocation"
Richard Uhler [Fri, 1 Jul 2016 20:10:56 +0000 (13:10 -0700)]
Add missing dependency required for ahat-test.
Change-Id: Ifeb4a5ca0ba192b6ae85177cafa7d773c979379f
Test: rm -r out/ && m ahat-test
Alexey Frunze [Tue, 10 May 2016 23:08:05 +0000 (16:08 -0700)]
MIPS32: Improve method invocation
Improvements include:
- CodeGeneratorMIPS::GenerateStaticOrDirectCall() supports:
- MethodLoadKind::kDirectAddressWithFixup (via literals)
- CodePtrLocation::kCallDirectWithFixup (via literals)
- MethodLoadKind::kDexCachePcRelative
- 32-bit literals to support the above (not ready for general-
purpose applications yet because RA is not saved in leaf
methods, but is clobbered on MIPS32R2 when simulating
PC-relative addressing (MIPS32R6 is OK because it has
PC-relative addressing with the lwpc instruction))
- shorter instruction sequences for recursive static/direct
calls
Tested:
- test-art-host-gtest
- test-art-target-gtest and test-art-target-run-test-optimizing on:
- MIPS32R2 QEMU
- CI20 board
- MIPS32R6 (2nd arch) QEMU
Change-Id: Id5b137ad32d5590487fd154c9a01d3b3e7e044ff
Anton Kirilov [Fri, 13 May 2016 16:56:15 +0000 (17:56 +0100)]
Simplification for associative and commutative operations on constants
The purpose of this change is to enable the instruction simplifier
to recognize patterns such as
OP y, x, const1
OP z, y, const2
where OP is both an associative and a commutative operation on integral
types, and replace them with
OP z, x, const3
Since subtraction on integral types is equivalent to addition with a
negated operand, it receives a similar treatment, even though it is
not commutative.
Change-Id: I278cac39bd39bc843d250a976931cb000876ea88
Treehugger Robot [Fri, 1 Jul 2016 13:32:35 +0000 (13:32 +0000)]
Merge "Create a typedef for HInstruction::GetInputs() return type."
Treehugger Robot [Fri, 1 Jul 2016 13:21:00 +0000 (13:21 +0000)]
Merge "Make the Compute() method of all HIRs static."
Vladimir Marko [Thu, 16 Jun 2016 15:50:52 +0000 (16:50 +0100)]
Create a typedef for HInstruction::GetInputs() return type.
And some other cleanup after
https://android-review.googlesource.com/230742
Test: No new tests. ART test suite passed (tested on host).
Change-Id: I4743bf17544d0234c6ccb46dd0c1b9aae5c93e17
Anton Kirilov [Wed, 29 Jun 2016 16:03:40 +0000 (17:03 +0100)]
Make the Compute() method of all HIRs static.
Change-Id: Ibd7687dac907150c8e100791ed7d20d1ae18c9be
Treehugger Robot [Fri, 1 Jul 2016 09:42:16 +0000 (09:42 +0000)]
Merge "MIPS: Use $a0 instead $zero for passing faulting address"
Nicolas Geoffray [Fri, 1 Jul 2016 08:47:49 +0000 (08:47 +0000)]
Merge "Do not use popen, it uses a hardcoded path for "sh"."
Nicolas Geoffray [Thu, 30 Jun 2016 14:07:46 +0000 (15:07 +0100)]
Do not use popen, it uses a hardcoded path for "sh".
Instead, do the fork/exec/pipe ourselves.
Bug:
29557002
Change-Id: Iee81b0a7e8818706fd97890f97c1e86f37e42995
Test: test-art-host-gtest-dex2oat_test
Goran Jakovljevic [Thu, 30 Jun 2016 14:40:20 +0000 (16:40 +0200)]
MIPS: Use $a0 instead $zero for passing faulting address
Also replaced register numbers with register names to prevent
future similar errors.
This fixes following tests for MIPS32 and MIPS64:
* 034-call-null
* 038-inner-null
* 046-reflect
* 083-compiler-regressions
* 123-compiler-regressions-mt
* 800-smali
Change-Id: I6e49cec60a9c2b0553d7e94c24553e307b70c603
Treehugger Robot [Thu, 30 Jun 2016 22:31:59 +0000 (22:31 +0000)]
Merge "Reformat files using Android-style imports."
Alexey Frunze [Tue, 28 Jun 2016 23:55:04 +0000 (16:55 -0700)]
MIPS32: Fix MipsInstructionSetFeatures::FromVariant()
Make it possible to completely override build-time instruction
set features with the provided variant string. Add sanity checks.
Comment on the "default" variant behavior.
Tested:
- test-art-host-gtest
- test-art-target-gtest and test-art-target-run-test-optimizing on:
- MIPS32R6 (2nd arch) QEMU
- CI20 board
Change-Id: I2470b7115a5b5e333e2e7a156e68c39945fb02e9
Aart Bik [Thu, 30 Jun 2016 19:44:20 +0000 (19:44 +0000)]
Merge "Improvements in induction range analysis."
Gus Smith [Thu, 9 Jun 2016 23:50:44 +0000 (16:50 -0700)]
Reformat files using Android-style imports.
Test: m ahat-test
Change-Id: Ib0eee0b7c414d85c245c7ef3163485cfa6ff34a4
Treehugger Robot [Thu, 30 Jun 2016 18:54:23 +0000 (18:54 +0000)]
Merge "Revert "Revert "Gray only immune objects mutators access."""
Treehugger Robot [Thu, 30 Jun 2016 17:32:17 +0000 (17:32 +0000)]
Merge "Fix divergence between interpreter and compiler."
Roland Levillain [Thu, 30 Jun 2016 15:21:31 +0000 (16:21 +0100)]
Fix stack alignment in x86 read barrier entry points.
Test: ART tests.
Bug:
12687968
Change-Id: I5cbb3e8c0a012d0ea00ef2c2f9715b7e167928f0
Treehugger Robot [Thu, 30 Jun 2016 13:41:55 +0000 (13:41 +0000)]
Merge "MIPS32: Disassemble and test movf.fmt and movt.fmt (missed earlier)"
Alexey Frunze [Mon, 27 Jun 2016 21:48:20 +0000 (14:48 -0700)]
MIPS32: Disassemble and test movf.fmt and movt.fmt (missed earlier)
Test: ART gtest assembler_mips_test
Change-Id: Iafedfafe6ccd76127461d66dfa7984f196be6bd2
Nicolas Geoffray [Thu, 30 Jun 2016 09:52:28 +0000 (09:52 +0000)]
Merge "Special case the suspend to runnable transition when locking."