[vmkit-commits] [vmkit] r58328 - /vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Oct 28 05:31:41 PDT 2008
Author: geoffray
Date: Tue Oct 28 07:31:40 2008
New Revision: 58328
URL: http://llvm.org/viewvc/llvm-project?rev=58328&view=rev
Log:
And ending ATHROW may as well be an invoke when the function is
'synchronized'.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp?rev=58328&r1=58327&r2=58328&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Tue Oct 28 07:31:40 2008
@@ -855,9 +855,17 @@
pred_iterator PE = pred_end(endBlock);
if (PI == PE && returnType != Type::VoidTy) {
Instruction* I = currentBlock->getTerminator();
- assert(isa<UnreachableInst>(I) && "non terminator before buggy return");
- I->eraseFromParent();
- BranchInst::Create(endBlock, currentBlock);
+
+ assert((isa<UnreachableInst>(I) || isa<InvokeInst>(I)) &&
+ "Malformed end Java block");
+
+ if (isa<UnreachableInst>(I)) {
+ I->eraseFromParent();
+ BranchInst::Create(endBlock, currentBlock);
+ } else if (InvokeInst* II = dyn_cast<InvokeInst>(I)) {
+ II->setNormalDest(endBlock);
+ }
+
endNode->addIncoming(Constant::getNullValue(returnType),
currentBlock);
}
More information about the vmkit-commits
mailing list