Merge master into oc-dev

Vixl dependencies discovered during merge for ART.
Fixes for O release, including CC code size issue, JVMTI, ART
vectorization, the borg scanner, secondary dex files, and others.

Bug: 29516974
Bug: 30126666
Bug: 36141117
Bug: 30773047
Bug: 30933338
Test: make -j 40 test-art-host; art/test.py -j 8 --target
Change-Id: I817eaa7b76f30f39a1d67995b6bbae14decf092b
diff --git a/src/aarch64/macro-assembler-aarch64.cc b/src/aarch64/macro-assembler-aarch64.cc
index 9973e2e..7316887 100644
--- a/src/aarch64/macro-assembler-aarch64.cc
+++ b/src/aarch64/macro-assembler-aarch64.cc
@@ -2697,7 +2697,7 @@
   VIXL_ASSERT(masm_ != NULL);
   if (reg.IsRegister()) {
     ReleaseByCode(masm_->GetScratchRegisterList(), reg.GetCode());
-  } else if (reg.IsFPRegister()) {
+  } else if (reg.IsVRegister()) {
     ReleaseByCode(masm_->GetScratchFPRegisterList(), reg.GetCode());
   } else {
     VIXL_ASSERT(reg.IsNone());
diff --git a/test/aarch64/test-assembler-aarch64.cc b/test/aarch64/test-assembler-aarch64.cc
index 50e7800..2d618e9 100644
--- a/test/aarch64/test-assembler-aarch64.cc
+++ b/test/aarch64/test-assembler-aarch64.cc
@@ -23276,6 +23276,25 @@
   masm.FinalizeCode();
 }
 
+TEST(scratch_scope_basic_v) {
+  MacroAssembler masm;
+
+  {
+    UseScratchRegisterScope temps(&masm);
+    VRegister temp = temps.AcquireVRegisterOfSize(kQRegSize);
+    VIXL_CHECK(temp.Aliases(v31));
+  }
+  {
+    UseScratchRegisterScope temps(&masm);
+    VRegister temp = temps.AcquireVRegisterOfSize(kDRegSize);
+    VIXL_CHECK(temp.Aliases(v31));
+  }
+  {
+    UseScratchRegisterScope temps(&masm);
+    VRegister temp = temps.AcquireVRegisterOfSize(kSRegSize);
+    VIXL_CHECK(temp.Aliases(v31));
+  }
+}
 
 TEST(static_register_types) {
   SETUP();