Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of lambda merging for Kotlin lambda classes #257

Open
wants to merge 223 commits into
base: master
Choose a base branch
from

Commits on Feb 8, 2022

  1. Skeleton for new KotlinLambdaMerger to be used between shrinking and …

    …optimising
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    7234690 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b45bb36 View commit details
    Browse the repository at this point in the history
  3. Return Function0 interface class

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    e1e33ef View commit details
    Browse the repository at this point in the history
  4. Filter on lambda classes with 0-argument constructor

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    1f94231 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    4f7c618 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    26a90ae View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    0a68701 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    a92c963 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    60d6326 View commit details
    Browse the repository at this point in the history
  10. KotlinLambdaMerger: constants for each FunctionX interface

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3596717 View commit details
    Browse the repository at this point in the history
  11. KotlinLambdaMerger: imports

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    53bd917 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    190d8f2 View commit details
    Browse the repository at this point in the history
  13. KotlinLambdaMerger: use new constants

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    e9f2775 View commit details
    Browse the repository at this point in the history
  14. KotlinLambdaClassMerger: use new constants

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    b53739b View commit details
    Browse the repository at this point in the history
  15. ProGuard: pass extraDataEntryNameMap to lambda merger

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    a43d0de View commit details
    Browse the repository at this point in the history
  16. KotlinLambdaMerger implemented

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    438709e View commit details
    Browse the repository at this point in the history
  17. ProGuard: call shrinker after lambda merging

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    42cdc99 View commit details
    Browse the repository at this point in the history
  18. Test for PackageGrouper & checking whether lambda merger reduces numb…

    …er of classes
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    5fe4112 View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    16a95e7 View commit details
    Browse the repository at this point in the history
  20. KLCM: make invokeMethod local variable

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3f54119 View commit details
    Browse the repository at this point in the history
  21. KLCM: make constructor arguments final

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    c0e70ba View commit details
    Browse the repository at this point in the history
  22. Comment log statements

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3e7cf66 View commit details
    Browse the repository at this point in the history
  23. Messy MethodInlinerWrapper class

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    0d24de5 View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    cdddc97 View commit details
    Browse the repository at this point in the history
  25. Copy lambda bridge invoke method to lambda group (after inlining spec…

    …ific invoke)
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    e8b70e5 View commit details
    Browse the repository at this point in the history
  26. Comment on invoke inlining assumption

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    fdb8426 View commit details
    Browse the repository at this point in the history
  27. Cast invoke Method to ProgramMethod

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    43157e8 View commit details
    Browse the repository at this point in the history
  28. Configuration menu
    Copy the full SHA
    0cd65e8 View commit details
    Browse the repository at this point in the history
  29. Correct comment in test

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    a3a662a View commit details
    Browse the repository at this point in the history
  30. Configuration menu
    Copy the full SHA
    506ea6f View commit details
    Browse the repository at this point in the history
  31. Update CI action to refer to proguard-core fork

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    94ee87f View commit details
    Browse the repository at this point in the history
  32. Set path for proguard-core fork

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    604fae1 View commit details
    Browse the repository at this point in the history
  33. Update path for proguard-core fork

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    4b96ecc View commit details
    Browse the repository at this point in the history
  34. Remove unused import of wrong package

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    d95e082 View commit details
    Browse the repository at this point in the history
  35. Move PackageGrouper to ProGuard-CORE

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    340fe16 View commit details
    Browse the repository at this point in the history
  36. Move MethodCopier to ProGuard-CORE

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    b6e9ea1 View commit details
    Browse the repository at this point in the history
  37. Remove PackageGrouper tests from KotlinLambdaMergerTest

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    878aa06 View commit details
    Browse the repository at this point in the history
  38. Configuration menu
    Copy the full SHA
    21ad167 View commit details
    Browse the repository at this point in the history
  39. Separate builder for entire lambda group invoke method

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    0e41f06 View commit details
    Browse the repository at this point in the history
  40. Separate builder for entire lambda group <init> constructor

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    d87fc35 View commit details
    Browse the repository at this point in the history
  41. Separate builder for lambda groups

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    0e67524 View commit details
    Browse the repository at this point in the history
  42. Add lambdaGroup property to ProgramClassOptimizationInfo

    Modified classes: ProgramClassOptimizationInfo
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    2c4c0e3 View commit details
    Browse the repository at this point in the history
  43. Method to check whether lambda should be merged

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    82b4d0c View commit details
    Browse the repository at this point in the history
  44. Add optimisation info to lambda's before merging

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    764279a View commit details
    Browse the repository at this point in the history
  45. Don't inline before/after entire lambda merging process

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    c21c7a9 View commit details
    Browse the repository at this point in the history
  46. Remove unused imports

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    ef3c2dd View commit details
    Browse the repository at this point in the history
  47. KotlinLambdaClassMerger as ClassPoolVisitor uses lambda group builder

    Modified classes: KotlinLambdaClassMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    17afac1 View commit details
    Browse the repository at this point in the history
  48. Pass configuration to constructor of lambda class merger

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    6efa42b View commit details
    Browse the repository at this point in the history
  49. Remove old (unrelevant) comments

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    29e30dc View commit details
    Browse the repository at this point in the history
  50. Clean classes before lambda merging

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    eb41035 View commit details
    Browse the repository at this point in the history
  51. Invoke lambda group init without reference (to be initialised later)

    Modified classes: KotlinLambdaEnclosingMethodUpdater
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    4d22e85 View commit details
    Browse the repository at this point in the history
  52. Initialise all classes after lambda merging

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    9199563 View commit details
    Browse the repository at this point in the history
  53. Add lambd class interfaces to lambda group

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    f99d34d View commit details
    Browse the repository at this point in the history
  54. Referenced class of RefConstant can be null

    Modified classes: KotlinLambdaEnclosingMethodUpdater
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3ba9c43 View commit details
    Browse the repository at this point in the history
  55. Add support for merging FunctionN lambda's

    Modified classes: KotlinLambdaGroupInvokeMethodBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    a4741bd View commit details
    Browse the repository at this point in the history
  56. Fix: load lambda group before invoke method arguments

    Modified classes: KotlinLambdaGroupInvokeMethodBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    04c434b View commit details
    Browse the repository at this point in the history
  57. Use separate invoke method builder for FunctionN lambda's

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    ea38c1a View commit details
    Browse the repository at this point in the history
  58. Merge lambda's of all arities (with empty closure)

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    012eeea View commit details
    Browse the repository at this point in the history
  59. Only inline methods of same class for lambda merging

    Modified classes: MethodInliner, MethodInlinerWrapper
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    b3178bd View commit details
    Browse the repository at this point in the history
  60. Class must extend to be merged

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    1aeee85 View commit details
    Browse the repository at this point in the history
  61. Filter DONT_OPTIMIZE classes before merging + inline lambda groups

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    af673b6 View commit details
    Browse the repository at this point in the history
  62. Set optimisation info lambda group of lambda group

    Modified classes: KotlinLambdaClassMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    345e34e View commit details
    Browse the repository at this point in the history
  63. Add lambda group as dependency of enclosing classes

    Modified classes: KotlinLambdaClassMerger, KotlinLambdaEnclosingMethodUpdater, kotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    f024bbf View commit details
    Browse the repository at this point in the history
  64. Don't inline lambda group methods right after creation

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    99ae022 View commit details
    Browse the repository at this point in the history
  65. Don't visit inner lambda's that have wrong constructor

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    5cde21e View commit details
    Browse the repository at this point in the history
  66. Set optimisation info of lambda before visiting inner classes

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    44032ff View commit details
    Browse the repository at this point in the history
  67. Use static method inliner for lambda groups

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    781f946 View commit details
    Browse the repository at this point in the history
  68. Method inlining within class

    Modified classes: MethodInlinerWrapper
    New classes: SameClassMethodInliner
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    90852c1 View commit details
    Browse the repository at this point in the history
  69. Remove unused imports

    Modified classes: KotlinLambdaMergerTest
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    d23de15 View commit details
    Browse the repository at this point in the history
  70. Set INJECTED flag on newly built lambda groups

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    031193e View commit details
    Browse the repository at this point in the history
  71. Use SameClassMethodInliner to inline invoke methods within lambda class

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    6e519f0 View commit details
    Browse the repository at this point in the history
  72. After merging: shrink Lambda Groups instead of all classes

    Modified classes: KotlinLambdaMerger, ProGuard
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    d9b384a View commit details
    Browse the repository at this point in the history
  73. Use SameClassMethodInliner to inline invoke helper methods within LG's

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    35736d4 View commit details
    Browse the repository at this point in the history
  74. Don't require Function0 to start merging

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    4fd0094 View commit details
    Browse the repository at this point in the history
  75. Set OptimizationInfo, if necessary, before lambda merging

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    ed1e962 View commit details
    Browse the repository at this point in the history
  76. Code outlining

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    76b6eb9 View commit details
    Browse the repository at this point in the history
  77. Apply the LineNumberLinearizer to all lambda groups after inlining

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    ef1629b View commit details
    Browse the repository at this point in the history
  78. Make lambda group name public field

    Modified classes: KotlinLambdaClassMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    5ff81d5 View commit details
    Browse the repository at this point in the history
  79. Mark all non-LG classes and methods as used before shrinking LG's

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    e1acdf2 View commit details
    Browse the repository at this point in the history
  80. Keep interfaces of lambda groups

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    db8a8cd View commit details
    Browse the repository at this point in the history
  81. Don't try to merge classes that don't have optimisation info

    Modified classes: KotlinLambdaMerger
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    9a5703e View commit details
    Browse the repository at this point in the history
  82. Use code patterns to replace instructions in enclosing method

    Modified classes: KotlinLambdaEnclosingMethodUpdater
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    f3ad14f View commit details
    Browse the repository at this point in the history
  83. Keep track of lambda's that are not merged + don't merge single lambda's

    Modified classes: KotlinLambdaMerger, KotlinLambdaClassMerger, KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    e147b4b View commit details
    Browse the repository at this point in the history
  84. Make info statements debug

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    1de8e87 View commit details
    Browse the repository at this point in the history
  85. Remove redundant comment

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    6975785 View commit details
    Browse the repository at this point in the history
  86. Remove unused imports

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3f3e552 View commit details
    Browse the repository at this point in the history
  87. Set access flags of LG to FINAL and SUPER

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    02e996e View commit details
    Browse the repository at this point in the history
  88. Replace info logging by trace logging

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    aa30700 View commit details
    Browse the repository at this point in the history
  89. Arity as constructor argument of lambda group

    Modified classes: KotlinLambdaGroupBuilder, KotlinLambdaGroupInitBuilder, KotlinLambdaEnclosingMethodUpdater
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    2010400 View commit details
    Browse the repository at this point in the history
  90. Use ModifiedAllInnerClassesInfoVisitor to visit all inner classes

    Modified classes: KotlinLambdaGroupBuilder
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    9d74ea0 View commit details
    Browse the repository at this point in the history
  91. Remove unused LambdaGroupInvokeCodeBuilder class

    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    3d0f394 View commit details
    Browse the repository at this point in the history
  92. Revert "Only inline methods of same class for lambda merging" + remov…

    …e MethodInlinerWrapper
    
    This reverts commit b3178bd.
    Joren Van Hecke committed Feb 8, 2022
    Configuration menu
    Copy the full SHA
    7ba723f View commit details
    Browse the repository at this point in the history

