Fixed the writing logic

git-svn-id: https://smali.googlecode.com/svn/trunk@391 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
JesusFreke@JesusFreke.com 2009-08-11 05:20:40 +00:00
parent 0cd5e5258b
commit 99d01fb803

View File

@ -29,6 +29,7 @@
package org.jf.dexlib; package org.jf.dexlib;
import org.jf.dexlib.Debug.DebugInstructionIterator; import org.jf.dexlib.Debug.DebugInstructionIterator;
import org.jf.dexlib.Debug.DebugOpcode;
import org.jf.dexlib.Util.AnnotatedOutput; import org.jf.dexlib.Util.AnnotatedOutput;
import org.jf.dexlib.Util.Input; import org.jf.dexlib.Util.Input;
import org.jf.dexlib.Util.Leb128Utils; import org.jf.dexlib.Util.Leb128Utils;
@ -284,12 +285,12 @@ public class DebugInfoItem extends Item<DebugInfoItem> {
@Override @Override
public void ProcessStartLocal(int startOffset, int length, int registerNum, int nameIndex, public void ProcessStartLocal(int startOffset, int length, int registerNum, int nameIndex,
int typeIndex, boolean registerIsSigned) { int typeIndex, boolean registerIsSigned) {
out.writeByte(DebugOpcode.DBG_START_LOCAL.value);
if (dexFile.getPreserveSignedRegisters() && registerIsSigned) { if (dexFile.getPreserveSignedRegisters() && registerIsSigned) {
out.writeSignedLeb128(registerNum); out.writeSignedLeb128(registerNum);
} else { } else {
out.writeUnsignedLeb128(registerNum); out.writeUnsignedLeb128(registerNum);
} }
out.writeUnsignedLeb128(registerNum);
if (nameIndex != -1) { if (nameIndex != -1) {
out.writeUnsignedLeb128(referencedItems[referencedItemsPosition++].getIndex() + 1); out.writeUnsignedLeb128(referencedItems[referencedItemsPosition++].getIndex() + 1);
} else { } else {
@ -306,6 +307,7 @@ public class DebugInfoItem extends Item<DebugInfoItem> {
public void ProcessStartLocalExtended(int startOffset, int length, int registerNum, int nameIndex, public void ProcessStartLocalExtended(int startOffset, int length, int registerNum, int nameIndex,
int typeIndex, int signatureIndex, int typeIndex, int signatureIndex,
boolean registerIsSigned) { boolean registerIsSigned) {
out.writeByte(DebugOpcode.DBG_START_LOCAL_EXTENDED.value);
if (dexFile.getPreserveSignedRegisters() && registerIsSigned) { if (dexFile.getPreserveSignedRegisters() && registerIsSigned) {
out.writeSignedLeb128(registerNum); out.writeSignedLeb128(registerNum);
} else { } else {
@ -330,6 +332,7 @@ public class DebugInfoItem extends Item<DebugInfoItem> {
@Override @Override
public void ProcessSetFile(int startOffset, int length, int nameIndex) { public void ProcessSetFile(int startOffset, int length, int nameIndex) {
out.writeByte(DebugOpcode.DBG_SET_FILE.value);
if (nameIndex != -1) { if (nameIndex != -1) {
out.writeUnsignedLeb128(referencedItems[referencedItemsPosition++].getIndex() + 1); out.writeUnsignedLeb128(referencedItems[referencedItemsPosition++].getIndex() + 1);
} else { } else {