Merge "Dummy up MOV instructions, add/tweak comments." into dalvik-dev
diff --git a/src/compiler_llvm/art_module.ll b/src/compiler_llvm/art_module.ll
index 555e9330..274d575 100644
--- a/src/compiler_llvm/art_module.ll
+++ b/src/compiler_llvm/art_module.ll
@@ -81,8 +81,6 @@
 declare %JavaObject* @art_check_and_alloc_array_from_code_with_access_check(
   i32, %JavaObject*, i32)
 
-declare void @art_object_init_from_code(%JavaObject*)
-
 declare void @art_find_instance_field_from_code(i32, %JavaObject*)
 declare void @art_find_static_field_from_code(i32, %JavaObject*)
 
@@ -94,7 +92,6 @@
   i32, %JavaObject*)
 
 declare %JavaObject* @art_resolve_string_from_code(%JavaObject*, i32)
-declare %JavaObject* @art_resolve_method_from_code(%JavaObject*, i32, i1)
 
 declare i32 @art_set32_static_from_code(i32, %JavaObject*, i32)
 declare i32 @art_set64_static_from_code(i32, %JavaObject*, i64)
@@ -104,13 +101,32 @@
 declare i64 @art_get64_static_from_code(i32, %JavaObject*)
 declare %JavaObject* @art_get_obj_static_from_code(i32, %JavaObject*)
 
-declare i32 @art_set32_instance_from_code(i32, %JavaObject*, i32)
-declare i32 @art_set64_instance_from_code(i32, %JavaObject*, i64)
-declare i32 @art_set_obj_instance_from_code(i32, %JavaObject*, %JavaObject*)
+declare i32 @art_set32_instance_from_code(i32,
+                                          %JavaObject*,
+                                          %JavaObject*,
+                                          i32)
 
-declare i32 @art_get32_instance_from_code(i32, %JavaObject*)
-declare i64 @art_get64_instance_from_code(i32, %JavaObject*)
-declare %JavaObject* @art_get_obj_instance_from_code(i32, %JavaObject*)
+declare i32 @art_set64_instance_from_code(i32,
+                                          %JavaObject*,
+                                          %JavaObject*,
+                                          i64)
+
+declare i32 @art_set_obj_instance_from_code(i32,
+                                            %JavaObject*,
+                                            %JavaObject*,
+                                            %JavaObject*)
+
+declare i32 @art_get32_instance_from_code(i32,
+                                          %JavaObject*,
+                                          %JavaObject*)
+
+declare i64 @art_get64_instance_from_code(i32,
+                                          %JavaObject*,
+                                          %JavaObject*)
+
+declare %JavaObject* @art_get_obj_instance_from_code(i32,
+                                                     %JavaObject*,
+                                                     %JavaObject*)
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/src/compiler_llvm/generated/art_module.cc b/src/compiler_llvm/generated/art_module.cc
index 9ef0867..22a12fa 100644
--- a/src/compiler_llvm/generated/art_module.cc
+++ b/src/compiler_llvm/generated/art_module.cc
@@ -150,18 +150,18 @@
  /*isVarArg=*/false);
 
 std::vector<Type*>FuncTy_15_args;
+FuncTy_15_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_15_args.push_back(PointerTy_1);
 FuncTy_15_args.push_back(IntegerType::get(mod->getContext(), 32));
-FuncTy_15_args.push_back(IntegerType::get(mod->getContext(), 1));
 FunctionType* FuncTy_15 = FunctionType::get(
- /*Result=*/PointerTy_1,
+ /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_15_args,
  /*isVarArg=*/false);
 
 std::vector<Type*>FuncTy_16_args;
 FuncTy_16_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_16_args.push_back(PointerTy_1);