Commits on Feb 17, 2022

  1. Passify KotlinLambdaMerger

    Joren Van Hecke committed Feb 17, 2022
    Configuration menu
    Copy the full SHA
    ee4c6a9 View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2022

  1. Add new option to configuration: -mergekotlinlambdaclasses

    Joren Van Hecke committed Feb 24, 2022
    Configuration menu
    Copy the full SHA
    a7d453a View commit details
    Browse the repository at this point in the history
  2. Add new option to configuration: -printlambdagroupmapping

    Joren Van Hecke committed Feb 24, 2022
    Configuration menu
    Copy the full SHA
    3cbec14 View commit details
    Browse the repository at this point in the history
  3. Print mapping of lambda's to lambda group

    Joren Van Hecke committed Feb 24, 2022
    Configuration menu
    Copy the full SHA
    514ecbf View commit details
    Browse the repository at this point in the history
  4. Merge branch 'master' into feature-lambda-merging

    Joren Van Hecke committed Feb 24, 2022
    Configuration menu
    Copy the full SHA
    bf3fb8a View commit details
    Browse the repository at this point in the history

Commits on Mar 22, 2022

  1. Enable lambda merging based on configuration

    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    304a6e2 View commit details
    Browse the repository at this point in the history
  2. Mention lambda class id in mapping

    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    8e95bfd View commit details
    Browse the repository at this point in the history
  3. Call different <init> of lambda group, depending on closure size

    For each free variable, an extra constructor argument is used, so the correct constructor has to be called.
    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    0b74332 View commit details
    Browse the repository at this point in the history
  4. KotlinLambdaGroupInitUpdater

    A member visitor that adds instructions to a given init method to call the super constructor with the given arity as argument and store the class id in a field
    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    e91d24a View commit details
    Browse the repository at this point in the history
  5. Use the init updater for building a lambda group

    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    7e0318e View commit details
    Browse the repository at this point in the history
  6. Use descriptor to select init when instantiating lambda group

    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    f3d5717 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    fb316d9 View commit details
    Browse the repository at this point in the history
  8. Increase maximum code size of invoke methods

    Choose 10*[merged lambda's]
    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    f834eca View commit details
    Browse the repository at this point in the history
  9. Consider lambda's with constructor arguments for merging

    Joren Van Hecke committed Mar 22, 2022
    Configuration menu
    Copy the full SHA
    bb64f6c View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2022

  1. Add space after comma

    Joren Van Hecke committed Mar 24, 2022
    Configuration menu
    Copy the full SHA
    5f6bb43 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6a99a3d View commit details
    Browse the repository at this point in the history
  3. Don't merge lambda's that don't have exactly 1 constructor

    Joren Van Hecke committed Mar 24, 2022
    Configuration menu
    Copy the full SHA
    7150365 View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2022

  1. Exclude certain lambda classes from merging

    Don't merge lambda classes that have one of the following properties:
    * they contain 'unexpected' methods, i.e. methods other than `<init>`, `<clinit>` and `invoke`
    * they have no `<init>` constructor or more than 1
    * their specific `invoke` method is called directly on the lambda class itself (not via the Function interface)
    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    809f19c View commit details
    Browse the repository at this point in the history
  2. Set optimisation info on lambda groups, when created

    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    c4832fd View commit details
    Browse the repository at this point in the history
  3. Set lambda group class as the target class of merged lambda's

    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    8f2cf0f View commit details
    Browse the repository at this point in the history
  4. Support merging lambda classes that have conflicting constructors

    All fields in a lambda class are renamed according to their descriptor and order of occurrence in the class, except for the `INSTANCE` field, which is never renamed, to avoid issues with shared UTF8 constants (out of practical experience - a more decente solution might be needed)
    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    52217a5 View commit details
    Browse the repository at this point in the history
  5. Add optimisation info to all program classes before merging

    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    9869a3e View commit details
    Browse the repository at this point in the history
  6. Method for looking up (non)-bridge invoke method of lambda

    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    63168e9 View commit details
    Browse the repository at this point in the history
  7. KotlinLambdaEnclosingMethodUpdater extended

    The code that is searched for instructions that use the lambda class is:
    * the enclosing method
    * all other methods of the enclosing class
    * all methods of the classes that are in the same package as the lambda class, if one of the class constants references the lambda class
    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    0193e4f View commit details
    Browse the repository at this point in the history
  8. Merge branch 'fix-conflicting-duplicate-init' into feature-lambda-mer…

    …ging-closures-ctors
    Joren Van Hecke committed Mar 27, 2022
    Configuration menu
    Copy the full SHA
    3160366 View commit details
    Browse the repository at this point in the history

Commits on May 7, 2022

  1. New configuration option: -lambdamergingafteroptimizing

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    66bc9b6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    fcb6606 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    971428b View commit details
    Browse the repository at this point in the history
  4. Formal rules for lambda's to be merged

    To be merged, a lambda class must
    * have no static methods that can be called from outside the lambda class
    * not be invoked directly instead of via its function interface
    * have no unexpected methods if the configuration disallows this
    * have no extra non-static methods if they cannot be inlined into the bridge invoke method due to size limitations
    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    5f50d83 View commit details
    Browse the repository at this point in the history
  5. Mark lambda groups as used before shrinking them

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    75288d6 View commit details
    Browse the repository at this point in the history
  6. New configuration option: -mergelambdaclasseswithunexpectedmethods

    This configuration option is required by commit 5f50d83
    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    698cc26 View commit details
    Browse the repository at this point in the history
  7. Methods for checking lambda merging preconditions

    Required by commit 5f50d83
    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    c7c8745 View commit details
    Browse the repository at this point in the history
  8. Optimised imports

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    8295039 View commit details
    Browse the repository at this point in the history
  9. Pretty log printing of lambda class/lambda group names

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    029c037 View commit details
    Browse the repository at this point in the history
  10. Enclosing class cannot be lambda class itself

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    53bae1d View commit details
    Browse the repository at this point in the history
  11. Fix imports

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    af15b14 View commit details
    Browse the repository at this point in the history
  12. Merge branch 'feature-lambda-merging-closures-ctors' into feature-lam…

    …bda-merging
    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    fbb14fd View commit details
    Browse the repository at this point in the history
  13. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    02ad996 View commit details
    Browse the repository at this point in the history
  14. Merge remote-tracking branch 'Guardsquare/master'

    Joren Van Hecke committed May 7, 2022
    Configuration menu
    Copy the full SHA
    01af867 View commit details
    Browse the repository at this point in the history

Commits on May 12, 2022

  1. Remove comment

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    4fce5c1 View commit details
    Browse the repository at this point in the history
  2. Remove unused function name constants

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    a8d205c View commit details
    Browse the repository at this point in the history
  3. 2 new/modified lambda merging requirements

    * non-INSTANCE fields are not directly accessed by other classes (e.g. $this fields)
    * total non-constructor method size must not exceed maximum JVM limit
    * no bootstrap methods + bootstrap method attribute
    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    19525a9 View commit details
    Browse the repository at this point in the history
  4. Apply LineAttributeTrimmer to lambda groups

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    61dc16c View commit details
    Browse the repository at this point in the history
  5. Clean all classes after lambda merging

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    012d183 View commit details
    Browse the repository at this point in the history
  6. Remove unused arguments from helper methods

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    eaa2f35 View commit details
    Browse the repository at this point in the history
  7. Mark invoke, <init> and <clinit> methods as used before shrinking lam…

    …bda groups
    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    6de2bb8 View commit details
    Browse the repository at this point in the history
  8. Remove commented code

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    545b67f View commit details
    Browse the repository at this point in the history
  9. Allow inlining of big methos in lambda classes

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    9a03344 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    3b7503b View commit details
    Browse the repository at this point in the history
  11. Use constant from KotlinConstants

    Joren Van Hecke committed May 12, 2022
    Configuration menu
    Copy the full SHA
    641e106 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    0816334 View commit details
    Browse the repository at this point in the history

Commits on Jun 4, 2022

  1. Configuration menu
    Copy the full SHA
    4c1a86d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    be44e40 View commit details
    Browse the repository at this point in the history
  3. Merge branch 'refactoring' into feature-lambda-merging

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    059d918 View commit details
    Browse the repository at this point in the history
  4. KotlinLambdaGroupInitUpdaterTest

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    f6e191b View commit details
    Browse the repository at this point in the history
  5. KotlinLambdaMergerTest updated to use new KotlinLambdaMerger

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    9b60b16 View commit details
    Browse the repository at this point in the history
  6. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    77f8204 View commit details
    Browse the repository at this point in the history
  7. Remove commented code

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    e4c9162 View commit details
    Browse the repository at this point in the history
  8. Remove unused canMerge method

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    ed6fc74 View commit details
    Browse the repository at this point in the history
  9. Merge branch 'refactoring' into feature-lambda-merging

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    13032ae View commit details
    Browse the repository at this point in the history
  10. Don't allow merging when class is not a lambda class

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    7531f29 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    1f70c32 View commit details
    Browse the repository at this point in the history
  12. Merge branch 'feature-lambda-merging-in-optimizer' into feature-lambd…

    …a-merging
    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    7489992 View commit details
    Browse the repository at this point in the history
  13. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    decb49a View commit details
    Browse the repository at this point in the history
  14. Test whether lambda group has been added to package

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    0fbed66 View commit details
    Browse the repository at this point in the history
  15. Remove dash ('-') from unit tests

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    ac8e902 View commit details
    Browse the repository at this point in the history
  16. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 4, 2022
    Configuration menu
    Copy the full SHA
    089fca6 View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2022

  1. MatchDetector in separate file

    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    5ba88c1 View commit details
    Browse the repository at this point in the history
  2. New class: InstructionSequenceCollector

    Wrapper class to use the InstructionSequenceBuilder as a visitor
    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    d07edaf View commit details
    Browse the repository at this point in the history
  3. Test added for KotlinLambdaGroupInvokeMethodBuilder

    InstancePerLeaf isolation mode is used to ensure that the target class has the same state before running every test case
    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    d3c257b View commit details
    Browse the repository at this point in the history
  4. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    a753366 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    8045e78 View commit details
    Browse the repository at this point in the history
  6. Apply ktlint to test classes

    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    b19f341 View commit details
    Browse the repository at this point in the history
  7. Test added for KotlinLambdaEnclosingMethodUpdater

    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    49debdf View commit details
    Browse the repository at this point in the history
  8. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 6, 2022
    Configuration menu
    Copy the full SHA
    a85084f View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2022

  1. Skeleton for KotlinLambdaGroupBuilderTest

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    b2d8b57 View commit details
    Browse the repository at this point in the history
  2. Tests for the KotlinLambdaGroupBuilder

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    784e884 View commit details
    Browse the repository at this point in the history
  3. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    8d5c4d7 View commit details
    Browse the repository at this point in the history
  4. Unused class KotlinLambdaGroupBuilder removed

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    ee581ef View commit details
    Browse the repository at this point in the history
  5. Merge branch 'refactoring' into feature-lambda-merging

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    5af6581 View commit details
    Browse the repository at this point in the history
  6. Merge branch 'refactoring'

    Joren Van Hecke committed Jun 7, 2022
    Configuration menu
    Copy the full SHA
    8b78b7c View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2022

  1. Code alignment

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    dc7cd78 View commit details
    Browse the repository at this point in the history
  2. Unused code blocks removed

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    fb0276d View commit details
    Browse the repository at this point in the history
  3. Inner classes moved to ProGuard CORE

    Inner classes of the class KotlinLambdaEnclosingMethodUpdater
    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    5888379 View commit details
    Browse the repository at this point in the history
  4. Move method within KotlinLambdaEnclosingMethodUpdater

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    43de408 View commit details
    Browse the repository at this point in the history
  5. Refer to existing "invoke" constant

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    1eaeaca View commit details
    Browse the repository at this point in the history
  6. Documentation comments

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    bf63c23 View commit details
    Browse the repository at this point in the history
  7. Formal merging check methods rewritten

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    fb3d726 View commit details
    Browse the repository at this point in the history
  8. Imports + reference to existing "invoke" constant

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    a216de3 View commit details
    Browse the repository at this point in the history
  9. Code alignment

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    20e0ede View commit details
    Browse the repository at this point in the history
  10. Move anonymous class to separate file in ProGuard CORE

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    4aae5ca View commit details
    Browse the repository at this point in the history
  11. Merge branch 'code-refactoring' into feature-lambda-merging

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    c985d70 View commit details
    Browse the repository at this point in the history
  12. Use FieldRenamer without anonymous class

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    7f46180 View commit details
    Browse the repository at this point in the history
  13. Correct usage of visitor for (un)setting access flags

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    99b18e5 View commit details
    Browse the repository at this point in the history
  14. Code alignment

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    705617a View commit details
    Browse the repository at this point in the history
  15. Merge branch 'code-refactoring' into feature-lambda-merging

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    77963f9 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    8f9fc01 View commit details
    Browse the repository at this point in the history
  17. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    6019bc8 View commit details
    Browse the repository at this point in the history
  18. Correct refactoring bug: check static methods

    Classes with <clinit> were incorrectly identified as unmergeable
    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    d7c510b View commit details
    Browse the repository at this point in the history
  19. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    970f5a0 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    ae4eb58 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    c61c41c View commit details
    Browse the repository at this point in the history
  22. Output verification test works

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    4a58dd4 View commit details
    Browse the repository at this point in the history
  23. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    b865268 View commit details
    Browse the repository at this point in the history
  24. Remove not working tests

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    732a889 View commit details
    Browse the repository at this point in the history
  25. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    fb8b417 View commit details
    Browse the repository at this point in the history
  26. Output verification test for lambda group builder

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    1b997bb View commit details
    Browse the repository at this point in the history
  27. Merge branch 'feature-lambda-merging'

    Joren Van Hecke committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    091794f View commit details
    Browse the repository at this point in the history

Commits on Jun 29, 2022

  1. Move visitors from PGC to ProGuard

    Classes involved are: InnerClasssInfoClassConstantVisitor, ClassConstantReferenceUpdater, FieldReferenceFinder, FieldRenamer, MethodCopier, MethodReferenceFinder and PackageGrouper
    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    7c28e60 View commit details
    Browse the repository at this point in the history
  2. Update references to moved Kotlin constants

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    b4ac2fb View commit details
    Browse the repository at this point in the history
  3. Merge branch 'refactoring-for-pull-request'

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    95fc370 View commit details
    Browse the repository at this point in the history
  4. Move ModifiedAllInnerClassesInfoVisitor from PGC to ProGuard

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    baab6b9 View commit details
    Browse the repository at this point in the history
  5. Move FieldCopier from PGC to ProGuard

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    0eb6c83 View commit details
    Browse the repository at this point in the history
  6. MethodCopierTest moved from PGC to ProGuard

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    79f7656 View commit details
    Browse the repository at this point in the history
  7. Replace info logging statement with trace

    Co-authored-by: James Hamilton <[email protected]>
    heckej and mrjameshamilton authored Jun 29, 2022
    Configuration menu
    Copy the full SHA
    ba4d80f View commit details
    Browse the repository at this point in the history
  8. Use lambda merging in configuration as optimisation option

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    4426bb6 View commit details
    Browse the repository at this point in the history
  9. Merge remote-tracking branch 'origin/master'

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    93112b2 View commit details
    Browse the repository at this point in the history
  10. Code alignment

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    3cf0245 View commit details
    Browse the repository at this point in the history
  11. '{' on new line

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    b5f6c25 View commit details
    Browse the repository at this point in the history
  12. Merge branch 'refactoring-for-pull-request'

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    d99f1a1 View commit details
    Browse the repository at this point in the history
  13. Remove 'unexpected methods' check

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    ea7bcb2 View commit details
    Browse the repository at this point in the history
  14. Use MultiClassVisitor to group class visitors

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    c28a14f View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    6944e36 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    492d73b View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    210a0a5 View commit details
    Browse the repository at this point in the history
  18. Change warning to trace for absence of Kotlin Lambda class

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    16b4138 View commit details
    Browse the repository at this point in the history
  19. Null check for merged lambda visitor

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    734cce8 View commit details
    Browse the repository at this point in the history
  20. Update LambdaGroupBuilderTest to use updated constructor

    Joren Van Hecke committed Jun 29, 2022
    Configuration menu
    Copy the full SHA
    56a90c1 View commit details
    Browse the repository at this point in the history

Commits on Jul 10, 2022

  1. All new classes moved to package proguard.optimize.kotlin

    Joren Van Hecke committed Jul 10, 2022
    Configuration menu
    Copy the full SHA
    9666d97 View commit details
    Browse the repository at this point in the history
  2. Solve TODO of building empty invoke method code

    Joren Van Hecke committed Jul 10, 2022
    Configuration menu
    Copy the full SHA
    8cc582f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    64f5038 View commit details
    Browse the repository at this point in the history