Trigger GSS whole-heap collection based on large object allocations.

This is to avoid a large amount of accumulated dead large objects. For
example, in Maps, there was a case where ~100 MB of large objects were
accumulated before collected.

Bug: 11650816
Change-Id: Ie0ab1561282902a823e110d45f87146ba41fe6f8
X86: EmitArrayImm shouldn't truncate to 16 bits

The code in X86Mir2Lir::EmitArrayImm() always truncates the immediate
value to 16 bits.  This can't be right. The code in EmitImm() will check
the expected immediate size from the entry.

Change-Id: I75b3b96e41777838b0f243d65f3f2ded2e1dbdd2
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Fix spammy "Disabling background compaction for non zygote" message.

Change-Id: I4abd85f75341ffc3cc38200d8b43a77b9b87c744
AArch64: Change arm64 backend to produce A64 code.

The arm backend clone is changed to produce A64 code. At the moment
this backend can only compile simple methods (both leaf and non-leaf).

Most of the work on the assembler (assembler_arm64.cc) has been done.
Some work on the LIR generation layer (functions such as OpRegRegImm
& friends) is still necessary. The register allocator still needs to
be adapted to the A64 instruction set (it is mostly unchanged from
the arm backend). Offsets for helpers in gen_invoke.cc still need to
be changed to work on 64-bit.

Change-Id: I388f99eeb832857981c7d9d5cb5b71af64a4b921
Merge "AArch64: Change arm64 backend to produce A64 code."
Merge "Trigger GSS whole-heap collection based on large object allocations."
Add concurrent reference processing.

Concurrent reference processing currently works by going into native
code from java.lang.ref.Reference.get(). From there, we have a fast
path if the references aren't being processed which returns the
referent without needing to access any locks. In the slow path we
block until reference processing is complete. It may be possible to
improve the slow path if the referent is blackened.

TODO: Investigate doing the fast path in java code by using racy reads
of a static volatile boolean. This will work as long as there are no
suspend points inbetween the boolean read and referent read.

Bug: 14381653

Change-Id: I1546b55be4691fe4ff4aa6d857b234cce7187d87
Merge "X86: EmitArrayImm shouldn't truncate to 16 bits"
Allow invoke-virtual-quick on interface types.

Fix a broken assumption that receivers for invoke-virtual are non-interface
types.

Bug: 14469172
Change-Id: I0d6e19141d4f52a4bd27bf1cb5f8d0e85fc9cf49
Merge "Allow invoke-virtual-quick on interface types."
Add --64 option for run-all-tests.

Change-Id: I26c5ad8e1bf6747fecf4a5311eac6e051b2d3cd8
Merge "Fix spammy "Disabling background compaction for non zygote" message."
Merge "Add concurrent reference processing."
Use atomic load/store for volatile IGET/IPUT/SGET/SPUT.

Bug: 14112919
Change-Id: I79316f438dd3adea9b2653ffc968af83671ad282
Only disable @PLT symbols for clang 3.3.

Change-Id: Iac3495c5e4cee73b15f684baa5af685013d0bd5d
Merge "Only disable @PLT symbols for clang 3.3."
Merge "Add --64 option for run-all-tests."
Use WaitHoldingLocks in ReferenceProcessor::GetReferent.

The caller may be holding other locks, so we must use this or else
we get bad mutexes held errors. Also added a lock level for the
reference processor.

Change-Id: I364a303a4106982bd9bfaac5b116cea1638ea6d3
Merge "Use WaitHoldingLocks in ReferenceProcessor::GetReferent."
Up OAT version to force recompile

Bug: 14638347

(cherry picked from commit f582426e819830242706308601610132fca602ce)

Change-Id: Ic86c1f0affa109b80bc1e8e85ee353db1c087bbd