ART: Update for split native bridge initialization

Change-Id: I0b93da93251c6b4638de786bf98cf99df07c3fc2
Fix "const-class v0, I" for libartd.so

This CL fixes the verification of "const-class v0, I"
by adding HasClassVirtual() to PrimitiveType.

Without this CL, the DCHECK for HasClass() in RegType::GetClass()
will raise an assertion failure, since the verifier is trying to get
the class object for the dex cache.

This issue can be reproduced by running the CTS
dot.junit.opcodes.const_class.Main_testN2 with libartd.so.

Change-Id: I605a3fcf7dd9d63e1f739fbb3153d0367911bb3e
Restore kReasonLogging for kDexoptNeeded and kPatchoatNeeded

Bug: 17565501

(cherry picked from commit 63582f211b7123d02f18dfa7075f6758ccb2b07c)

Change-Id: Ie1196191d92286e543ed099c7d1ea4712802912d
Merge "Restore kReasonLogging for kDexoptNeeded and kPatchoatNeeded"
ART: Reject branch/switch/throw to move-result.

move-result* instructions must occur after invoke instructions,
however it was still possible to branch or switch to a move-result*
instruction with creative DEX manipulation. The verifier now rejects
this situation, as well as having a move-result* instruction as the
first instruction in a try block's handler. This now ensures that
move-result* must happen dynamically after an invoke, not just
statically.

Change-Id: Ida97852f4051310fdaf38bed1d6e1c5a541c85c5
Signed-off-by: Stephen Kyle <stephen.kyle@arm.com>
Merge "ART: Update for split native bridge initialization"
Merge "Fix "const-class v0, I" for libartd.so"
Merge "ART: Reject branch/switch/throw to move-result."