OSDN Git Service

JIT: Fix for lightweight assembler retry mechanism.
authorbuzbee <buzbee@google.com>
Fri, 6 Aug 2010 21:20:14 +0000 (14:20 -0700)
committerbuzbee <buzbee@google.com>
Fri, 6 Aug 2010 21:20:14 +0000 (14:20 -0700)
Removed a special path in the assembler that took in sideband
info on some instructions and used it to modify pc-relative load
addresses.  This mechanism (used in some older chaining cells) is
no longer needed, and was causing a problem for the new lightweight
assembler retry mechanism.

Change-Id: I1cca5b719bcdea0810831d889ebe2f935c61966f

vm/compiler/codegen/arm/Assemble.c

index b1dbcf6..58150d8 100644 (file)
@@ -950,12 +950,7 @@ static AssemblerStatus assembleInstructions(CompilationUnit *cUnit,
             ((lir->opCode == kThumb2Vldrs) && (lir->operands[1] == rpc))) {
             ArmLIR *lirTarget = (ArmLIR *) lir->generic.target;
             intptr_t pc = (lir->generic.offset + 4) & ~3;
-            /*
-             * Allow an offset (stored in operands[2] to be added to the
-             * PC-relative target. Useful to get to a fixed field inside a
-             * chaining cell.
-             */
-            intptr_t target = lirTarget->generic.offset + lir->operands[2];
+            intptr_t target = lirTarget->generic.offset;
             int delta = target - pc;
             if (delta & 0x3) {
                 LOGE("PC-rel distance is not multiples of 4: %d\n", delta);