private void addDebugInfo(final List<MethodItem> methodItems) { for (DebugItem debugItem: methodImpl.getDebugItems()) { methodItems.add(DebugMethodItem.build(registerFormatter, debugItem)); } }
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()); } } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".local "); registerFormatter.writeTo(writer, startLocal.getRegister()); String name = startLocal.getName(); String type = startLocal.getType(); String signature = startLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(", "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
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()); } } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".restart local "); registerFormatter.writeTo(writer, restartLocal.getRegister()); String name = restartLocal.getName(); String type = restartLocal.getType(); String signature = restartLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
private void addDebugInfo(final List<MethodItem> methodItems) { for (DebugItem debugItem: methodImpl.getDebugItems()) { methodItems.add(DebugMethodItem.build(registerFormatter, debugItem)); } }
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()); } } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".restart local "); registerFormatter.writeTo(writer, restartLocal.getRegister()); String name = restartLocal.getName(); String type = restartLocal.getType(); String signature = restartLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
private void addDebugInfo(final List<MethodItem> methodItems) { for (DebugItem debugItem: methodImpl.getDebugItems()) { methodItems.add(DebugMethodItem.build(registerFormatter, debugItem)); } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".end local "); registerFormatter.writeTo(writer, endLocal.getRegister()); String name = endLocal.getName(); String type = endLocal.getType(); String signature = endLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".restart local "); registerFormatter.writeTo(writer, restartLocal.getRegister()); String name = restartLocal.getName(); String type = restartLocal.getType(); String signature = restartLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".end local "); registerFormatter.writeTo(writer, endLocal.getRegister()); String name = endLocal.getName(); String type = endLocal.getType(); String signature = endLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".local "); registerFormatter.writeTo(writer, startLocal.getRegister()); String name = startLocal.getName(); String type = startLocal.getType(); String signature = startLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(", "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".end local "); registerFormatter.writeTo(writer, endLocal.getRegister()); String name = endLocal.getName(); String type = endLocal.getType(); String signature = endLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(" # "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }
@Override public boolean writeTo(IndentingWriter writer) throws IOException { writer.write(".local "); registerFormatter.writeTo(writer, startLocal.getRegister()); String name = startLocal.getName(); String type = startLocal.getType(); String signature = startLocal.getSignature(); if (name != null || type != null || signature != null) { writer.write(", "); LocalFormatter.writeLocal(writer, name, type, signature); } return true; } }