diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc
index 1fa0ce7..357d50d 100644
--- a/src/compiler_llvm/jni_compiler.cc
+++ b/src/compiler_llvm/jni_compiler.cc
@@ -90,7 +90,7 @@
         irb_.LoadFromObjectOffset(method_object_addr,
                                   Method::DeclaringClassOffset().Int32Value(),
                                   irb_.getJObjectTy(),
-                                  kTBAAJRuntime);
+                                  kTBAAConstJObject);
   }
   // Actual argument (ignore method and this object)
   arg_begin = arg_iter;
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index cbad3f966..de0e1ea 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1600,7 +1600,7 @@
     irb_.CreateBitCast(object_addr, jobject_ptr_ty->getPointerTo());
 
   llvm::Value* object_type_object_addr =
-    irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
+    irb_.CreateLoad(object_type_field_addr, kTBAAConstJObject);
 
   llvm::Value* equal_class =
     irb_.CreateICmpEQ(type_object_addr, object_type_object_addr);
@@ -1669,7 +1669,7 @@
     irb_.CreateBitCast(object_addr, jobject_ptr_ty->getPointerTo());
 
   llvm::Value* object_type_object_addr =
-    irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
+    irb_.CreateLoad(object_type_field_addr, kTBAAConstJObject);
 
   llvm::Value* equal_class =
     irb_.CreateICmpEQ(type_object_addr, object_type_object_addr);
@@ -1698,7 +1698,7 @@
   return irb_.LoadFromObjectOffset(array,
                                    Array::LengthOffset().Int32Value(),
                                    irb_.getJIntTy(),
-                                   kTBAAJRuntime);
+                                   kTBAAConstJObject);
 }
 
 
@@ -2565,7 +2565,7 @@
         irb_.LoadFromObjectOffset(method_object_addr,
                                   Method::DeclaringClassOffset().Int32Value(),
                                   irb_.getJObjectTy(),
-                                  kTBAAJRuntime);
+                                  kTBAAConstJObject);
     } else {
       // Medium path, static storage base in a different class which
       // requires checks that the other class is initialized
@@ -2644,7 +2644,7 @@
         irb_.LoadFromObjectOffset(method_object_addr,
                                   Method::DeclaringClassOffset().Int32Value(),
                                   irb_.getJObjectTy(),
-                                  kTBAAJRuntime);
+                                  kTBAAConstJObject);
     } else {
       // Medium path, static storage base in a different class which
       // requires checks that the other class is initialized
@@ -2932,14 +2932,14 @@
     irb_.LoadFromObjectOffset(this_addr,
                               Object::ClassOffset().Int32Value(),
                               irb_.getJObjectTy(),
-                              kTBAAJRuntime);
+                              kTBAAConstJObject);
 
   // Load vtable address
   llvm::Value* vtable_addr =
     irb_.LoadFromObjectOffset(class_object_addr,
                               Class::VTableOffset().Int32Value(),
                               irb_.getJObjectTy(),
-                              kTBAAJRuntime);
+                              kTBAAConstJObject);
 
   // Load callee method object
   llvm::Value* vtable_idx_value =
@@ -2948,7 +2948,7 @@
   llvm::Value* method_field_addr =
     EmitArrayGEP(vtable_addr, vtable_idx_value, irb_.getJObjectTy(), kObject);
 
-  return irb_.CreateLoad(method_field_addr, kTBAAJRuntime);
+  return irb_.CreateLoad(method_field_addr, kTBAAConstJObject);
 }
 
 
@@ -3549,7 +3549,7 @@
   return irb_.LoadFromObjectOffset(method_object_addr,
                                    offset.Int32Value(),
                                    irb_.getJObjectTy(),
-                                   kTBAAJRuntime);
+                                   kTBAAConstJObject);
 }
 
 
diff --git a/src/compiler_llvm/runtime_support_builder.cc b/src/compiler_llvm/runtime_support_builder.cc
index f7b9f07..0350031 100644
--- a/src/compiler_llvm/runtime_support_builder.cc
+++ b/src/compiler_llvm/runtime_support_builder.cc
@@ -201,7 +201,7 @@
     Value* card_table = irb_.LoadFromObjectOffset(thread,
                                                   Thread::CardTableOffset().Int32Value(),
                                                   irb_.getInt8Ty()->getPointerTo(),
-                                                  kTBAAJRuntime);
+                                                  kTBAAConstJObject);
     Value* target_addr_int = irb_.CreatePtrToInt(target_addr, irb_.getPtrEquivIntTy());
     Value* card_no = irb_.CreateLShr(target_addr_int, irb_.getPtrEquivInt(GC_CARD_SHIFT));
     Value* card_table_entry = irb_.CreateGEP(card_table, card_no);
diff --git a/src/compiler_llvm/tbaa_info.cc b/src/compiler_llvm/tbaa_info.cc
index d1b351f..913760b 100644
--- a/src/compiler_llvm/tbaa_info.cc
+++ b/src/compiler_llvm/tbaa_info.cc
@@ -61,7 +61,7 @@
 llvm::MDNode* TBAAInfo::GetMemoryJType(TBAASpecialType sty_id, JType jty_id) {
   DCHECK(sty_id == kTBAAHeapArray ||
          sty_id == kTBAAHeapInstance ||
-         sty_id == kTBAAHeapStatic) << "SpecialType must be array, identified, or static";
+         sty_id == kTBAAHeapStatic) << "SpecialType must be array, instance, or static";
 
   DCHECK_GE(jty_id, 0) << "Unknown JType: " << jty_id;
   DCHECK_LT(jty_id, MAX_JTYPE) << "Unknown JType: " << jty_id;
