Implement CheckPutArrayElement.
Change-Id: Ie9617df1debb57c80b937bc033ff231c4daedd0d
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index bcd40de..8b1cef6 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -2328,6 +2328,14 @@
llvm::Value* new_value = EmitLoadDalvikReg(dec_insn.vA, elem_jty, kArray);
+ if (elem_jty == kObject) { // If put an object, check the type.
+ llvm::Function* runtime_func = irb_.GetRuntime(CheckPutArrayElement);
+
+ irb_.CreateCall2(runtime_func, new_value, array_addr);
+
+ EmitGuard_ExceptionLandingPad(dex_pc);
+ }
+
irb_.CreateStore(new_value, array_elem_addr);
irb_.CreateBr(GetNextBasicBlock(dex_pc));