Releases: leibnitz27/cfr
Releases · leibnitz27/cfr
0.88 - Significant tidying
Down to 61 'self compilation' errors.
- Don't force parameter type - allow parameters to be displaced in code
- Improve explicit generics for java 1.6 function args
- Cope (but not particularly well yet) with groovy invokedynamics.
- Fix issue where explicit classfile permissions are more generous than inner class permissions.
- Explicit cast if we're returning a generic place holder.
- Fix uneccessary redundant bracing
- Fix a precedence issue
- Check for correct overload calling POST erasure - means less explicit argument casting.
- Explicit final on loop iters, when forced by inner class usage
- Change placeholder binding collision policy
- Fix possible illegal rewrite of ternaries when de-inlining assignments
- Improve synthetic accessor rewriter.
- Feed back type information from detected loops
- Extract aggressive inlining of assignments, if it can no longer help simplifying code
- Tidy statics so we use simple name where possible
- Fix bad type on unused null argument
- Attempt to resolve any outstanding type clashes at scope discovery time
0.87 - Anonymous class fixes
- Rewrite variable definitions if anonymous inners are inadvertently causing scope hiding.
- Better guess for anonymous inner types.
- Don't remove unused function args from ident set, as it causes them to have ugly idents set (and causes bad behaviour with jre8's broken (still in the wild, alas) HashMap implementation.) (Thanks srborlongan).
0.86 - More changes to make cfr recompilable.
- Fix precedence issue on instanceof.
- Tidy some character quoting where I \uXXXX unicode instead of simple char literals.
- Improve the way outer class this references are processed - more efficient.
- Hide inner class friend helper classes (see fake friendship).
- Remove some illegal wildcards when generating LValue types.
- Handle empty switches better - don't always remove them, as that leaves odd code lying around in switch-on-enum case.
- Better inferrence of final for anonymous class outer references.
- Improvements to implicit cast checking.
0.85 - Fix some switch issues
- Fix bug causing some switches to be skipped when resugaring
- Fix issue with possible unstructured break on switch
0.84 - Fix signed parameter fetch
- Fix use of signed int to get aloads (!), which exhibited as blowup for lambdas with huge numbers of captures.
0.83 - Improve conditionals
- Fix some false sharing scenarios.
- Handle even more complex conditionals with ludicrous inline assignment. ShortCircuitAssignTest4e(!).
- Fix issues with ugly code from early-detected ternaries
- Allow for loops to capture multiple updates, (but only if they're involved in the predicate, for cleaner code. Override with --forloopaggcapture to capture all possible updates).
- Fix bug whereby conditionals were being too aggressively merged.
- Other improvements to conditional merging.
0.82 - More dex2jar top sort special cases….
- Allow jar / class forcing with --analyseas
- Introduce optional extra mechanism, as a different pass to detect bad top sorting. The two heuristics cover 100% of the known cases between them, but I've been unable to combine them! So try both.
0.81 - Another dex2jar improvement, don't roll return jumps unless recovering.
- Only enable rolling returns up to conditional if necessary in recovery pass.
- Another dex2jar optimisation - handle conditionals which jump into middle of later conditionals - if the latter can be rewritten as a block escape. (Thanks MCirsta)
- Minor formatting improvements.
0.80 - Dex improvements, topsort fixes, etc
- Switch fixes
- Improve top sort block emission - allow emission when not all sources satisfied, if it would cause us to save known block ordering
- Several improvements for dex'd code ( thanks pcreath )
- Fix bug with overly aggressive push-through-goto
- Enable tautology conditional recovery pass - will slice out comparisons which are tautologies and move the jump back as far as possible.
- Fix for dup2_x2 sometimes generating weird assignments. ( thanks jmcgowan )
- Lots of code refactoring….