Skip to content

Releases: jumanji144/Jasm

2.4.1

15 Apr 19:51
Compare
Choose a tag to compare

What's new

  • Added .jar decompile options
  • Added options to load a different library folder in compile step
  • Added line instruction:
  • Syntax: line <line number>

What's fixed

  • Incorrect annotation token handling
  • Upstream blw fixes

2.4.0

24 Feb 17:56
Compare
Choose a tag to compare

What's new

  • WIP Dalvik AST model
    • Not intended for use just yet as things are not fully fleshed out, but if you're curious it is there
  • Changes Compiler result from ClassRepresentation to ClassResult which will hold analysis data even if a full ClassRepresentation could not be built
    • This allows getting partial analysis data even if there were build problems
    • Before, analysis data required the class be fully buildable in order to access
  • AST to CodeElement and CodeElement to AST lookups in AnalysisResults
    • Pairs will with the prior change above with partial builds
    • Allows easy look-ups of compilation mappings without having to do a lot of work yourself
  • Shortcuts for common invokedynamic bootstrap methods
    • LambdaMetaFactory.metafactory -> java.lang.invoke.LambdaMetafactory.metafactory(MethodHandles.Lookup, String, MethodType, MethodType, MethodHandle, MethodType)
    • LambdaMetaFactory.altMetafactory -> java.lang.invoke.LambdaMetafactory.altMetafactory(MethodHandles.Lookup, String, MethodType, Object...)
    • ConstantBootstraps.nullConstant -> java.lang.invoke.ConstantBootstraps.nullConstant(MethodHandles.Lookup, String, Class)
    • ConstantBootstraps.primitiveClass -> java.lang.invoke.ConstantBootstraps.primitiveClass(MethodHandles.Lookup, String, Class)
    • ConstantBootstraps.enumConstant -> java.lang.invoke.ConstantBootstraps.enumConstant(MethodHandles.Lookup, String, Class)
    • ConstantBootstraps.getStaticFinal -> java.lang.invoke.ConstantBootstraps.getStaticFinal(MethodHandles.Lookup, String, Class, Class)
    • ConstantBootstraps.invoke -> java.lang.invoke.ConstantBootstraps.invoke(MethodHandles.Lookup, String, Class, MethodHandle, Object...)
    • ConstantBootstraps.fieldVarHandle -> java.lang.invoke.ConstantBootstraps.fieldVarHandle(MethodHandles.Lookup, String, Class, Class, Class)
    • ConstantBootstraps.staticFieldVarHandle -> java.lang.invoke.ConstantBootstraps.staticFieldVarHandle(MethodHandles.Lookup, String, Class, Class, Class)
    • ConstantBootstraps.arrayVarHandle -> java.lang.invoke.ConstantBootstraps.arrayVarHandle(MethodHandles.Lookup, String, Class, Class)
    • ConstantBootstraps.explicitCast -> java.lang.invoke.ConstantBootstraps.explicitCast(MethodHandles.Lookup, String, Class, Object)
    • SwitchBootstraps.enumSwitch -> java.lang.runtime.SwitchBootstraps.enumSwitch(MethodHandles.Lookup, String, MethodType, Object...)
    • SwitchBootstraps.stringSwitch -> java.lang.runtime.SwitchBootstraps.typeSwitch(MethodHandles.Lookup, String, MethodType, Object...)
    • ObjectMethods.bootstrap -> java.lang.runtime.ObjectMethods.bootstrap(MethodHandles.Lookup, String, TypeDescriptor, Class, String, MethodHandle...)
  • Field and method descriptors are now verified for correct formatting
  • More supported values in the provided BasicMethodValueLookup (which got moved to a new package)
  • Value lookups for fields/methods are only attempted when value content is known

What's Fixed

  • Tokenizer associating tokens with wrong column
  • OOBE when printing a virtual method with no parameters
  • Unintended breakage of annotation path selection in CompilerOptions
  • ASTElement.range() yielding unexpected positions due to unsorted children
  • Missing special case handling for numbers (NaN and the like)
  • Incorrectly creating additional parameters when disassembling methods with wide-type parameters
  • Many analysis engine problems
    • nop, arraylength, *aload and *astore instructions not being implemented
    • anewarray not popping array size off the stack
    • checkcase not changing the value type on the stack
    • Value analysis truncating small floats and doubles
    • Analysis engine errors not being reported in the common error collector system
    • Revisiting control flow would not merge frames, but overwrite them with the last visited iteration
    • Jump target frames being put at the wrong index
    • Unmatched push and pop in a variety of stack-manipulating and math instructions
    • Incorrect handling of frame merging for terminal instructions
    • Incorrect printing of annotation enum values
    • Incorrect printing of annotation class values
    • Unexpected re-ordering of annotation values
    • Missing char/special-case-number support for annotation values

Full Changelog: 2.3.0...2.4.0

2.3.0

08 Dec 09:49
Compare
Choose a tag to compare

What's Changed

  • ASTElement will no longer have null children
  • ASTElement children are sorted by position
  • ASTElement.range() will now consider children
  • ASTMethod now has children: modifiers, exception, code
    • Fixes its range() computation
  • Fixes in analysis with missing opcode handling

Full Changelog: 2.2.0...2.3.0

2.2.0-beta pre release

24 Nov 22:08
Compare
Choose a tag to compare
Pre-release

What's Changed

  • Split method analysis into typed/valued engines - #11
  • Annotation support
  • Constant dynamic support
  • Various parser fixes

Full Changelog: 2.1.0...2.2.0

2.1.0-beta pre release

28 Oct 08:47
Compare
Choose a tag to compare
Pre-release
  • Expose stack analysis results in compiler interface

Full Changelog: 2.0.2...2.1.0

2.0.2-beta pre release

22 Oct 21:37
Compare
Choose a tag to compare
Pre-release
  • Fix class replacing visitor scrambling field/method order

Full Changelog: 2.0.1...2.0.2

2.0.1-beta pre release

25 Sep 22:07
Compare
Choose a tag to compare
Pre-release
  • fully fixed up analyzer thanks to @xxDark
  • added exception handlers

Full Changelog: 2.0.0.1...2.0.1

2.0.0.1-beta pre release

24 Sep 16:52
Compare
Choose a tag to compare
Pre-release

What's Changed

  • JDK-8274347: Do not use switch expressions inline with method call parameters by @Col-E in #7
  • Varied fixes by @Col-E in #8
  • Asorted fixes by @Nowilltolife

Full Changelog: 2.0.0...2.0.0.1

2.0.0-beta pre release

21 Sep 15:23
Compare
Choose a tag to compare
Pre-release

This is the first release of the new JASM format and backend parser.

The feature set is the same as the previous jasm but with the following additions:

  • builtin class -> jasm
  • builtin ast -> class
  • way more checking and verification
  • more robust syntax and parsing
  • errors instead of exceptions
  • partial results

Expression fix

10 Dec 13:42
Compare
Choose a tag to compare

Changes

  • Fixed expressions not parsing as part of body
  • Added test Suit

Full Changelog: 1.4.3.2...1.4.3.3