diff --git a/src/compiler_llvm/backend_types.h b/src/compiler_llvm/backend_types.h
index ede21c1..7e7e2d3 100644
--- a/src/compiler_llvm/backend_types.h
+++ b/src/compiler_llvm/backend_types.h
@@ -59,6 +59,7 @@
   kTBAARegister,
   kTBAAStackTemp,
   kTBAAMemory,
+  kTBAAJRuntime,
   kTBAARuntimeInfo,
   kTBAAConstJObject,
   MAX_TBAA_SPECIAL_TYPE
diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc
index 4994e69..1fa0ce7 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(),
-                                  kTBAARuntimeInfo);
+                                  kTBAAJRuntime);
   }
   // Actual argument (ignore method and this object)
   arg_begin = arg_iter;
@@ -143,7 +143,7 @@
       irb_.LoadFromObjectOffset(thread_object_addr,
                                 Thread::JniEnvOffset().Int32Value(),
                                 irb_.getJObjectTy(),
-                                kTBAARuntimeInfo);
+                                kTBAAJRuntime);
 
   // Set thread state to kNative
   irb_.StoreToObjectOffset(thread_object_addr,
@@ -156,7 +156,7 @@
       irb_.LoadFromObjectOffset(method_object_addr,
                                 Method::NativeMethodOffset().Int32Value(),
                                 GetFunctionType(method_idx_, is_static, true)->getPointerTo(),
-                                kTBAARuntimeInfo);
+                                kTBAAJRuntime);
 
   // Load actual parameters
   std::vector<llvm::Value*> args;
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 6430620..193f570 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1242,13 +1242,13 @@
     irb_.LoadFromObjectOffset(thread_object_addr,
                               Thread::ExceptionOffset().Int32Value(),
                               irb_.getJObjectTy(),
-                              kTBAARuntimeInfo);
+                              kTBAAJRuntime);
 
   // Set thread-local exception field address to NULL
   irb_.StoreToObjectOffset(thread_object_addr,
                            Thread::ExceptionOffset().Int32Value(),
                            irb_.getJNull(),
-                           kTBAARuntimeInfo);
+                           kTBAAJRuntime);
 
   // Keep the exception object in the Dalvik register
   EmitStoreDalvikReg(dec_insn.vA, kObject, kAccurate, exception_object_addr);
@@ -1389,7 +1389,7 @@
 
   llvm::Value* string_field_addr = EmitLoadDexCacheStringFieldAddr(string_idx);
 
-  llvm::Value* string_addr = irb_.CreateLoad(string_field_addr, kTBAARuntimeInfo);
+  llvm::Value* string_addr = irb_.CreateLoad(string_field_addr, kTBAAJRuntime);
 
   if (!compiler_->CanAssumeStringIsPresentInDexCache(dex_cache_, string_idx)) {
     llvm::BasicBlock* block_str_exist =
@@ -1459,7 +1459,7 @@
     llvm::Value* type_field_addr =
       EmitLoadDexCacheResolvedTypeFieldAddr(type_idx);
 
-    llvm::Value* type_object_addr = irb_.CreateLoad(type_field_addr, kTBAARuntimeInfo);
+    llvm::Value* type_object_addr = irb_.CreateLoad(type_field_addr, kTBAAJRuntime);
 
     if (compiler_->CanAssumeTypeIsPresentInDexCache(dex_cache_, type_idx)) {
       return type_object_addr;
@@ -1600,7 +1600,7 @@
     irb_.CreateBitCast(object_addr, jobject_ptr_ty->getPointerTo());
 
   llvm::Value* object_type_object_addr =
-    irb_.CreateLoad(object_type_field_addr, kTBAARuntimeInfo);
+    irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
 
   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, kTBAARuntimeInfo);
+    irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
 
   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(),
-                                   kTBAARuntimeInfo);
+                                   kTBAAJRuntime);
 }
 
 
@@ -2466,7 +2466,7 @@
   llvm::Value* storage_field_addr =
     EmitLoadDexCacheStaticStorageFieldAddr(type_idx);
 
-  llvm::Value* storage_object_addr = irb_.CreateLoad(storage_field_addr, kTBAARuntimeInfo);
+  llvm::Value* storage_object_addr = irb_.CreateLoad(storage_field_addr, kTBAAJRuntime);
 
   llvm::BasicBlock* block_original = irb_.GetInsertBlock();
 
@@ -2565,7 +2565,7 @@
         irb_.LoadFromObjectOffset(method_object_addr,
                                   Method::DeclaringClassOffset().Int32Value(),
                                   irb_.getJObjectTy(),
-                                  kTBAARuntimeInfo);
+                                  kTBAAJRuntime);
     } 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(),
-                                  kTBAARuntimeInfo);
+                                  kTBAAJRuntime);
     } else {
       // Medium path, static storage base in a different class which
       // requires checks that the other class is initialized
@@ -2801,7 +2801,7 @@
     irb_.LoadFromObjectOffset(callee_method_object_addr,
                               Method::GetCodeOffset().Int32Value(),
                               GetFunctionType(callee_method_idx, is_static)->getPointerTo(),
-                              kTBAARuntimeInfo);
+                              kTBAAJRuntime);
 
   // Load the actual parameter
   std::vector<llvm::Value*> args;
