blob: b009861202fbe8d16c34b36287954ac5f15c8265 [file] [log] [blame]
package com.android.tools.r8.ir.desugar;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.GraphLense;
public class NestBasedAccessDesugaringAnalysis extends NestBasedAccessDesugaring {
private final NestedPrivateMethodLense.Builder builder;
public NestBasedAccessDesugaringAnalysis(AppView<?> appView) {
super(appView);
this.builder = NestedPrivateMethodLense.builder(appView);
}
public GraphLense run() {
if (appView.options().canUseNestBasedAccess()) {
return appView.graphLense();
}
analyzeNests();
return builder.build(appView.graphLense());
}
@Override
protected void shouldRewriteInitializers(DexMethod method, DexMethod bridge) {
// TODO(b/130529338): support initializer in r8
// initializerMap.put(method, bridge);
}
@Override
protected void shouldRewriteCalls(DexMethod method, DexMethod bridge) {
builder.map(method, bridge);
}
@Override
protected void shouldRewriteStaticGetFields(DexField field, DexMethod bridge) {
builder.mapStaticGet(field, bridge);
}
@Override
protected void shouldRewriteStaticPutFields(DexField field, DexMethod bridge) {
builder.mapStaticPut(field, bridge);
}
@Override
protected void shouldRewriteInstanceGetFields(DexField field, DexMethod bridge) {
builder.mapInstanceGet(field, bridge);
}
@Override
protected void shouldRewriteInstancePutFields(DexField field, DexMethod bridge) {
builder.mapInstancePut(field, bridge);
}
}