Store the key value with switch and catch blocks.
For switch blocks, the key is the enum value with the case.
For catch blocks, the key is the type id of the exception.
Change-Id: I66a7e31c917aba63a0b455ce1796e3d5e277ca5a
diff --git a/vm/compiler/MethodSSATransformation.c b/vm/compiler/MethodSSATransformation.c
index fc56891..48d5b5c 100644
--- a/vm/compiler/MethodSSATransformation.c
+++ b/vm/compiler/MethodSSATransformation.c
@@ -36,9 +36,10 @@
dvmGrowableListIteratorInit(&block->successorBlockList.blocks,
&iterator);
while (true) {
- BasicBlock *succBB =
- (BasicBlock *) dvmGrowableListIteratorNext(&iterator);
- if (succBB == NULL) break;
+ SuccessorBlockInfo *successorBlockInfo =
+ (SuccessorBlockInfo *) dvmGrowableListIteratorNext(&iterator);
+ if (successorBlockInfo == NULL) break;
+ BasicBlock *succBB = successorBlockInfo->block;
recordDFSPreOrder(cUnit, succBB);
}
}
@@ -154,9 +155,10 @@
dvmGrowableListIteratorInit(&bb->successorBlockList.blocks,
&iterator);
while (true) {
- BasicBlock *succBB =
- (BasicBlock *) dvmGrowableListIteratorNext(&iterator);
- if (succBB == NULL) break;
+ SuccessorBlockInfo *successorBlockInfo =
+ (SuccessorBlockInfo *) dvmGrowableListIteratorNext(&iterator);
+ if (successorBlockInfo == NULL) break;
+ BasicBlock *succBB = successorBlockInfo->block;
if (!dvmIsBitSet(succBB->dominators, bb->id)) {
dvmSetBit(bb->domFrontier, succBB->id);
}
@@ -373,9 +375,10 @@
dvmGrowableListIteratorInit(&bb->successorBlockList.blocks,
&iterator);
while (true) {
- BasicBlock *succBB =
- (BasicBlock *) dvmGrowableListIteratorNext(&iterator);
- if (succBB == NULL) break;
+ SuccessorBlockInfo *successorBlockInfo =
+ (SuccessorBlockInfo *) dvmGrowableListIteratorNext(&iterator);
+ if (successorBlockInfo == NULL) break;
+ BasicBlock *succBB = successorBlockInfo->block;
if (succBB->dataFlowInfo) {
computeSuccLiveIn(tempDalvikRegisterV,
succBB->dataFlowInfo->liveInV,