Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91cb84d3 authored by Makoto Onuki's avatar Makoto Onuki
Browse files

[hoststubgen] Make sure arrays are renamed too

Flag: EXEMPT host test change only
Bug: 399142483
Test: $ANDROID_BUILD_TOP/frameworks/base/ravenwood/scripts/run-ravenwood-tests.sh399142483 -s
Change-Id: I943dcb4714512e6767c2df72ccd3c0635d46ccae
parent ba71bc94
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.hoststubgen.filters

import com.android.hoststubgen.log
import org.objectweb.asm.commons.Remapper

/**
@@ -23,19 +24,25 @@ import org.objectweb.asm.commons.Remapper
class FilterRemapper(val filter: OutputFilter) : Remapper() {
    private val cache = mutableMapOf<String, String>()

    override fun mapType(typeInternalName: String?): String? {

    override fun map(typeInternalName: String?): String? {
        if (typeInternalName == null) {
            return null
        }

        cache[typeInternalName]?.let {
            // log.d("Cached rename from $typeInternalName to $it")
            return it
        }

        var mapped = filter.remapType(typeInternalName) ?: typeInternalName
        var mapped = filter.remapType(typeInternalName)
        if (mapped != null) {
            log.d("Renaming type $typeInternalName to $mapped")
        } else {
            // log.d("Not renaming type $typeInternalName")
        }
        mapped = mapped ?: typeInternalName
        cache[typeInternalName] = mapped
        return mapped
    }

    // TODO Do we need to implement mapPackage(), etc too?
}
 No newline at end of file
+2 −8
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */
package com.android.hoststubgen.filters

import com.android.hoststubgen.log
import java.util.regex.Pattern

/**
@@ -34,17 +33,12 @@ class TextFilePolicyRemapperFilter(
        val typeInternalNamePrefix: String,
    )

    private val cache = mutableMapOf<String, String>()

    override fun remapType(className: String): String? {
        var mapped: String = className
        typeRenameSpecs.forEach {
            if (it.typeInternalNamePattern.matcher(className).matches()) {
                mapped = it.typeInternalNamePrefix + className
                log.d("Renaming type $className to $mapped")
                return it.typeInternalNamePrefix + className
            }
        }
        cache[className] = mapped
        return mapped
        return null
    }
}
+38 −2
Original line number Diff line number Diff line
@@ -3198,7 +3198,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                         // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 2, attributes: 2
  interfaces: 0, fields: 0, methods: 3, attributes: 2
Constant pool:
{
  public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller();
@@ -3229,6 +3229,22 @@ Constant pool:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      12     0 value   I

  public static int bar(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         x: iload_0
         x: invokestatic  #x                 // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
         x: iconst_0
         x: aaload
         x: invokevirtual #x                 // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I
         x: ireturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      10     0 value   I
}
SourceFile: "TinyFrameworkRenamedClassCaller.java"
RuntimeInvisibleAnnotations:
@@ -3242,7 +3258,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                          // com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 1, methods: 2, attributes: 2
  interfaces: 0, fields: 1, methods: 3, attributes: 2
Constant pool:
{
  private final int mValue;
@@ -3278,6 +3294,26 @@ Constant pool:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;

  public static com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int);
    descriptor: (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
         x: iconst_1
         x: anewarray     #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: dup
         x: iconst_0
         x: new           #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: dup
        x: iload_0
        x: invokespecial #x                 // Method "<init>":(I)V
        x: aastore
        x: areturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      16     0 value   I
}
SourceFile: "TinyFrameworkToBeRenamed.java"
RuntimeInvisibleAnnotations:
+46 −4
Original line number Diff line number Diff line
@@ -3392,7 +3392,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                          // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 2, attributes: 3
  interfaces: 0, fields: 0, methods: 3, attributes: 3
Constant pool:
{
  public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller();
@@ -3429,6 +3429,25 @@ Constant pool:
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep

  public static int bar(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         x: iload_0
         x: invokestatic  #x                 // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
         x: iconst_0
         x: aaload
         x: invokevirtual #x                 // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I
         x: ireturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      10     0 value   I
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep
}
SourceFile: "TinyFrameworkRenamedClassCaller.java"
RuntimeVisibleAnnotations:
@@ -3867,7 +3886,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                          // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 1, methods: 2, attributes: 3
  interfaces: 0, fields: 1, methods: 3, attributes: 3
Constant pool:
{
  private final int mValue;
@@ -3891,7 +3910,7 @@ Constant pool:
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      10     0  this   Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
            0      10     0  this   Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
            0      10     1 value   I
    RuntimeVisibleAnnotations:
      x: #x()
@@ -3908,7 +3927,30 @@ Constant pool:
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
            0       5     0  this   Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep

  public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int);
    descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
         x: iconst_1
         x: anewarray     #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: dup
         x: iconst_0
         x: new           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: dup
        x: iload_0
        x: invokespecial #x                 // Method "<init>":(I)V
        x: aastore
        x: areturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      16     0 value   I
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep
+60 −8
Original line number Diff line number Diff line
@@ -4241,7 +4241,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                          // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 3, attributes: 3
  interfaces: 0, fields: 0, methods: 4, attributes: 3
Constant pool:
{
  private static {};
@@ -4298,6 +4298,30 @@ Constant pool:
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep

  public static int bar(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
         x: ldc           #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller
         x: ldc           #x                 // String bar
         x: ldc           #x                 // String (I)I
         x: ldc           #x                 // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall
         x: invokestatic  #x                 // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
        x: iload_0
        x: invokestatic  #x                 // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
        x: iconst_0
        x: aaload
        x: invokevirtual #x                 // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I
        x: ireturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
           11      10     0 value   I
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep
}
SourceFile: "TinyFrameworkRenamedClassCaller.java"
RuntimeVisibleAnnotations:
@@ -4947,7 +4971,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew
  flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: #x                          // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
  super_class: #x                         // java/lang/Object
  interfaces: 0, fields: 1, methods: 3, attributes: 3
  interfaces: 0, fields: 1, methods: 4, attributes: 3
Constant pool:
{
  private final int mValue;
@@ -4962,7 +4986,7 @@ Constant pool:
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         x: ldc           #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                  // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded
         x: invokestatic  #x                 // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V
         x: return
@@ -4972,7 +4996,7 @@ Constant pool:
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
         x: ldc           #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                 // String <init>
         x: ldc           #x                 // String (I)V
         x: ldc           #x                 // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall
@@ -4986,7 +5010,7 @@ Constant pool:
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
           11      10     0  this   Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
           11      10     0  this   Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
           11      10     1 value   I
    RuntimeVisibleAnnotations:
      x: #x()
@@ -4997,7 +5021,7 @@ Constant pool:
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
         x: ldc           #x                  // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                 // String getValue
         x: ldc           #x                 // String ()I
         x: ldc           #x                 // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall
@@ -5008,7 +5032,35 @@ Constant pool:
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
           11       5     0  this   Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
           11       5     0  this   Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep

  public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int);
    descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=1
         x: ldc           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
         x: ldc           #x                 // String getArray
         x: ldc           #x                 // String (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed;
         x: ldc           #x                 // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall
         x: invokestatic  #x                 // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
        x: iconst_1
        x: anewarray     #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
        x: dup
        x: iconst_0
        x: new           #x                  // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed
        x: dup
        x: iload_0
        x: invokespecial #x                 // Method "<init>":(I)V
        x: aastore
        x: areturn
      LineNumberTable:
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
           11      16     0 value   I
    RuntimeVisibleAnnotations:
      x: #x()
        com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep
Loading