From 6c6f12d0ed64e0f4bcbb7139eca8fe564302f385 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Fri, 13 Jan 2012 19:26:27 +0800 Subject: Implement throw instruction. Change-Id: Ib01aa608bfaab302bac5646f1d7b5761d17d18b5 --- src/compiler_llvm/method_compiler.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/compiler_llvm/method_compiler.cc') diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc index 54e9decddb..7ddae88791 100644 --- a/src/compiler_llvm/method_compiler.cc +++ b/src/compiler_llvm/method_compiler.cc @@ -1137,8 +1137,15 @@ void MethodCompiler::EmitInsn_MoveException(uint32_t dex_pc, void MethodCompiler::EmitInsn_ThrowException(uint32_t dex_pc, Instruction const* insn) { - // UNIMPLEMENTED(WARNING); - irb_.CreateUnreachable(); + + Instruction::DecodedInstruction dec_insn(insn); + + llvm::Value* exception_addr = + EmitLoadDalvikReg(dec_insn.vA_, kObject, kAccurate); + + irb_.CreateCall(irb_.GetRuntime(ThrowException), exception_addr); + + EmitBranchExceptionLandingPad(dex_pc); } -- cgit v1.2.3-59-g8ed1b