-FuncTy_16_args.push_back(IntegerType::get(mod->getContext(), 32));
+FuncTy_16_args.push_back(IntegerType::get(mod->getContext(), 64));
 FunctionType* FuncTy_16 = FunctionType::get(
  /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_16_args,
@@ -170,7 +170,7 @@
 std::vector<Type*>FuncTy_17_args;
 FuncTy_17_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_17_args.push_back(PointerTy_1);
-FuncTy_17_args.push_back(IntegerType::get(mod->getContext(), 64));
+FuncTy_17_args.push_back(PointerTy_1);
 FunctionType* FuncTy_17 = FunctionType::get(
  /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_17_args,
@@ -179,7 +179,6 @@
 std::vector<Type*>FuncTy_18_args;
 FuncTy_18_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_18_args.push_back(PointerTy_1);
-FuncTy_18_args.push_back(PointerTy_1);
 FunctionType* FuncTy_18 = FunctionType::get(
  /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_18_args,
@@ -189,34 +188,74 @@
 FuncTy_19_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_19_args.push_back(PointerTy_1);
 FunctionType* FuncTy_19 = FunctionType::get(
- /*Result=*/IntegerType::get(mod->getContext(), 32),
+ /*Result=*/IntegerType::get(mod->getContext(), 64),
  /*Params=*/FuncTy_19_args,
  /*isVarArg=*/false);
 
 std::vector<Type*>FuncTy_20_args;
 FuncTy_20_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_20_args.push_back(PointerTy_1);
+FuncTy_20_args.push_back(PointerTy_1);
+FuncTy_20_args.push_back(IntegerType::get(mod->getContext(), 32));
 FunctionType* FuncTy_20 = FunctionType::get(
- /*Result=*/IntegerType::get(mod->getContext(), 64),
+ /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_20_args,
  /*isVarArg=*/false);
 
 std::vector<Type*>FuncTy_21_args;
+FuncTy_21_args.push_back(IntegerType::get(mod->getContext(), 32));
 FuncTy_21_args.push_back(PointerTy_1);
 FuncTy_21_args.push_back(PointerTy_1);
+FuncTy_21_args.push_back(IntegerType::get(mod->getContext(), 64));
 FunctionType* FuncTy_21 = FunctionType::get(
  /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_21_args,
  /*isVarArg=*/false);
 
 std::vector<Type*>FuncTy_22_args;
+FuncTy_22_args.push_back(IntegerType::get(mod->getContext(), 32));
+FuncTy_22_args.push_back(PointerTy_1);
 FuncTy_22_args.push_back(PointerTy_1);
 FuncTy_22_args.push_back(PointerTy_1);
 FunctionType* FuncTy_22 = FunctionType::get(
- /*Result=*/Type::getVoidTy(mod->getContext()),
+ /*Result=*/IntegerType::get(mod->getContext(), 32),
  /*Params=*/FuncTy_22_args,
  /*isVarArg=*/false);
 
+std::vector<Type*>FuncTy_23_args;
+FuncTy_23_args.push_back(IntegerType::get(mod->getContext(), 32));
+FuncTy_23_args.push_back(PointerTy_1);
+FuncTy_23_args.push_back(PointerTy_1);
+FunctionType* FuncTy_23 = FunctionType::get(
+ /*Result=*/IntegerType::get(mod->getContext(), 64),
+ /*Params=*/FuncTy_23_args,
+ /*isVarArg=*/false);
+
+std::vector<Type*>FuncTy_24_args;
+FuncTy_24_args.push_back(IntegerType::get(mod->getContext(), 32));
+FuncTy_24_args.push_back(PointerTy_1);
+FuncTy_24_args.push_back(PointerTy_1);
+FunctionType* FuncTy_24 = FunctionType::get(
+ /*Result=*/PointerTy_1,
+ /*Params=*/FuncTy_24_args,
+ /*isVarArg=*/false);
+
+std::vector<Type*>FuncTy_25_args;
+FuncTy_25_args.push_back(PointerTy_1);
+FuncTy_25_args.push_back(PointerTy_1);
+FunctionType* FuncTy_25 = FunctionType::get(
+ /*Result=*/IntegerType::get(mod->getContext(), 32),
+ /*Params=*/FuncTy_25_args,
+ /*isVarArg=*/false);
+
+std::vector<Type*>FuncTy_26_args;
+FuncTy_26_args.push_back(PointerTy_1);
+FuncTy_26_args.push_back(PointerTy_1);
+FunctionType* FuncTy_26 = FunctionType::get(
+ /*Result=*/Type::getVoidTy(mod->getContext()),
+ /*Params=*/FuncTy_26_args,
+ /*isVarArg=*/false);
+
 
 // Function Declarations
 
@@ -462,17 +501,6 @@
 AttrListPtr func_art_check_and_alloc_array_from_code_with_access_check_PAL;
 func_art_check_and_alloc_array_from_code_with_access_check->setAttributes(func_art_check_and_alloc_array_from_code_with_access_check_PAL);
 
-Function* func_art_object_init_from_code = mod->getFunction("art_object_init_from_code");
-if (!func_art_object_init_from_code) {
-func_art_object_init_from_code = Function::Create(
- /*Type=*/FuncTy_4,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"art_object_init_from_code", mod); // (external, no body)
-func_art_object_init_from_code->setCallingConv(CallingConv::C);
-}
-AttrListPtr func_art_object_init_from_code_PAL;
-func_art_object_init_from_code->setAttributes(func_art_object_init_from_code_PAL);
-
 Function* func_art_find_instance_field_from_code = mod->getFunction("art_find_instance_field_from_code");
 if (!func_art_find_instance_field_from_code) {
 func_art_find_instance_field_from_code = Function::Create(
@@ -550,21 +578,10 @@
 AttrListPtr func_art_resolve_string_from_code_PAL;
 func_art_resolve_string_from_code->setAttributes(func_art_resolve_string_from_code_PAL);
 
-Function* func_art_resolve_method_from_code = mod->getFunction("art_resolve_method_from_code");
-if (!func_art_resolve_method_from_code) {
-func_art_resolve_method_from_code = Function::Create(
- /*Type=*/FuncTy_15,
- /*Linkage=*/GlobalValue::ExternalLinkage,
- /*Name=*/"art_resolve_method_from_code", mod); // (external, no body)
-func_art_resolve_method_from_code->setCallingConv(CallingConv::C);
-}
-AttrListPtr func_art_resolve_method_from_code_PAL;
-func_art_resolve_method_from_code->setAttributes(func_art_resolve_method_from_code_PAL);
-
 Function* func_art_set32_static_from_code = mod->getFunction("art_set32_static_from_code");
 if (!func_art_set32_static_from_code) {
 func_art_set32_static_from_code = Function::Create(
- /*Type=*/FuncTy_16,
+ /*Type=*/FuncTy_15,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set32_static_from_code", mod); // (external, no body)
 func_art_set32_static_from_code->setCallingConv(CallingConv::C);
@@ -575,7 +592,7 @@
 Function* func_art_set64_static_from_code = mod->getFunction("art_set64_static_from_code");
 if (!func_art_set64_static_from_code) {
 func_art_set64_static_from_code = Function::Create(
- /*Type=*/FuncTy_17,
+ /*Type=*/FuncTy_16,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set64_static_from_code", mod); // (external, no body)
 func_art_set64_static_from_code->setCallingConv(CallingConv::C);
@@ -586,7 +603,7 @@
 Function* func_art_set_obj_static_from_code = mod->getFunction("art_set_obj_static_from_code");
 if (!func_art_set_obj_static_from_code) {
 func_art_set_obj_static_from_code = Function::Create(
- /*Type=*/FuncTy_18,
+ /*Type=*/FuncTy_17,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set_obj_static_from_code", mod); // (external, no body)
 func_art_set_obj_static_from_code->setCallingConv(CallingConv::C);
@@ -597,7 +614,7 @@
 Function* func_art_get32_static_from_code = mod->getFunction("art_get32_static_from_code");
 if (!func_art_get32_static_from_code) {
 func_art_get32_static_from_code = Function::Create(
- /*Type=*/FuncTy_19,
+ /*Type=*/FuncTy_18,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_get32_static_from_code", mod); // (external, no body)
 func_art_get32_static_from_code->setCallingConv(CallingConv::C);
@@ -608,7 +625,7 @@
 Function* func_art_get64_static_from_code = mod->getFunction("art_get64_static_from_code");
 if (!func_art_get64_static_from_code) {
 func_art_get64_static_from_code = Function::Create(
- /*Type=*/FuncTy_20,
+ /*Type=*/FuncTy_19,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_get64_static_from_code", mod); // (external, no body)
 func_art_get64_static_from_code->setCallingConv(CallingConv::C);
@@ -630,7 +647,7 @@
 Function* func_art_set32_instance_from_code = mod->getFunction("art_set32_instance_from_code");
 if (!func_art_set32_instance_from_code) {
 func_art_set32_instance_from_code = Function::Create(
- /*Type=*/FuncTy_16,
+ /*Type=*/FuncTy_20,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set32_instance_from_code", mod); // (external, no body)
 func_art_set32_instance_from_code->setCallingConv(CallingConv::C);
@@ -641,7 +658,7 @@
 Function* func_art_set64_instance_from_code = mod->getFunction("art_set64_instance_from_code");
 if (!func_art_set64_instance_from_code) {
 func_art_set64_instance_from_code = Function::Create(
- /*Type=*/FuncTy_17,
+ /*Type=*/FuncTy_21,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set64_instance_from_code", mod); // (external, no body)
 func_art_set64_instance_from_code->setCallingConv(CallingConv::C);
@@ -652,7 +669,7 @@
 Function* func_art_set_obj_instance_from_code = mod->getFunction("art_set_obj_instance_from_code");
 if (!func_art_set_obj_instance_from_code) {
 func_art_set_obj_instance_from_code = Function::Create(
- /*Type=*/FuncTy_18,
+ /*Type=*/FuncTy_22,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_set_obj_instance_from_code", mod); // (external, no body)
 func_art_set_obj_instance_from_code->setCallingConv(CallingConv::C);
@@ -663,7 +680,7 @@
 Function* func_art_get32_instance_from_code = mod->getFunction("art_get32_instance_from_code");
 if (!func_art_get32_instance_from_code) {
 func_art_get32_instance_from_code = Function::Create(
- /*Type=*/FuncTy_19,
+ /*Type=*/FuncTy_17,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_get32_instance_from_code", mod); // (external, no body)
 func_art_get32_instance_from_code->setCallingConv(CallingConv::C);
@@ -674,7 +691,7 @@
 Function* func_art_get64_instance_from_code = mod->getFunction("art_get64_instance_from_code");
 if (!func_art_get64_instance_from_code) {
 func_art_get64_instance_from_code = Function::Create(
- /*Type=*/FuncTy_20,
+ /*Type=*/FuncTy_23,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_get64_instance_from_code", mod); // (external, no body)
 func_art_get64_instance_from_code->setCallingConv(CallingConv::C);
@@ -685,7 +702,7 @@
 Function* func_art_get_obj_instance_from_code = mod->getFunction("art_get_obj_instance_from_code");
 if (!func_art_get_obj_instance_from_code) {
 func_art_get_obj_instance_from_code = Function::Create(
- /*Type=*/FuncTy_11,
+ /*Type=*/FuncTy_24,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_get_obj_instance_from_code", mod); // (external, no body)
 func_art_get_obj_instance_from_code->setCallingConv(CallingConv::C);
@@ -696,7 +713,7 @@
 Function* func_art_is_assignable_from_code = mod->getFunction("art_is_assignable_from_code");
 if (!func_art_is_assignable_from_code) {
 func_art_is_assignable_from_code = Function::Create(
- /*Type=*/FuncTy_21,
+ /*Type=*/FuncTy_25,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_is_assignable_from_code", mod); // (external, no body)
 func_art_is_assignable_from_code->setCallingConv(CallingConv::C);
@@ -707,7 +724,7 @@
 Function* func_art_check_cast_from_code = mod->getFunction("art_check_cast_from_code");
 if (!func_art_check_cast_from_code) {
 func_art_check_cast_from_code = Function::Create(
- /*Type=*/FuncTy_22,
+ /*Type=*/FuncTy_26,
  /*Linkage=*/GlobalValue::ExternalLinkage,
  /*Name=*/"art_check_cast_from_code", mod); // (external, no body)
 func_art_check_cast_from_code->setCallingConv(CallingConv::C);
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 3af60f4..4694777 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -2305,11 +2305,11 @@
     llvm::Function* runtime_func;
 
     if (field_jty == kObject) {
-      runtime_func = irb_.GetRuntime(SetObjectInstance);
+      runtime_func = irb_.GetRuntime(GetObjectInstance);
     } else if (field_jty == kLong || field_jty == kDouble) {
-      runtime_func = irb_.GetRuntime(Set64Instance);
+      runtime_func = irb_.GetRuntime(Get64Instance);
     } else {
-      runtime_func = irb_.GetRuntime(Set32Instance);
+      runtime_func = irb_.GetRuntime(Get32Instance);
     }
 
     llvm::ConstantInt* field_idx_value = irb_.getInt32(field_idx);
@@ -2318,8 +2318,8 @@
 
     EmitUpdateLineNumFromDexPC(dex_pc);
 
-    field_value = irb_.CreateCall2(runtime_func, field_idx_value,
-                                   method_object_addr);
+    field_value = irb_.CreateCall3(runtime_func, field_idx_value,
+                                   method_object_addr, object_addr);
 
     EmitGuard_ExceptionLandingPad(dex_pc);
 
@@ -2378,8 +2378,8 @@
 
     EmitUpdateLineNumFromDexPC(dex_pc);
 
-    irb_.CreateCall3(runtime_func, field_idx_value,
-                     method_object_addr, new_value);
+    irb_.CreateCall4(runtime_func, field_idx_value,
+                     method_object_addr, object_addr, new_value);
 
     EmitGuard_ExceptionLandingPad(dex_pc);
 
diff --git a/src/compiler_llvm/runtime_support_func_list.h b/src/compiler_llvm/runtime_support_func_list.h
index 93fde67..6aaa08a 100644
--- a/src/compiler_llvm/runtime_support_func_list.h
+++ b/src/compiler_llvm/runtime_support_func_list.h
@@ -39,7 +39,6 @@
   V(FindInstanceField, "art_find_instance_field_from_code") \
   V(FindStaticField, "art_find_static_field_from_code") \
   V(ResolveString, "art_resolve_string_from_code") \
-  V(ResolveMethod, "art_resolve_method_from_code") \
   V(Set32Static, "art_set32_static_from_code") \
   V(Set64Static, "art_set64_static_from_code") \
   V(SetObjectStatic, "art_set_obj_static_from_code") \
@@ -55,5 +54,4 @@
   V(InitializeStaticStorage, "art_initialize_static_storage_from_code") \
   V(IsExceptionPending, "art_is_exception_pending_from_code") \
   V(FindCatchBlock, "art_find_catch_block_from_code") \
-  V(ObjectInit, "art_object_init_from_code") \
   V(FindInterfaceMethod, "art_find_interface_method_from_code")