diff --git a/compiler/common_compiler_test.cc b/compiler/common_compiler_test.cc
index 059a9ee..d5c5e60 100644
--- a/compiler/common_compiler_test.cc
+++ b/compiler/common_compiler_test.cc
@@ -48,16 +48,16 @@
                                                             method->GetDexMethodIndex()));
   }
   if (compiled_method != nullptr) {
-    const std::vector<uint8_t>* code = compiled_method->GetQuickCode();
+    const SwapVector<uint8_t>* code = compiled_method->GetQuickCode();
     uint32_t code_size = code->size();
     CHECK_NE(0u, code_size);
-    const std::vector<uint8_t>& vmap_table = compiled_method->GetVmapTable();
+    const SwapVector<uint8_t>& vmap_table = compiled_method->GetVmapTable();
     uint32_t vmap_table_offset = vmap_table.empty() ? 0u
         : sizeof(OatQuickMethodHeader) + vmap_table.size();
-    const std::vector<uint8_t>& mapping_table = *compiled_method->GetMappingTable();
+    const SwapVector<uint8_t>& mapping_table = *compiled_method->GetMappingTable();
     uint32_t mapping_table_offset = mapping_table.empty() ? 0u
         : sizeof(OatQuickMethodHeader) + vmap_table.size() + mapping_table.size();
-    const std::vector<uint8_t>& gc_map = *compiled_method->GetGcMap();
+    const SwapVector<uint8_t>& gc_map = *compiled_method->GetGcMap();
     uint32_t gc_map_offset = gc_map.empty() ? 0u
         : sizeof(OatQuickMethodHeader) + vmap_table.size() + mapping_table.size() + gc_map.size();
     OatQuickMethodHeader method_header(mapping_table_offset, vmap_table_offset, gc_map_offset,
@@ -156,7 +156,7 @@
                                               compiler_kind, instruction_set,
                                               instruction_set_features_.get(),
                                               true, new std::set<std::string>, nullptr,
-                                              2, true, true, timer_.get(), ""));
+                                              2, true, true, timer_.get(), -1, ""));
   }
   // We typically don't generate an image in unit tests, disable this optimization by default.
   compiler_driver_->SetSupportBootImageFixup(false);
