Fix non-inline push_shadow_frame.
Change-Id: Id05e2a92e394441d2afea86ce4867418eccf151a
diff --git a/src/compiler_llvm/generated/art_module.cc b/src/compiler_llvm/generated/art_module.cc
index 872701d..e118646 100644
--- a/src/compiler_llvm/generated/art_module.cc
+++ b/src/compiler_llvm/generated/art_module.cc
@@ -93,7 +93,8 @@
FuncTy_7_args.push_back(PointerTy_1);
FuncTy_7_args.push_back(PointerTy_2);
FuncTy_7_args.push_back(PointerTy_1);
-FuncTy_7_args.push_back(IntegerType::get(mod->getContext(), 32));
+FuncTy_7_args.push_back(IntegerType::get(mod->getContext(), 16));
+FuncTy_7_args.push_back(IntegerType::get(mod->getContext(), 16));
FunctionType* FuncTy_7 = FunctionType::get(
/*Result=*/PointerTy_2,
/*Params=*/FuncTy_7_args,
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 1737b70..f91694e 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -3823,7 +3823,7 @@
} else {
DCHECK(num_shadow_frame_refs_ == 0);
result = irb_.Runtime().EmitPushShadowFrameNoInline(shadow_frame_upcast, method_object_addr,
- num_shadow_frame_refs_);
+ num_shadow_frame_refs_, 0);
}
irb_.CreateStore(result, old_shadow_frame_, kTBAARegister);
}
diff --git a/src/compiler_llvm/runtime_support_builder.cc b/src/compiler_llvm/runtime_support_builder.cc
index 2effddd..dbcbe89 100644
--- a/src/compiler_llvm/runtime_support_builder.cc
+++ b/src/compiler_llvm/runtime_support_builder.cc
@@ -124,10 +124,16 @@
llvm::Value*
RuntimeSupportBuilder::EmitPushShadowFrameNoInline(llvm::Value* new_shadow_frame,
- llvm::Value* method, uint32_t size) {
+ llvm::Value* method, uint16_t num_refs,
+ uint16_t num_vregs) {
Function* func = GetRuntimeSupportFunction(runtime_support::PushShadowFrame);
llvm::CallInst* call_inst =
- irb_.CreateCall4(func, EmitGetCurrentThread(), new_shadow_frame, method, irb_.getInt32(size));
+ irb_.CreateCall5(func,
+ EmitGetCurrentThread(),
+ new_shadow_frame,
+ method,
+ irb_.getInt16(num_refs),
+ irb_.getInt16(num_vregs));
irb_.SetTBAA(call_inst, kTBAARuntimeInfo);
return call_inst;
}
diff --git a/src/compiler_llvm/runtime_support_builder.h b/src/compiler_llvm/runtime_support_builder.h
index b8123a5..ba512af 100644
--- a/src/compiler_llvm/runtime_support_builder.h
+++ b/src/compiler_llvm/runtime_support_builder.h
@@ -53,7 +53,7 @@
virtual llvm::Value* EmitPushShadowFrame(llvm::Value* new_shadow_frame,
llvm::Value* method, uint16_t num_refs, uint16_t num_vregs);
virtual llvm::Value* EmitPushShadowFrameNoInline(llvm::Value* new_shadow_frame,
- llvm::Value* method, uint32_t size);
+ llvm::Value* method, uint16_t num_refs, uint16_t num_vregs);
virtual void EmitPopShadowFrame(llvm::Value* old_shadow_frame);
/* Exception */