tree f61b1935ba18062b5b5a0400161abb7094e077f9
parent 8b137fe112a862af1dc56329d86cbc9cdac46ef7
author Christoffer Quist Adamsen <christofferqa@google.com> 1614595884 +0100
committer Christoffer Quist Adamsen <christofferqa@google.com> 1614606906 +0000

Lattice for new class inliner eligibility analysis

This adds a new lattice 'AnalysisState' that subsumes both ClassInlinerEligibilityInfo and ParameterUsagesInfo, which is currently used by the class inliner.

This implements the lattice for the dataflow analysis used to determine if a given method is eligible for class inlining.

Given a value that is subject to class inlining (e.g., `A a = new A()`), we need to determine if the value `a` will be eligible for class inlining if it flows into a method call. The value `a` may flow into any argument position, therefore we need to be able to determine if calls where `a` is used as a receiver are eligible for class inlining `a.foo(...)`, as well as calls where `a` is not used as a receiver: `other.foo(a)` or `Clazz.foo(a)`.

To answer such questions, this lattice contains information about the way a method uses its parameters. For a given parameter, this information is encoded in ParameterUsage.

To facilitate context sensitive information, ParameterUsagePerContext gives the parameter usage information for a given parameter in a given context. As a simple example, consider the following method:

  int x;
  void foo() {
    if (this.x == 0) {
      // Do nothing.
    } else {
      System.out.println(x);
    }
  }

In the above example, the parameter `this` is not eligible for class inlining if `this.x != 0`. However, when `this.x == 0`, the parameter usage information is bottom. This piece of information is encoded as a map lattice from contexts to parameter usage information:

  ParameterUsagePerContext[
      Context[this.x == 0]  ->  BottomParameterUsage  (BOTTOM),
      DefaultContext        ->  UnknownParameterUsage (TOP)
  ]

Finally, to provide the information for each method parameter, this class provides a mapping from parameters to ParameterUsagePerContext.

Bug: 173337498
Change-Id: I63aa741e53c552650dc788fc5ab86f2cb0545ed1