Skip to content

ClassLoading 0.6.0

Latest
Compare
Choose a tag to compare
@TeamworkGuy2 TeamworkGuy2 released this 22 Oct 02:48

Add loop and if-statements detection to decompilation, also handle basic try-catch and synchronized blocks.

Added

  • StringBuilderIndent provides the same API as StringBuilder (unfortunately we can't extend StringBuilder because it is final) and implements Indent so that this class can be used to easily build source code strings
  • src/twg2/jbcm/toSource/structures with state handlers for inserting more complex structures such as loops and try-catch statements into source code during opcode iteration

Changed

  • twg2.jbcm.classFormat.attributes.Code toClassString() renamed toClassCodeString()
  • CpIndexChanger is now stateful and contains the old and new index and uses a proper visitor pattern to handle changing indexes
  • Indent changed from a class to an interface with a public static Impl subclass
  • IterateCode renamed CodeIterator
  • RuntimeReloadMain refactored, more complex threaded loading and invocation of methods from updated class files, some code moved to new classes twg2.jbcm.runtime.ClassLoaders and FileUtility
  • twg2.jbcm.runtimeLoading package renamed twg2.jbcm.runtime
  • CodeFlow contains algorithms for detecting loops and if-statements in byte code
  • DataCountingInputStream added and used in ClassFile when parsing a class to improve debug and error message with exact byte index locations
  • Several new unit/integration tests added, CompileTest renamed CompileJava
  • Fixed compiling code during runtime to support class names with arbitrary package paths, required extensive changes to CompileSource
  • JumpConditionInfo rewritten to support representing loop and nested if-statement conditions
  • TypeUtility.classNameFieldDescriptor() renamed toBinaryClassName()