@@ -2926,7 +2926,7 @@
   llvm::Value* callee_method_object_field_addr =
     EmitLoadDexCacheResolvedMethodFieldAddr(callee_method_idx);
 
-  return irb_.CreateLoad(callee_method_object_field_addr, kTBAARuntimeInfo);
+  return irb_.CreateLoad(callee_method_object_field_addr, kTBAAJRuntime);
 }
 
 
@@ -2938,14 +2938,14 @@
     irb_.LoadFromObjectOffset(this_addr,
                               Object::ClassOffset().Int32Value(),
                               irb_.getJObjectTy(),
-                              kTBAARuntimeInfo);
+                              kTBAAJRuntime);
 
   // Load vtable address
   llvm::Value* vtable_addr =
     irb_.LoadFromObjectOffset(class_object_addr,
                               Class::VTableOffset().Int32Value(),
                               irb_.getJObjectTy(),
-                              kTBAARuntimeInfo);
+                              kTBAAJRuntime);
 
   // Load callee method object
   llvm::Value* vtable_idx_value =
@@ -2954,7 +2954,7 @@
   llvm::Value* method_field_addr =
     EmitArrayGEP(vtable_addr, vtable_idx_value, irb_.getJObjectTy(), kObject);
 
-  return irb_.CreateLoad(method_field_addr, kTBAARuntimeInfo);
+  return irb_.CreateLoad(method_field_addr, kTBAAJRuntime);
 }
 
 
@@ -3555,7 +3555,7 @@
   return irb_.LoadFromObjectOffset(method_object_addr,
                                    offset.Int32Value(),
                                    irb_.getJObjectTy(),
-                                   kTBAARuntimeInfo);
+                                   kTBAAJRuntime);
 }
 
 
diff --git a/src/compiler_llvm/runtime_support_builder.cc b/src/compiler_llvm/runtime_support_builder.cc
index 2eef771..77cb468 100644
--- a/src/compiler_llvm/runtime_support_builder.cc
+++ b/src/compiler_llvm/runtime_support_builder.cc
@@ -142,7 +142,7 @@
     Value* exception = irb_.LoadFromObjectOffset(thread,
                                                  Thread::ExceptionOffset().Int32Value(),
                                                  irb_.getJObjectTy(),
-                                                 kTBAARuntimeInfo);
+                                                 kTBAAJRuntime);
     Value* is_exception_not_null = irb_.CreateICmpNE(exception, irb_.getJNull());
     irb_.CreateRet(is_exception_not_null);
 
@@ -164,7 +164,7 @@
     Value* suspend_count = irb_.LoadFromObjectOffset(thread,
                                                      Thread::SuspendCountOffset().Int32Value(),
                                                      irb_.getJIntTy(),
-                                                     kTBAARuntimeInfo);
+                                                     kTBAAJRuntime);
     Value* is_suspend = irb_.CreateICmpNE(suspend_count, irb_.getJInt(0));
 
     BasicBlock* basic_block_suspend = BasicBlock::Create(context_, "suspend", func);
@@ -208,7 +208,7 @@
     Value* card_table = irb_.LoadFromObjectOffset(thread,
                                                   Thread::CardTableOffset().Int32Value(),
                                                   irb_.getInt8Ty()->getPointerTo(),
-                                                  kTBAARuntimeInfo);
+                                                  kTBAAJRuntime);
     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 2b8f983..01a1978 100644
--- a/src/compiler_llvm/tbaa_info.cc
+++ b/src/compiler_llvm/tbaa_info.cc
@@ -48,6 +48,7 @@
     case kTBAAMemoryArray:      spec_ty = GenTBAANode("MemoryArray", GetRootType()); break;
     case kTBAAMemoryIdentified: spec_ty = GenTBAANode("MemoryIdentified", GetRootType()); break;
     case kTBAAMemoryStatic:     spec_ty = GenTBAANode("MemoryStatic", GetRootType()); break;
+    case kTBAAJRuntime:         spec_ty = GenTBAANode("JRuntime", GetRootType()); break;
     case kTBAARuntimeInfo:      spec_ty = GenTBAANode("RuntimeInfo", GetRootType()); break;
     case kTBAAConstJObject:     spec_ty = GenTBAANode("ConstJObject", GetRootType(), true); break;
     default:
diff --git a/src/compiler_llvm/upcall_compiler.cc b/src/compiler_llvm/upcall_compiler.cc
index fd2e59d..37dc981 100644
--- a/src/compiler_llvm/upcall_compiler.cc
+++ b/src/compiler_llvm/upcall_compiler.cc
@@ -152,7 +152,7 @@
     irb_.CreatePtrDisp(method_object_addr, code_field_offset_value,
                        accurate_func_type->getPointerTo()->getPointerTo());
 
-  llvm::Value* code_addr = irb_.CreateLoad(code_field_addr, kTBAARuntimeInfo);
+  llvm::Value* code_addr = irb_.CreateLoad(code_field_addr, kTBAAJRuntime);
 #else
   llvm::Value* result = irb_.CreateCall(irb_.GetRuntime(FixStub), method_object_addr);
   llvm::Value* code_addr = irb_.CreatePointerCast(result, accurate_func_type->getPointerTo());
