diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index be149af..22e35ad 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -357,7 +357,7 @@
       compiler_kind_(compiler_kind),
       instruction_set_(instruction_set),
       instruction_set_features_(instruction_set_features),
-      freezing_constructor_lock_("freezing constructor lock"),
+      no_barrier_constructor_classes_lock_("freezing constructor lock"),
       compiled_classes_lock_("compiled classes lock"),
       compiled_methods_lock_("compiled method lock"),
       compiled_methods_(MethodTable::key_compare()),
@@ -2110,8 +2110,8 @@
         DCHECK(!it.HasNext());
       }
     }
-    if (requires_constructor_barrier) {
-      manager_->GetCompiler()->AddRequiresConstructorBarrier(self, &dex_file, class_def_index);
+    if (!requires_constructor_barrier) {
+      manager_->GetCompiler()->AddRequiresNoConstructorBarrier(self, &dex_file, class_def_index);
     }
   }
 
@@ -2769,16 +2769,18 @@
   return non_relative_linker_patch_count_;
 }
 
-void CompilerDriver::AddRequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
-                                                   uint16_t class_def_index) {
-  WriterMutexLock mu(self, freezing_constructor_lock_);
-  freezing_constructor_classes_.insert(ClassReference(dex_file, class_def_index));
+void CompilerDriver::AddRequiresNoConstructorBarrier(Thread* self,
+                                                     const DexFile* dex_file,
+                                                     uint16_t class_def_index) {
+  WriterMutexLock mu(self, no_barrier_constructor_classes_lock_);
+  no_barrier_constructor_classes_.insert(ClassReference(dex_file, class_def_index));
 }
 
-bool CompilerDriver::RequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
+bool CompilerDriver::RequiresConstructorBarrier(Thread* self,
+                                                const DexFile* dex_file,
                                                 uint16_t class_def_index) const {
-  ReaderMutexLock mu(self, freezing_constructor_lock_);
-  return freezing_constructor_classes_.count(ClassReference(dex_file, class_def_index)) != 0;
+  ReaderMutexLock mu(self, no_barrier_constructor_classes_lock_);
+  return no_barrier_constructor_classes_.count(ClassReference(dex_file, class_def_index)) == 0;
 }
 
 std::string CompilerDriver::GetMemoryUsageString(bool extended) const {
diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h
index 64a06a2..98e3d89 100644
--- a/compiler/driver/compiler_driver.h
+++ b/compiler/driver/compiler_driver.h
@@ -183,12 +183,12 @@
   // Remove and delete a compiled method.
   void RemoveCompiledMethod(const MethodReference& method_ref) REQUIRES(!compiled_methods_lock_);
 
-  void AddRequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
+  void AddRequiresNoConstructorBarrier(Thread* self, const DexFile* dex_file,
                                      uint16_t class_def_index)
-      REQUIRES(!freezing_constructor_lock_);
+      REQUIRES(!no_barrier_constructor_classes_lock_);
   bool RequiresConstructorBarrier(Thread* self, const DexFile* dex_file,
                                   uint16_t class_def_index) const
-      REQUIRES(!freezing_constructor_lock_);
+      REQUIRES(!no_barrier_constructor_classes_lock_);
 
   // Callbacks from compiler to see what runtime checks must be generated.
 
@@ -629,9 +629,10 @@
   const InstructionSet instruction_set_;
   const InstructionSetFeatures* const instruction_set_features_;
 
-  // All class references that require
-  mutable ReaderWriterMutex freezing_constructor_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
-  std::set<ClassReference> freezing_constructor_classes_ GUARDED_BY(freezing_constructor_lock_);
+  // All class references that do not require constructor barriers
+  mutable ReaderWriterMutex no_barrier_constructor_classes_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
+  std::set<ClassReference> no_barrier_constructor_classes_
+      GUARDED_BY(no_barrier_constructor_classes_lock_);
 
   typedef SafeMap<const ClassReference, CompiledClass*> ClassTable;
   // All class references that this compiler has compiled.
