本文整理汇总了Java中org.jf.dexlib2.DebugItemType类的典型用法代码示例。如果您正苦于以下问题:Java DebugItemType类的具体用法?Java DebugItemType怎么用?Java DebugItemType使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
DebugItemType类属于org.jf.dexlib2包,在下文中一共展示了DebugItemType类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: build
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
public static DebugMethodItem build(RegisterFormatter registerFormatter, DebugItem debugItem) {
int codeAddress = debugItem.getCodeAddress();
switch (debugItem.getDebugItemType()) {
case DebugItemType.START_LOCAL:
return new StartLocalMethodItem(codeAddress, -1, registerFormatter, (StartLocal)debugItem);
case DebugItemType.END_LOCAL:
return new EndLocalMethodItem(codeAddress, -1, registerFormatter, (EndLocal)debugItem);
case DebugItemType.RESTART_LOCAL:
return new RestartLocalMethodItem(codeAddress, -1, registerFormatter, (RestartLocal)debugItem);
case DebugItemType.EPILOGUE_BEGIN:
return new BeginEpilogueMethodItem(codeAddress, -4);
case DebugItemType.PROLOGUE_END:
return new EndPrologueMethodItem(codeAddress, -4);
case DebugItemType.SET_SOURCE_FILE:
return new SetSourceFileMethodItem(codeAddress, -3, (SetSourceFile)debugItem);
case DebugItemType.LINE_NUMBER:
return new LineNumberMethodItem(codeAddress, -2, (LineNumber)debugItem);
default:
throw new ExceptionWithContext("Invalid debug item type: %d", debugItem.getDebugItemType());
}
}
示例2: of
import org.jf.dexlib2.DebugItemType; //导入依赖的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());
}
}
示例3: internDebug
import org.jf.dexlib2.DebugItemType; //导入依赖的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;
}
}
}
}
示例4: writeStartLocal
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
public void writeStartLocal(int codeAddress, int register,
@Nullable StringKey name,
@Nullable TypeKey type,
@Nullable StringKey signature) throws IOException {
int nameIndex = stringSection.getNullableItemIndex(name);
int typeIndex = typeSection.getNullableItemIndex(type);
int signatureIndex = stringSection.getNullableItemIndex(signature);
writeAdvancePC(codeAddress);
if (signatureIndex == DexWriter.NO_INDEX) {
writer.write(DebugItemType.START_LOCAL);
writer.writeUleb128(register);
writer.writeUleb128(nameIndex + 1);
writer.writeUleb128(typeIndex + 1);
} else {
writer.write(DebugItemType.START_LOCAL_EXTENDED);
writer.writeUleb128(register);
writer.writeUleb128(nameIndex + 1);
writer.writeUleb128(typeIndex + 1);
writer.writeUleb128(signatureIndex + 1);
}
}
示例5: of
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
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());
}
}
示例6: internDebug
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
private void internDebug( Method method) {
for (MethodParameter param: method.getParameters()) {
String paramName = param.getName();
if (paramName != null) {
dexPool.stringSection.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;
dexPool.stringSection.internNullable(startLocal.getName());
dexPool.typeSection.internNullable(startLocal.getType());
dexPool.stringSection.internNullable(startLocal.getSignature());
break;
case DebugItemType.SET_SOURCE_FILE:
dexPool.stringSection.internNullable(((SetSourceFile) debugItem).getSourceFile());
break;
}
}
}
}
示例7: writeStartLocal
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
public void writeStartLocal(int codeAddress, int register,
StringKey name,
TypeKey type,
StringKey signature) throws IOException {
int nameIndex = stringSection.getNullableItemIndex(name);
int typeIndex = typeSection.getNullableItemIndex(type);
int signatureIndex = stringSection.getNullableItemIndex(signature);
writeAdvancePC(codeAddress);
if (signatureIndex == DexWriter.NO_INDEX) {
writer.write(DebugItemType.START_LOCAL);
writer.writeUleb128(register);
writer.writeUleb128(nameIndex + 1);
writer.writeUleb128(typeIndex + 1);
} else {
writer.write(DebugItemType.START_LOCAL_EXTENDED);
writer.writeUleb128(register);
writer.writeUleb128(nameIndex + 1);
writer.writeUleb128(typeIndex + 1);
writer.writeUleb128(signatureIndex + 1);
}
}
示例8: of
import org.jf.dexlib2.DebugItemType; //导入依赖的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());
}
}
示例9: convertDebugItem
import org.jf.dexlib2.DebugItemType; //导入依赖的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());
}
}
示例10: rewrite
import org.jf.dexlib2.DebugItemType; //导入依赖的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;
}
}
示例11: convertDebugItem
import org.jf.dexlib2.DebugItemType; //导入依赖的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());
}
}
示例12: rewrite
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
@Override public DebugItem rewrite( 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;
}
}
示例13: convertDebugItem
import org.jf.dexlib2.DebugItemType; //导入依赖的package包/类
private BuilderDebugItem convertDebugItem( 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());
}
}
示例14: rewrite
import org.jf.dexlib2.DebugItemType; //导入依赖的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;
}
}