diff options
author | Ben Cheng <bccheng@android.com> | 2011-03-16 17:19:06 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@android.com> | 2011-03-18 17:02:20 -0700 |
commit | 46cd4fb73824ab57160994c149ce2d7a06923b83 (patch) | |
tree | 0839bd9c762c10ca1f4656f8f340b0d6113f1a22 /vm/compiler/Utility.c | |
parent | 4ee46dbdc0d6ab1337a483b870775e0929a011cc (diff) | |
download | android_dalvik-46cd4fb73824ab57160994c149ce2d7a06923b83.tar.gz android_dalvik-46cd4fb73824ab57160994c149ce2d7a06923b83.tar.bz2 android_dalvik-46cd4fb73824ab57160994c149ce2d7a06923b83.zip |
Extend a trace with a backward branch into a loop.
When seeing a trace that ends with a backward branch, exhaust all code
blocks reachable from that trace and try to identify if there exists a
non-nested loop. If the derived loop is found to be too complex or only
acyclic code is seen, revert to the original compilation mechanism to
translate a simple trace.
This CL uses the whole-method parser/dataflow analysis framework to
identify such loops. No optimization/codegen are performed yet.
Bug: 4086718
Change-Id: I19ed3ee53ea1cbda33940c533de8e9220e647156
Diffstat (limited to 'vm/compiler/Utility.c')
-rw-r--r-- | vm/compiler/Utility.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/vm/compiler/Utility.c b/vm/compiler/Utility.c index 7be57efa2..fb16388cb 100644 --- a/vm/compiler/Utility.c +++ b/vm/compiler/Utility.c @@ -352,7 +352,7 @@ void dvmDebugBitVector(char *msg, const BitVector *bv, int length) LOGE("%s", msg); for (i = 0; i < length; i++) { if (dvmIsBitSet(bv, i)) { - LOGE("Bit %d is set", i); + LOGE(" Bit %d is set", i); } } } @@ -398,6 +398,9 @@ void dvmGetBlockName(BasicBlock *bb, char *name) case kDalvikByteCode: snprintf(name, BLOCK_NAME_LEN, "block%04x", bb->startOffset); break; + case kChainingCellNormal: + snprintf(name, BLOCK_NAME_LEN, "chain%04x", bb->startOffset); + break; case kExceptionHandling: snprintf(name, BLOCK_NAME_LEN, "exception%04x", bb->startOffset); break; |