Tweak debug data on patched classes

This commit is contained in:
Christian 2013-07-08 12:21:47 -04:00
parent 611668931e
commit 94315253b1
1 changed files with 22 additions and 2 deletions

View File

@ -39,11 +39,19 @@ import cpw.mods.fml.repackage.com.nothome.delta.GDiffPatcher;
public class ClassPatchManager { public class ClassPatchManager {
public static final ClassPatchManager INSTANCE = new ClassPatchManager(); public static final ClassPatchManager INSTANCE = new ClassPatchManager();
public static final boolean dumpPatched = Boolean.parseBoolean(System.getProperty("fml.dumpPatchedClasses", "false"));
private GDiffPatcher patcher = new GDiffPatcher(); private GDiffPatcher patcher = new GDiffPatcher();
private ListMultimap<String, ClassPatch> patches; private ListMultimap<String, ClassPatch> patches;
private File tempDir;
private ClassPatchManager() private ClassPatchManager()
{ {
if (dumpPatched)
{
tempDir = Files.createTempDir();
FMLLog.info("Dumping patched classes to %s",tempDir.getAbsolutePath());
}
} }
public byte[] applyPatch(String name, String mappedName, byte[] inputData) public byte[] applyPatch(String name, String mappedName, byte[] inputData)
@ -57,6 +65,7 @@ public class ClassPatchManager {
{ {
return inputData; return inputData;
} }
FMLLog.fine("Runtime patching class %s (input size %d), found %d patch%s", mappedName, inputData.length, list.size(), list.size()!=1 ? "es" : "");
for (ClassPatch patch: list) for (ClassPatch patch: list)
{ {
if (!patch.targetClassName.equals(mappedName)) if (!patch.targetClassName.equals(mappedName))
@ -84,7 +93,18 @@ public class ClassPatchManager {
} }
} }
} }
FMLLog.fine("Successfully applied runtime patches for %s", mappedName); FMLLog.fine("Successfully applied runtime patches for %s (new size %d)", mappedName, inputData.length);
if (dumpPatched)
{
try
{
Files.write(inputData, new File(tempDir,mappedName));
}
catch (IOException e)
{
FMLLog.log(Level.SEVERE, e, "Failed to write %s to %s", mappedName, tempDir.getAbsolutePath());
}
}
return inputData; return inputData;
} }