History log of /art/compiler/jni/jni_cfi_test.cc
Revision Date Author Comments
33bff25bcd7a02d35c54f63740eadb1a4833fc92 01-Nov-2017 Vladimir Marko <vmarko@google.com> ART: Make InstructionSet an enum class and add kLast.

Adding InstructionSet::kLast shall make it easier to encode
the InstructionSet in fewer bits using BitField<>. However,
introducing `kLast` into the `art` namespace is not a good
idea, so we change the InstructionSet to an enum class.
This also uncovered a case of InstructionSet::kNone being
erroneously used instead of vixl32::Condition::None(), so
it's good to remove `kNone` from the `art` namespace.

Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6
69d310e0317e2fce97bf8c9c133c5c2c0332e61d 09-Oct-2017 Vladimir Marko <vmarko@google.com> Use ScopedArenaAllocator for building HGraph.

Memory needed to compile the two most expensive methods for
aosp_angler-userdebug boot image:
BatteryStats.dumpCheckinLocked() : 21.1MiB -> 20.2MiB
BatteryStats.dumpLocked(): 42.0MiB -> 40.3MiB
This is because all the memory previously used by the graph
builder is reused by later passes.

And finish the "arena"->"allocator" renaming; make renamed
allocator pointers that are members of classes const when
appropriate (and make a few more members around them const).

Test: m test-art-host-gtest
Test: testrunner.py --host
Bug: 64312607
Change-Id: Ia50aafc80c05941ae5b96984ba4f31ed4c78255e
0d127e10de0b06ec22d8e855d1d62773c4ede101 05-Jul-2017 Roland Levillain <rpl@google.com> Do not refresh the Marking Register in CriticalNative methods.

CriticalNative methods shall not be suspended and hence do not
require MR to be refreshed in compiled JNI code.

This change is for ARM and ARM64 only.

Impact on Critical Native benchmarks times (median of 10 runs,
lower is better):

* angler-userdebug - ARMv7

** All cores

NativeDowncallStaticCritical -2.78%
NativeDowncallStaticCritical6 -1.79%

** Little cores only

NativeDowncallStaticCritical -1.66%
NativeDowncallStaticCritical6 -1.27%

** Big cores only

NativeDowncallStaticCritical -2.66%
NativeDowncallStaticCritical6 -1.70%

* angler-userdebug - ARMv8

** All cores

NativeDowncallStaticCritical -3.52%
NativeDowncallStaticCritical6 -1.79%

** Little cores only

NativeDowncallStaticCritical -1.63%
NativeDowncallStaticCritical6 -1.27%

** Big cores only

NativeDowncallStaticCritical -3.87%
NativeDowncallStaticCritical6 -1.75%

Test: m test-art-target
Test: m test-art-target with tree built with ART_USE_READ_BARRIER=false
Test: m test-art-host-gtest
Test: ARM64 device boot test
Test: ARM device boot test
Bug: b/37707231
Change-Id: I95d61b9ecde0afffdd5fd44763b19caa06025ec8
217488a9ddf351033c1688198c492b9c40c36d8a 18-Sep-2017 Andreas Gampe <agampe@google.com> ART: Move read barrier config out of globals

Reduce the global dependencies by refactoring where the read
barrier constants are defined.

Rename read_barier_c.h to read_barier_config.h and ifdef the
C++ parts to have a common header for both C/asm and C++.

Put heap poisoning configuration into its own minimal header.

Fix up transitive includes.

Test: m
Change-Id: I159669ec61e3d1c4c7ddcd79e63b023a0519717a
6d729a789d3d7771e13d9445ee0be1d9d48a81b5 30-Jun-2017 Roland Levillain <rpl@google.com> Introduce a Marking Register in ARM code generation.

When generating code for ARM, maintain the status of
Thread::Current()->GetIsGcMarking() in register R8,
dubbed MR (Marking Register), and check the value of that
register (instead of loading and checking a read barrier
marking entrypoint) in read barriers.

Test: m test-art-target
Test: m test-art-target with tree built with ART_USE_READ_BARRIER=false
Test: m test-art-host-gtest
Test: ARM device boot test
Bug: 37707231
Change-Id: I30b44254460d0bbb9f1b2adc65eca52ca3de3f53
af24def8967027f10ce8d44cb209c23032a2a1b4 12-Jul-2017 Roland Levillain <rpl@google.com> Fix ART ARM64 CFI gtests with GCs other than CC with Baker read barriers.

Since the introduction of a Marking Register in the ARM64 back
end, gtests jni_cfi_test and optimizing_cfi_test produce
different outputs for the Concurrent Copying (CC) collector
with Baker read barriers on the one hand, and for other GCs on
the other hand.

Test: m test-art-host-gtest with tree built with ART_USE_READ_BARRIER=false
Bug: 37707231
Change-Id: I63de8873f52df593eb664970f2be20f1089804a9
367f3dd32454858b8b25d87feb8f6599d3b4c9dd 02-Sep-2016 Igor Murashkin <iam@google.com> jni: Add @CriticalNative optimization to speed up JNI transitions

