Add lockless SynchronizedGet for indirect reference table.

Used for decoding global references without holding locks.

Results on JniCallback:
Before: 615ms (3 samples).
After: 585ms (3 samples).

Change-Id: Ifcac8d0359cf658d87f695c6eb869d148af002e5
Don't build art-run-tests directly into userdata.img

Instead we build them into an intermediate directory,
and let the build system to pick up the files.

Bug: 13585955
Change-Id: I7f055ebc02e50a107adebb24590296c5a6f2e97e
AArch64: Fix the usage of Thread Register for arm64

This patch cleans-up the usage of x18 as TR for Arm64. As described in
the Arm64 Procedure Call Standard, the recommended usage for x18 is to
carry inter-procedural state (i.e. ART thread information).

However, since x18 is a temporary register there is no guarantee that on
calls to external functions x18 is preserved. Thus on JNI calls we need
to save and restore x18 before coming back to managed runtime. For the
JNI compiler trampoline we move x18 (temporary register - caller saved)
to x19 (ETR, callee saved) before calling into native code, and
restore it on the way back.

Change-Id: If24091018d640027a497517a9238bf4a80d013aa
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
AArch64: Fix the usage of IP0, IP1 as temporary registers

This patch fixes the usage of temporary registers by using VIXL's
UseScratchRegisterScope. For the primitives used by the trampoline
compiler we explicitly exclude IP0, IP1 from the temporary list.

Change-Id: Icf9afbabd93214302891ddd536ce03a9c181463b
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
Add null check in MarkSweepMarkObjectSlowPath.

Bug: 14626564
Change-Id: Ief387e96b813440a35a7c480897576d1543891f6
Merge "Add null check in MarkSweepMarkObjectSlowPath."
Merge "Don't build art-run-tests directly into userdata.img"
Fix race condition in ProcessReferences.

There was a race caused by not setting the is_marked_callback_ to
null after doing a non concurrent ProcessReferences which caused a
small window of time during the next concurrent GC where the
mutator could attempt to use a stale is marked callback.

Change-Id: Ia56e463f4b30623911e041687960388973e5304f
Bump oat version again to force recompile

Bug: 4674743

(cherry picked from commit 36a69e7d133d4d056e00962f275ee5b4959f9e93)

Change-Id: I65f30a86abeca58bed74f4bd0f6e1e32c6f3dec8
Merge "Bump oat version again to force recompile"
Merge "Fix race condition in ProcessReferences."
Make it possible to disable read barriers in Class::GetObjectSize()

This is a leftover from cl/91831 (commit
9103c86a98524e9ddfd14f8cee56e919f68eee9b) that attempted to make it
possible to disable read barriers in Object::SizeOf().

Bug: 12687968
Change-Id: I2b05076832936881ec61bc21b6eb6b7c04e0a1f0
Merge "Make it possible to disable read barriers in Class::GetObjectSize()"
Reference::GetReferent() calls by GC should not trigger read barriers.

Otherwise, GC's reference processing would turn all referents alive
via read barriers, which is incorrect.

Bug: 12687968
Change-Id: I1463365981d55fa74a7bb207dd4a16aeec007f8b
Remove all LOG(DEBUG) which is not intended to be checked in

Bug: 14632493
Change-Id: Id9da8b87798af0a1b2bd2c178133e5f1ba47d43d
Merge "Reference::GetReferent() calls by GC should not trigger read barriers."
Fix stub_test to pass with SS collector.

Changed the test to access the allocation entrypoints from the thread.

Change the order roots are visited to prevent a rare error where the
java lang reflect art method would move before it was checked in
SanityCheckFrame.

Change-Id: Ifb96220f3fbb74ea5d720777f130450f04c0e044
Merge "Remove all LOG(DEBUG) which is not intended to be checked in"
Revert "Switch on implicit null pointer and stack overflow checks."

This seems to break facebook

This reverts commit 052664322767de1799f060c306e729b0e73ce893.

Change-Id: I6c8dabdc2519c0925ffde41975878f821e3933de
Bump oat version to force recompile.

Bug: 14661374
Change-Id: I9492419c848a198909e0085358a45d7f4146630d