@Nonnull private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) { switch (debugItem.getDebugItemType()) { case DebugItemType.START_LOCAL: { StartLocal startLocal = (StartLocal) debugItem; throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
private void internDebug(@Nonnull 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; } } } }
@Override public void writeDebugItem(@Nonnull DebugWriter<CharSequence, CharSequence> writer, DebugItem debugItem) throws IOException { switch (debugItem.getDebugItemType()) { case DebugItemType.START_LOCAL: { StartLocal startLocal = (StartLocal)debugItem; throw new ExceptionWithContext("Unexpected debug item type: %d", debugItem.getDebugItemType());
@Override public int getDebugItemType() { return debugItem.getDebugItemType(); }
@Override public int getDebugItemType() { return debugItem.getDebugItemType(); }
@Override public int getDebugItemType() { return debugItem.getDebugItemType(); }
@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; } }
@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; } }
@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; } }
@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()); } }
@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()); } }
@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()); } }
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()); } }
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()); } } }
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()); } } }
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()); } } }
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()); } } }
@Nonnull private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) { switch (debugItem.getDebugItemType()) { case DebugItemType.START_LOCAL: { StartLocal startLocal = (StartLocal)debugItem; throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
private void internDebug(@Nonnull 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; } } } }
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; } } } }