Change-Id: I963059ac3a72dd8e6a867596c356d7062deb6da7
a75b01a549f0c86669dd24e53c9e3e74f0bf5b40 18-Aug-2016 Colin Cross <ccross@android.com> Fix building tests with partial arch codegen support

Add conditionals around more code that is only used for codegen for
specific architectures, and move a few more files into the
architecture-specific codegen lists.

Tests: ART_HOST_CODEGEN_ARCHS="x86_64 mips" m -j ART_TARGET_CODEGEN_ARCHS=svelte test-art-host
Bug: 30928847
Change-Id: I0444d15e1cafe4c9b13ff78718c3b13b544270e7
3b165bc53c2f063e3a9c644d0edc7bc30c634884 02-Aug-2016 Andreas Gampe <agampe@google.com> ART: Extract macro assembler

Extract macro assembler functionality used by the JNI compiler from
the assembler interface. Templatize the new interface so that
type safety ensures correct usage.

Change-Id: Idb9f56e5b87e43ee6a7378853d8a9f01abe156b2
Test: m test-art-host
3224838dfe9c95330ad963286f2c47e9546d3b5c 19-May-2016 Vladimir Marko <vmarko@google.com> Clean up JNI calling convention callee saves.

Precalculate callee saves at compile time and return them
as ArrayRef<> instead of keeping then in a std::vector<>.

Change-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef
bb661c0f0cb72d4bbfc2e251f6ded6949a713292 04-Apr-2016 Bilyan Borisov <bilyan.borisov@linaro.org> Refactor use of __ANDROID__ macro

We use the __ANDROID__ macro, which is provided by the toolchain, in
numerous places. This patch refactors the usage of this by defining a
new macro, ART_TARGET_ANDROID, that is being passed during build to
ART_TARGET_CFLAGS in Android.common_build.mk on the same line as
ART_TARGET. The codebase currently assumes that the existence of the
__ANDROID__ macro implies that we are compiling art for an android
target device. This is because, currently, target builds are compiled
with target toolchains that provide the macro, while host toolchains
do not. With this change this assumption is still preserved. However,
in a future patch we will add the ability to compile art for a linux
target, and in that case the ART_TARGET_ANDROID macro won't be passed
anymore.

Change-Id: I1f3a811aa735c87087d812da27fc6b08f01bad51
d1ee80948144526b985afb44a0574248cf7da58a 13-Apr-2016 Vladimir Marko <vmarko@google.com> Move Assemblers to the Arena.

And clean up some APIs to return std::unique_ptr<> instead
of raw pointers that don't communicate ownership.

(cherry picked from commit 93205e395f777c1dd81d3f164cf9a4aec4bde45f)

Bug: 27505766
Change-Id: I3017302307a0253d661240750298802fb0d9585e
93205e395f777c1dd81d3f164cf9a4aec4bde45f 13-Apr-2016 Vladimir Marko <vmarko@google.com> Move Assemblers to the Arena.

And clean up some APIs to return std::unique_ptr<> instead
of raw pointers that don't communicate ownership.

Change-Id: I3017302307a0253d661240750298802fb0d9585e
10ef6941648aad04d54527d4a7a6070bf7065e88 22-Oct-2015 Vladimir Marko <vmarko@google.com> Delay emitting CFI PC adjustments until after Thumb2/Mips fixup.

On Mips also take into account out-of-order CFI data emitted
from EmitBranches().

Change-Id: I03b0b0b4c2b1ea31a02699ef5fa1c55aa42c23c3
c60e1b755c5632dfeb04c333489ede52ee5c945f 30-Jul-2015 Andreas Gampe <agampe@google.com> ART: Use __ANDROID__ instead of HAVE_ANDROID_OS

Use the proper define.

Change-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085
cf93a5cd9c978f59113d42f9f642fab5e2cc8877 16-Jun-2015 Vladimir Marko <vmarko@google.com> Revert "Revert "ART: Implement literal pool for arm, fix branch fixup.""

This reverts commit fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98.

Adjust block label positions. Bad catch block labels were the
reason for the revert.

Change-Id: Ia6950d639d46b9da6b07f3ade63ab46d03d63310
fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98 16-Jun-2015 Vladimir Marko <vmarko@google.com> Revert "ART: Implement literal pool for arm, fix branch fixup."

This reverts commit f38caa68cce551fb153dff37d01db518e58ed00f.

Change-Id: Id88b82cc949d288cfcdb3c401b96f884b777fc40
Reason: broke the tests.
f38caa68cce551fb153dff37d01db518e58ed00f 29-May-2015 Vladimir Marko <vmarko@google.com> ART: Implement literal pool for arm, fix branch fixup.

Change-Id: Iecc91418bb4ee1c957f42fefb737d0ee2ba960e7
dd97393aca1a3ff2abec4dc4f78d7724300971bc 07-Apr-2015 David Srbecky <dsrbecky@google.com> Implement CFI for JNI.

CFI is necessary for stack unwinding in gdb, lldb, and libunwind.

Change-Id: I37eb7973f99a6975034cf0e699e138c3a9aba10f