本文整理汇总了Java中org.jf.dexlib2.iface.debug.DebugItem类的典型用法代码示例。如果您正苦于以下问题:Java DebugItem类的具体用法?Java DebugItem怎么用?Java DebugItem使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
DebugItem类属于org.jf.dexlib2.iface.debug包,在下文中一共展示了DebugItem类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getDebugItems
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public Iterable<? extends DebugItem> getDebugItems() {
if (fixInstructions) {
fixInstructions();
}
return Iterables.concat(
Iterables.transform(instructionList, new Function<MethodLocation, Iterable<? extends DebugItem>>() {
@Nullable
@Override
public Iterable<? extends DebugItem> apply(@Nullable MethodLocation input) {
assert input != null;
if (fixInstructions) {
throw new IllegalStateException("This iterator was invalidated by a change to"
+ " this MutableMethodImplementation.");
}
return input.getDebugItems();
}
}));
}
示例2: getSourceFileLine
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Override
protected int getSourceFileLine() {
// Parse debug information lazily.
if (sourceFileMethod != null) {
MethodImplementation mi = sourceFileMethod.getImplementation();
if (mi != null) {
for (DebugItem di : mi.getDebugItems()) {
if (di instanceof LineNumber) {
sourceFileLine = ((LineNumber) di).getLineNumber();
break;
}
if (di instanceof SetSourceFile) {
// TODO: Support this type of debug item.
break;
}
}
}
sourceFileMethod = null;
}
return sourceFileLine;
}
示例3: of
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
public static ImmutableDebugItem of(DebugItem debugItem) {
if (debugItem instanceof ImmutableDebugItem) {
return (ImmutableDebugItem) debugItem;
}
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL:
return ImmutableStartLocal.of((StartLocal) debugItem);
case DebugItemType.END_LOCAL:
return ImmutableEndLocal.of((EndLocal) debugItem);
case DebugItemType.RESTART_LOCAL:
return ImmutableRestartLocal.of((RestartLocal) debugItem);
case DebugItemType.PROLOGUE_END:
return ImmutablePrologueEnd.of((PrologueEnd) debugItem);
case DebugItemType.EPILOGUE_BEGIN:
return ImmutableEpilogueBegin.of((EpilogueBegin) debugItem);
case DebugItemType.SET_SOURCE_FILE:
return ImmutableSetSourceFile.of((SetSourceFile) debugItem);
case DebugItemType.LINE_NUMBER:
return ImmutableLineNumber.of((LineNumber) debugItem);
default:
throw new ExceptionWithContext("Invalid debug item type: %d", debugItem.getDebugItemType());
}
}
示例4: internDebug
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
private void internDebug(@Nonnull Method method) {
for (MethodParameter param : method.getParameters()) {
String paramName = param.getName();
if (paramName != null) {
stringPool.intern(paramName);
}
}
MethodImplementation methodImpl = method.getImplementation();
if (methodImpl != null) {
for (DebugItem debugItem : methodImpl.getDebugItems()) {
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL:
StartLocal startLocal = (StartLocal) debugItem;
stringPool.internNullable(startLocal.getName());
typePool.internNullable(startLocal.getType());
stringPool.internNullable(startLocal.getSignature());
break;
case DebugItemType.SET_SOURCE_FILE:
stringPool.internNullable(((SetSourceFile) debugItem).getSourceFile());
break;
}
}
}
}
示例5: getDebugItems
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public Iterable<? extends DebugItem> getDebugItems() {
if (fixInstructions) {
fixInstructions();
}
return Iterables.concat(
Iterables.transform(instructionList, new Function<MethodLocation, Iterable<? extends DebugItem>>() {
@Nullable
@Override
public Iterable<? extends DebugItem> apply(@Nullable MethodLocation input) {
assert input != null;
if (fixInstructions) {
throw new IllegalStateException("This iterator was invalidated by a change to" +
" this MutableMethodImplementation.");
}
return input.getDebugItems();
}
}));
}
示例6: convertDebugItem
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) {
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL: {
StartLocal startLocal = (StartLocal) debugItem;
return new BuilderStartLocal(startLocal.getRegister(),
(StringReference) convertReference(startLocal.getNameReference()),
(TypeReference) convertReference(startLocal.getTypeReference()),
(StringReference) convertReference(startLocal.getSignatureReference()));
}
case DebugItemType.END_LOCAL: {
EndLocal endLocal = (EndLocal) debugItem;
return new BuilderEndLocal(endLocal.getRegister());
}
case DebugItemType.RESTART_LOCAL: {
RestartLocal restartLocal = (RestartLocal) debugItem;
return new BuilderRestartLocal(restartLocal.getRegister());
}
case DebugItemType.PROLOGUE_END:
return new BuilderPrologueEnd();
case DebugItemType.EPILOGUE_BEGIN:
return new BuilderEpilogueBegin();
case DebugItemType.LINE_NUMBER: {
LineNumber lineNumber = (LineNumber) debugItem;
return new BuilderLineNumber(lineNumber.getLineNumber());
}
case DebugItemType.SET_SOURCE_FILE: {
SetSourceFile setSourceFile = (SetSourceFile) debugItem;
return new BuilderSetSourceFile(
(StringReference) convertReference(setSourceFile.getSourceFileReference())
);
}
default:
throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
}
}
示例7: reMethodImpl
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Override
protected MethodImplementation reMethodImpl(MethodImplementation methodImplementation) {
if (methodImplementation == null){
return null;
}
Iterable<? extends Instruction> instructions = methodImplementation.getInstructions();
Iterable<? extends DebugItem> debugItems = methodImplementation.getDebugItems();
List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks = methodImplementation.getTryBlocks();
return new ImmutableMethodImplementation(methodImplementation.getRegisterCount(), reInstructions(instructions), reTryCatchBlock(methodImplementation.getTryBlocks()), reDebugItem(methodImplementation.getDebugItems()));
}
示例8: ImmutableMethodImplementation
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public ImmutableMethodImplementation(int registerCount,
@Nullable Iterable<? extends Instruction> instructions,
@Nullable List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
@Nullable Iterable<? extends DebugItem> debugItems) {
this.registerCount = registerCount;
this.instructions = ImmutableInstruction.immutableListOf(instructions);
this.tryBlocks = ImmutableTryBlock.immutableListOf(tryBlocks);
this.debugItems = ImmutableDebugItem.immutableListOf(debugItems);
}
示例9: ImmutableMethodImplementation
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public ImmutableMethodImplementation(int registerCount,
Iterable<? extends Instruction> instructions,
List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
Iterable<? extends DebugItem> debugItems) {
this.registerCount = registerCount;
this.instructions = ImmutableInstruction.immutableListOf(instructions);
this.tryBlocks = ImmutableTryBlock.immutableListOf(tryBlocks);
this.debugItems = ImmutableDebugItem.immutableListOf(debugItems);
}
示例10: BasicMethodImplementation
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public BasicMethodImplementation(
int registerCount,
Iterable<? extends Instruction> instructions,
List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
Iterable<? extends DebugItem> debugItems
) {
this.registerCount = registerCount;
this.instructions = instructions;
this.tryBlocks = tryBlocks;
this.debugItems = debugItems;
}
示例11: getDebugItems
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nullable
@Override
public Iterable<? extends DebugItem> getDebugItems(@Nonnull PoolMethod method) {
MethodImplementation impl = method.getImplementation();
if (impl != null) {
return impl.getDebugItems();
}
return null;
}
示例12: getDebugItems
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nullable
@Override
public Iterable<? extends DebugItem> getDebugItems(@Nonnull BuilderMethod builderMethod) {
MethodImplementation impl = builderMethod.getImplementation();
if (impl == null) {
return null;
}
return impl.getDebugItems();
}
示例13: rewrite
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public DebugItem rewrite(@Nonnull DebugItem value) {
switch (value.getDebugItemType()) {
case DebugItemType.START_LOCAL:
return new RewrittenStartLocal((StartLocal) value);
case DebugItemType.END_LOCAL:
return new RewrittenEndLocal((EndLocal) value);
case DebugItemType.RESTART_LOCAL:
return new RewrittenRestartLocal((RestartLocal) value);
default:
return value;
}
}
示例14: convertDebugItem
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) {
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL: {
StartLocal startLocal = (StartLocal) debugItem;
return new BuilderStartLocal(startLocal.getRegister(), startLocal.getNameReference(),
startLocal.getTypeReference(), startLocal.getSignatureReference());
}
case DebugItemType.END_LOCAL: {
EndLocal endLocal = (EndLocal) debugItem;
return new BuilderEndLocal(endLocal.getRegister());
}
case DebugItemType.RESTART_LOCAL: {
RestartLocal restartLocal = (RestartLocal) debugItem;
return new BuilderRestartLocal(restartLocal.getRegister());
}
case DebugItemType.PROLOGUE_END:
return new BuilderPrologueEnd();
case DebugItemType.EPILOGUE_BEGIN:
return new BuilderEpilogueBegin();
case DebugItemType.LINE_NUMBER: {
LineNumber lineNumber = (LineNumber) debugItem;
return new BuilderLineNumber(lineNumber.getLineNumber());
}
case DebugItemType.SET_SOURCE_FILE: {
SetSourceFile setSourceFile = (SetSourceFile) debugItem;
return new BuilderSetSourceFile(setSourceFile.getSourceFileReference());
}
default:
throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
}
}
示例15: buildLocalInfo
import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
private static LocalInfo buildLocalInfo(DexBackedMethod dexBackedMethod) {
LocalInfo info = new LocalInfo();
int insSize = getInsSize(dexBackedMethod);
List<? extends MethodParameter> parameters = dexBackedMethod.getParameters();
int argReg = getRegisterSize(dexBackedMethod) - insSize;//reg = resiter - ins
// System.out.println("registerCount:" + methodImplementation.getRegisterCount());
boolean isStatic = AccessFlags.STATIC.isSet(dexBackedMethod.getAccessFlags());
if (!isStatic) {
info.setName(argReg, "this");
argReg++;
}
for (MethodParameter p : parameters) {
int reg = argReg;
if ("D".equals(p.getType()) || "J".equals(p.getType())) {
argReg += 2;
} else {
argReg += 1;
}
if (!Strings.isNullOrEmpty(p.getName())) {
info.setName(reg, p.getName());
}
// System.out.println("pararms:====" + p.getName() + ",paramRegister:" + reg);
}
DexBackedMethodImplementation implementation = dexBackedMethod.getImplementation();
if (implementation != null) {
Iterable<? extends DebugItem> debugItems = implementation.getDebugItems();
for (DebugItem debugItem : debugItems) {
if (debugItem.getDebugItemType() == DebugItemType.START_LOCAL) {
// System.out.println(
// "debugItemStartLocal:====" + ((ImmutableStartLocal) debugItem).getName() + ",register:"
// + ((ImmutableStartLocal) debugItem).getRegister());
info.setName(((ImmutableStartLocal) debugItem).getRegister(),
((ImmutableStartLocal) debugItem).getName());
}
if (debugItem.getDebugItemType() == DebugItemType.START_LOCAL_EXTENDED) {
// System.out.println(
// "debugItemStartLocalExt:====" + ((ImmutableStartLocal) debugItem).getName() + ",register:"
// + ((ImmutableStartLocal) debugItem).getRegister());
info.setName(((ImmutableStartLocal) debugItem).getRegister(),
((ImmutableStartLocal) debugItem).getName());
}
}
}
return info;
}