diff options
| author | 2024-09-26 22:59:40 +0000 | |
|---|---|---|
| committer | 2024-09-26 22:59:40 +0000 | |
| commit | 983461633b96db0bc58205a657edeffad3ce4080 (patch) | |
| tree | 8df76979756f92a675ea35ac852917a2369d152f /tools | |
| parent | 6f7665370b368b3f4164cdce501ae224b3351c9b (diff) | |
Cherry-pick Ravenwood "core" code
- Copied f/b/r and f/b/t/h
- Ported files under f/b/core, only what needed to for run-ravenwood-tests.sh to pass
- Local changes because of missing resoucres support
- Added @DisabledOnRavenwood(reason="AOSP is missing resources support") to tests under f/b/r that depends on resources
bivalentinst and servicestest
- Added try-catch around ResourcesManager.setInstance()
Flag: EXEMPT host test change only
Bug: 292141694
Test: $ANDROID_BUILD_TOP/frameworks/base/ravenwood/scripts/run-ravenwood-tests.sh
Merged-in: I8a9b8374be3ae052ba4f152eb43af20d0871597f
Change-Id: Iefd574dbded8c4ab2e244c4918c26641364a3432
Diffstat (limited to 'tools')
79 files changed, 4716 insertions, 10355 deletions
diff --git a/tools/hoststubgen/hoststubgen/Android.bp b/tools/hoststubgen/hoststubgen/Android.bp index 682adbc86d06..4920f7b41e3f 100644 --- a/tools/hoststubgen/hoststubgen/Android.bp +++ b/tools/hoststubgen/hoststubgen/Android.bp @@ -5,6 +5,10 @@ package { // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_base_license"], + + // OWNER: g/ravenwood + // Bug component: 25698 + default_team: "trendy_team_framework_backstage_power", } // Visibility only for ravenwood prototype uses. @@ -118,7 +122,6 @@ java_binary_host { java_test_host { name: "hoststubgentest", - // main_class: "com.android.hoststubgen.Main", srcs: ["test/**/*.kt"], static_libs: [ "hoststubgen", @@ -143,8 +146,7 @@ hoststubgen_common_options = "$(location hoststubgen) " + // "--policy-override-file $(location framework-policy-override.txt) " + "@$(location :hoststubgen-standard-options) " + - "--out-stub-jar $(location host_stub.jar) " + - "--out-impl-jar $(location host_impl.jar) " + + "--out-jar $(location host.jar) " + // "--keep-all-classes " + // Used it for an experiment. See KeepAllClassesFilter. "--gen-keep-all-file $(location hoststubgen_keep_all.txt) " + @@ -159,10 +161,8 @@ genrule_defaults { srcs: [ ":hoststubgen-standard-options", ], - // Create two jar files. out: [ - "host_stub.jar", - "host_impl.jar", + "host.jar", // Following files are created just as FYI. "hoststubgen_keep_all.txt", diff --git a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestWholeClassStub.java b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestIgnore.java index 1824f6f01516..501fd652145e 100644 --- a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestWholeClassStub.java +++ b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestIgnore.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,8 @@ */ package android.hosttest.annotation; -import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.METHOD; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -25,11 +26,9 @@ import java.lang.annotation.Target; * THIS ANNOTATION IS EXPERIMENTAL. REACH OUT TO g/ravenwood BEFORE USING IT, OR YOU HAVE ANY * QUESTIONS ABOUT IT. * - * Same as {@link HostSideTestStub} but it'll change the visibility of all its members too. - * * @hide */ -@Target({TYPE}) +@Target({METHOD, CONSTRUCTOR}) @Retention(RetentionPolicy.CLASS) -public @interface HostSideTestWholeClassStub { +public @interface HostSideTestIgnore { } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/LargeTest.java b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestRedirect.java index 76bbcad2ab26..bc9471b84b97 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/LargeTest.java +++ b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestRedirect.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,16 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.hoststubgen.test.tinyframework; +package android.hosttest.annotation; + +import static java.lang.annotation.ElementType.METHOD; -import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * We don't want to use any android classes in this module, so we create our own copy of it here. + * THIS ANNOTATION IS EXPERIMENTAL. REACH OUT TO g/ravenwood BEFORE USING IT, OR YOU HAVE ANY + * QUESTIONS ABOUT IT. + * @hide */ -@Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.TYPE}) -public @interface LargeTest {} +@Target({METHOD}) +@Retention(RetentionPolicy.CLASS) +public @interface HostSideTestRedirect { +} diff --git a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestNativeSubstitutionClass.java b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestRedirectionClass.java index 9c8138351eb5..28ad236a66f3 100644 --- a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestNativeSubstitutionClass.java +++ b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestRedirectionClass.java @@ -30,6 +30,6 @@ import java.lang.annotation.Target; */ @Target({TYPE}) @Retention(RetentionPolicy.CLASS) -public @interface HostSideTestNativeSubstitutionClass { +public @interface HostSideTestRedirectionClass { String value(); } diff --git a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestStub.java b/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestStub.java deleted file mode 100644 index cabdfe0eeb77..000000000000 --- a/tools/hoststubgen/hoststubgen/annotations-src/android/hosttest/annotation/HostSideTestStub.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package android.hosttest.annotation; - -import static java.lang.annotation.ElementType.CONSTRUCTOR; -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.TYPE; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * THIS ANNOTATION IS EXPERIMENTAL. REACH OUT TO g/ravenwood BEFORE USING IT, OR YOU HAVE ANY - * QUESTIONS ABOUT IT. - * - * Mark a class, field or a method as "Stub", meaning tests can see the APIs. - * When applied to a class, it will _not_ affect the visibility of its members. They need to be - * individually marked. - * - * <p>In order to expose a class and all its members, use {@link HostSideTestWholeClassStub} - * instead. - * - * @hide - */ -@Target({TYPE, FIELD, METHOD, CONSTRUCTOR}) -@Retention(RetentionPolicy.CLASS) -public @interface HostSideTestStub { -} diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenKeptInStub.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenKeptInStub.java deleted file mode 100644 index 12b9875fcf53..000000000000 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenKeptInStub.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.hoststubgen.hosthelper; - -import static java.lang.annotation.ElementType.CONSTRUCTOR; -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.TYPE; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Annotation injected to all classes/methods/fields that are kept in the "stub" jar. - * - * All items in the stub jar are automatically kept in the impl jar as well, so - * the items with this annotation will all have {@link HostStubGenKeptInImpl} too. - */ -@Target({TYPE, METHOD, CONSTRUCTOR, FIELD}) -@Retention(RetentionPolicy.RUNTIME) -public @interface HostStubGenKeptInStub { - String CLASS_INTERNAL_NAME = HostTestUtils.getInternalName(HostStubGenKeptInStub.class); - String CLASS_DESCRIPTOR = "L" + CLASS_INTERNAL_NAME + ";"; -} diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsIgnore.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsIgnore.java index cb50404c96d9..b01710347537 100644 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsIgnore.java +++ b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsIgnore.java @@ -23,8 +23,6 @@ import java.lang.annotation.Target; /** * Annotation injected to all methods processed as "ignore". - * - * (This annotation is only added in the impl jar, but not the stub jar) */ @Target({METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenKeptInImpl.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsKeep.java index 2cc500f527c0..18ef1bab203e 100644 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenKeptInImpl.java +++ b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsKeep.java @@ -25,11 +25,11 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Annotation injected to all classes/methods/fields that are kept in the "impl" jar. + * Annotation injected to all classes/methods/fields that are kept in the processes jar. */ @Target({TYPE, METHOD, CONSTRUCTOR, FIELD}) @Retention(RetentionPolicy.RUNTIME) -public @interface HostStubGenKeptInImpl { - String CLASS_INTERNAL_NAME = HostTestUtils.getInternalName(HostStubGenKeptInImpl.class); +public @interface HostStubGenProcessedAsKeep { + String CLASS_INTERNAL_NAME = HostTestUtils.getInternalName(HostStubGenProcessedAsKeep.class); String CLASS_DESCRIPTOR = "L" + CLASS_INTERNAL_NAME + ";"; } diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsSubstitute.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsSubstitute.java index cfa4896fdfa0..99e38c0b1725 100644 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsSubstitute.java +++ b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsSubstitute.java @@ -26,8 +26,6 @@ import java.lang.annotation.Target; /** * Annotation injected to all methods that are processed as "substitute". - * - * (This annotation is only added in the impl jar, but not the stub jar) */ @Target({TYPE, METHOD, CONSTRUCTOR, FIELD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsThrow.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsThrow.java index 0d2da114da97..4933cf8784d9 100644 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsThrow.java +++ b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostStubGenProcessedAsThrow.java @@ -23,8 +23,6 @@ import java.lang.annotation.Target; /** * Annotation injected to all methods that are processed as "throw". - * - * (This annotation is only added in the impl jar, but not the stub jar) */ @Target({METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostTestUtils.java b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostTestUtils.java index 60eb47eea7c7..78fd8f7f960a 100644 --- a/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostTestUtils.java +++ b/tools/hoststubgen/hoststubgen/helper-runtime-src/com/android/hoststubgen/hosthelper/HostTestUtils.java @@ -16,12 +16,8 @@ package com.android.hoststubgen.hosthelper; import java.io.PrintStream; -import java.lang.StackWalker.Option; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.HashMap; - -import javax.annotation.concurrent.GuardedBy; /** * Utilities used in the host side test environment. @@ -101,68 +97,6 @@ public class HostTestUtils { + methodName + methodDescriptor); } - private static final StackWalker sStackWalker = - StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE); - - /** - * Return a {@link StackWalker} that supports {@link StackWalker#getCallerClass()}. - */ - public static StackWalker getStackWalker() { - return sStackWalker; - } - - /** - * Cache used by {@link #isClassAllowedToCallNonStubMethods}. - */ - @GuardedBy("sAllowedClasses") - private static final HashMap<Class, Boolean> sAllowedClasses = new HashMap(); - - /** - * Return true if a given class is allowed to access non-stub methods -- that is, if the class - * is in the hoststubgen generated JARs. (not in the test jar.) - */ - private static boolean isClassAllowedToCallNonStubMethods(Class<?> clazz) { - synchronized (sAllowedClasses) { - var cached = sAllowedClasses.get(clazz); - if (cached != null) { - return cached; - } - } - // All processed classes have this annotation. - var allowed = clazz.getAnnotation(HostStubGenKeptInImpl.class) != null; - - // Java classes should be able to access any methods. (via callbacks, etc.) - if (!allowed) { - if (clazz.getPackageName().startsWith("java.") - || clazz.getPackageName().startsWith("javax.")) { - allowed = true; - } - } - synchronized (sAllowedClasses) { - sAllowedClasses.put(clazz, allowed); - } - return allowed; - } - - /** - * Called when non-stub methods are called. We do a host-unsupported method direct call check - * in here. - */ - public static void onNonStubMethodCalled( - String methodClass, - String methodName, - String methodDescriptor, - Class<?> callerClass) { - if (SKIP_NON_STUB_METHOD_CHECK) { - return; - } - if (isClassAllowedToCallNonStubMethods(callerClass)) { - return; // Generated class is allowed to call framework class. - } - logPrintStream.println("! " + methodClass + "." + methodName + methodDescriptor - + " called by " + callerClass.getCanonicalName()); - } - /** * Called when any top level class (not nested classes) in the impl jar is loaded. * diff --git a/tools/hoststubgen/hoststubgen/hoststubgen-standard-options.txt b/tools/hoststubgen/hoststubgen/hoststubgen-standard-options.txt index c371b5d54ebd..001943c18d6b 100644 --- a/tools/hoststubgen/hoststubgen/hoststubgen-standard-options.txt +++ b/tools/hoststubgen/hoststubgen/hoststubgen-standard-options.txt @@ -3,8 +3,6 @@ --debug # Uncomment below lines to enable each feature. ---enable-non-stub-method-check -# --no-non-stub-method-check #--default-method-call-hook # com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -13,15 +11,10 @@ # Standard annotations. # Note, each line is a single argument, so we need newlines after each `--xxx-annotation`. ---stub-annotation - android.hosttest.annotation.HostSideTestStub --keep-annotation android.hosttest.annotation.HostSideTestKeep ---stub-class-annotation - android.hosttest.annotation.HostSideTestWholeClassStub - --keep-class-annotation android.hosttest.annotation.HostSideTestWholeClassKeep @@ -31,11 +24,17 @@ --remove-annotation android.hosttest.annotation.HostSideTestRemove +--ignore-annotation + android.hosttest.annotation.HostSideTestIgnore + --substitute-annotation android.hosttest.annotation.HostSideTestSubstitute ---native-substitute-annotation - android.hosttest.annotation.HostSideTestNativeSubstitutionClass +--redirect-annotation + android.hosttest.annotation.HostSideTestRedirect + +--redirection-class-annotation + android.hosttest.annotation.HostSideTestRedirectionClass --class-load-hook-annotation android.hosttest.annotation.HostSideTestClassLoadHook diff --git a/tools/hoststubgen/hoststubgen/invoketest/hoststubgen-invoke-test.sh b/tools/hoststubgen/hoststubgen/invoketest/hoststubgen-invoke-test.sh index d97dd7c18045..084448d0a797 100755 --- a/tools/hoststubgen/hoststubgen/invoketest/hoststubgen-invoke-test.sh +++ b/tools/hoststubgen/hoststubgen/invoketest/hoststubgen-invoke-test.sh @@ -43,9 +43,8 @@ cleanup_temp() { cleanup_temp -JAR=hoststubgen-test-tiny-framework.jar -STUB=$TEMP/stub.jar -IMPL=$TEMP/impl.jar +INJAR=hoststubgen-test-tiny-framework.jar +OUTJAR=$TEMP/host.jar ANNOTATION_FILTER=$TEMP/annotation-filter.txt @@ -81,27 +80,18 @@ run_hoststubgen() { cat $ANNOTATION_FILTER fi - local stub_arg="" - local impl_arg="" + local out_arg="" - if [[ "$STUB" != "" ]] ; then - stub_arg="--out-stub-jar $STUB" - fi - if [[ "$IMPL" != "" ]] ; then - impl_arg="--out-impl-jar $IMPL" + if [[ "$OUTJAR" != "" ]] ; then + out_arg="--out-jar $OUTJAR" fi hoststubgen \ --debug \ - --in-jar $JAR \ - $stub_arg \ - $impl_arg \ - --stub-annotation \ - android.hosttest.annotation.HostSideTestStub \ + --in-jar $INJAR \ + $out_arg \ --keep-annotation \ android.hosttest.annotation.HostSideTestKeep \ - --stub-class-annotation \ - android.hosttest.annotation.HostSideTestWholeClassStub \ --keep-class-annotation \ android.hosttest.annotation.HostSideTestWholeClassKeep \ --throw-annotation \ @@ -110,8 +100,10 @@ run_hoststubgen() { android.hosttest.annotation.HostSideTestRemove \ --substitute-annotation \ android.hosttest.annotation.HostSideTestSubstitute \ - --native-substitute-annotation \ - android.hosttest.annotation.HostSideTestNativeSubstitutionClass \ + --redirect-annotation \ + android.hosttest.annotation.HostSideTestRedirect \ + --redirection-class-annotation \ + android.hosttest.annotation.HostSideTestRedirectionClass \ --class-load-hook-annotation \ android.hosttest.annotation.HostSideTestClassLoadHook \ --keep-static-initializer-annotation \ @@ -213,9 +205,9 @@ com.unsupported.* " run_hoststubgen_for_failure "One specific class disallowed" \ - "TinyFrameworkClassAnnotations is not allowed to have Ravenwood annotations" \ + "TinyFrameworkAnnotations is not allowed to have Ravenwood annotations" \ " -!com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations +!com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations * # All other classes allowed " @@ -225,11 +217,7 @@ run_hoststubgen_for_success "One specific class disallowed, but it doesn't use a * # All other classes allowed " -STUB="" run_hoststubgen_for_success "No stub generation" "" - -IMPL="" run_hoststubgen_for_success "No impl generation" "" - -STUB="" IMPL="" run_hoststubgen_for_success "No stub, no impl generation" "" +OUTJAR="" run_hoststubgen_for_success "No output generation" "" EXTRA_ARGS="--in-jar abc" run_hoststubgen_for_failure "Duplicate arg" \ "Duplicate or conflicting argument found: --in-jar" \ @@ -237,4 +225,4 @@ EXTRA_ARGS="--in-jar abc" run_hoststubgen_for_failure "Duplicate arg" \ echo "All tests passed" -exit 0
\ No newline at end of file +exit 0 diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/Exceptions.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/Exceptions.kt index 910bf59b3d8d..f59e143c1e4e 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/Exceptions.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/Exceptions.kt @@ -15,6 +15,8 @@ */ package com.android.hoststubgen +import java.io.File + /** * We will not print the stack trace for exceptions implementing it. */ @@ -49,4 +51,22 @@ class InvalidAnnotationException(message: String) : Exception(message), UserErro /** * We use this for general "user" errors. */ -class HostStubGenUserErrorException(message: String) : Exception(message), UserErrorException +class GeneralUserErrorException(message: String) : Exception(message), UserErrorException + +/** Base exception class for invalid command line arguments. */ +open class ArgumentsException(message: String?) : Exception(message), UserErrorException + +/** Thrown when the same annotation is used with different annotation arguments. */ +class DuplicateAnnotationException(annotationName: String?) : + ArgumentsException("Duplicate annotation specified: '$annotationName'") + +/** Thrown when an input file does not exist. */ +class InputFileNotFoundException(filename: String) : + ArgumentsException("File '$filename' not found") + +fun String.ensureFileExists(): String { + if (!File(this).exists()) { + throw InputFileNotFoundException(this) + } + return this +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt index 5dde265c79fb..165bb5772449 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt @@ -22,21 +22,18 @@ import com.android.hoststubgen.filters.ClassWidePolicyPropagatingFilter import com.android.hoststubgen.filters.ConstantFilter import com.android.hoststubgen.filters.DefaultHookInjectingFilter import com.android.hoststubgen.filters.FilterPolicy +import com.android.hoststubgen.filters.FilterRemapper import com.android.hoststubgen.filters.ImplicitOutputFilter +import com.android.hoststubgen.filters.KeepNativeFilter import com.android.hoststubgen.filters.OutputFilter -import com.android.hoststubgen.filters.StubIntersectingFilter +import com.android.hoststubgen.filters.SanitizationFilter import com.android.hoststubgen.filters.createFilterFromTextPolicyFile import com.android.hoststubgen.filters.printAsTextPolicy import com.android.hoststubgen.utils.ClassFilter import com.android.hoststubgen.visitors.BaseAdapter import com.android.hoststubgen.visitors.PackageRedirectRemapper -import org.objectweb.asm.ClassReader -import org.objectweb.asm.ClassVisitor -import org.objectweb.asm.ClassWriter -import org.objectweb.asm.commons.ClassRemapper -import org.objectweb.asm.commons.Remapper -import org.objectweb.asm.util.CheckClassAdapter import java.io.BufferedInputStream +import java.io.BufferedOutputStream import java.io.FileOutputStream import java.io.InputStream import java.io.OutputStream @@ -44,6 +41,12 @@ import java.io.PrintWriter import java.util.zip.ZipEntry import java.util.zip.ZipFile import java.util.zip.ZipOutputStream +import org.objectweb.asm.ClassReader +import org.objectweb.asm.ClassVisitor +import org.objectweb.asm.ClassWriter +import org.objectweb.asm.commons.ClassRemapper +import org.objectweb.asm.commons.Remapper +import org.objectweb.asm.util.CheckClassAdapter /** * Actual main class. @@ -58,49 +61,54 @@ class HostStubGen(val options: HostStubGenOptions) { // Dump the classes, if specified. options.inputJarDumpFile.ifSet { - PrintWriter(it).use { pw -> allClasses.dump(pw) } - log.i("Dump file created at $it") + log.iTime("Dump file created at $it") { + PrintWriter(it).use { pw -> allClasses.dump(pw) } + } } options.inputJarAsKeepAllFile.ifSet { - PrintWriter(it).use { - pw -> allClasses.forEach { - classNode -> printAsTextPolicy(pw, classNode) + log.iTime("Dump file created at $it") { + PrintWriter(it).use { pw -> + allClasses.forEach { classNode -> + printAsTextPolicy(pw, classNode) + } } } - log.i("Dump file created at $it") } // Build the filters. - val (filter, policyFileRemapper) = buildFilter(errors, allClasses, options) + val filter = buildFilter(errors, allClasses, options) + + val filterRemapper = FilterRemapper(filter) // Transform the jar. convert( - options.inJar.get, - options.outStubJar.get, - options.outImplJar.get, - filter, - options.enableClassChecker.get, - allClasses, - errors, - stats, - policyFileRemapper, - options.numShards.get, - options.shard.get, + options.inJar.get, + options.outJar.get, + filter, + options.enableClassChecker.get, + allClasses, + errors, + stats, + filterRemapper, + options.numShards.get, + options.shard.get, ) // Dump statistics, if specified. options.statsFile.ifSet { - PrintWriter(it).use { pw -> stats.dumpOverview(pw) } - log.i("Dump file created at $it") + log.iTime("Dump file created at $it") { + PrintWriter(it).use { pw -> stats.dumpOverview(pw) } + } } options.apiListFile.ifSet { - PrintWriter(it).use { pw -> - // TODO, when dumping a jar that's not framework-minus-apex.jar, we need to feed - // framework-minus-apex.jar so that we can dump inherited methods from it. - ApiDumper(pw, allClasses, null, filter).dump() + log.iTime("API list file created at $it") { + PrintWriter(it).use { pw -> + // TODO, when dumping a jar that's not framework-minus-apex.jar, we need to feed + // framework-minus-apex.jar so that we can dump inherited methods from it. + ApiDumper(pw, allClasses, null, filter).dump() + } } - log.i("API list file created at $it") } } @@ -109,10 +117,10 @@ class HostStubGen(val options: HostStubGenOptions) { * jars, and "how". (e.g. with substitution?) */ private fun buildFilter( - errors: HostStubGenErrors, - allClasses: ClassNodes, - options: HostStubGenOptions, - ): Pair<OutputFilter, Remapper?> { + errors: HostStubGenErrors, + allClasses: ClassNodes, + options: HostStubGenOptions, + ): OutputFilter { // We build a "chain" of multiple filters here. // // The filters are build in from "inside", meaning the first filter created here is @@ -126,6 +134,9 @@ class HostStubGen(val options: HostStubGenOptions) { // The first filter is for the default policy from the command line options. var filter: OutputFilter = ConstantFilter(options.defaultPolicy.get, "default-by-options") + // Next, we build a filter that preserves all native methods by default + filter = KeepNativeFilter(allClasses, filter) + // Next, we need a filter that resolves "class-wide" policies. // This is used when a member (methods, fields, nested classes) don't get any polices // from upper filters. e.g. when a method has no annotations, then this filter will apply @@ -151,142 +162,116 @@ class HostStubGen(val options: HostStubGenOptions) { filter = AnnotationBasedFilter( errors, allClasses, - options.stubAnnotations, options.keepAnnotations, - options.stubClassAnnotations, options.keepClassAnnotations, options.throwAnnotations, options.removeAnnotations, + options.ignoreAnnotations, options.substituteAnnotations, - options.nativeSubstituteAnnotations, + options.redirectAnnotations, + options.redirectionClassAnnotations, options.classLoadHookAnnotations, options.keepStaticInitializerAnnotations, annotationAllowedClassesFilter, - filter, + filter ) - var policyFileRemapper: Remapper? = null - // Next, "text based" filter, which allows to override polices without touching // the target code. options.policyOverrideFile.ifSet { - val (f, p) = createFilterFromTextPolicyFile(it, allClasses, filter) - filter = f - policyFileRemapper = p - } - - // If `--intersect-stub-jar` is provided, load from these jar files too. - // We use this to restrict stub APIs to public/system/test APIs, - // by intersecting with a stub jar file created by metalava. - if (options.intersectStubJars.size > 0) { - val intersectingJars = loadIntersectingJars(options.intersectStubJars) - - filter = StubIntersectingFilter(errors, intersectingJars, filter) + filter = createFilterFromTextPolicyFile(it, allClasses, filter) } // Apply the implicit filter. filter = ImplicitOutputFilter(errors, allClasses, filter) - return Pair(filter, policyFileRemapper) - } + // Add a final sanitization step. + filter = SanitizationFilter(errors, allClasses, filter) - /** - * Load jar files specified with "--intersect-stub-jar". - */ - private fun loadIntersectingJars(filenames: Set<String>): Map<String, ClassNodes> { - val intersectingJars = mutableMapOf<String, ClassNodes>() - - filenames.forEach { filename -> - intersectingJars[filename] = ClassNodes.loadClassStructures(filename) - } - return intersectingJars + return filter } /** * Convert a JAR file into "stub" and "impl" JAR files. */ private fun convert( - inJar: String, - outStubJar: String?, - outImplJar: String?, - filter: OutputFilter, - enableChecker: Boolean, - classes: ClassNodes, - errors: HostStubGenErrors, - stats: HostStubGenStats, - remapper: Remapper?, - numShards: Int, - shard: Int, - ) { - log.i("Converting %s into [stub: %s, impl: %s] ...", inJar, outStubJar, outImplJar) + inJar: String, + outJar: String?, + filter: OutputFilter, + enableChecker: Boolean, + classes: ClassNodes, + errors: HostStubGenErrors, + stats: HostStubGenStats, + remapper: Remapper?, + numShards: Int, + shard: Int + ) { + log.i("Converting %s into %s ...", inJar, outJar) log.i("ASM CheckClassAdapter is %s", if (enableChecker) "enabled" else "disabled") - val start = System.currentTimeMillis() - - val packageRedirector = PackageRedirectRemapper(options.packageRedirects) + log.iTime("Transforming jar") { + val packageRedirector = PackageRedirectRemapper(options.packageRedirects) - var itemIndex = 0 - var numItemsProcessed = 0 - var numItems = -1 // == Unknown + var itemIndex = 0 + var numItemsProcessed = 0 + var numItems = -1 // == Unknown - log.withIndent { - // Open the input jar file and process each entry. - ZipFile(inJar).use { inZip -> + log.withIndent { + // Open the input jar file and process each entry. + ZipFile(inJar).use { inZip -> - numItems = inZip.size() - val shardStart = numItems * shard / numShards - val shardNextStart = numItems * (shard + 1) / numShards + numItems = inZip.size() + val shardStart = numItems * shard / numShards + val shardNextStart = numItems * (shard + 1) / numShards - maybeWithZipOutputStream(outStubJar) { stubOutStream -> - maybeWithZipOutputStream(outImplJar) { implOutStream -> + maybeWithZipOutputStream(outJar) { outStream -> val inEntries = inZip.entries() while (inEntries.hasMoreElements()) { val entry = inEntries.nextElement() - val inShard = (shardStart <= itemIndex) && (itemIndex < shardNextStart) + val inShard = (shardStart <= itemIndex) + && (itemIndex < shardNextStart) itemIndex++ if (!inShard) { continue } - convertSingleEntry(inZip, entry, stubOutStream, implOutStream, - filter, packageRedirector, remapper, - enableChecker, classes, errors, stats) + convertSingleEntry( + inZip, entry, outStream, filter, + packageRedirector, remapper, enableChecker, + classes, errors, stats + ) numItemsProcessed++ } log.i("Converted all entries.") } + outJar?.let { log.i("Created: $it") } } - outStubJar?.let { log.i("Created stub: $it") } - outImplJar?.let { log.i("Created impl: $it") } } + log.i("%d / %d item(s) processed.", numItemsProcessed, numItems) } - val end = System.currentTimeMillis() - log.i("Done transforming the jar in %.1f second(s). %d / %d item(s) processed.", - (end - start) / 1000.0, numItemsProcessed, numItems) } private fun <T> maybeWithZipOutputStream(filename: String?, block: (ZipOutputStream?) -> T): T { if (filename == null) { return block(null) } - return ZipOutputStream(FileOutputStream(filename)).use(block) + return ZipOutputStream(BufferedOutputStream(FileOutputStream(filename))).use(block) } /** * Convert a single ZIP entry, which may or may not be a class file. */ private fun convertSingleEntry( - inZip: ZipFile, - entry: ZipEntry, - stubOutStream: ZipOutputStream?, - implOutStream: ZipOutputStream?, - filter: OutputFilter, - packageRedirector: PackageRedirectRemapper, - remapper: Remapper?, - enableChecker: Boolean, - classes: ClassNodes, - errors: HostStubGenErrors, - stats: HostStubGenStats, - ) { + inZip: ZipFile, + entry: ZipEntry, + outStream: ZipOutputStream?, + filter: OutputFilter, + packageRedirector: PackageRedirectRemapper, + remapper: Remapper?, + enableChecker: Boolean, + classes: ClassNodes, + errors: HostStubGenErrors, + stats: HostStubGenStats + ) { log.d("Entry: %s", entry.name) log.withIndent { val name = entry.name @@ -298,8 +283,10 @@ class HostStubGen(val options: HostStubGenOptions) { // If it's a class, convert it. if (name.endsWith(".class")) { - processSingleClass(inZip, entry, stubOutStream, implOutStream, filter, - packageRedirector, remapper, enableChecker, classes, errors, stats) + processSingleClass( + inZip, entry, outStream, filter, packageRedirector, + remapper, enableChecker, classes, errors, stats + ) return } @@ -307,17 +294,14 @@ class HostStubGen(val options: HostStubGenOptions) { // - *.uau seems to contain hidden API information. // - *_compat_config.xml is also about compat-framework. - if (name.endsWith(".uau") || - name.endsWith("_compat_config.xml")) { + if (name.endsWith(".uau") || name.endsWith("_compat_config.xml")) { log.d("Not needed: %s", entry.name) return } // Unknown type, we just copy it to both output zip files. - // TODO: We probably shouldn't do it for stub jar? log.v("Copying: %s", entry.name) - stubOutStream?.let { copyZipEntry(inZip, entry, it) } - implOutStream?.let { copyZipEntry(inZip, entry, it) } + outStream?.let { copyZipEntry(inZip, entry, it) } } } @@ -325,17 +309,18 @@ class HostStubGen(val options: HostStubGenOptions) { * Copy a single ZIP entry to the output. */ private fun copyZipEntry( - inZip: ZipFile, - entry: ZipEntry, - out: ZipOutputStream, - ) { - BufferedInputStream(inZip.getInputStream(entry)).use { bis -> + inZip: ZipFile, + entry: ZipEntry, + out: ZipOutputStream, + ) { + // TODO: It seems like copying entries this way is _very_ slow, + // even with out.setLevel(0). Look for other ways to do it. + + inZip.getInputStream(entry).use { ins -> // Copy unknown entries as is to the impl out. (but not to the stub out.) val outEntry = ZipEntry(entry.name) out.putNextEntry(outEntry) - while (bis.available() > 0) { - out.write(bis.read()) - } + ins.transferTo(out) out.closeEntry() } } @@ -344,18 +329,17 @@ class HostStubGen(val options: HostStubGenOptions) { * Convert a single class to "stub" and "impl". */ private fun processSingleClass( - inZip: ZipFile, - entry: ZipEntry, - stubOutStream: ZipOutputStream?, - implOutStream: ZipOutputStream?, - filter: OutputFilter, - packageRedirector: PackageRedirectRemapper, - remapper: Remapper?, - enableChecker: Boolean, - classes: ClassNodes, - errors: HostStubGenErrors, - stats: HostStubGenStats, - ) { + inZip: ZipFile, + entry: ZipEntry, + outStream: ZipOutputStream?, + filter: OutputFilter, + packageRedirector: PackageRedirectRemapper, + remapper: Remapper?, + enableChecker: Boolean, + classes: ClassNodes, + errors: HostStubGenErrors, + stats: HostStubGenStats + ) { val classInternalName = entry.name.replaceFirst("\\.class$".toRegex(), "") val classPolicy = filter.getPolicyForClass(classInternalName) if (classPolicy.policy == FilterPolicy.Remove) { @@ -367,33 +351,22 @@ class HostStubGen(val options: HostStubGenOptions) { remapper?.mapType(classInternalName)?.let { remappedName -> if (remappedName != classInternalName) { log.d("Renaming class file: %s -> %s", classInternalName, remappedName) - newName = remappedName + ".class" + newName = "$remappedName.class" } } - // Generate stub first. - if (stubOutStream != null && classPolicy.policy.needsInStub) { - log.v("Creating stub class: %s Policy: %s", classInternalName, classPolicy) - log.withIndent { - BufferedInputStream(inZip.getInputStream(entry)).use { bis -> - val newEntry = ZipEntry(newName) - stubOutStream.putNextEntry(newEntry) - convertClass(classInternalName, /*forImpl=*/false, bis, - stubOutStream, filter, packageRedirector, remapper, - enableChecker, classes, errors, null) - stubOutStream.closeEntry() - } - } - } - if (implOutStream != null && classPolicy.policy.needsInImpl) { - log.v("Creating impl class: %s Policy: %s", classInternalName, classPolicy) + + if (outStream != null) { + log.v("Creating class: %s Policy: %s", classInternalName, classPolicy) log.withIndent { BufferedInputStream(inZip.getInputStream(entry)).use { bis -> val newEntry = ZipEntry(newName) - implOutStream.putNextEntry(newEntry) - convertClass(classInternalName, /*forImpl=*/true, bis, - implOutStream, filter, packageRedirector, remapper, - enableChecker, classes, errors, stats) - implOutStream.closeEntry() + outStream.putNextEntry(newEntry) + convertClass( + classInternalName, bis, + outStream, filter, packageRedirector, remapper, + enableChecker, classes, errors, stats + ) + outStream.closeEntry() } } } @@ -403,18 +376,17 @@ class HostStubGen(val options: HostStubGenOptions) { * Convert a single class to either "stub" or "impl". */ private fun convertClass( - classInternalName: String, - forImpl: Boolean, - input: InputStream, - out: OutputStream, - filter: OutputFilter, - packageRedirector: PackageRedirectRemapper, - remapper: Remapper?, - enableChecker: Boolean, - classes: ClassNodes, - errors: HostStubGenErrors, - stats: HostStubGenStats?, - ) { + classInternalName: String, + input: InputStream, + out: OutputStream, + filter: OutputFilter, + packageRedirector: PackageRedirectRemapper, + remapper: Remapper?, + enableChecker: Boolean, + classes: ClassNodes, + errors: HostStubGenErrors, + stats: HostStubGenStats? + ) { val cr = ClassReader(input) // COMPUTE_FRAMES wouldn't be happy if code uses @@ -433,14 +405,15 @@ class HostStubGen(val options: HostStubGenOptions) { } val visitorOptions = BaseAdapter.Options( - enablePreTrace = options.enablePreTrace.get, - enablePostTrace = options.enablePostTrace.get, - enableNonStubMethodCallDetection = options.enableNonStubMethodCallDetection.get, - errors = errors, - stats = stats, + errors = errors, + stats = stats, + enablePreTrace = options.enablePreTrace.get, + enablePostTrace = options.enablePostTrace.get, + ) + outVisitor = BaseAdapter.getVisitor( + classInternalName, classes, outVisitor, filter, + packageRedirector, visitorOptions ) - outVisitor = BaseAdapter.getVisitor(classInternalName, classes, outVisitor, filter, - packageRedirector, remapper, forImpl, visitorOptions) cr.accept(outVisitor, ClassReader.EXPAND_FRAMES) val data = cw.toByteArray() diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenErrors.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenErrors.kt index 6b01d48b52b1..a218c5599553 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenErrors.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenErrors.kt @@ -19,6 +19,6 @@ open class HostStubGenErrors { open fun onErrorFound(message: String) { // TODO: For now, we just throw as soon as any error is found, but eventually we should keep // all errors and print them at the end. - throw HostStubGenUserErrorException(message) + throw GeneralUserErrorException(message) } }
\ No newline at end of file diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenLogger.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenLogger.kt index 18065ba56c52..4bcee409aaec 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenLogger.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenLogger.kt @@ -89,6 +89,8 @@ class HostStubGenLogger { addPrinter(StreamPrinter(level, PrintWriter(BufferedOutputStream( FileOutputStream(logFilename))))) + log.i("Log file set: $logFilename for $level") + return this } @@ -121,7 +123,10 @@ class HostStubGenLogger { return level.ordinal <= maxLogLevel.ordinal } - private fun println(level: LogLevel, message: String) { + fun println(level: LogLevel, message: String) { + if (message.isEmpty()) { + return // Don't print an empty message. + } printers.forEach { if (it.logLevel.ordinal >= level.ordinal) { it.println(level, indent, message) @@ -129,7 +134,7 @@ class HostStubGenLogger { } } - private fun println(level: LogLevel, format: String, vararg args: Any?) { + fun println(level: LogLevel, format: String, vararg args: Any?) { if (isEnabled(level)) { println(level, String.format(format, *args)) } @@ -185,6 +190,45 @@ class HostStubGenLogger { println(LogLevel.Debug, format, *args) } + inline fun <T> logTime(level: LogLevel, message: String, block: () -> T): Double { + var ret: Double = -1.0 + val start = System.currentTimeMillis() + try { + block() + } finally { + val end = System.currentTimeMillis() + ret = (end - start) / 1000.0 + if (isEnabled(level)) { + println(level, + String.format("%s: took %.1f second(s).", message, (end - start) / 1000.0)) + } + } + return ret + } + + /** Do an "i" log with how long it took. */ + inline fun <T> iTime(message: String, block: () -> T): Double { + return logTime(LogLevel.Info, message, block) + } + + /** Do a "v" log with how long it took. */ + inline fun <T> vTime(message: String, block: () -> T): Double { + return logTime(LogLevel.Verbose, message, block) + } + + /** Do a "d" log with how long it took. */ + inline fun <T> dTime(message: String, block: () -> T): Double { + return logTime(LogLevel.Debug, message, block) + } + + /** + * Similar to the other "xTime" methods, but the message is not supposed to be printed. + * It's only used to measure the duration with the same interface as other log methods. + */ + inline fun <T> nTime(block: () -> T): Double { + return logTime(LogLevel.Debug, "", block) + } + inline fun forVerbose(block: () -> Unit) { if (isEnabled(LogLevel.Verbose)) { block() @@ -228,6 +272,21 @@ class HostStubGenLogger { } } } + + /** + * Handle log-related command line arguments. + */ + fun maybeHandleCommandLineArg(currentArg: String, nextArgProvider: () -> String): Boolean { + when (currentArg) { + "-v", "--verbose" -> setConsoleLogLevel(LogLevel.Verbose) + "-d", "--debug" -> setConsoleLogLevel(LogLevel.Debug) + "-q", "--quiet" -> setConsoleLogLevel(LogLevel.None) + "--verbose-log" -> addFilePrinter(LogLevel.Verbose, nextArgProvider()) + "--debug-log" -> addFilePrinter(LogLevel.Debug, nextArgProvider()) + else -> return false + } + return true + } } private interface LogPrinter { diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenMain.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenMain.kt index 45e7e301c0d1..85064661cd2b 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenMain.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenMain.kt @@ -24,20 +24,32 @@ import java.io.PrintWriter */ fun main(args: Array<String>) { executableName = "HostStubGen" + runMainWithBoilerplate { + // Parse the command line arguments. + var clanupOnError = false + try { + val options = HostStubGenOptions.parseArgs(args) + clanupOnError = options.cleanUpOnError.get - var success = false - var clanupOnError = false + log.v("$executableName started") + log.v("Options: $options") - try { - // Parse the command line arguments. - val options = HostStubGenOptions.parseArgs(args) - clanupOnError = options.cleanUpOnError.get + // Run. + HostStubGen(options).run() + } catch (e: Throwable) { + if (clanupOnError) { + TODO("Remove output jars here") + } + throw e + } + } +} - log.v("$executableName started") - log.v("Options: $options") +inline fun runMainWithBoilerplate(realMain: () -> Unit) { + var success = false - // Run. - HostStubGen(options).run() + try { + realMain() success = true } catch (e: Throwable) { @@ -45,9 +57,6 @@ fun main(args: Array<String>) { if (e !is UserErrorException) { e.printStackTrace(PrintWriter(log.getWriter(LogLevel.Error))) } - if (clanupOnError) { - TODO("Remove output jars here") - } } finally { log.i("$executableName finished") log.flush() diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenOptions.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenOptions.kt index 2f833a873133..b083d89c61d6 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenOptions.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenOptions.kt @@ -17,20 +17,17 @@ package com.android.hoststubgen import com.android.hoststubgen.filters.FilterPolicy import java.io.BufferedReader -import java.io.File import java.io.FileReader /** * A single value that can only set once. */ -class SetOnce<T>( - private var value: T, -) { +open class SetOnce<T>(private var value: T) { class SetMoreThanOnceException : Exception() private var set = false - fun set(v: T) { + fun set(v: T): T { if (set) { throw SetMoreThanOnceException() } @@ -39,6 +36,7 @@ class SetOnce<T>( } set = true value = v + return v } val get: T @@ -59,6 +57,16 @@ class SetOnce<T>( } } +class IntSetOnce(value: Int) : SetOnce<Int>(value) { + fun set(v: String): Int { + try { + return this.set(v.toInt()) + } catch (e: NumberFormatException) { + throw ArgumentsException("Invalid integer $v") + } + } +} + /** * Options that can be set from command line arguments. */ @@ -66,25 +74,22 @@ class HostStubGenOptions( /** Input jar file*/ var inJar: SetOnce<String> = SetOnce(""), - /** Output stub jar file */ - var outStubJar: SetOnce<String?> = SetOnce(null), - - /** Output implementation jar file */ - var outImplJar: SetOnce<String?> = SetOnce(null), + /** Output jar file */ + var outJar: SetOnce<String?> = SetOnce(null), var inputJarDumpFile: SetOnce<String?> = SetOnce(null), var inputJarAsKeepAllFile: SetOnce<String?> = SetOnce(null), - var stubAnnotations: MutableSet<String> = mutableSetOf(), var keepAnnotations: MutableSet<String> = mutableSetOf(), var throwAnnotations: MutableSet<String> = mutableSetOf(), var removeAnnotations: MutableSet<String> = mutableSetOf(), - var stubClassAnnotations: MutableSet<String> = mutableSetOf(), + var ignoreAnnotations: MutableSet<String> = mutableSetOf(), var keepClassAnnotations: MutableSet<String> = mutableSetOf(), + var redirectAnnotations: MutableSet<String> = mutableSetOf(), var substituteAnnotations: MutableSet<String> = mutableSetOf(), - var nativeSubstituteAnnotations: MutableSet<String> = mutableSetOf(), + var redirectionClassAnnotations: MutableSet<String> = mutableSetOf(), var classLoadHookAnnotations: MutableSet<String> = mutableSetOf(), var keepStaticInitializerAnnotations: MutableSet<String> = mutableSetOf(), @@ -95,8 +100,6 @@ class HostStubGenOptions( var defaultClassLoadHook: SetOnce<String?> = SetOnce(null), var defaultMethodCallHook: SetOnce<String?> = SetOnce(null), - var intersectStubJars: MutableSet<String> = mutableSetOf(), - var policyOverrideFile: SetOnce<String?> = SetOnce(null), var defaultPolicy: SetOnce<FilterPolicy> = SetOnce(FilterPolicy.Remove), @@ -107,24 +110,15 @@ class HostStubGenOptions( var enablePreTrace: SetOnce<Boolean> = SetOnce(false), var enablePostTrace: SetOnce<Boolean> = SetOnce(false), - var enableNonStubMethodCallDetection: SetOnce<Boolean> = SetOnce(false), - var statsFile: SetOnce<String?> = SetOnce(null), var apiListFile: SetOnce<String?> = SetOnce(null), - var numShards: SetOnce<Int> = SetOnce(1), - var shard: SetOnce<Int> = SetOnce(0), + var numShards: IntSetOnce = IntSetOnce(1), + var shard: IntSetOnce = IntSetOnce(0), ) { companion object { - private fun String.ensureFileExists(): String { - if (!File(this).exists()) { - throw InputFileNotFoundException(this) - } - return this - } - private fun parsePackageRedirect(fromColonTo: String): Pair<String, String> { val colon = fromColonTo.indexOf(':') if ((colon < 1) || (colon + 1 >= fromColonTo.length)) { @@ -137,7 +131,7 @@ class HostStubGenOptions( fun parseArgs(args: Array<String>): HostStubGenOptions { val ret = HostStubGenOptions() - val ai = ArgIterator(expandAtFiles(args)) + val ai = ArgIterator.withAtFiles(args) var allAnnotations = mutableSetOf<String>() @@ -148,46 +142,29 @@ class HostStubGenOptions( return name } - fun setLogFile(level: LogLevel, filename: String) { - log.addFilePrinter(level, filename) - log.i("$level log file: $filename") - } - while (true) { - val arg = ai.nextArgOptional() - if (arg == null) { - break - } + val arg = ai.nextArgOptional() ?: break // Define some shorthands... fun nextArg(): String = ai.nextArgRequired(arg) - fun SetOnce<String>.setNextStringArg(): String = nextArg().also { this.set(it) } - fun SetOnce<String?>.setNextStringArg(): String = nextArg().also { this.set(it) } fun MutableSet<String>.addUniqueAnnotationArg(): String = nextArg().also { this += ensureUniqueAnnotation(it) } - fun SetOnce<Int>.setNextIntArg(): String = nextArg().also { - try { - this.set(it.toInt()) - } catch (e: NumberFormatException) { - throw ArgumentsException("Invalid integer for $arg: $it") - } - } + if (log.maybeHandleCommandLineArg(arg) { nextArg() }) { + continue + } try { when (arg) { // TODO: Write help "-h", "--help" -> TODO("Help is not implemented yet") - "-v", "--verbose" -> log.setConsoleLogLevel(LogLevel.Verbose) - "-d", "--debug" -> log.setConsoleLogLevel(LogLevel.Debug) - "-q", "--quiet" -> log.setConsoleLogLevel(LogLevel.None) - - "--in-jar" -> ret.inJar.setNextStringArg().ensureFileExists() - "--out-stub-jar" -> ret.outStubJar.setNextStringArg() - "--out-impl-jar" -> ret.outImplJar.setNextStringArg() + "--in-jar" -> ret.inJar.set(nextArg()).ensureFileExists() + // We support both arguments because some AOSP dependencies + // still use the old argument + "--out-jar", "--out-impl-jar" -> ret.outJar.set(nextArg()) "--policy-override-file" -> - ret.policyOverrideFile.setNextStringArg().ensureFileExists() + ret.policyOverrideFile.set(nextArg())!!.ensureFileExists() "--clean-up-on-error" -> ret.cleanUpOnError.set(true) "--no-clean-up-on-error" -> ret.cleanUpOnError.set(false) @@ -195,17 +172,10 @@ class HostStubGenOptions( "--default-remove" -> ret.defaultPolicy.set(FilterPolicy.Remove) "--default-throw" -> ret.defaultPolicy.set(FilterPolicy.Throw) "--default-keep" -> ret.defaultPolicy.set(FilterPolicy.Keep) - "--default-stub" -> ret.defaultPolicy.set(FilterPolicy.Stub) - - "--stub-annotation" -> - ret.stubAnnotations.addUniqueAnnotationArg() "--keep-annotation" -> ret.keepAnnotations.addUniqueAnnotationArg() - "--stub-class-annotation" -> - ret.stubClassAnnotations.addUniqueAnnotationArg() - "--keep-class-annotation" -> ret.keepClassAnnotations.addUniqueAnnotationArg() @@ -215,11 +185,17 @@ class HostStubGenOptions( "--remove-annotation" -> ret.removeAnnotations.addUniqueAnnotationArg() + "--ignore-annotation" -> + ret.ignoreAnnotations.addUniqueAnnotationArg() + "--substitute-annotation" -> ret.substituteAnnotations.addUniqueAnnotationArg() - "--native-substitute-annotation" -> - ret.nativeSubstituteAnnotations.addUniqueAnnotationArg() + "--redirect-annotation" -> + ret.redirectAnnotations.addUniqueAnnotationArg() + + "--redirection-class-annotation" -> + ret.redirectionClassAnnotations.addUniqueAnnotationArg() "--class-load-hook-annotation" -> ret.classLoadHookAnnotations.addUniqueAnnotationArg() @@ -231,19 +207,16 @@ class HostStubGenOptions( ret.packageRedirects += parsePackageRedirect(nextArg()) "--annotation-allowed-classes-file" -> - ret.annotationAllowedClassesFile.setNextStringArg() + ret.annotationAllowedClassesFile.set(nextArg()) "--default-class-load-hook" -> - ret.defaultClassLoadHook.setNextStringArg() + ret.defaultClassLoadHook.set(nextArg()) "--default-method-call-hook" -> - ret.defaultMethodCallHook.setNextStringArg() - - "--intersect-stub-jar" -> - ret.intersectStubJars += nextArg().ensureFileExists() + ret.defaultMethodCallHook.set(nextArg()) "--gen-keep-all-file" -> - ret.inputJarAsKeepAllFile.setNextStringArg() + ret.inputJarAsKeepAllFile.set(nextArg()) // Following options are for debugging. "--enable-class-checker" -> ret.enableClassChecker.set(true) @@ -255,22 +228,21 @@ class HostStubGenOptions( "--enable-post-trace" -> ret.enablePostTrace.set(true) "--no-post-trace" -> ret.enablePostTrace.set(false) - "--enable-non-stub-method-check" -> - ret.enableNonStubMethodCallDetection.set(true) - - "--no-non-stub-method-check" -> - ret.enableNonStubMethodCallDetection.set(false) - - "--gen-input-dump-file" -> ret.inputJarDumpFile.setNextStringArg() + "--gen-input-dump-file" -> ret.inputJarDumpFile.set(nextArg()) - "--verbose-log" -> setLogFile(LogLevel.Verbose, nextArg()) - "--debug-log" -> setLogFile(LogLevel.Debug, nextArg()) + "--stats-file" -> ret.statsFile.set(nextArg()) + "--supported-api-list-file" -> ret.apiListFile.set(nextArg()) - "--stats-file" -> ret.statsFile.setNextStringArg() - "--supported-api-list-file" -> ret.apiListFile.setNextStringArg() - - "--num-shards" -> ret.numShards.setNextIntArg() - "--shard-index" -> ret.shard.setNextIntArg() + "--num-shards" -> ret.numShards.set(nextArg()).also { + if (it < 1) { + throw ArgumentsException("$arg must be positive integer") + } + } + "--shard-index" -> ret.shard.set(nextArg()).also { + if (it < 0) { + throw ArgumentsException("$arg must be positive integer or zero") + } + } else -> throw ArgumentsException("Unknown option: $arg") } @@ -282,98 +254,20 @@ class HostStubGenOptions( if (!ret.inJar.isSet) { throw ArgumentsException("Required option missing: --in-jar") } - if (!ret.outStubJar.isSet && !ret.outImplJar.isSet) { - log.w("Neither --out-stub-jar nor --out-impl-jar is set." + - " $executableName will not generate jar files.") + if (!ret.outJar.isSet) { + log.w("--out-jar is not set. $executableName will not generate jar files.") } - - if (ret.enableNonStubMethodCallDetection.get) { - log.w("--enable-non-stub-method-check is not fully implemented yet." + - " See the todo in doesMethodNeedNonStubCallCheck().") + if (ret.numShards.isSet != ret.shard.isSet) { + throw ArgumentsException("--num-shards and --shard-index must be used together") } - return ret - } - - /** - * Scan the arguments, and if any of them starts with an `@`, then load from the file - * and use its content as arguments. - * - * In this file, each line is treated as a single argument. - * - * The file can contain '#' as comments. - */ - private fun expandAtFiles(args: Array<String>): List<String> { - val ret = mutableListOf<String>() - - args.forEach { arg -> - if (!arg.startsWith('@')) { - ret += arg - return@forEach - } - // Read from the file, and add each line to the result. - val filename = arg.substring(1).ensureFileExists() - - log.v("Expanding options file $filename") - - BufferedReader(FileReader(filename)).use { reader -> - while (true) { - var line = reader.readLine() - if (line == null) { - break // EOF - } - - line = normalizeTextLine(line) - if (line.isNotEmpty()) { - ret += line - } - } + if (ret.numShards.isSet) { + if (ret.shard.get >= ret.numShards.get) { + throw ArgumentsException("--shard-index must be smaller than --num-shards") } } - return ret - } - } - - open class ArgumentsException(message: String?) : Exception(message), UserErrorException - - /** Thrown when the same annotation is used with different annotation arguments. */ - class DuplicateAnnotationException(annotationName: String?) : - ArgumentsException("Duplicate annotation specified: '$annotationName'") - - /** Thrown when an input file does not exist. */ - class InputFileNotFoundException(filename: String) : - ArgumentsException("File '$filename' not found") - - private class ArgIterator( - private val args: List<String>, - private var currentIndex: Int = -1 - ) { - val current: String - get() = args.get(currentIndex) - - /** - * Get the next argument, or [null] if there's no more arguments. - */ - fun nextArgOptional(): String? { - if ((currentIndex + 1) >= args.size) { - return null - } - return args.get(++currentIndex) - } - /** - * Get the next argument, or throw if - */ - fun nextArgRequired(argName: String): String { - nextArgOptional().let { - if (it == null) { - throw ArgumentsException("Missing parameter for option $argName") - } - if (it.isEmpty()) { - throw ArgumentsException("Parameter can't be empty for option $argName") - } - return it - } + return ret } } @@ -381,32 +275,28 @@ class HostStubGenOptions( return """ HostStubGenOptions{ inJar='$inJar', - outStubJar='$outStubJar', - outImplJar='$outImplJar', + outJar='$outJar', inputJarDumpFile=$inputJarDumpFile, inputJarAsKeepAllFile=$inputJarAsKeepAllFile, - stubAnnotations=$stubAnnotations, keepAnnotations=$keepAnnotations, throwAnnotations=$throwAnnotations, removeAnnotations=$removeAnnotations, - stubClassAnnotations=$stubClassAnnotations, + ignoreAnnotations=$ignoreAnnotations, keepClassAnnotations=$keepClassAnnotations, substituteAnnotations=$substituteAnnotations, - nativeSubstituteAnnotations=$nativeSubstituteAnnotations, + nativeSubstituteAnnotations=$redirectionClassAnnotations, classLoadHookAnnotations=$classLoadHookAnnotations, keepStaticInitializerAnnotations=$keepStaticInitializerAnnotations, packageRedirects=$packageRedirects, - $annotationAllowedClassesFile=$annotationAllowedClassesFile, + annotationAllowedClassesFile=$annotationAllowedClassesFile, defaultClassLoadHook=$defaultClassLoadHook, defaultMethodCallHook=$defaultMethodCallHook, - intersectStubJars=$intersectStubJars, policyOverrideFile=$policyOverrideFile, defaultPolicy=$defaultPolicy, cleanUpOnError=$cleanUpOnError, enableClassChecker=$enableClassChecker, enablePreTrace=$enablePreTrace, enablePostTrace=$enablePostTrace, - enableNonStubMethodCallDetection=$enableNonStubMethodCallDetection, statsFile=$statsFile, apiListFile=$apiListFile, numShards=$numShards, @@ -415,3 +305,80 @@ class HostStubGenOptions( """.trimIndent() } } + +class ArgIterator( + private val args: List<String>, + private var currentIndex: Int = -1 +) { + val current: String + get() = args.get(currentIndex) + + /** + * Get the next argument, or [null] if there's no more arguments. + */ + fun nextArgOptional(): String? { + if ((currentIndex + 1) >= args.size) { + return null + } + return args.get(++currentIndex) + } + + /** + * Get the next argument, or throw if + */ + fun nextArgRequired(argName: String): String { + nextArgOptional().let { + if (it == null) { + throw ArgumentsException("Missing parameter for option $argName") + } + if (it.isEmpty()) { + throw ArgumentsException("Parameter can't be empty for option $argName") + } + return it + } + } + + companion object { + fun withAtFiles(args: Array<String>): ArgIterator { + return ArgIterator(expandAtFiles(args)) + } + } +} + +/** + * Scan the arguments, and if any of them starts with an `@`, then load from the file + * and use its content as arguments. + * + * In this file, each line is treated as a single argument. + * + * The file can contain '#' as comments. + */ +private fun expandAtFiles(args: Array<String>): List<String> { + val ret = mutableListOf<String>() + + args.forEach { arg -> + if (!arg.startsWith('@')) { + ret += arg + return@forEach + } + // Read from the file, and add each line to the result. + val filename = arg.substring(1).ensureFileExists() + + log.v("Expanding options file $filename") + + BufferedReader(FileReader(filename)).use { reader -> + while (true) { + var line = reader.readLine() + if (line == null) { + break // EOF + } + + line = normalizeTextLine(line) + if (line.isNotEmpty()) { + ret += line + } + } + } + } + return ret +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/AsmUtils.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/AsmUtils.kt index 3f2b13aed5c0..a02082d12934 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/AsmUtils.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/AsmUtils.kt @@ -29,36 +29,65 @@ import org.objectweb.asm.tree.MethodNode /** Name of the class initializer method. */ -val CLASS_INITIALIZER_NAME = "<clinit>" +const val CLASS_INITIALIZER_NAME = "<clinit>" /** Descriptor of the class initializer method. */ -val CLASS_INITIALIZER_DESC = "()V" +const val CLASS_INITIALIZER_DESC = "()V" /** Name of constructors. */ -val CTOR_NAME = "<init>" +const val CTOR_NAME = "<init>" /** - * Find any of [anyAnnotations] from the list of visible / invisible annotations. + * Find any of [set] from the list of visible / invisible annotations. */ fun findAnyAnnotation( - anyAnnotations: Set<String>, - visibleAnnotations: List<AnnotationNode>?, - invisibleAnnotations: List<AnnotationNode>?, - ): AnnotationNode? { - for (an in visibleAnnotations ?: emptyList()) { - if (anyAnnotations.contains(an.desc)) { - return an - } - } - for (an in invisibleAnnotations ?: emptyList()) { - if (anyAnnotations.contains(an.desc)) { - return an - } - } - return null + set: Set<String>, + visibleAnnotations: List<AnnotationNode>?, + invisibleAnnotations: List<AnnotationNode>?, +): AnnotationNode? { + return visibleAnnotations?.find { it.desc in set } + ?: invisibleAnnotations?.find { it.desc in set } } -fun findAnnotationValueAsString(an: AnnotationNode, propertyName: String): String? { +fun ClassNode.findAnyAnnotation(set: Set<String>): AnnotationNode? { + return findAnyAnnotation(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun MethodNode.findAnyAnnotation(set: Set<String>): AnnotationNode? { + return findAnyAnnotation(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun FieldNode.findAnyAnnotation(set: Set<String>): AnnotationNode? { + return findAnyAnnotation(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun findAllAnnotations( + set: Set<String>, + visibleAnnotations: List<AnnotationNode>?, + invisibleAnnotations: List<AnnotationNode>? +): List<AnnotationNode> { + return (visibleAnnotations ?: emptyList()).filter { it.desc in set } + + (invisibleAnnotations ?: emptyList()).filter { it.desc in set } +} + +fun ClassNode.findAllAnnotations(set: Set<String>): List<AnnotationNode> { + return findAllAnnotations(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun MethodNode.findAllAnnotations(set: Set<String>): List<AnnotationNode> { + return findAllAnnotations(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun FieldNode.findAllAnnotations(set: Set<String>): List<AnnotationNode> { + return findAllAnnotations(set, this.visibleAnnotations, this.invisibleAnnotations) +} + +fun <T> findAnnotationValueAsObject( + an: AnnotationNode, + propertyName: String, + expectedTypeHumanReadableName: String, + converter: (Any?) -> T?, +): T? { for (i in 0..(an.values?.size ?: 0) - 2 step 2) { val name = an.values[i] @@ -66,16 +95,30 @@ fun findAnnotationValueAsString(an: AnnotationNode, propertyName: String): Strin continue } val value = an.values[i + 1] - if (value is String) { - return value + if (value == null) { + return null + } + + try { + return converter(value) + } catch (e: ClassCastException) { + throw ClassParseException( + "The type of '$propertyName' in annotation @${an.desc} must be " + + "$expectedTypeHumanReadableName, but is ${value?.javaClass?.canonicalName}") } - throw ClassParseException( - "The type of '$name' in annotation \"${an.desc}\" must be String" + - ", but is ${value?.javaClass?.canonicalName}") } return null } +fun findAnnotationValueAsString(an: AnnotationNode, propertyName: String): String? { + return findAnnotationValueAsObject(an, propertyName, "String", {it as String}) +} + +fun findAnnotationValueAsType(an: AnnotationNode, propertyName: String): Type? { + return findAnnotationValueAsObject(an, propertyName, "Class", {it as Type}) +} + + val periodOrSlash = charArrayOf('.', '/') fun getPackageNameFromFullClassName(fullClassName: String): String { @@ -117,6 +160,32 @@ fun resolveClassNameWithDefaultPackage(className: String, defaultPackageName: St return "$defaultPackageName.$className" } +fun splitWithLastPeriod(name: String): Pair<String, String>? { + val pos = name.lastIndexOf('.') + if (pos < 0) { + return null + } + return Pair(name.substring(0, pos), name.substring(pos + 1)) +} + +fun String.startsWithAny(vararg prefixes: String): Boolean { + prefixes.forEach { + if (this.startsWith(it)) { + return true + } + } + return false +} + +fun String.endsWithAny(vararg suffixes: String): Boolean { + suffixes.forEach { + if (this.endsWith(it)) { + return true + } + } + return false +} + fun String.toJvmClassName(): String { return this.replace('.', '/') } @@ -129,6 +198,14 @@ fun String.toHumanReadableMethodName(): String { return this.replace('/', '.') } +fun zipEntryNameToClassName(entryFilename: String): String? { + val suffix = ".class" + if (!entryFilename.endsWith(suffix)) { + return null + } + return entryFilename.substring(0, entryFilename.length - suffix.length) +} + private val numericalInnerClassName = """.*\$\d+$""".toRegex() fun isAnonymousInnerClass(cn: ClassNode): Boolean { @@ -137,18 +214,6 @@ fun isAnonymousInnerClass(cn: ClassNode): Boolean { } /** - * Take a class name. If it's a nested class, then return the name of its direct outer class name. - * Otherwise, return null. - */ -fun getDirectOuterClassName(className: String): String? { - val pos = className.lastIndexOf('$') - if (pos < 0) { - return null - } - return className.substring(0, pos) -} - -/** * Write bytecode to push all the method arguments to the stack. * The number of arguments and their type are taken from [methodDescriptor]. */ @@ -198,11 +263,11 @@ fun writeByteCodeToReturn(methodDescriptor: String, writer: MethodVisitor) { /** * Given a method descriptor, insert an [argType] as the first argument to it. */ -fun prependArgTypeToMethodDescriptor(methodDescriptor: String, argType: Type): String { +fun prependArgTypeToMethodDescriptor(methodDescriptor: String, classInternalName: String): String { val returnType = Type.getReturnType(methodDescriptor) val argTypes = Type.getArgumentTypes(methodDescriptor).toMutableList() - argTypes.add(0, argType) + argTypes.add(0, Type.getType("L" + classInternalName + ";")) return Type.getMethodDescriptor(returnType, *argTypes.toTypedArray()) } @@ -270,6 +335,18 @@ fun MethodNode.isStatic(): Boolean { return (this.access and Opcodes.ACC_STATIC) != 0 } +fun MethodNode.isPublic(): Boolean { + return (this.access and Opcodes.ACC_PUBLIC) != 0 +} + +fun MethodNode.isNative(): Boolean { + return (this.access and Opcodes.ACC_NATIVE) != 0 +} + +fun MethodNode.isSpecial(): Boolean { + return CTOR_NAME == this.name || CLASS_INITIALIZER_NAME == this.name +} + fun FieldNode.isEnum(): Boolean { return (this.access and Opcodes.ACC_ENUM) != 0 } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/ClassNodes.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/ClassNodes.kt index 92906a75b93a..e2647eb13ed3 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/ClassNodes.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/asm/ClassNodes.kt @@ -27,6 +27,11 @@ import org.objectweb.asm.tree.TypeAnnotationNode import java.io.BufferedInputStream import java.io.PrintWriter import java.util.Arrays +import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicReference +import java.util.function.Consumer +import java.util.zip.ZipEntry import java.util.zip.ZipFile /** @@ -183,49 +188,85 @@ class ClassNodes { /** * Load all the classes, without code. */ - fun loadClassStructures(inJar: String): ClassNodes { - log.i("Reading class structure from $inJar ...") - val start = System.currentTimeMillis() - + fun loadClassStructures( + inJar: String, + timeCollector: Consumer<Double>? = null, + ): ClassNodes { val allClasses = ClassNodes() - log.withIndent { - ZipFile(inJar).use { inZip -> - val inEntries = inZip.entries() + // Load classes in parallel. + val executor = Executors.newFixedThreadPool(4) + + // First exception defected. + val exception = AtomicReference<Throwable>() + + // Called on a BG thread. Read a single jar entry and add it to [allClasses]. + fun parseClass(inZip: ZipFile, entry: ZipEntry) { + try { + inZip.getInputStream(entry).use { ins -> + val cr = ClassReader(BufferedInputStream(ins)) + val cn = ClassNode() + cr.accept( + cn, ClassReader.SKIP_CODE + or ClassReader.SKIP_DEBUG + or ClassReader.SKIP_FRAMES + ) + synchronized(allClasses) { + if (!allClasses.addClass(cn)) { + log.w("Duplicate class found: ${cn.name}") + } + } + } + } catch (e: Throwable) { + log.e("Failed to load class: $e") + exception.compareAndSet(null, e) + } + } + + // Actually open the jar and read it on worker threads. + val time = log.iTime("Reading class structure from $inJar") { + log.withIndent { + ZipFile(inJar).use { inZip -> + val inEntries = inZip.entries() - while (inEntries.hasMoreElements()) { - val entry = inEntries.nextElement() + while (inEntries.hasMoreElements()) { + val entry = inEntries.nextElement() - BufferedInputStream(inZip.getInputStream(entry)).use { bis -> if (entry.name.endsWith(".class")) { - val cr = ClassReader(bis) - val cn = ClassNode() - cr.accept(cn, ClassReader.SKIP_CODE or ClassReader.SKIP_DEBUG - or ClassReader.SKIP_FRAMES) - if (!allClasses.addClass(cn)) { - log.w("Duplicate class found: ${cn.name}") + executor.submit { + parseClass(inZip, entry) } } else if (entry.name.endsWith(".dex")) { // Seems like it's an ART jar file. We can't process it. // It's a fatal error. throw InvalidJarFileException( - "$inJar is not a desktop jar file. It contains a *.dex file.") + "$inJar is not a desktop jar file." + + " It contains a *.dex file." + ) } else { // Unknown file type. Skip. - while (bis.available() > 0) { - bis.skip((1024 * 1024).toLong()) - } } } + // Wait for all the work to complete. (must do it before closing the zip) + log.i("Waiting for all loaders to finish...") + executor.shutdown() + executor.awaitTermination(5, TimeUnit.MINUTES) + log.i("All loaders to finished.") } } - } - if (allClasses.size == 0) { - log.w("$inJar contains no *.class files.") - } - val end = System.currentTimeMillis() - log.i("Done reading class structure in %.1f second(s).", (end - start) / 1000.0) + // If any exception is detected, throw it. + exception.get()?.let { + throw it + } + + if (allClasses.size == 0) { + log.w("$inJar contains no *.class files.") + } else { + log.i("Loaded ${allClasses.size} classes from $inJar.") + } + } + timeCollector?.accept(time) return allClasses } } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/dumper/ApiDumper.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/dumper/ApiDumper.kt index aaefee4f71e8..5e4e70f0cbaa 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/dumper/ApiDumper.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/dumper/ApiDumper.kt @@ -44,7 +44,7 @@ class ApiDumper( val descriptor: String, ) - val javaStandardApiPolicy = FilterPolicy.Stub.withReason("Java standard API") + private val javaStandardApiPolicy = FilterPolicy.Keep.withReason("Java standard API") private val shownMethods = mutableSetOf<MethodKey>() diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt index 248121c63d78..36adf0626415 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt @@ -17,14 +17,16 @@ package com.android.hoststubgen.filters import com.android.hoststubgen.ClassParseException import com.android.hoststubgen.HostStubGenErrors -import com.android.hoststubgen.HostStubGenInternalException import com.android.hoststubgen.InvalidAnnotationException -import com.android.hoststubgen.addNonNullElement +import com.android.hoststubgen.addLists import com.android.hoststubgen.asm.CLASS_INITIALIZER_DESC import com.android.hoststubgen.asm.CLASS_INITIALIZER_NAME import com.android.hoststubgen.asm.ClassNodes +import com.android.hoststubgen.asm.findAllAnnotations import com.android.hoststubgen.asm.findAnnotationValueAsString import com.android.hoststubgen.asm.findAnyAnnotation +import com.android.hoststubgen.asm.getPackageNameFromFullClassName +import com.android.hoststubgen.asm.resolveClassNameWithDefaultPackage import com.android.hoststubgen.asm.toHumanReadableClassName import com.android.hoststubgen.asm.toHumanReadableMethodName import com.android.hoststubgen.asm.toJvmClassName @@ -35,395 +37,313 @@ import org.objectweb.asm.tree.ClassNode // TODO: Detect invalid cases, such as... // - Class's visibility is lower than the members'. -// - HostSideTestSubstituteWith is set, but it doesn't have @Stub or @Keep /** * [OutputFilter] using Java annotations. */ class AnnotationBasedFilter( - private val errors: HostStubGenErrors, - private val classes: ClassNodes, - stubAnnotations_: Set<String>, - keepAnnotations_: Set<String>, - stubClassAnnotations_: Set<String>, - keepClassAnnotations_: Set<String>, - throwAnnotations_: Set<String>, - removeAnnotations_: Set<String>, - substituteAnnotations_: Set<String>, - nativeSubstituteAnnotations_: Set<String>, - classLoadHookAnnotations_: Set<String>, - keepStaticInitializerAnnotations_: Set<String>, - private val annotationAllowedClassesFilter: ClassFilter, - fallback: OutputFilter, + private val errors: HostStubGenErrors, + private val classes: ClassNodes, + keepAnnotations_: Set<String>, + keepClassAnnotations_: Set<String>, + throwAnnotations_: Set<String>, + removeAnnotations_: Set<String>, + ignoreAnnotations_: Set<String>, + substituteAnnotations_: Set<String>, + redirectAnnotations_: Set<String>, + redirectionClassAnnotations_: Set<String>, + classLoadHookAnnotations_: Set<String>, + keepStaticInitializerAnnotations_: Set<String>, + private val annotationAllowedClassesFilter: ClassFilter, + fallback: OutputFilter, ) : DelegatingFilter(fallback) { - private var stubAnnotations = convertToInternalNames(stubAnnotations_) - private var keepAnnotations = convertToInternalNames(keepAnnotations_) - private var stubClassAnnotations = convertToInternalNames(stubClassAnnotations_) - private var keepClassAnnotations = convertToInternalNames(keepClassAnnotations_) - private var throwAnnotations = convertToInternalNames(throwAnnotations_) - private var removeAnnotations = convertToInternalNames(removeAnnotations_) - private var substituteAnnotations = convertToInternalNames(substituteAnnotations_) - private var nativeSubstituteAnnotations = convertToInternalNames(nativeSubstituteAnnotations_) - private var classLoadHookAnnotations = convertToInternalNames(classLoadHookAnnotations_) - private var keepStaticInitializerAnnotations = - convertToInternalNames(keepStaticInitializerAnnotations_) + private val keepAnnotations = convertToInternalNames(keepAnnotations_) + private val keepClassAnnotations = convertToInternalNames(keepClassAnnotations_) + private val throwAnnotations = convertToInternalNames(throwAnnotations_) + private val removeAnnotations = convertToInternalNames(removeAnnotations_) + private val ignoreAnnotations = convertToInternalNames(ignoreAnnotations_) + private val redirectAnnotations = convertToInternalNames(redirectAnnotations_) + private val substituteAnnotations = convertToInternalNames(substituteAnnotations_) + private val redirectionClassAnnotations = + convertToInternalNames(redirectionClassAnnotations_) + private val classLoadHookAnnotations = convertToInternalNames(classLoadHookAnnotations_) + private val keepStaticInitializerAnnotations = + convertToInternalNames(keepStaticInitializerAnnotations_) /** Annotations that control API visibility. */ - private var visibilityAnnotations: Set<String> = convertToInternalNames( - stubAnnotations_ + - keepAnnotations_ + - stubClassAnnotations_ + - keepClassAnnotations_ + - throwAnnotations_ + - removeAnnotations_) + private val visibilityAnnotations = keepAnnotations + + keepClassAnnotations + + throwAnnotations + + removeAnnotations + + ignoreAnnotations + + redirectAnnotations + + substituteAnnotations + + /** All the annotations we use. */ + private val allAnnotations = visibilityAnnotations + + redirectionClassAnnotations + + classLoadHookAnnotations + + keepStaticInitializerAnnotations /** * All the annotations we use. Note, this one is in a [convertToJvmNames] format unlike * other ones, because of how it's used. */ - private var allAnnotations: Set<String> = convertToJvmNames( - stubAnnotations_ + - keepAnnotations_ + - stubClassAnnotations_ + + private val allAnnotationClasses: Set<String> = convertToJvmNames( + keepAnnotations_ + keepClassAnnotations_ + throwAnnotations_ + removeAnnotations_ + + redirectAnnotations_ + substituteAnnotations_ + - nativeSubstituteAnnotations_ + - classLoadHookAnnotations_) - - private val substitutionHelper = SubstitutionHelper() - - private val reasonAnnotation = "annotation" - private val reasonClassAnnotation = "class-annotation" - - /** - * Throw if an item has more than one visibility annotations. - * - * name1 - 4 are only used in exception messages. We take them as separate strings - * to avoid unnecessary string concatenations. - */ - private fun detectInvalidAnnotations( - visibles: List<AnnotationNode>?, - invisibles: List<AnnotationNode>?, - type: String, - name1: String, - name2: String, - name3: String, - ) { - var count = 0 - for (an in visibles ?: emptyList()) { - if (visibilityAnnotations.contains(an.desc)) { - count++ - } - } - for (an in invisibles ?: emptyList()) { - if (visibilityAnnotations.contains(an.desc)) { - count++ - } - } - if (count > 1) { - val description = if (name2 == "" && name3 == "") { - "$type $name1" - } else { - "$type $name1.$name2$name3" - } - throw InvalidAnnotationException( - "Found more than one visibility annotations on $description") + redirectionClassAnnotations_ + + classLoadHookAnnotations_ + + keepStaticInitializerAnnotations_ + ) + + private val policyCache = mutableMapOf<String, ClassAnnotations>() + + private val AnnotationNode.policy: FilterPolicyWithReason? get() { + return when (desc) { + in keepAnnotations -> FilterPolicy.Keep.withReason(REASON_ANNOTATION) + in keepClassAnnotations -> FilterPolicy.KeepClass.withReason(REASON_CLASS_ANNOTATION) + in substituteAnnotations -> FilterPolicy.Substitute.withReason(REASON_ANNOTATION) + in throwAnnotations -> FilterPolicy.Throw.withReason(REASON_ANNOTATION) + in removeAnnotations -> FilterPolicy.Remove.withReason(REASON_ANNOTATION) + in ignoreAnnotations -> FilterPolicy.Ignore.withReason(REASON_ANNOTATION) + in redirectAnnotations -> FilterPolicy.Redirect.withReason(REASON_ANNOTATION) + else -> null } } - fun findAnyAnnotation( - className: String, - anyAnnotations: Set<String>, - visibleAnnotations: List<AnnotationNode>?, - invisibleAnnotations: List<AnnotationNode>?, - ): AnnotationNode? { - val ret = findAnyAnnotation(anyAnnotations, visibleAnnotations, invisibleAnnotations) - - if (ret != null) { - if (!annotationAllowedClassesFilter.matches(className)) { - throw InvalidAnnotationException( - "Class ${className.toHumanReadableClassName()} is not allowed to have " + - "Ravenwood annotations. Contact g/ravenwood for more details.") - } - } - - return ret - } - - /** - * Find a visibility annotation. - * - * name1 - 4 are only used in exception messages. - */ - private fun findAnnotation( - className: String, - visibles: List<AnnotationNode>?, - invisibles: List<AnnotationNode>?, - type: String, - name1: String, - name2: String = "", - name3: String = "", - ): FilterPolicyWithReason? { - detectInvalidAnnotations(visibles, invisibles, type, name1, name2, name3) - - findAnyAnnotation(className, stubAnnotations, visibles, invisibles)?.let { - return FilterPolicy.Stub.withReason(reasonAnnotation) - } - findAnyAnnotation(className, stubClassAnnotations, visibles, invisibles)?.let { - return FilterPolicy.StubClass.withReason(reasonClassAnnotation) - } - findAnyAnnotation(className, keepAnnotations, visibles, invisibles)?.let { - return FilterPolicy.Keep.withReason(reasonAnnotation) - } - findAnyAnnotation(className, keepClassAnnotations, visibles, invisibles)?.let { - return FilterPolicy.KeepClass.withReason(reasonClassAnnotation) - } - findAnyAnnotation(className, throwAnnotations, visibles, invisibles)?.let { - return FilterPolicy.Throw.withReason(reasonAnnotation) - } - findAnyAnnotation(className, removeAnnotations, visibles, invisibles)?.let { - return FilterPolicy.Remove.withReason(reasonAnnotation) - } - - return null + private fun getAnnotationPolicy(cn: ClassNode): ClassAnnotations { + return policyCache.getOrPut(cn.name) { ClassAnnotations(cn) } } override fun getPolicyForClass(className: String): FilterPolicyWithReason { - val cn = classes.getClass(className) - - findAnnotation( - cn.name, - cn.visibleAnnotations, - cn.invisibleAnnotations, - "class", - className)?.let { - return it - } - // If it's any of the annotations, then always keep it. - if (allAnnotations.contains(className)) { + if (allAnnotationClasses.contains(className)) { return FilterPolicy.KeepClass.withReason("HostStubGen Annotation") } - return super.getPolicyForClass(className) + val cn = classes.getClass(className) + return getAnnotationPolicy(cn).classPolicy ?: super.getPolicyForClass(className) } - override fun getPolicyForField( - className: String, - fieldName: String - ): FilterPolicyWithReason { + override fun getPolicyForField(className: String, fieldName: String): FilterPolicyWithReason { val cn = classes.getClass(className) - - cn.fields?.firstOrNull { it.name == fieldName }?.let {fn -> - findAnnotation( - cn.name, - fn.visibleAnnotations, - fn.invisibleAnnotations, - "field", - className, - fieldName - )?.let { policy -> - // If the item has an annotation, then use it. - return policy - } - } - return super.getPolicyForField(className, fieldName) + return getAnnotationPolicy(cn).fieldPolicies[fieldName] + ?: super.getPolicyForField(className, fieldName) } override fun getPolicyForMethod( - className: String, - methodName: String, - descriptor: String + className: String, + methodName: String, + descriptor: String ): FilterPolicyWithReason { val cn = classes.getClass(className) - - if (methodName == CLASS_INITIALIZER_NAME && descriptor == CLASS_INITIALIZER_DESC) { - findAnyAnnotation(cn.name, keepStaticInitializerAnnotations, - cn.visibleAnnotations, cn.invisibleAnnotations)?.let { - return FilterPolicy.Keep.withReason(reasonAnnotation) - } - } - - cn.methods?.firstOrNull { it.name == methodName && it.desc == descriptor }?.let { mn -> - // @SubstituteWith is going to complicate the policy here, so we ask helper - // what to do. - substitutionHelper.getPolicyFromSubstitution(cn, mn.name, mn.desc)?.let { - return it - } - - // If there's no substitution, then we check the annotation. - findAnnotation( - cn.name, - mn.visibleAnnotations, - mn.invisibleAnnotations, - "method", - className, - methodName, - descriptor - )?.let { policy -> - return policy - } - } - return super.getPolicyForMethod(className, methodName, descriptor) + return getAnnotationPolicy(cn).methodPolicies[MethodKey(methodName, descriptor)] + ?: super.getPolicyForMethod(className, methodName, descriptor) } override fun getRenameTo( - className: String, - methodName: String, - descriptor: String + className: String, + methodName: String, + descriptor: String ): String? { val cn = classes.getClass(className) - - // If the method has a "substitute with" annotation, then return its "value" parameter. - cn.methods?.firstOrNull { it.name == methodName && it.desc == descriptor }?.let { mn -> - return substitutionHelper.getRenameTo(cn, mn.name, mn.desc) - } - return null + return getAnnotationPolicy(cn).renamedMethods[MethodKey(methodName, descriptor)] + ?: super.getRenameTo(className, methodName, descriptor) } - override fun getNativeSubstitutionClass(className: String): String? { - classes.getClass(className).let { cn -> - findAnyAnnotation(nativeSubstituteAnnotations, - cn.visibleAnnotations, cn.invisibleAnnotations)?.let { an -> - return getAnnotationField(an, "value")?.toJvmClassName() - } - } - return null + override fun getRedirectionClass(className: String): String? { + val cn = classes.getClass(className) + return getAnnotationPolicy(cn).redirectionClass } override fun getClassLoadHooks(className: String): List<String> { - val e = classes.getClass(className).let { cn -> - findAnyAnnotation(classLoadHookAnnotations, - cn.visibleAnnotations, cn.invisibleAnnotations)?.let { an -> - getAnnotationField(an, "value")?.toHumanReadableMethodName() - } - } - return addNonNullElement(super.getClassLoadHooks(className), e) + val cn = classes.getClass(className) + return addLists(super.getClassLoadHooks(className), getAnnotationPolicy(cn).classLoadHooks) } private data class MethodKey(val name: String, val desc: String) /** - * In order to handle substitution, we need to build a reverse mapping of substitution - * methods. + * Every time we see a class, we scan all its methods for substitution attributes, + * and compute (implicit) policies caused by them. + * + * For example, for the following methods: * - * This class automatically builds such a map internally that the above methods can - * take advantage of. + * @Substitute(suffix = "_host") + * private void foo() { + * // This isn't supported on the host side. + * } + * private void foo_host() { + * // Host side implementation + * } + * + * We internally handle them as: + * + * foo() -> Substitute + * foo_host() -> Stub, and then rename it to foo(). */ - private inner class SubstitutionHelper { - private var currentClass: ClassNode? = null - - private var policiesFromSubstitution = mutableMapOf<MethodKey, FilterPolicyWithReason>() - private var substituteToMethods = mutableMapOf<MethodKey, String>() + private inner class ClassAnnotations(cn: ClassNode) { + + val classPolicy: FilterPolicyWithReason? + val fieldPolicies = mutableMapOf<String, FilterPolicyWithReason>() + val methodPolicies = mutableMapOf<MethodKey, FilterPolicyWithReason>() + val renamedMethods = mutableMapOf<MethodKey, String>() + val redirectionClass: String? + val classLoadHooks: List<String> + + init { + val allowAnnotation = annotationAllowedClassesFilter.matches(cn.name) + detectInvalidAnnotations( + cn.name, allowAnnotation, + cn.visibleAnnotations, cn.invisibleAnnotations, + "class", cn.name + ) + classPolicy = cn.findAnyAnnotation(visibilityAnnotations)?.policy + redirectionClass = cn.findAnyAnnotation(redirectionClassAnnotations)?.let { an -> + getAnnotationField(an, "value")?.let { resolveRelativeClass(cn, it) } + } + classLoadHooks = cn.findAllAnnotations(classLoadHookAnnotations).mapNotNull { an -> + getAnnotationField(an, "value")?.toHumanReadableMethodName() + } + if (cn.findAnyAnnotation(keepStaticInitializerAnnotations) != null) { + methodPolicies[MethodKey(CLASS_INITIALIZER_NAME, CLASS_INITIALIZER_DESC)] = + FilterPolicy.Keep.withReason(REASON_ANNOTATION) + } - fun getPolicyFromSubstitution(cn: ClassNode, methodName: String, descriptor: String): - FilterPolicyWithReason? { - setClass(cn) - return policiesFromSubstitution[MethodKey(methodName, descriptor)] - } + for (fn in cn.fields ?: emptyList()) { + detectInvalidAnnotations( + cn.name, allowAnnotation, + fn.visibleAnnotations, fn.invisibleAnnotations, + "field", cn.name, fn.name + ) + fn.findAnyAnnotation(visibilityAnnotations)?.policy?.let { + fieldPolicies[fn.name] = it + } + } - fun getRenameTo(cn: ClassNode, methodName: String, descriptor: String): String? { - setClass(cn) - return substituteToMethods[MethodKey(methodName, descriptor)] + for (mn in cn.methods ?: emptyList()) { + detectInvalidAnnotations( + cn.name, allowAnnotation, + mn.visibleAnnotations, mn.invisibleAnnotations, + "method", cn.name, mn.name, mn.desc + ) + + val an = mn.findAnyAnnotation(visibilityAnnotations) ?: continue + val policy = an.policy ?: continue + methodPolicies[MethodKey(mn.name, mn.desc)] = policy + + if (policy.policy != FilterPolicy.Substitute) continue + + // Handle substitution + val suffix = getAnnotationField(an, "suffix", false) ?: "\$ravenwood" + val replacement = mn.name + suffix + + if (replacement == mn.name) { + errors.onErrorFound("@SubstituteWith require a different name") + } else { + // The replacement method has to be renamed + methodPolicies[MethodKey(replacement, mn.desc)] = + FilterPolicy.Keep.withReason(REASON_ANNOTATION) + renamedMethods[MethodKey(replacement, mn.desc)] = mn.name + + log.v("Substitution found: %s%s -> %s", replacement, mn.desc, mn.name) + } + } } /** - * Every time we see a different class, we scan all its methods for substitution attributes, - * and compute (implicit) policies caused by them. - * - * For example, for the following methods: + * Throw if an item has more than one visibility annotations, or the class is not allowed * - * @Stub - * @Substitute(suffix = "_host") - * private void foo() { - * // This isn't supported on the host side. - * } - * private void foo_host() { - * // Host side implementation - * } - * - * We internally handle them as: - * - * foo() -> Remove - * foo_host() -> Stub, and then rename it to foo(). + * name1 - 4 are only used in exception messages. We take them as separate strings + * to avoid unnecessary string concatenations. */ - private fun setClass(cn: ClassNode) { - if (currentClass == cn) { - return + private fun detectInvalidAnnotations( + className: String, + allowAnnotation: Boolean, + visibles: List<AnnotationNode>?, + invisibles: List<AnnotationNode>?, + type: String, + name1: String, + name2: String = "", + name3: String = "", + ) { + var count = 0 + var visibleCount = 0 + for (an in visibles ?: emptyList()) { + if (visibilityAnnotations.contains(an.desc)) { + visibleCount++ + } + if (allAnnotations.contains(an.desc)) { + count++ + } } - // If the class is changing, we'll rebuild the internal structure. - currentClass = cn - - policiesFromSubstitution.clear() - substituteToMethods.clear() - - for (mn in cn.methods ?: emptyList()) { - findAnyAnnotation(substituteAnnotations, - mn.visibleAnnotations, - mn.invisibleAnnotations)?.let { an -> - - // Find the policy for this method. - val policy = outermostFilter.getPolicyForMethod(cn.name, mn.name, mn.desc) - .policy.resolveClassWidePolicy() - // Make sure it's either Stub or Keep. - if (!(policy.needsInStub || policy.needsInImpl)) { - // TODO: Use the real annotation names in the message - errors.onErrorFound("@SubstituteWith must have either @Stub or @Keep") - return@let - } - if (!policy.isUsableWithMethods) { - throw HostStubGenInternalException("Policy $policy shouldn't show up here") - } - - val suffix = getAnnotationField(an, "suffix", false) ?: "\$ravenwood" - val renameFrom = mn.name + suffix - val renameTo = mn.name - - if (renameFrom == renameTo) { - errors.onErrorFound("@SubstituteWith have a different name") - return@let - } - - // This mn has "SubstituteWith". This means, - // 1. Re move the "rename-to" method, so add it to substitutedMethods. - policiesFromSubstitution[MethodKey(renameTo, mn.desc)] = - FilterPolicy.Remove.withReason("substitute-to") - - // If the policy is "stub", use "stub". - // Otherwise, it must be "keep" or "throw", but there's no point in using - // "throw", so let's use "keep". - val newPolicy = if (policy.needsInStub) policy else FilterPolicy.Keep - // 2. We also keep the from-to in the map. - policiesFromSubstitution[MethodKey(renameFrom, mn.desc)] = - newPolicy.withReason("substitute-from") - substituteToMethods[MethodKey(renameFrom, mn.desc)] = renameTo - - log.v("Substitution found: %s%s -> %s", renameFrom, mn.desc, renameTo) + for (an in invisibles ?: emptyList()) { + if (visibilityAnnotations.contains(an.desc)) { + visibleCount++ + } + if (allAnnotations.contains(an.desc)) { + count++ + } + } + if (count > 0 && !allowAnnotation) { + throw InvalidAnnotationException( + "Class ${className.toHumanReadableClassName()} is not allowed to have " + + "Ravenwood annotations. Contact g/ravenwood for more details." + ) + } + if (visibleCount > 1) { + val description = if (name2 == "" && name3 == "") { + "$type $name1" + } else { + "$type $name1.$name2$name3" } + throw InvalidAnnotationException( + "Found more than one visibility annotations on $description" + ) } } - } - /** - * Return the (String) value of 'value' parameter from an annotation. - */ - private fun getAnnotationField(an: AnnotationNode, name: String, - required: Boolean = true): String? { - try { - val suffix = findAnnotationValueAsString(an, name) - if (suffix == null && required) { - errors.onErrorFound("Annotation \"${an.desc}\" must have field $name") + /** + * Return the (String) value of 'value' parameter from an annotation. + */ + private fun getAnnotationField( + an: AnnotationNode, + name: String, + required: Boolean = true + ): String? { + try { + val suffix = findAnnotationValueAsString(an, name) + if (suffix == null && required) { + errors.onErrorFound("Annotation \"${an.desc}\" must have field $name") + } + return suffix + } catch (e: ClassParseException) { + errors.onErrorFound(e.message!!) + return null } - return suffix - } catch (e: ClassParseException) { - errors.onErrorFound(e.message!!) - return null + } + + /** + * Resolve the full class name if the class is relative + */ + private fun resolveRelativeClass( + cn: ClassNode, + name: String + ): String { + val packageName = getPackageNameFromFullClassName(cn.name) + return resolveClassNameWithDefaultPackage(name, packageName).toJvmClassName() } } companion object { + private const val REASON_ANNOTATION = "annotation" + private const val REASON_CLASS_ANNOTATION = "class-annotation" + /** * Convert from human-readable type names (e.g. "com.android.TypeName") to the internal type * names (e.g. "Lcom/android/TypeName). diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ClassWidePolicyPropagatingFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ClassWidePolicyPropagatingFilter.kt index 47790b10782a..f8bb526d0a86 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ClassWidePolicyPropagatingFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ClassWidePolicyPropagatingFilter.kt @@ -16,7 +16,6 @@ package com.android.hoststubgen.filters import com.android.hoststubgen.asm.ClassNodes -import com.android.hoststubgen.asm.getDirectOuterClassName /** * This is used as the second last fallback filter. This filter propagates the class-wide policy @@ -24,74 +23,71 @@ import com.android.hoststubgen.asm.getDirectOuterClassName */ class ClassWidePolicyPropagatingFilter( private val classes: ClassNodes, - fallback: OutputFilter, - ) : DelegatingFilter(fallback) { + fallback: OutputFilter +) : DelegatingFilter(fallback) { - private fun getClassWidePolicy(className: String, resolve: Boolean): FilterPolicyWithReason? { + /** + * We don't use ClassNode.outerClass, because it gives as the top-level + * outer class (A$B$C -> A), not the direct outer class (A$B$C -> A$B). + * + * Sometimes a class name includes `$`, but is not as a nested class name separator + * (e.g. a class name like `MyClass$$`). In this case, `MyClass$` is not actually a class. + * + * So before getting the class policy on a nonexistent class, which may cause an + * incorrect result, we make sure the class actually exists. + */ + private fun getDirectOuterClass(className: String): String? { var currentClass = className - - - // If the class name is `a.b.c.A$B$C`, then we try to get the class wide policy - // from a.b.c.A$B$C, then a.b.c.A$B, and then a.b.c.A. while (true) { - // Sometimes a class name has a `$` in it but not as a nest class name separator -- - // e.g. class name like "MyClass$$". In this case, `MyClass$` may not actually be - // a class name. - // So before getting the class policy on a nonexistent class, which may cause an - // incorrect result, we make sure if className actually exists. - if (classes.hasClass(className)) { - outermostFilter.getPolicyForClass(className).let { policy -> - if (policy.policy.isClassWidePolicy) { - val p = if (resolve) { - policy.policy.resolveClassWidePolicy() - } else { - policy.policy - } - - return p.withReason(policy.reason) - .wrapReason("class-wide in $currentClass") - } - // If the class's policy is remove, then remove it. - if (policy.policy == FilterPolicy.Remove) { - return FilterPolicy.Remove.withReason("class-wide in $currentClass") - } - } - } - - // Next, look at the outer class... - val outer = getDirectOuterClassName(currentClass) - if (outer == null) { + val pos = currentClass.lastIndexOf('$') + if (pos < 0) { return null } - currentClass = outer + currentClass = currentClass.substring(0, pos) + if (classes.hasClass(currentClass)) { + return currentClass + } } } - override fun getPolicyForClass(className: String): FilterPolicyWithReason { - // If it's a nested class, use the outer class's policy. - getDirectOuterClassName(className)?.let { outerName -> - getClassWidePolicy(outerName, resolve = false)?.let { policy -> - return policy + private fun getClassWidePolicy(className: String, resolve: Boolean): FilterPolicyWithReason? { + outermostFilter.getPolicyForClass(className).let { policy -> + if (policy.policy == FilterPolicy.KeepClass) { + val p = if (resolve) { + policy.policy.resolveClassWidePolicy() + } else { + policy.policy + } + + return p.withReason(policy.reason) + .wrapReason("class-wide in $className") + } + // If the class's policy is remove, then remove it. + if (policy.policy == FilterPolicy.Remove) { + return FilterPolicy.Remove.withReason("class-wide in $className") } } + return null + } - return super.getPolicyForClass(className) + override fun getPolicyForClass(className: String): FilterPolicyWithReason { + // If the class name is `a.b.c.A$B$C`, then we try to get the class wide policy + // from a.b.c.A$B$C, then a.b.c.A$B, and then a.b.c.A, recursively + return getDirectOuterClass(className)?.let { getClassWidePolicy(it, resolve = false) } + ?: super.getPolicyForClass(className) } - override fun getPolicyForField( - className: String, - fieldName: String - ): FilterPolicyWithReason { + override fun getPolicyForField(className: String, fieldName: String): FilterPolicyWithReason { return getClassWidePolicy(className, resolve = true) ?: super.getPolicyForField(className, fieldName) } override fun getPolicyForMethod( - className: String, - methodName: String, - descriptor: String + className: String, + methodName: String, + descriptor: String ): FilterPolicyWithReason { return getClassWidePolicy(className, resolve = true) - ?: super.getPolicyForMethod(className, methodName, descriptor) + ?: super.getPolicyForMethod(className, methodName, descriptor) } -}
\ No newline at end of file +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ConstantFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ConstantFilter.kt index 678e6eae0be6..be3c59c80152 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ConstantFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ConstantFilter.kt @@ -26,23 +26,17 @@ import com.android.hoststubgen.HostStubGenInternalException * @param policy the policy. Cannot be a "substitute" policy. */ class ConstantFilter( - policy: FilterPolicy, - val reason: String + policy: FilterPolicy, + private val reason: String ) : OutputFilter() { - val classPolicy: FilterPolicy - val fieldPolicy: FilterPolicy - val methodPolicy: FilterPolicy + + private val classPolicy: FilterPolicy + private val fieldPolicy: FilterPolicy + private val methodPolicy: FilterPolicy init { - if (policy.isSubstitute) { - throw HostStubGenInternalException( - "ConstantFilter doesn't allow substitution policies.") - } - if (policy.isClassWidePolicy) { - // We prevent it, because there's no point in using class-wide policies because - // all members get othe same policy too anyway. - throw HostStubGenInternalException( - "ConstantFilter doesn't allow class-wide policies.") + if (!policy.isUsableWithDefault) { + throw HostStubGenInternalException("ConstantFilter doesn't support $policy.") } methodPolicy = policy @@ -63,10 +57,10 @@ class ConstantFilter( } override fun getPolicyForMethod( - className: String, - methodName: String, - descriptor: String, - ): FilterPolicyWithReason { + className: String, + methodName: String, + descriptor: String, + ): FilterPolicyWithReason { return methodPolicy.withReason(reason) } } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/DelegatingFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/DelegatingFilter.kt index cdd24e809ff8..b8b0d8a31268 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/DelegatingFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/DelegatingFilter.kt @@ -72,8 +72,8 @@ abstract class DelegatingFilter( return fallback.getRenameTo(className, methodName, descriptor) } - override fun getNativeSubstitutionClass(className: String): String? { - return fallback.getNativeSubstitutionClass(className) + override fun getRedirectionClass(className: String): String? { + return fallback.getRedirectionClass(className) } override fun getClassLoadHooks(className: String): List<String> { @@ -87,4 +87,23 @@ abstract class DelegatingFilter( ): List<String> { return fallback.getMethodCallHooks(className, methodName, descriptor) } + + override fun remapType(className: String): String? { + return fallback.remapType(className) + } + + override fun hasAnyMethodCallReplace(): Boolean { + return fallback.hasAnyMethodCallReplace() + } + + override fun getMethodCallReplaceTo( + callerClassName: String, + callerMethodName: String, + className: String, + methodName: String, + descriptor: String, + ): MethodReplaceTarget? { + return fallback.getMethodCallReplaceTo( + callerClassName, callerMethodName, className, methodName, descriptor) + } } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicy.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicy.kt index 4d211065f1c8..2f2f81b05ad1 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicy.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicy.kt @@ -17,37 +17,25 @@ package com.android.hoststubgen.filters enum class FilterPolicy { /** - * Keep the item in the stub jar file, so tests can use it. - */ - Stub, - - /** - * Keep the item in the impl jar file, but not in the stub file. Tests cannot use it directly, - * but indirectly. + * Keep the item in the jar file. */ Keep, /** - * Only used for types. Keep the class in the stub, and also all its members. - * But each member can have another annotations to override it. - */ - StubClass, - - /** - * Only used for types. Keep the class in the impl, not in the stub, and also all its members. - * But each member can have another annotations to override it. + * Only usable with classes. Keep the class in the jar, and also all its members. + * Each member can have another policy to override it. */ KeepClass, /** - * Same as [Stub], but replace it with a "substitution" method. Only usable with methods. + * Only usable with methods. Replace a method with a "substitution" method. */ - SubstituteAndStub, + Substitute, /** - * Same as [Keep], but replace it with a "substitution" method. Only usable with methods. + * Only usable with methods. Redirect a method to a method in the substitution class. */ - SubstituteAndKeep, + Redirect, /** * Only usable with methods. The item will be kept in the impl jar file, but when called, @@ -57,7 +45,7 @@ enum class FilterPolicy { /** * Only usable with methods. The item will be kept in the impl jar file, but when called, - * it'll no-op. Currently only supported for methods returning `void`. + * it'll no-op. */ Ignore, @@ -66,20 +54,19 @@ enum class FilterPolicy { */ Remove; - val isSubstitute: Boolean - get() = this == SubstituteAndStub || this == SubstituteAndKeep - - val needsInStub: Boolean - get() = this == Stub || this == StubClass || this == SubstituteAndStub - - val needsInImpl: Boolean - get() = this != Remove + val needsInOutput: Boolean + get() { + return when (this) { + Remove -> false + else -> true + } + } /** Returns whether a policy can be used with classes */ val isUsableWithClasses: Boolean get() { return when (this) { - Stub, StubClass, Keep, KeepClass, Remove -> true + Keep, KeepClass, Remove -> true else -> false } } @@ -88,7 +75,7 @@ enum class FilterPolicy { val isUsableWithFields: Boolean get() { return when (this) { - Stub, Keep, Remove -> true + Keep, Remove -> true else -> false } } @@ -97,16 +84,16 @@ enum class FilterPolicy { val isUsableWithMethods: Boolean get() { return when (this) { - StubClass, KeepClass -> false + KeepClass -> false else -> true } } - /** Returns whether a policy is a class-wide one. */ - val isClassWidePolicy: Boolean + /** Returns whether a policy can be used as default policy. */ + val isUsableWithDefault: Boolean get() { return when (this) { - StubClass, KeepClass -> true + Keep, Throw, Remove -> true else -> false } } @@ -115,26 +102,24 @@ enum class FilterPolicy { val isSupported: Boolean get() { return when (this) { - // TODO: handle native method with no substitution as being unsupported - Stub, StubClass, Keep, KeepClass, SubstituteAndStub, SubstituteAndKeep -> true + Keep, KeepClass, Substitute, Redirect -> true else -> false } } - fun getSubstitutionBasePolicy(): FilterPolicy { - return when (this) { - SubstituteAndKeep -> Keep - SubstituteAndStub -> Stub - else -> this + val isMethodRewriteBody: Boolean + get() { + return when (this) { + Redirect, Throw, Ignore -> true + else -> false + } } - } /** - * Convert {Stub,Keep}Class to the corresponding Stub or Keep. + * Convert KeepClass to Keep, or return itself. */ fun resolveClassWidePolicy(): FilterPolicy { return when (this) { - StubClass -> Stub KeepClass -> Keep else -> this } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt index eb03f66b5afa..b10165b835f2 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt @@ -30,36 +30,6 @@ data class FilterPolicyWithReason ( return FilterPolicyWithReason(policy, "$reason [inner-reason: ${this.reason}]") } - /** - * If the visibility is lower than "Keep" (meaning if it's "remove"), - * then return a new [FilterPolicy] with "Keep". - * Otherwise, return itself - */ - fun promoteToKeep(promotionReason: String): FilterPolicyWithReason { - if (policy.needsInImpl) { - return this - } - val newPolicy = if (policy.isClassWidePolicy) FilterPolicy.KeepClass else FilterPolicy.Keep - - return FilterPolicyWithReason(newPolicy, - "$promotionReason [original remove reason: ${this.reason}]") - } - - /** - * If the visibility is above "Keep" (meaning if it's "stub"), - * then return a new [FilterPolicy] with "Keep". - * Otherwise, return itself - */ - fun demoteToKeep(promotionReason: String): FilterPolicyWithReason { - if (!policy.needsInStub) { - return this - } - val newPolicy = if (policy.isClassWidePolicy) FilterPolicy.KeepClass else FilterPolicy.Keep - - return FilterPolicyWithReason(newPolicy, - "$promotionReason [original stub reason: ${this.reason}]") - } - override fun toString(): String { return "[$policy - reason: $reason]" } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt new file mode 100644 index 000000000000..c5a2f9ff5e96 --- /dev/null +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.filters + +import org.objectweb.asm.commons.Remapper + +/** + * A [Remapper] that uses [OutputFilter.remapType] + */ +class FilterRemapper(val filter: OutputFilter) : Remapper() { + private val cache = mutableMapOf<String, String>() + + override fun mapType(typeInternalName: String?): String? { + if (typeInternalName == null) { + return null + } + + cache[typeInternalName]?.let { + return it + } + + var mapped = filter.remapType(typeInternalName) ?: typeInternalName + cache[typeInternalName] = mapped + return mapped + } + + // TODO Do we need to implement mapPackage(), etc too? +}
\ No newline at end of file diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ImplicitOutputFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ImplicitOutputFilter.kt index 5a26fc69d473..474da6dfa1b9 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ImplicitOutputFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/ImplicitOutputFilter.kt @@ -25,7 +25,6 @@ import com.android.hoststubgen.asm.isAnonymousInnerClass import com.android.hoststubgen.asm.isAutoGeneratedEnumMember import com.android.hoststubgen.asm.isEnum import com.android.hoststubgen.asm.isSynthetic -import com.android.hoststubgen.asm.isVisibilityPrivateOrPackagePrivate import com.android.hoststubgen.log import org.objectweb.asm.tree.ClassNode @@ -53,7 +52,7 @@ class ImplicitOutputFilter( } // If the outer class needs to be in impl, it should be in impl too. val outerPolicy = outermostFilter.getPolicyForClass(cn.outerClass) - if (outerPolicy.policy.needsInImpl) { + if (outerPolicy.policy.needsInOutput) { return FilterPolicy.KeepClass.withReason("anonymous-inner-class") } } @@ -79,19 +78,6 @@ class ImplicitOutputFilter( val fallback = super.getPolicyForMethod(className, methodName, descriptor) val classPolicy = outermostFilter.getPolicyForClass(className) - // If the class is in the stub, then we need to put the private constructor in the stub too, - // to prevent the class from getting instantiated. - if (classPolicy.policy.needsInStub && - !fallback.policy.needsInStub && - (methodName == "<init>") && // Constructor? - (descriptor == "()V")) { // Has zero parameters? - classes.findMethod(className, methodName, descriptor)?.let { mn -> - if (isVisibilityPrivateOrPackagePrivate(mn.access)) { - return FilterPolicy.Stub.withReason("private constructor in stub class") - } - } - } - val cn = classes.getClass(className) // If we throw from the static initializer, the class would be useless, so we convert it @@ -107,7 +93,7 @@ class ImplicitOutputFilter( } log.d("Class ${cn.name} Class policy: $classPolicy") - if (classPolicy.policy.needsInImpl) { + if (classPolicy.policy.needsInOutput) { // Do it only when the class needs to be kept... // Member policy should be "keep" or "stub". @@ -152,7 +138,7 @@ class ImplicitOutputFilter( val classPolicy = outermostFilter.getPolicyForClass(className) log.d("Class ${cn.name} Class policy: $classPolicy") - if (classPolicy.policy.needsInImpl) { + if (classPolicy.policy.needsInOutput) { // Do it only when the class needs to be kept... // Member policy should be "keep" or "stub". diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt index 2e144f5513bc..59fa464a7212 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt @@ -19,6 +19,7 @@ import com.android.hoststubgen.addNonNullElement import com.android.hoststubgen.asm.ClassNodes import com.android.hoststubgen.asm.toHumanReadableClassName import com.android.hoststubgen.asm.toHumanReadableMethodName +import com.android.hoststubgen.asm.toJvmClassName import com.android.hoststubgen.log // TODO: Validate all input names. @@ -29,7 +30,7 @@ class InMemoryOutputFilter( ) : DelegatingFilter(fallback) { private val mPolicies: MutableMap<String, FilterPolicyWithReason> = mutableMapOf() private val mRenames: MutableMap<String, String> = mutableMapOf() - private val mNativeSubstitutionClasses: MutableMap<String, String> = mutableMapOf() + private val mRedirectionClasses: MutableMap<String, String> = mutableMapOf() private val mClassLoadHooks: MutableMap<String, String> = mutableMapOf() private fun getClassKey(className: String): String { @@ -115,17 +116,17 @@ class InMemoryOutputFilter( mRenames[getMethodKey(className, methodName, descriptor)] = toName } - override fun getNativeSubstitutionClass(className: String): String? { - return mNativeSubstitutionClasses[getClassKey(className)] - ?: super.getNativeSubstitutionClass(className) + override fun getRedirectionClass(className: String): String? { + return mRedirectionClasses[getClassKey(className)] + ?: super.getRedirectionClass(className) } - fun setNativeSubstitutionClass(from: String, to: String) { + fun setRedirectionClass(from: String, to: String) { checkClass(from) - // Native substitute classes may be provided from other jars, so we can't do this check. + // Redirection classes may be provided from other jars, so we can't do this check. // ensureClassExists(to) - mNativeSubstitutionClasses[getClassKey(from)] = to.toHumanReadableClassName() + mRedirectionClasses[getClassKey(from)] = to.toJvmClassName() } override fun getClassLoadHooks(className: String): List<String> { @@ -136,4 +137,4 @@ class InMemoryOutputFilter( fun setClassLoadHook(className: String, methodName: String) { mClassLoadHooks[getClassKey(className)] = methodName.toHumanReadableMethodName() } -}
\ No newline at end of file +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/KeepNativeFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/KeepNativeFilter.kt new file mode 100644 index 000000000000..00e7d77fa6e7 --- /dev/null +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/KeepNativeFilter.kt @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.filters + +import com.android.hoststubgen.asm.ClassNodes +import com.android.hoststubgen.asm.isNative + +/** + * For native methods that weren't handled by outer filters, we keep it so that + * native method registration will not crash at runtime. Ideally we shouldn't need + * this, but in practice unsupported native method registrations do occur. + */ +class KeepNativeFilter( + private val classes: ClassNodes, + fallback: OutputFilter +) : DelegatingFilter(fallback) { + override fun getPolicyForMethod( + className: String, + methodName: String, + descriptor: String, + ): FilterPolicyWithReason { + return classes.findMethod(className, methodName, descriptor)?.let { mn -> + if (mn.isNative()) { + FilterPolicy.Keep.withReason("native-preserve") + } else { + null + } + } ?: super.getPolicyForMethod(className, methodName, descriptor) + } +}
\ No newline at end of file diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/OutputFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/OutputFilter.kt index 3df16ffa99b3..f99ce906240a 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/OutputFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/OutputFilter.kt @@ -35,10 +35,6 @@ abstract class OutputFilter { * using it. */ open var outermostFilter: OutputFilter = this - get() = field - set(value) { - field = value - } abstract fun getPolicyForClass(className: String): FilterPolicyWithReason @@ -60,13 +56,13 @@ abstract class OutputFilter { } /** - * Return a "native substitution class" name for a given class. + * Return a "redirection class" name for a given class. * - * The result will be in a "human readable" form. (e.g. uses '.'s instead of '/'s) + * The result will be in a JVM internal form. (e.g. uses '/'s instead of '.'s) * - * (which corresponds to @HostSideTestNativeSubstitutionClass of the standard annotations.) + * (which corresponds to @HostSideTestRedirectClass of the standard annotations.) */ - open fun getNativeSubstitutionClass(className: String): String? { + open fun getRedirectionClass(className: String): String? { return null } @@ -89,4 +85,35 @@ abstract class OutputFilter { List<String> { return emptyList() } -}
\ No newline at end of file + + /** + * Take a class (internal) name. If the class needs to be renamed, return the new name. + * This is used by [FilterRemapper]. + */ + open fun remapType(className: String): String? { + return null + } + + data class MethodReplaceTarget(val className: String, val methodName: String) + + /** + * Return if this filter may return non-null from [getMethodCallReplaceTo]. + * (Used for a small optimization) + */ + open fun hasAnyMethodCallReplace(): Boolean { + return false + } + + /** + * If a method call should be forwarded to another method, return the target's class / method. + */ + open fun getMethodCallReplaceTo( + callerClassName: String, + callerMethodName: String, + className: String, + methodName: String, + descriptor: String, + ): MethodReplaceTarget? { + return null + } +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/SanitizationFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/SanitizationFilter.kt new file mode 100644 index 000000000000..18a1e16bcf3a --- /dev/null +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/SanitizationFilter.kt @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.filters + +import com.android.hoststubgen.HostStubGenErrors +import com.android.hoststubgen.asm.ClassNodes +import com.android.hoststubgen.asm.toHumanReadableClassName +import com.android.hoststubgen.log + +/** + * Check whether the policies in the inner layers make sense, and sanitize the results. + */ +class SanitizationFilter( + private val errors: HostStubGenErrors, + private val classes: ClassNodes, + fallback: OutputFilter +) : DelegatingFilter(fallback) { + override fun getPolicyForMethod( + className: String, + methodName: String, + descriptor: String + ): FilterPolicyWithReason { + val policy = super.getPolicyForMethod(className, methodName, descriptor) + if (policy.policy == FilterPolicy.Redirect) { + // Check whether the hosting class has a redirection class + if (getRedirectionClass(className) == null) { + errors.onErrorFound("Method $methodName$descriptor requires a redirection " + + "class set on ${className.toHumanReadableClassName()}") + } + } + return policy + } + + override fun getRedirectionClass(className: String): String? { + return super.getRedirectionClass(className)?.also { clazz -> + if (classes.findClass(clazz) == null) { + log.w("Redirection class $clazz not found. Class must be available at runtime.") + } else if (outermostFilter.getPolicyForClass(clazz).policy != FilterPolicy.KeepClass) { + // If the class exists, it must have a KeepClass policy. + errors.onErrorFound("Redirection class $clazz must have @KeepWholeClass.") + } + } + } +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/StubIntersectingFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/StubIntersectingFilter.kt deleted file mode 100644 index f92a0271d7c7..000000000000 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/StubIntersectingFilter.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.hoststubgen.filters - -import com.android.hoststubgen.HostStubGenErrors -import com.android.hoststubgen.asm.ClassNodes - -private const val REASON = "demoted, not in intersect jars" - -/** - * An [OutputFilter] that will restrict what to put in stub to only what shows up in "intersecting - * jar" files. - * - * For example, if the Android public API stub jar is provided, then the HostStubGen's output - * stub will be restricted to public APIs. - */ -class StubIntersectingFilter( - private val errors: HostStubGenErrors, - /** - * If a class / field / method is not in any of these jars, then we will not put it in - * stub. - */ - private val intersectingJars: Map<String, ClassNodes>, - fallback: OutputFilter, -) : DelegatingFilter(fallback) { - private inline fun exists(predicate: (ClassNodes) -> Boolean): Boolean { - intersectingJars.forEach { entry -> - if (predicate(entry.value)) { - return true - } - } - return false - } - - /** - * If [origPolicy] is less than "Stub", then return it as-is. - * - * Otherwise, call [inStubChecker] to see if the API is in any of [intersectingJars]. - * If yes, then return [origPolicy] as-is. Otherwise, demote to "Keep". - */ - private fun intersectWithStub( - origPolicy: FilterPolicyWithReason, - inStubChecker: () -> Boolean, - ): FilterPolicyWithReason { - if (origPolicy.policy.needsInStub) { - // Only check the stub jars, when the class is supposed to be in stub otherwise. - if (!inStubChecker()) { - return origPolicy.demoteToKeep(REASON) - } - } - return origPolicy - } - - override fun getPolicyForClass(className: String): FilterPolicyWithReason { - return intersectWithStub(super.getPolicyForClass(className)) { - exists { classes -> classes.findClass(className) != null } - } - } - - override fun getPolicyForField( - className: String, - fieldName: String - ): FilterPolicyWithReason { - return intersectWithStub(super.getPolicyForField(className, fieldName)) { - exists { classes -> classes.findField(className, fieldName) != null } - } - } - - override fun getPolicyForMethod( - className: String, - methodName: String, - descriptor: String - ): FilterPolicyWithReason { - return intersectWithStub(super.getPolicyForMethod(className, methodName, descriptor)) { - exists { classes -> classes.findMethod(className, methodName, descriptor) != null } - } - } -}
\ No newline at end of file diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt index 18280034c2f4..073b503401b5 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt @@ -17,12 +17,13 @@ package com.android.hoststubgen.filters import com.android.hoststubgen.ParseException import com.android.hoststubgen.asm.ClassNodes +import com.android.hoststubgen.asm.splitWithLastPeriod import com.android.hoststubgen.asm.toHumanReadableClassName +import com.android.hoststubgen.asm.toJvmClassName import com.android.hoststubgen.log import com.android.hoststubgen.normalizeTextLine import com.android.hoststubgen.whitespaceRegex import org.objectweb.asm.Opcodes -import org.objectweb.asm.commons.Remapper import org.objectweb.asm.tree.ClassNode import java.io.BufferedReader import java.io.FileReader @@ -62,7 +63,7 @@ fun createFilterFromTextPolicyFile( filename: String, classes: ClassNodes, fallback: OutputFilter, - ): Pair<OutputFilter, Remapper?> { + ): OutputFilter { log.i("Loading offloaded annotations from $filename ...") log.withIndent { val subclassFilter = SubclassFilter(classes, fallback) @@ -75,7 +76,9 @@ fun createFilterFromTextPolicyFile( var featureFlagsPolicy: FilterPolicyWithReason? = null var syspropsPolicy: FilterPolicyWithReason? = null var rFilePolicy: FilterPolicyWithReason? = null - val typeRenameSpec = mutableListOf<TextFilePolicyRemapper.TypeRenameSpec>() + val typeRenameSpec = mutableListOf<TextFilePolicyRemapperFilter.TypeRenameSpec>() + val methodReplaceSpec = + mutableListOf<TextFilePolicyMethodReplaceFilter.MethodCallReplaceSpec>() try { BufferedReader(FileReader(filename)).use { reader -> @@ -139,9 +142,9 @@ fun createFilterFromTextPolicyFile( throw ParseException( "Special class can't have a substitution") } - // It's a native-substitution. + // It's a redirection class. val toClass = fields[2].substring(1) - imf.setNativeSubstitutionClass(className, toClass) + imf.setRedirectionClass(className, toClass) } else if (fields[2].startsWith("~")) { if (classType != SpecialClass.NotSpecial) { // We could support it, but not needed at least for now. @@ -237,7 +240,7 @@ fun createFilterFromTextPolicyFile( imf.setPolicyForMethod(className, name, signature, policy.withReason(FILTER_REASON)) - if (policy.isSubstitute) { + if (policy == FilterPolicy.Substitute) { val fromName = fields[3].substring(1) if (fromName == name) { @@ -245,13 +248,28 @@ fun createFilterFromTextPolicyFile( "Substitution must have a different name") } - // Set the policy for the "from" method. + // Set the policy for the "from" method. imf.setPolicyForMethod(className, fromName, signature, - policy.getSubstitutionBasePolicy() - .withReason(FILTER_REASON)) - - // Keep "from" -> "to" mapping. - imf.setRenameTo(className, fromName, signature, name) + FilterPolicy.Keep.withReason(FILTER_REASON)) + + val classAndMethod = splitWithLastPeriod(fromName) + if (classAndMethod != null) { + // If the substitution target contains a ".", then + // it's a method call redirect. + methodReplaceSpec.add( + TextFilePolicyMethodReplaceFilter.MethodCallReplaceSpec( + className.toJvmClassName(), + name, + signature, + classAndMethod.first.toJvmClassName(), + classAndMethod.second, + ) + ) + } else { + // It's an in-class replace. + // ("@RavenwoodReplace" equivalent) + imf.setRenameTo(className, fromName, signature, name) + } } } "r", "rename" -> { @@ -267,7 +285,7 @@ fun createFilterFromTextPolicyFile( // applied. (Which is needed for services.jar) val prefix = fields[2].trimStart('/') - typeRenameSpec += TextFilePolicyRemapper.TypeRenameSpec( + typeRenameSpec += TextFilePolicyRemapperFilter.TypeRenameSpec( pattern, prefix) } @@ -281,16 +299,19 @@ fun createFilterFromTextPolicyFile( throw e.withSourceInfo(filename, lineNo) } - var remapper: TextFilePolicyRemapper? = null + var ret: OutputFilter = imf if (typeRenameSpec.isNotEmpty()) { - remapper = TextFilePolicyRemapper(typeRenameSpec) + ret = TextFilePolicyRemapperFilter(typeRenameSpec, ret) + } + if (methodReplaceSpec.isNotEmpty()) { + ret = TextFilePolicyMethodReplaceFilter(methodReplaceSpec, classes, ret) } // Wrap the in-memory-filter with AHF. - return Pair( - AndroidHeuristicsFilter( - classes, aidlPolicy, featureFlagsPolicy, syspropsPolicy, rFilePolicy, imf), - remapper) + ret = AndroidHeuristicsFilter( + classes, aidlPolicy, featureFlagsPolicy, syspropsPolicy, rFilePolicy, ret) + + return ret } } @@ -324,17 +345,15 @@ private fun resolveExtendingClass(className: String): String? { private fun parsePolicy(s: String): FilterPolicy { return when (s.lowercase()) { - "s", "stub" -> FilterPolicy.Stub "k", "keep" -> FilterPolicy.Keep "t", "throw" -> FilterPolicy.Throw "r", "remove" -> FilterPolicy.Remove - "sc", "stubclass" -> FilterPolicy.StubClass "kc", "keepclass" -> FilterPolicy.KeepClass + "i", "ignore" -> FilterPolicy.Ignore + "rdr", "redirect" -> FilterPolicy.Redirect else -> { if (s.startsWith("@")) { - FilterPolicy.SubstituteAndStub - } else if (s.startsWith("%")) { - FilterPolicy.SubstituteAndKeep + FilterPolicy.Substitute } else { throw ParseException("Invalid policy \"$s\"") } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt new file mode 100644 index 000000000000..d45f41407a52 --- /dev/null +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.filters + +import com.android.hoststubgen.asm.ClassNodes + +/** + * Filter used by TextFileFilterPolicyParser for "method call relacement". + */ +class TextFilePolicyMethodReplaceFilter( + val spec: List<MethodCallReplaceSpec>, + val classes: ClassNodes, + val fallback: OutputFilter, +) : DelegatingFilter(fallback) { + + data class MethodCallReplaceSpec( + val fromClass: String, + val fromMethod: String, + val fromDescriptor: String, + val toClass: String, + val toMethod: String, + ) + + override fun hasAnyMethodCallReplace(): Boolean { + return true + } + + override fun getMethodCallReplaceTo( + callerClassName: String, + callerMethodName: String, + className: String, + methodName: String, + descriptor: String, + ): MethodReplaceTarget? { + // Maybe use 'Tri' if we end up having too many replacements. + spec.forEach { + if (className == it.fromClass && + methodName == it.fromMethod && + descriptor == it.fromDescriptor + ) { + return MethodReplaceTarget(it.toClass, it.toMethod) + } + } + return null + } +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapper.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt index 2d94bb4758ba..a78c6552b8d0 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapper.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt @@ -16,15 +16,15 @@ package com.android.hoststubgen.filters import com.android.hoststubgen.log -import org.objectweb.asm.commons.Remapper import java.util.regex.Pattern /** - * A [Remapper] that provides a simple "jarjar" functionality. + * A filter that provides a simple "jarjar" functionality via [mapType] */ -class TextFilePolicyRemapper( - val typeRenameSpecs: List<TypeRenameSpec> -) : Remapper() { +class TextFilePolicyRemapperFilter( + val typeRenameSpecs: List<TypeRenameSpec>, + fallback: OutputFilter, +) : DelegatingFilter(fallback) { /** * When a package name matches [typeInternalNamePattern], we prepend [typeInternalNamePrefix] * to it. @@ -36,24 +36,15 @@ class TextFilePolicyRemapper( private val cache = mutableMapOf<String, String>() - override fun mapType(typeInternalName: String): String { -// if (typeInternalName == null) { -// return null // do we need it?? -// } - cache[typeInternalName]?.let { - return it - } - - var mapped: String = typeInternalName + override fun remapType(className: String): String? { + var mapped: String = className typeRenameSpecs.forEach { - if (it.typeInternalNamePattern.matcher(typeInternalName).matches()) { - mapped = it.typeInternalNamePrefix + typeInternalName - log.d("Renaming type $typeInternalName to $mapped") + if (it.typeInternalNamePattern.matcher(className).matches()) { + mapped = it.typeInternalNamePrefix + className + log.d("Renaming type $className to $mapped") } } - cache[typeInternalName] = mapped + cache[className] = mapped return mapped } - - // TODO Do we need to implement mapPackage(), etc too? } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt index 01a7ab3eacfa..d6aa7617fd59 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/utils/ClassFilter.kt @@ -24,19 +24,25 @@ import java.io.File /** * General purpose filter for class names. */ -class ClassFilter private constructor ( - val defaultResult: Boolean, +class ClassFilter private constructor( + private val defaultResult: Boolean, ) { - private data class FilterElement( - val allowed: Boolean, - val internalName: String, - val isPrefix: Boolean, + private enum class MatchType { + Full, + Prefix, + Suffix, + } + + private class FilterElement( + val allowed: Boolean, + val internalName: String, + val matchType: MatchType, ) { fun matches(classInternalName: String): Boolean { - if (isPrefix) { - return classInternalName.startsWith(internalName) - } else { - return classInternalName == internalName + return when (matchType) { + MatchType.Full -> classInternalName == internalName + MatchType.Prefix -> classInternalName.startsWith(internalName) + MatchType.Suffix -> classInternalName.endsWith(internalName) } } } @@ -54,15 +60,16 @@ class ClassFilter private constructor ( return it } - var result = defaultResult - run outer@{ - elements.forEach { e -> - if (e.matches(classInternalName)) { - result = e.allowed - return@outer // break equivalent. - } + val testClasses = sequence { + // Yield itself and its outer class(es) one by one + var idx = classInternalName.length + while (idx > 0) { + yield(classInternalName.substring(0, idx)) + idx = classInternalName.lastIndexOf('$', idx - 1) } } + + val result = elements.find { testClasses.any(it::matches) }?.allowed ?: defaultResult cache[classInternalName] = result return result @@ -87,9 +94,9 @@ class ClassFilter private constructor ( /** Build a filter from a string (for unit tests). */ fun buildFromString( - filterString: String, - defaultResult: Boolean, - filenameForErrorMessage: String + filterString: String, + defaultResult: Boolean, + filenameForErrorMessage: String ): ClassFilter { val ret = ClassFilter(defaultResult) @@ -113,29 +120,46 @@ class ClassFilter private constructor ( // Special case -- matches any class names. if (line == "*") { - ret.elements.add(FilterElement(allow, "", true)) + ret.elements.add(FilterElement(allow, "", MatchType.Prefix)) return@forEach } - // Handle wildcard -- e.g. "package.name.*" + // Handle prefix match -- e.g. "package.name.*" if (line.endsWith(".*")) { - ret.elements.add(FilterElement( - allow, line.substring(0, line.length - 2).toJvmClassName(), true)) + ret.elements.add( + FilterElement( + allow, + line.substring(0, line.length - 2).toJvmClassName() + "/", + MatchType.Prefix + ) + ) + return@forEach + } + + // Handle suffix match -- e.g. "*.Flags" + if (line.startsWith("*.")) { + ret.elements.add( + FilterElement( + allow, + "/" + line.substring(2, line.length).toJvmClassName(), + MatchType.Suffix + ) + ) return@forEach } // Any other uses of "*" would be an error. if (line.contains('*')) { throw ParseException( - "Wildcard (*) can only show up as the last element", - filenameForErrorMessage, - lineNo + "Wildcard (*) can only show up as the last element", + filenameForErrorMessage, + lineNo ) } - ret.elements.add(FilterElement(allow, line.toJvmClassName(), false)) + ret.elements.add(FilterElement(allow, line.toJvmClassName(), MatchType.Suffix)) } return ret } } -}
\ No newline at end of file +} diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt index bad0449f1efd..261ef59c45c7 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt @@ -21,103 +21,64 @@ import com.android.hoststubgen.LogLevel import com.android.hoststubgen.asm.ClassNodes import com.android.hoststubgen.asm.UnifiedVisitor import com.android.hoststubgen.asm.getPackageNameFromFullClassName -import com.android.hoststubgen.asm.resolveClassNameWithDefaultPackage -import com.android.hoststubgen.asm.toJvmClassName import com.android.hoststubgen.filters.FilterPolicy import com.android.hoststubgen.filters.FilterPolicyWithReason import com.android.hoststubgen.filters.OutputFilter -import com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -import com.android.hoststubgen.hosthelper.HostStubGenKeptInStub +import com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep import com.android.hoststubgen.log +import java.io.PrintWriter import org.objectweb.asm.ClassVisitor import org.objectweb.asm.FieldVisitor import org.objectweb.asm.MethodVisitor import org.objectweb.asm.Opcodes import org.objectweb.asm.commons.ClassRemapper -import org.objectweb.asm.commons.Remapper import org.objectweb.asm.util.TraceClassVisitor -import java.io.PrintWriter -val OPCODE_VERSION = Opcodes.ASM9 +const val OPCODE_VERSION = Opcodes.ASM9 -abstract class BaseAdapter ( - protected val classes: ClassNodes, - nextVisitor: ClassVisitor, - protected val filter: OutputFilter, - protected val options: Options, +abstract class BaseAdapter( + protected val classes: ClassNodes, + nextVisitor: ClassVisitor, + protected val filter: OutputFilter, + protected val options: Options, ) : ClassVisitor(OPCODE_VERSION, nextVisitor) { /** * Options to control the behavior. */ - data class Options ( - val errors: HostStubGenErrors, - val stats: HostStubGenStats?, - val enablePreTrace: Boolean, - val enablePostTrace: Boolean, - val enableNonStubMethodCallDetection: Boolean, - ) + data class Options( + val errors: HostStubGenErrors, + val stats: HostStubGenStats?, + val enablePreTrace: Boolean, + val enablePostTrace: Boolean + ) protected lateinit var currentPackageName: String protected lateinit var currentClassName: String - protected var nativeSubstitutionClass: String? = null + protected var redirectionClass: String? = null protected lateinit var classPolicy: FilterPolicyWithReason - /** - * Return whether an item with a given policy should be included in the output. - */ - protected abstract fun shouldEmit(policy: FilterPolicy): Boolean - - /** - * Inject [HostStubGenKeptInStub] and [HostStubGenKeptInImpl] as needed to an item. - */ - protected fun injectInStubAndKeepAnnotations(policy: FilterPolicy, v: UnifiedVisitor) { - if (policy.needsInStub) { - v.visitAnnotation(HostStubGenKeptInStub.CLASS_DESCRIPTOR, true) - } - if (policy.needsInImpl) { - v.visitAnnotation(HostStubGenKeptInImpl.CLASS_DESCRIPTOR, true) - } - } - override fun visit( - version: Int, - access: Int, - name: String, - signature: String?, - superName: String?, - interfaces: Array<String>, + version: Int, + access: Int, + name: String, + signature: String?, + superName: String?, + interfaces: Array<String>, ) { super.visit(version, access, name, signature, superName, interfaces) currentClassName = name currentPackageName = getPackageNameFromFullClassName(name) classPolicy = filter.getPolicyForClass(currentClassName) + redirectionClass = filter.getRedirectionClass(currentClassName) log.d("[%s] visit: %s (package: %s)", this.javaClass.simpleName, name, currentPackageName) log.indent() log.v("Emitting class: %s", name) log.indent() - filter.getNativeSubstitutionClass(currentClassName)?.let { className -> - val fullClassName = resolveClassNameWithDefaultPackage(className, currentPackageName) - .toJvmClassName() - log.d(" NativeSubstitutionClass: $fullClassName") - if (classes.findClass(fullClassName) == null) { - log.w("Native substitution class $fullClassName not found. Class must be " + - "available at runtime.") - } else { - // If the class exists, it must have a KeepClass policy. - if (filter.getPolicyForClass(fullClassName).policy != FilterPolicy.KeepClass) { - // TODO: Use real annotation name. - options.errors.onErrorFound( - "Native substitution class $fullClassName should have @Keep.") - } - } - - nativeSubstitutionClass = fullClassName - } // Inject annotations to generated classes. - injectInStubAndKeepAnnotations(classPolicy.policy, UnifiedVisitor.on(this)) + UnifiedVisitor.on(this).visitAnnotation(HostStubGenProcessedAsKeep.CLASS_DESCRIPTOR, true) } override fun visitEnd() { @@ -141,11 +102,11 @@ abstract class BaseAdapter ( } override fun visitField( - access: Int, - name: String, - descriptor: String, - signature: String?, - value: Any?, + access: Int, + name: String, + descriptor: String, + signature: String?, + value: Any?, ): FieldVisitor? { if (skipMemberModificationNestCount > 0) { return super.visitField(access, name, descriptor, signature, value) @@ -154,7 +115,7 @@ abstract class BaseAdapter ( log.d("visitField: %s %s [%x] Policy: %s", name, descriptor, access, policy) log.withIndent { - if (!shouldEmit(policy.policy)) { + if (policy.policy == FilterPolicy.Remove) { log.d("Removing %s %s", name, policy) return null } @@ -162,18 +123,19 @@ abstract class BaseAdapter ( log.v("Emitting field: %s %s %s", name, descriptor, policy) val ret = super.visitField(access, name, descriptor, signature, value) - injectInStubAndKeepAnnotations(policy.policy, UnifiedVisitor.on(ret)) + UnifiedVisitor.on(ret) + .visitAnnotation(HostStubGenProcessedAsKeep.CLASS_DESCRIPTOR, true) return ret } } override fun visitMethod( - access: Int, - name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, + access: Int, + name: String, + descriptor: String, + signature: String?, + exceptions: Array<String>?, ): MethodVisitor? { if (skipMemberModificationNestCount > 0) { return super.visitMethod(access, name, descriptor, signature, exceptions) @@ -187,11 +149,11 @@ abstract class BaseAdapter ( // Instead of this method, we rename the substitute-to method with the original // name, in the "Maybe rename the method" part below. val policy = filter.getPolicyForMethod(currentClassName, name, descriptor) - if (policy.policy.isSubstitute) { + if (policy.policy == FilterPolicy.Substitute) { log.d("Skipping %s%s %s", name, descriptor, policy) return null } - if (!shouldEmit(p.policy)) { + if (p.policy == FilterPolicy.Remove) { log.d("Removing %s%s %s", name, descriptor, policy) return null } @@ -209,13 +171,16 @@ abstract class BaseAdapter ( // `name` is the name of the method we're currently visiting, so it's usually a // "...$ravewnwood" name. newAccess = checkSubstitutionMethodCompatibility( - classes, currentClassName, newName, name, descriptor, options.errors) + classes, currentClassName, newName, name, descriptor, options.errors + ) if (newAccess == NOT_COMPATIBLE) { return null } - log.v("Emitting %s.%s%s as %s %s", currentClassName, name, descriptor, - newName, policy) + log.v( + "Emitting %s.%s%s as %s %s", currentClassName, name, descriptor, + newName, policy + ) } else { log.v("Emitting method: %s%s %s", name, descriptor, policy) newName = name @@ -225,14 +190,17 @@ abstract class BaseAdapter ( // But note, we only use it when calling the super's method, // but not for visitMethodInner(), because when subclass wants to change access, // it can do so inside visitMethodInner(). - newAccess = updateAccessFlags(newAccess, name, descriptor) + newAccess = updateAccessFlags(newAccess, name, descriptor, policy.policy) - val ret = visitMethodInner(access, newName, descriptor, signature, exceptions, policy, + val ret = visitMethodInner( + access, newName, descriptor, signature, exceptions, policy, renameTo != null, - super.visitMethod(newAccess, newName, descriptor, signature, exceptions)) + super.visitMethod(newAccess, newName, descriptor, signature, exceptions) + ) ret?.let { - injectInStubAndKeepAnnotations(policy.policy, UnifiedVisitor.on(ret)) + UnifiedVisitor.on(ret) + .visitAnnotation(HostStubGenProcessedAsKeep.CLASS_DESCRIPTOR, true) } return ret @@ -240,9 +208,10 @@ abstract class BaseAdapter ( } open fun updateAccessFlags( - access: Int, - name: String, - descriptor: String, + access: Int, + name: String, + descriptor: String, + policy: FilterPolicy, ): Int { return access } @@ -256,7 +225,7 @@ abstract class BaseAdapter ( policy: FilterPolicyWithReason, substituted: Boolean, superVisitor: MethodVisitor?, - ): MethodVisitor? + ): MethodVisitor? companion object { fun getVisitor( @@ -265,8 +234,6 @@ abstract class BaseAdapter ( nextVisitor: ClassVisitor, filter: OutputFilter, packageRedirector: PackageRedirectRemapper, - remapper: Remapper?, - forImpl: Boolean, options: Options, ): ClassVisitor { var next = nextVisitor @@ -289,23 +256,20 @@ abstract class BaseAdapter ( if (!packageRedirector.isTarget(classInternalName)) { next = ClassRemapper(next, packageRedirector) } else { - log.v("Class $classInternalName is a redirect-from class, not applying" + - " --package-redirect") + log.v( + "Class $classInternalName is a redirect-from class, not applying" + + " --package-redirect" + ) } } - var ret: ClassVisitor - if (forImpl) { - ret = ImplGeneratingAdapter(classes, next, filter, options) - } else { - ret = StubGeneratingAdapter(classes, next, filter, options) - } + next = ImplGeneratingAdapter(classes, next, filter, options) // Inject TraceClassVisitor for debugging. if (options.enablePreTrace) { - ret = TraceClassVisitor(ret, verbosePrinter) + next = TraceClassVisitor(next, verbosePrinter) } - return ret + return next } } } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BodyReplacingMethodVisitor.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BodyReplacingMethodVisitor.kt index 8250412b3717..55d0c0e555f1 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BodyReplacingMethodVisitor.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BodyReplacingMethodVisitor.kt @@ -20,38 +20,23 @@ import org.objectweb.asm.Attribute import org.objectweb.asm.Handle import org.objectweb.asm.Label import org.objectweb.asm.MethodVisitor -import org.objectweb.asm.Opcodes import org.objectweb.asm.TypePath /** - * A method visitor that removes everything from method body. + * A method visitor that creates or replaces a method body. * - * To inject a method body, override [visitCode] and create the opcodes there. + * Override [emitNewCode] to build the method body. */ abstract class BodyReplacingMethodVisitor( - access: Int, - name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor?, + private val createBody: Boolean, + next: MethodVisitor? ) : MethodVisitor(OPCODE_VERSION, next) { - val isVoid: Boolean - val isStatic: Boolean - - init { - isVoid = descriptor.endsWith(")V") - isStatic = access and Opcodes.ACC_STATIC != 0 - } // Following methods are for things that we need to keep. // Since they're all calling the super method, we can just remove them, but we keep them // just to clarify what we're keeping. - final override fun visitParameter( - name: String?, - access: Int - ) { + final override fun visitParameter(name: String?, access: Int) { super.visitParameter(name, access) } @@ -59,10 +44,7 @@ abstract class BodyReplacingMethodVisitor( return super.visitAnnotationDefault() } - final override fun visitAnnotation( - descriptor: String?, - visible: Boolean - ): AnnotationVisitor? { + final override fun visitAnnotation(descriptor: String?, visible: Boolean): AnnotationVisitor? { return super.visitAnnotation(descriptor, visible) } @@ -75,17 +57,14 @@ abstract class BodyReplacingMethodVisitor( return super.visitTypeAnnotation(typeRef, typePath, descriptor, visible) } - final override fun visitAnnotableParameterCount( - parameterCount: Int, - visible: Boolean - ) { + final override fun visitAnnotableParameterCount(parameterCount: Int, visible: Boolean) { super.visitAnnotableParameterCount(parameterCount, visible) } final override fun visitParameterAnnotation( - parameter: Int, - descriptor: String?, - visible: Boolean + parameter: Int, + descriptor: String?, + visible: Boolean ): AnnotationVisitor? { return super.visitParameterAnnotation(parameter, descriptor, visible) } @@ -94,10 +73,6 @@ abstract class BodyReplacingMethodVisitor( super.visitAttribute(attribute) } - override fun visitEnd() { - super.visitEnd() - } - /** * Control when to emit the code. We use this to ignore all visitXxx method calls caused by * the original method, so we'll remove all the original code. @@ -108,9 +83,18 @@ abstract class BodyReplacingMethodVisitor( * (See also https://asm.ow2.io/asm4-guide.pdf section 3.2.1 about the MethovVisitor * call order.) */ - var emitCode = false + private var emitCode = false + + /** + * This value will be set as true when [visitCode] is called. In [visitEnd], if this value + * is still false, this means that the original method does not have a body. + * + * We want to forcefully inject a method body in [visitEnd] if [createBody] is true. + */ + private var visitedCode = false final override fun visitCode() { + visitedCode = true super.visitCode() try { @@ -122,15 +106,19 @@ abstract class BodyReplacingMethodVisitor( } } + final override fun visitEnd() { + if (!visitedCode && createBody) { + visitCode() + } + super.visitEnd() + } + /** * Subclass must implement it and emit code, and call [visitMaxs] at the end. */ abstract fun emitNewCode() - final override fun visitMaxs( - maxStack: Int, - maxLocals: Int - ) { + final override fun visitMaxs(maxStack: Int, maxLocals: Int) { if (emitCode) { super.visitMaxs(maxStack, maxLocals) } @@ -140,11 +128,11 @@ abstract class BodyReplacingMethodVisitor( // emit any of them, so they are all no-op. final override fun visitFrame( - type: Int, - numLocal: Int, - local: Array<out Any>?, - numStack: Int, - stack: Array<out Any>? + type: Int, + numLocal: Int, + local: Array<out Any>?, + numStack: Int, + stack: Array<out Any>? ) { if (emitCode) { super.visitFrame(type, numLocal, local, numStack, stack) @@ -157,38 +145,29 @@ abstract class BodyReplacingMethodVisitor( } } - final override fun visitIntInsn( - opcode: Int, - operand: Int - ) { + final override fun visitIntInsn(opcode: Int, operand: Int) { if (emitCode) { super.visitIntInsn(opcode, operand) } } - final override fun visitVarInsn( - opcode: Int, - varIndex: Int - ) { + final override fun visitVarInsn(opcode: Int, varIndex: Int) { if (emitCode) { super.visitVarInsn(opcode, varIndex) } } - final override fun visitTypeInsn( - opcode: Int, - type: String? - ) { + final override fun visitTypeInsn(opcode: Int, type: String?) { if (emitCode) { super.visitTypeInsn(opcode, type) } } final override fun visitFieldInsn( - opcode: Int, - owner: String?, - name: String?, - descriptor: String? + opcode: Int, + owner: String?, + name: String?, + descriptor: String? ) { if (emitCode) { super.visitFieldInsn(opcode, owner, name, descriptor) @@ -196,11 +175,11 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitMethodInsn( - opcode: Int, - owner: String?, - name: String?, - descriptor: String?, - isInterface: Boolean + opcode: Int, + owner: String?, + name: String?, + descriptor: String?, + isInterface: Boolean ) { if (emitCode) { super.visitMethodInsn(opcode, owner, name, descriptor, isInterface) @@ -208,21 +187,20 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitInvokeDynamicInsn( - name: String?, - descriptor: String?, - bootstrapMethodHandle: Handle?, - vararg bootstrapMethodArguments: Any? + name: String?, + descriptor: String?, + bootstrapMethodHandle: Handle?, + vararg bootstrapMethodArguments: Any? ) { if (emitCode) { - super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, - *bootstrapMethodArguments) + super.visitInvokeDynamicInsn( + name, descriptor, bootstrapMethodHandle, + *bootstrapMethodArguments + ) } } - final override fun visitJumpInsn( - opcode: Int, - label: Label? - ) { + final override fun visitJumpInsn(opcode: Int, label: Label?) { if (emitCode) { super.visitJumpInsn(opcode, label) } @@ -240,20 +218,17 @@ abstract class BodyReplacingMethodVisitor( } } - final override fun visitIincInsn( - varIndex: Int, - increment: Int - ) { + final override fun visitIincInsn(varIndex: Int, increment: Int) { if (emitCode) { super.visitIincInsn(varIndex, increment) } } final override fun visitTableSwitchInsn( - min: Int, - max: Int, - dflt: Label?, - vararg labels: Label? + min: Int, + max: Int, + dflt: Label?, + vararg labels: Label? ) { if (emitCode) { super.visitTableSwitchInsn(min, max, dflt, *labels) @@ -261,29 +236,26 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitLookupSwitchInsn( - dflt: Label?, - keys: IntArray?, - labels: Array<out Label>? + dflt: Label?, + keys: IntArray?, + labels: Array<out Label>? ) { if (emitCode) { super.visitLookupSwitchInsn(dflt, keys, labels) } } - final override fun visitMultiANewArrayInsn( - descriptor: String?, - numDimensions: Int - ) { + final override fun visitMultiANewArrayInsn(descriptor: String?, numDimensions: Int) { if (emitCode) { super.visitMultiANewArrayInsn(descriptor, numDimensions) } } final override fun visitInsnAnnotation( - typeRef: Int, - typePath: TypePath?, - descriptor: String?, - visible: Boolean + typeRef: Int, + typePath: TypePath?, + descriptor: String?, + visible: Boolean ): AnnotationVisitor? { if (emitCode) { return super.visitInsnAnnotation(typeRef, typePath, descriptor, visible) @@ -292,10 +264,10 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitTryCatchBlock( - start: Label?, - end: Label?, - handler: Label?, - type: String? + start: Label?, + end: Label?, + handler: Label?, + type: String? ) { if (emitCode) { super.visitTryCatchBlock(start, end, handler, type) @@ -303,10 +275,10 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitTryCatchAnnotation( - typeRef: Int, - typePath: TypePath?, - descriptor: String?, - visible: Boolean + typeRef: Int, + typePath: TypePath?, + descriptor: String?, + visible: Boolean ): AnnotationVisitor? { if (emitCode) { return super.visitTryCatchAnnotation(typeRef, typePath, descriptor, visible) @@ -315,12 +287,12 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitLocalVariable( - name: String?, - descriptor: String?, - signature: String?, - start: Label?, - end: Label?, - index: Int + name: String?, + descriptor: String?, + signature: String?, + start: Label?, + end: Label?, + index: Int ) { if (emitCode) { super.visitLocalVariable(name, descriptor, signature, start, end, index) @@ -328,25 +300,23 @@ abstract class BodyReplacingMethodVisitor( } final override fun visitLocalVariableAnnotation( - typeRef: Int, - typePath: TypePath?, - start: Array<out Label>?, - end: Array<out Label>?, - index: IntArray?, - descriptor: String?, - visible: Boolean + typeRef: Int, + typePath: TypePath?, + start: Array<out Label>?, + end: Array<out Label>?, + index: IntArray?, + descriptor: String?, + visible: Boolean ): AnnotationVisitor? { if (emitCode) { return super.visitLocalVariableAnnotation( - typeRef, typePath, start, end, index, descriptor, visible) + typeRef, typePath, start, end, index, descriptor, visible + ) } return null } - final override fun visitLineNumber( - line: Int, - start: Label? - ) { + final override fun visitLineNumber(line: Int, start: Label?) { if (emitCode) { super.visitLineNumber(line, start) } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt index 416b78242899..567a69e43b58 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt @@ -18,7 +18,6 @@ package com.android.hoststubgen.visitors import com.android.hoststubgen.asm.CLASS_INITIALIZER_DESC import com.android.hoststubgen.asm.CLASS_INITIALIZER_NAME import com.android.hoststubgen.asm.ClassNodes -import com.android.hoststubgen.asm.isVisibilityPrivateOrPackagePrivate import com.android.hoststubgen.asm.prependArgTypeToMethodDescriptor import com.android.hoststubgen.asm.writeByteCodeToPushArguments import com.android.hoststubgen.asm.writeByteCodeToReturn @@ -33,22 +32,21 @@ import com.android.hoststubgen.log import org.objectweb.asm.ClassVisitor import org.objectweb.asm.MethodVisitor import org.objectweb.asm.Opcodes +import org.objectweb.asm.Opcodes.INVOKEINTERFACE +import org.objectweb.asm.Opcodes.INVOKESTATIC +import org.objectweb.asm.Opcodes.INVOKEVIRTUAL import org.objectweb.asm.Type /** * An adapter that generates the "impl" class file from an input class file. */ class ImplGeneratingAdapter( - classes: ClassNodes, - nextVisitor: ClassVisitor, - filter: OutputFilter, - options: Options, + classes: ClassNodes, + nextVisitor: ClassVisitor, + filter: OutputFilter, + options: Options, ) : BaseAdapter(classes, nextVisitor, filter, options) { - override fun shouldEmit(policy: FilterPolicy): Boolean { - return policy.needsInImpl - } - private var classLoadHooks: List<String> = emptyList() override fun visit( @@ -104,14 +102,14 @@ class ImplGeneratingAdapter( private fun writeClassLoadHookCalls(mv: MethodVisitor) { classLoadHooks.forEach { classLoadHook -> // First argument: the class type. - mv.visitLdcInsn(Type.getType("L" + currentClassName + ";")) + mv.visitLdcInsn(Type.getType("L$currentClassName;")) // Second argument: method name mv.visitLdcInsn(classLoadHook) // Call HostTestUtils.onClassLoaded(). mv.visitMethodInsn( - Opcodes.INVOKESTATIC, + INVOKESTATIC, HostTestUtils.CLASS_INTERNAL_NAME, "onClassLoaded", "(Ljava/lang/Class;Ljava/lang/String;)V", @@ -121,69 +119,49 @@ class ImplGeneratingAdapter( } override fun updateAccessFlags( - access: Int, - name: String, - descriptor: String, + access: Int, + name: String, + descriptor: String, + policy: FilterPolicy, ): Int { - if ((access and Opcodes.ACC_NATIVE) != 0 && nativeSubstitutionClass != null) { + if (policy.isMethodRewriteBody) { + // If we are rewriting the entire method body, we need + // to convert native methods to non-native return access and Opcodes.ACC_NATIVE.inv() } return access } override fun visitMethodInner( - access: Int, - name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - policy: FilterPolicyWithReason, - substituted: Boolean, - superVisitor: MethodVisitor?, + access: Int, + name: String, + descriptor: String, + signature: String?, + exceptions: Array<String>?, + policy: FilterPolicyWithReason, + substituted: Boolean, + superVisitor: MethodVisitor?, ): MethodVisitor? { - // Inject method log, if needed. var innerVisitor = superVisitor // If method logging is enabled, inject call to the logging method. val methodCallHooks = filter.getMethodCallHooks(currentClassName, name, descriptor) if (methodCallHooks.isNotEmpty()) { innerVisitor = MethodCallHookInjectingAdapter( - access, name, descriptor, - signature, - exceptions, - innerVisitor, methodCallHooks, - ) + innerVisitor, + ) } // If this class already has a class initializer and a class load hook is needed, then // we inject code. if (classLoadHooks.isNotEmpty() && name == CLASS_INITIALIZER_NAME && - descriptor == CLASS_INITIALIZER_DESC) { - innerVisitor = ClassLoadHookInjectingMethodAdapter( - access, - name, - descriptor, - signature, - exceptions, - innerVisitor, - ) - } - - // If non-stub method call detection is enabled, then inject a call to the checker. - if (options.enableNonStubMethodCallDetection && doesMethodNeedNonStubCallCheck( - access, name, descriptor, policy) ) { - innerVisitor = NonStubMethodCallDetectingAdapter( - access, - name, - descriptor, - signature, - exceptions, - innerVisitor, - ) + descriptor == CLASS_INITIALIZER_DESC + ) { + innerVisitor = ClassLoadHookInjectingMethodAdapter(innerVisitor) } fun MethodVisitor.withAnnotation(descriptor: String): MethodVisitor { @@ -192,38 +170,35 @@ class ImplGeneratingAdapter( } log.withIndent { - var willThrow = false - if (policy.policy == FilterPolicy.Throw) { - log.v("Making method throw...") - willThrow = true - innerVisitor = ThrowingMethodAdapter( - access, name, descriptor, signature, exceptions, innerVisitor) - .withAnnotation(HostStubGenProcessedAsThrow.CLASS_DESCRIPTOR) - } - if ((access and Opcodes.ACC_NATIVE) != 0 && nativeSubstitutionClass != null) { - log.v("Rewriting native method...") - return NativeSubstitutingMethodAdapter( - access, name, descriptor, signature, exceptions, innerVisitor) - .withAnnotation(HostStubGenProcessedAsSubstitute.CLASS_DESCRIPTOR) - } - if (willThrow) { - return innerVisitor - } - - if (policy.policy == FilterPolicy.Ignore) { - when (Type.getReturnType(descriptor)) { - Type.VOID_TYPE -> { - log.v("Making method ignored...") - return IgnoreMethodAdapter( - access, name, descriptor, signature, exceptions, innerVisitor) - .withAnnotation(HostStubGenProcessedAsIgnore.CLASS_DESCRIPTOR) - } - else -> { - throw RuntimeException("Ignored policy only allowed for void methods") - } + // When we encounter native methods, we want to forcefully + // inject a method body. Also see [updateAccessFlags]. + val forceCreateBody = (access and Opcodes.ACC_NATIVE) != 0 + when (policy.policy) { + FilterPolicy.Throw -> { + log.v("Making method throw...") + return ThrowingMethodAdapter(forceCreateBody, innerVisitor) + .withAnnotation(HostStubGenProcessedAsThrow.CLASS_DESCRIPTOR) + } + FilterPolicy.Ignore -> { + log.v("Making method ignored...") + return IgnoreMethodAdapter(descriptor, forceCreateBody, innerVisitor) + .withAnnotation(HostStubGenProcessedAsIgnore.CLASS_DESCRIPTOR) + } + FilterPolicy.Redirect -> { + log.v("Redirecting method...") + return RedirectMethodAdapter( + access, name, descriptor, + forceCreateBody, innerVisitor + ) + .withAnnotation(HostStubGenProcessedAsSubstitute.CLASS_DESCRIPTOR) } + else -> {} } } + + if (filter.hasAnyMethodCallReplace()) { + innerVisitor = MethodCallReplacingAdapter(name, innerVisitor) + } if (substituted) { innerVisitor?.withAnnotation(HostStubGenProcessedAsSubstitute.CLASS_DESCRIPTOR) } @@ -231,53 +206,32 @@ class ImplGeneratingAdapter( return innerVisitor } - fun doesMethodNeedNonStubCallCheck( - access: Int, - name: String, - descriptor: String, - policy: FilterPolicyWithReason, - ): Boolean { - // If a method is in the stub, then no need to check. - if (policy.policy.needsInStub) { - return false - } - // If a method is private or package-private, no need to check. - // Technically test code can use framework package name, so it's a bit too lenient. - if (isVisibilityPrivateOrPackagePrivate(access)) { - return false - } - // TODO: If the method overrides a method that's accessible by tests, then we shouldn't - // do the check. (e.g. overrides a stub method or java standard method.) - - return true - } - /** * A method adapter that replaces the method body with a HostTestUtils.onThrowMethodCalled() * call. */ private inner class ThrowingMethodAdapter( - access: Int, - val name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor? - ) : BodyReplacingMethodVisitor(access, name, descriptor, signature, exceptions, next) { + createBody: Boolean, + next: MethodVisitor? + ) : BodyReplacingMethodVisitor(createBody, next) { override fun emitNewCode() { - visitMethodInsn(Opcodes.INVOKESTATIC, - HostTestUtils.CLASS_INTERNAL_NAME, - "onThrowMethodCalled", - "()V", - false) + visitMethodInsn( + INVOKESTATIC, + HostTestUtils.CLASS_INTERNAL_NAME, + "onThrowMethodCalled", + "()V", + false + ) // We still need a RETURN opcode for the return type. // For now, let's just inject a `throw`. visitTypeInsn(Opcodes.NEW, "java/lang/RuntimeException") visitInsn(Opcodes.DUP) visitLdcInsn("Unreachable") - visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/RuntimeException", - "<init>", "(Ljava/lang/String;)V", false) + visitMethodInsn( + Opcodes.INVOKESPECIAL, "java/lang/RuntimeException", + "<init>", "(Ljava/lang/String;)V", false + ) visitInsn(Opcodes.ATHROW) // visitMaxs(3, if (isStatic) 0 else 1) @@ -289,54 +243,67 @@ class ImplGeneratingAdapter( * A method adapter that replaces the method body with a no-op return. */ private inner class IgnoreMethodAdapter( - access: Int, - val name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor? - ) : BodyReplacingMethodVisitor(access, name, descriptor, signature, exceptions, next) { + val descriptor: String, + createBody: Boolean, + next: MethodVisitor? + ) : BodyReplacingMethodVisitor(createBody, next) { override fun emitNewCode() { - visitInsn(Opcodes.RETURN) + when (Type.getReturnType(descriptor)) { + Type.VOID_TYPE -> visitInsn(Opcodes.RETURN) + Type.BOOLEAN_TYPE, Type.BYTE_TYPE, Type.CHAR_TYPE, Type.SHORT_TYPE, + Type.INT_TYPE -> { + visitInsn(Opcodes.ICONST_0) + visitInsn(Opcodes.IRETURN) + } + Type.LONG_TYPE -> { + visitInsn(Opcodes.LCONST_0) + visitInsn(Opcodes.LRETURN) + } + Type.FLOAT_TYPE -> { + visitInsn(Opcodes.FCONST_0) + visitInsn(Opcodes.FRETURN) + } + Type.DOUBLE_TYPE -> { + visitInsn(Opcodes.DCONST_0) + visitInsn(Opcodes.DRETURN) + } + else -> { + visitInsn(Opcodes.ACONST_NULL) + visitInsn(Opcodes.ARETURN) + } + } visitMaxs(0, 0) // We let ASM figure them out. } } /** - * A method adapter that replaces a native method call with a call to the "native substitution" - * class. + * A method adapter that rewrite a method body with a + * call to a method in the redirection class. */ - private inner class NativeSubstitutingMethodAdapter( - val access: Int, - private val name: String, - private val descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor? - ) : MethodVisitor(OPCODE_VERSION, next) { - override fun visitCode() { - throw RuntimeException("NativeSubstitutingMethodVisitor should be called on " + - " native method, where visitCode() shouldn't be called.") - } + private inner class RedirectMethodAdapter( + access: Int, + private val name: String, + private val descriptor: String, + createBody: Boolean, + next: MethodVisitor? + ) : BodyReplacingMethodVisitor(createBody, next) { - override fun visitEnd() { - super.visitCode() + private val isStatic = (access and Opcodes.ACC_STATIC) != 0 + override fun emitNewCode() { var targetDescriptor = descriptor var argOffset = 0 - // For non-static native method, we need to tweak it a bit. - if ((access and Opcodes.ACC_STATIC) == 0) { + // For non-static method, we need to tweak it a bit. + if (!isStatic) { // Push `this` as the first argument. this.visitVarInsn(Opcodes.ALOAD, 0) // Update the descriptor -- add this class's type as the first argument // to the method descriptor. - val thisType = Type.getType("L" + currentClassName + ";") - targetDescriptor = prependArgTypeToMethodDescriptor( - descriptor, - thisType, + descriptor, + currentClassName, ) // Shift the original arguments by one. @@ -345,16 +312,17 @@ class ImplGeneratingAdapter( writeByteCodeToPushArguments(descriptor, this, argOffset) - visitMethodInsn(Opcodes.INVOKESTATIC, - nativeSubstitutionClass, - name, - targetDescriptor, - false) + visitMethodInsn( + INVOKESTATIC, + redirectionClass, + name, + targetDescriptor, + false + ) writeByteCodeToReturn(descriptor, this) visitMaxs(99, 0) // We let ASM figure them out. - super.visitEnd() } } @@ -365,25 +333,22 @@ class ImplGeneratingAdapter( * `this(...)`. The logging code will be injected *before* such calls. */ private inner class MethodCallHookInjectingAdapter( - access: Int, - val name: String, - val descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor?, - val hooks: List<String>, + val name: String, + val descriptor: String, + val hooks: List<String>, + next: MethodVisitor?, ) : MethodVisitor(OPCODE_VERSION, next) { override fun visitCode() { super.visitCode() hooks.forEach { hook -> - mv.visitLdcInsn(Type.getType("L" + currentClassName + ";")) + mv.visitLdcInsn(Type.getType("L$currentClassName;")) visitLdcInsn(name) visitLdcInsn(descriptor) visitLdcInsn(hook) visitMethodInsn( - Opcodes.INVOKESTATIC, + INVOKESTATIC, HostTestUtils.CLASS_INTERNAL_NAME, "callMethodCallHook", "(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", @@ -397,11 +362,6 @@ class ImplGeneratingAdapter( * Inject a class load hook call. */ private inner class ClassLoadHookInjectingMethodAdapter( - access: Int, - val name: String, - val descriptor: String, - signature: String?, - exceptions: Array<String>?, next: MethodVisitor? ) : MethodVisitor(OPCODE_VERSION, next) { override fun visitCode() { @@ -411,44 +371,57 @@ class ImplGeneratingAdapter( } } - /** - * A method adapter that detects calls to non-stub methods. - */ - private inner class NonStubMethodCallDetectingAdapter( - access: Int, - val name: String, - val descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor? + private inner class MethodCallReplacingAdapter( + val callerMethodName: String, + next: MethodVisitor?, ) : MethodVisitor(OPCODE_VERSION, next) { - override fun visitCode() { - super.visitCode() + override fun visitMethodInsn( + opcode: Int, + owner: String?, + name: String?, + descriptor: String?, + isInterface: Boolean, + ) { + when (opcode) { + INVOKESTATIC, INVOKEVIRTUAL, INVOKEINTERFACE -> {} + else -> { + // Don't touch other opcodes. + super.visitMethodInsn(opcode, owner, name, descriptor, isInterface) + return + } + } + val to = filter.getMethodCallReplaceTo( + currentClassName, callerMethodName, owner!!, name!!, descriptor!! + ) - // First three arguments to HostTestUtils.onNonStubMethodCalled(). - visitLdcInsn(currentClassName) - visitLdcInsn(name) - visitLdcInsn(descriptor) + if (to == null + // Don't replace if the target is the callsite. + || (to.className == currentClassName && to.methodName == callerMethodName) + ) { + super.visitMethodInsn(opcode, owner, name, descriptor, isInterface) + return + } - // Call: HostTestUtils.getStackWalker().getCallerClass(). - // This push the caller Class in the stack. - visitMethodInsn(Opcodes.INVOKESTATIC, - HostTestUtils.CLASS_INTERNAL_NAME, - "getStackWalker", - "()Ljava/lang/StackWalker;", - false) - visitMethodInsn(Opcodes.INVOKEVIRTUAL, - "java/lang/StackWalker", - "getCallerClass", - "()Ljava/lang/Class;", - false) - - // Then call onNonStubMethodCalled(). - visitMethodInsn(Opcodes.INVOKESTATIC, - HostTestUtils.CLASS_INTERNAL_NAME, - "onNonStubMethodCalled", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V", - false) + // Replace the method call with a (static) call to the target method. + // If it's a non-static call, the target method's first argument will receive "this". + // (Because of that, we don't need to manipulate the stack. Just replace the + // method call.) + + val toDesc = if (opcode == INVOKESTATIC) { + // Static call to static call, no need to change the desc. + descriptor + } else { + // Need to prepend the "this" type to the descriptor. + prependArgTypeToMethodDescriptor(descriptor, owner) + } + + mv.visitMethodInsn( + INVOKESTATIC, + to.className, + to.methodName, + toDesc, + false + ) } } } diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/StubGeneratingAdapter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/StubGeneratingAdapter.kt deleted file mode 100644 index fc20f2832d28..000000000000 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/StubGeneratingAdapter.kt +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.hoststubgen.visitors - -import com.android.hoststubgen.asm.ClassNodes -import com.android.hoststubgen.filters.FilterPolicy -import com.android.hoststubgen.filters.FilterPolicyWithReason -import com.android.hoststubgen.filters.OutputFilter -import com.android.hoststubgen.log -import org.objectweb.asm.ClassVisitor -import org.objectweb.asm.MethodVisitor -import org.objectweb.asm.Opcodes - -/** - * An adapter that generates the "impl" class file from an input class file. - */ -class StubGeneratingAdapter( - classes: ClassNodes, - nextVisitor: ClassVisitor, - filter: OutputFilter, - options: Options, -) : BaseAdapter(classes, nextVisitor, filter, options) { - - override fun shouldEmit(policy: FilterPolicy): Boolean { - return policy.needsInStub - } - - override fun visitMethodInner( - access: Int, - name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - policy: FilterPolicyWithReason, - substituted: Boolean, - superVisitor: MethodVisitor?, - ): MethodVisitor? { - return StubMethodVisitor(access, name, descriptor, signature, exceptions, superVisitor) - } - - private inner class StubMethodVisitor( - access: Int, - val name: String, - descriptor: String, - signature: String?, - exceptions: Array<String>?, - next: MethodVisitor? - ) : BodyReplacingMethodVisitor(access, name, descriptor, signature, exceptions, next) { - override fun emitNewCode() { - log.d(" Generating stub method for $currentClassName.$name") - - // Inject the following code: - // throw new RuntimeException("Stub!"); - - /* - NEW java/lang/RuntimeException - DUP - LDC "not supported on host side" - INVOKESPECIAL java/lang/RuntimeException.<init> (Ljava/lang/String;)V - ATHROW - MAXSTACK = 3 - MAXLOCALS = 2 <- 1 for this, 1 for return value. - */ - visitTypeInsn(Opcodes.NEW, "java/lang/RuntimeException") - visitInsn(Opcodes.DUP) - visitLdcInsn("Stub!") - visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/RuntimeException", - "<init>", "(Ljava/lang/String;)V", false) - visitInsn(Opcodes.ATHROW) - visitMaxs(0, 0) // We let ASM figure them out. - } - } -} diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/Android.bp b/tools/hoststubgen/hoststubgen/test-tiny-framework/Android.bp index e7873d6eecc3..ba2c869adfe8 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/Android.bp +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/Android.bp @@ -21,7 +21,7 @@ java_library { // Create stub/impl jars from "hoststubgen-test-tiny-framework", using the following 3 rules. java_genrule_host { - name: "hoststubgen-test-tiny-framework-host", + name: "hoststubgen-test-tiny-framework-host-base", defaults: ["hoststubgen-command-defaults"], cmd: hoststubgen_common_options + "--in-jar $(location :hoststubgen-test-tiny-framework) " + @@ -35,25 +35,13 @@ java_genrule_host { } java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-stub", - cmd: "cp $(in) $(out)", - srcs: [ - ":hoststubgen-test-tiny-framework-host{host_stub.jar}", - ], - out: [ - "host_stub.jar", - ], - visibility: ["//visibility:private"], -} - -java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-impl", + name: "hoststubgen-test-tiny-framework-host", cmd: "cp $(in) $(out)", srcs: [ - ":hoststubgen-test-tiny-framework-host{host_impl.jar}", + ":hoststubgen-test-tiny-framework-host-base{host.jar}", ], out: [ - "host_impl.jar", + "host.jar", ], visibility: ["//visibility:private"], } @@ -61,7 +49,7 @@ java_genrule_host { // Same as "hoststubgen-test-tiny-framework-host", but with more options, to test more hoststubgen // features. java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-ext", + name: "hoststubgen-test-tiny-framework-host-ext-base", defaults: ["hoststubgen-command-defaults"], cmd: hoststubgen_common_options + "--in-jar $(location :hoststubgen-test-tiny-framework) " + @@ -79,37 +67,25 @@ java_genrule_host { } java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-ext-stub", - cmd: "cp $(in) $(out)", - srcs: [ - ":hoststubgen-test-tiny-framework-host-ext{host_stub.jar}", - ], - out: [ - "host_stub.jar", - ], - visibility: ["//visibility:private"], -} - -java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-ext-impl", + name: "hoststubgen-test-tiny-framework-host-ext", cmd: "cp $(in) $(out)", srcs: [ - ":hoststubgen-test-tiny-framework-host-ext{host_impl.jar}", + ":hoststubgen-test-tiny-framework-host-ext-base{host.jar}", ], out: [ - "host_impl.jar", + "host.jar", ], visibility: ["//visibility:private"], } // Compile the test jar, using 2 rules. -// 1. Build the test against the stub. +// 1. Build the test against the original framework. java_library_host { name: "hoststubgen-test-tiny-test-lib", srcs: ["tiny-test/src/**/*.java"], libs: [ - "hoststubgen-test-tiny-framework-host-stub", + "hoststubgen-test-tiny-framework", ], static_libs: [ "junit", @@ -129,7 +105,7 @@ java_test_host { static_libs: [ "hoststubgen-test-tiny-test-lib", "hoststubgen-helper-runtime", - "hoststubgen-test-tiny-framework-host-impl", + "hoststubgen-test-tiny-framework-host", ], test_suites: ["general-tests"], } @@ -149,49 +125,25 @@ java_genrule_host { } java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-stub-dump", - defaults: ["hoststubgen-jar-dump-defaults"], - srcs: [ - ":hoststubgen-test-tiny-framework-host-stub", - ], - out: [ - "02-hoststubgen-test-tiny-framework-host-stub-dump.txt", - ], - visibility: ["//visibility:private"], -} - -java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-impl-dump", - defaults: ["hoststubgen-jar-dump-defaults"], - srcs: [ - ":hoststubgen-test-tiny-framework-host-impl", - ], - out: [ - "03-hoststubgen-test-tiny-framework-host-impl-dump.txt", - ], - visibility: ["//visibility:private"], -} - -java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-ext-stub-dump", + name: "hoststubgen-test-tiny-framework-host-dump", defaults: ["hoststubgen-jar-dump-defaults"], srcs: [ - ":hoststubgen-test-tiny-framework-host-ext-stub", + ":hoststubgen-test-tiny-framework-host", ], out: [ - "12-hoststubgen-test-tiny-framework-host-ext-stub-dump.txt", + "03-hoststubgen-test-tiny-framework-host-dump.txt", ], visibility: ["//visibility:private"], } java_genrule_host { - name: "hoststubgen-test-tiny-framework-host-ext-impl-dump", + name: "hoststubgen-test-tiny-framework-host-ext-dump", defaults: ["hoststubgen-jar-dump-defaults"], srcs: [ - ":hoststubgen-test-tiny-framework-host-ext-impl", + ":hoststubgen-test-tiny-framework-host-ext", ], out: [ - "13-hoststubgen-test-tiny-framework-host-ext-impl-dump.txt", + "13-hoststubgen-test-tiny-framework-host-ext-dump.txt", ], visibility: ["//visibility:private"], } @@ -206,11 +158,9 @@ python_test_host { "golden-output/*.txt", ], java_data: [ - "hoststubgen-test-tiny-framework-host-stub-dump", - "hoststubgen-test-tiny-framework-host-impl-dump", "hoststubgen-test-tiny-framework-orig-dump", - "hoststubgen-test-tiny-framework-host-ext-stub-dump", - "hoststubgen-test-tiny-framework-host-ext-impl-dump", + "hoststubgen-test-tiny-framework-host-dump", + "hoststubgen-test-tiny-framework-host-ext-dump", ], test_suites: ["general-tests"], } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/annotation-allowed-classes-tiny-framework.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/annotation-allowed-classes-tiny-framework.txt index bd9e85e17890..de4cb0c536c1 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/annotation-allowed-classes-tiny-framework.txt +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/annotation-allowed-classes-tiny-framework.txt @@ -6,10 +6,10 @@ # To allow a specific class to use annotations: -# com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations +# com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations # To disallow a specific class to use annotations: -# !com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations +# !com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations # To allow a specific package to use annotations: # com.android.hoststubgen.test.* diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/diff-and-update-golden.sh b/tools/hoststubgen/hoststubgen/test-tiny-framework/diff-and-update-golden.sh index 00cbfe38e815..3726ca972564 100755 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/diff-and-update-golden.sh +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/diff-and-update-golden.sh @@ -63,7 +63,7 @@ shift $(($OPTIND - 1)) # Build the dump files, which are the input of this test. -run m tiny-framework-dump-test +run m dump-jar tiny-framework-dump-test # Get the path to the generate text files. (not the golden files.) diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt index c127e677f84d..103e152c7e39 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt @@ -21,6 +21,26 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) +## Class: android/hosttest/annotation/HostSideTestIgnore.class + Compiled from "HostSideTestIgnore.java" +public interface android.hosttest.annotation.HostSideTestIgnore extends java.lang.annotation.Annotation + minor version: 0 + major version: 61 + flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION + this_class: #x // android/hosttest/annotation/HostSideTestIgnore + super_class: #x // java/lang/Object + interfaces: 1, fields: 0, methods: 0, attributes: 2 +} +SourceFile: "HostSideTestIgnore.java" +RuntimeVisibleAnnotations: + x: #x(#x=[e#x.#x,e#x.#x]) + java.lang.annotation.Target( + value=[Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] + ) + x: #x(#x=e#x.#x) + java.lang.annotation.Retention( + value=Ljava/lang/annotation/RetentionPolicy;.CLASS + ) ## Class: android/hosttest/annotation/HostSideTestKeep.class Compiled from "HostSideTestKeep.java" public interface android.hosttest.annotation.HostSideTestKeep extends java.lang.annotation.Annotation @@ -41,20 +61,40 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestNativeSubstitutionClass.class - Compiled from "HostSideTestNativeSubstitutionClass.java" -public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass extends java.lang.annotation.Annotation +## Class: android/hosttest/annotation/HostSideTestRedirect.class + Compiled from "HostSideTestRedirect.java" +public interface android.hosttest.annotation.HostSideTestRedirect extends java.lang.annotation.Annotation + minor version: 0 + major version: 61 + flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION + this_class: #x // android/hosttest/annotation/HostSideTestRedirect + super_class: #x // java/lang/Object + interfaces: 1, fields: 0, methods: 0, attributes: 2 +} +SourceFile: "HostSideTestRedirect.java" +RuntimeVisibleAnnotations: + x: #x(#x=[e#x.#x]) + java.lang.annotation.Target( + value=[Ljava/lang/annotation/ElementType;.METHOD] + ) + x: #x(#x=e#x.#x) + java.lang.annotation.Retention( + value=Ljava/lang/annotation/RetentionPolicy;.CLASS + ) +## Class: android/hosttest/annotation/HostSideTestRedirectionClass.class + Compiled from "HostSideTestRedirectionClass.java" +public interface android.hosttest.annotation.HostSideTestRedirectionClass extends java.lang.annotation.Annotation minor version: 0 major version: 61 flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestNativeSubstitutionClass + this_class: #x // android/hosttest/annotation/HostSideTestRedirectionClass super_class: #x // java/lang/Object interfaces: 1, fields: 0, methods: 1, attributes: 2 public abstract java.lang.String value(); descriptor: ()Ljava/lang/String; flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT } -SourceFile: "HostSideTestNativeSubstitutionClass.java" +SourceFile: "HostSideTestRedirectionClass.java" RuntimeVisibleAnnotations: x: #x(#x=[e#x.#x]) java.lang.annotation.Target( @@ -104,26 +144,6 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestStub.class - Compiled from "HostSideTestStub.java" -public interface android.hosttest.annotation.HostSideTestStub extends java.lang.annotation.Annotation - minor version: 0 - major version: 61 - flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestStub - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "HostSideTestStub.java" -RuntimeVisibleAnnotations: - x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) - java.lang.annotation.Target( - value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] - ) - x: #x(#x=e#x.#x) - java.lang.annotation.Retention( - value=Ljava/lang/annotation/RetentionPolicy;.CLASS - ) ## Class: android/hosttest/annotation/HostSideTestSubstitute.class Compiled from "HostSideTestSubstitute.java" public interface android.hosttest.annotation.HostSideTestSubstitute extends java.lang.annotation.Annotation @@ -187,26 +207,6 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestWholeClassStub.class - Compiled from "HostSideTestWholeClassStub.java" -public interface android.hosttest.annotation.HostSideTestWholeClassStub extends java.lang.annotation.Annotation - minor version: 0 - major version: 61 - flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestWholeClassStub - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "HostSideTestWholeClassStub.java" -RuntimeVisibleAnnotations: - x: #x(#x=[e#x.#x]) - java.lang.annotation.Target( - value=[Ljava/lang/annotation/ElementType;.TYPE] - ) - x: #x(#x=e#x.#x) - java.lang.annotation.Retention( - value=Ljava/lang/annotation/RetentionPolicy;.CLASS - ) ## Class: android/hosttest/annotation/tests/HostSideTestSuppress.class Compiled from "HostSideTestSuppress.java" public interface android.hosttest.annotation.tests.HostSideTestSuppress extends java.lang.annotation.Annotation @@ -394,120 +394,15 @@ NestMembers: com/android/hoststubgen/test/tinyframework/R$Nested InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.class - Compiled from "TinyFrameworkCallerCheck.java" -class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl - minor version: 0 - major version: 61 - flags: (0x0020) ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 3 - private com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl; - - public static int getOneKeep(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: iconst_1 - x: ireturn - LineNumberTable: - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestKeep - - public static int getOneStub(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: iconst_1 - x: ireturn - LineNumberTable: - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -SourceFile: "TinyFrameworkCallerCheck.java" -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.class - Compiled from "TinyFrameworkCallerCheck.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 4 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck; - - public static int getOne_withCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneKeep:()I - x: ireturn - LineNumberTable: - - public static int getOne_noCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneStub:()I - x: ireturn - LineNumberTable: -} -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.class - Compiled from "TinyFrameworkClassAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations.class + Compiled from "TinyFrameworkAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 10, attributes: 2 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - + interfaces: 0, fields: 2, methods: 9, attributes: 2 public int keep; descriptor: I flags: (0x0001) ACC_PUBLIC @@ -519,7 +414,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota descriptor: I flags: (0x0001) ACC_PUBLIC - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations(); + public com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: @@ -528,42 +423,21 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: putfield #x // Field keep:I + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 - x: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; - 0 6 1 value I - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=2, locals=2, args_size=2 x: iload_1 x: iconst_1 x: iadd @@ -571,7 +445,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 0 4 1 value I RuntimeInvisibleAnnotations: x: #x() @@ -589,7 +463,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 0 8 1 foo Ljava/lang/String; RuntimeInvisibleAnnotations: x: #x() @@ -608,11 +482,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 0 10 1 value I RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub x: #x(#x=s#x) android.hosttest.annotation.HostSideTestSubstitute( suffix="_host" @@ -630,15 +502,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 0 4 1 value I public static native int nativeAddThree(int); descriptor: (I)I flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub x: #x(#x=s#x) android.hosttest.annotation.HostSideTestSubstitute( suffix="_host" @@ -668,48 +538,108 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestThrow - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; + public int toBeIgnored(); + descriptor: ()I flags: (0x0001) ACC_PUBLIC Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn + stack=3, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: ldc #x // String not supported on host side + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + x: athrow LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestIgnore } -SourceFile: "TinyFrameworkClassAnnotations.java" +SourceFile: "TinyFrameworkAnnotations.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x(#x=s#x) android.hosttest.annotation.HostSideTestClassLoadHook( value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.class - Compiled from "TinyFrameworkClassClassWideAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class + Compiled from "TinyFrameworkClassLoadHook.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 10, attributes: 2 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC + interfaces: 0, fields: 1, methods: 3, attributes: 2 + public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; + descriptor: Ljava/util/Set; + flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL + Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; + + private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); + descriptor: ()V + flags: (0x0002) ACC_PRIVATE + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; + + public static void onClassLoaded(java.lang.Class<?>); + descriptor: (Ljava/lang/Class;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: getstatic #x // Field sLoadedClasses:Ljava/util/Set; + x: aload_0 + x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z + x: pop + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 11 0 clazz Ljava/lang/Class; + LocalVariableTypeTable: + Start Length Slot Name Signature + 0 11 0 clazz Ljava/lang/Class<*>; + Signature: #x // (Ljava/lang/Class<*>;)V + static {}; + descriptor: ()V + flags: (0x0008) ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: new #x // class java/util/HashSet + x: dup + x: invokespecial #x // Method java/util/HashSet."<init>":()V + x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; + x: return + LineNumberTable: +} +SourceFile: "TinyFrameworkClassLoadHook.java" +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations.class + Compiled from "TinyFrameworkClassWideAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations + super_class: #x // java/lang/Object + interfaces: 0, fields: 2, methods: 6, attributes: 2 public int keep; descriptor: I flags: (0x0001) ACC_PUBLIC @@ -717,8 +647,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW public int remove; descriptor: I flags: (0x0001) ACC_PUBLIC + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRemove - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations(); + public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: @@ -727,36 +660,18 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: putfield #x // Field keep:I + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 - x: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 0 6 1 value I - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=2, locals=2, args_size=2 x: iload_1 x: iconst_1 x: iadd @@ -764,24 +679,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 0 4 1 value I - public void toBeRemoved(java.lang.String); - descriptor: (Ljava/lang/String;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=2, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V - x: athrow - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 0 8 1 foo Ljava/lang/String; - public int addTwo(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC @@ -795,11 +695,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 0 10 1 value I RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub x: #x(#x=s#x) android.hosttest.annotation.HostSideTestSubstitute( suffix="_host" @@ -817,33 +715,26 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 0 4 1 value I - public static native int nativeAddThree(int); - descriptor: (I)I - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestSubstitute( - suffix="_host" - ) - - public static int nativeAddThree_host(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC + public void toBeRemoved(java.lang.String); + descriptor: (Ljava/lang/String;)V + flags: (0x0001) ACC_PUBLIC Code: - stack=2, locals=1, args_size=1 - x: iload_0 - x: iconst_3 - x: iadd - x: ireturn + stack=2, locals=2, args_size=2 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 value I + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; + 0 8 1 foo Ljava/lang/String; + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRemove public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; @@ -855,87 +746,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; -} -SourceFile: "TinyFrameworkClassClassWideAnnotations.java" -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class - Compiled from "TinyFrameworkClassLoadHook.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 2 - public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; - descriptor: Ljava/util/Set; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; - - public static void onClassLoaded(java.lang.Class<?>); - descriptor: (Ljava/lang/Class;)V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=2, locals=1, args_size=1 - x: getstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: aload_0 - x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z - x: pop - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 11 0 clazz Ljava/lang/Class; - LocalVariableTypeTable: - Start Length Slot Name Signature - 0 11 0 clazz Ljava/lang/Class<*>; - Signature: #x // (Ljava/lang/Class<*>;)V - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=2, locals=0, args_size=0 - x: new #x // class java/util/HashSet - x: dup - x: invokespecial #x // Method java/util/HashSet."<init>":()V - x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: return - LineNumberTable: + 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestThrow } -SourceFile: "TinyFrameworkClassLoadHook.java" +SourceFile: "TinyFrameworkClassWideAnnotations.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.class Compiled from "TinyFrameworkClassWithInitializerDefault.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault @@ -950,14 +769,14 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault(); descriptor: ()V @@ -989,7 +808,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn SourceFile: "TinyFrameworkClassWithInitializerDefault.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.class Compiled from "TinyFrameworkClassWithInitializerStub.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub @@ -1004,14 +823,14 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub(); descriptor: ()V @@ -1047,7 +866,7 @@ RuntimeInvisibleAnnotations: value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.class @@ -1064,21 +883,21 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex GREEN; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex BLUE; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private final java.lang.String mLongName; descriptor: Ljava/lang/String; @@ -1158,7 +977,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC Signature: #x // (Ljava/lang/String;Ljava/lang/String;)V RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.lang.String getLongName(); descriptor: ()Ljava/lang/String; @@ -1174,7 +993,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.lang.String getShortName(); descriptor: ()Ljava/lang/String; @@ -1190,7 +1009,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1252,7 +1071,7 @@ Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubg SourceFile: "TinyFrameworkEnumComplex.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.class Compiled from "TinyFrameworkEnumSimple.java" public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple> @@ -1267,14 +1086,14 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple DOG; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $VALUES; descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; @@ -1373,7 +1192,7 @@ Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubg SourceFile: "TinyFrameworkEnumSimple.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.class Compiled from "TinyFrameworkExceptionTester.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester @@ -1427,7 +1246,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe SourceFile: "TinyFrameworkExceptionTester.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.class Compiled from "TinyFrameworkForTextPolicy.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy @@ -1436,15 +1255,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 10, attributes: 1 + interfaces: 0, fields: 2, methods: 17, attributes: 1 public int stub; descriptor: I flags: (0x0001) ACC_PUBLIC - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - public int remove; descriptor: I flags: (0x0001) ACC_PUBLIC @@ -1459,35 +1274,17 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: aload_0 x: iconst_1 x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 - x: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - 0 6 1 value I - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=2, locals=2, args_size=2 x: iload_1 x: iconst_1 x: iadd @@ -1513,6 +1310,132 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; 0 8 1 foo Ljava/lang/String; + public java.lang.String toBeIgnoredObj(); + descriptor: ()Ljava/lang/String; + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public void toBeIgnoredV(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public boolean toBeIgnoredZ(); + descriptor: ()Z + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public byte toBeIgnoredB(); + descriptor: ()B + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public char toBeIgnoredC(); + descriptor: ()C + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public short toBeIgnoredS(); + descriptor: ()S + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public int toBeIgnoredI(); + descriptor: ()I + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public float toBeIgnoredF(); + descriptor: ()F + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + + public double toBeIgnoredD(); + descriptor: ()D + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + public int addTwo(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC @@ -1573,19 +1496,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli LocalVariableTable: Start Length Slot Name Signature 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; } SourceFile: "TinyFrameworkForTextPolicy.java" ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested.class @@ -1603,7 +1513,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -1611,7 +1521,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested(); descriptor: ()V @@ -1630,7 +1540,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes 0 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -1646,7 +1556,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -1659,7 +1569,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -1714,7 +1624,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes SourceFile: "TinyFrameworkLambdas.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas @@ -1757,7 +1667,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -1765,7 +1675,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas(); descriptor: ()V @@ -1784,7 +1694,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas 0 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -1800,7 +1710,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -1813,7 +1723,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -1868,7 +1778,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas SourceFile: "TinyFrameworkLambdas.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep NestMembers: @@ -1897,6 +1807,174 @@ BootstrapMethods: InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 3, attributes: 3 + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo; + + public static void startThread(java.lang.Thread); + descriptor: (Ljava/lang/Thread;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: iconst_1 + x: invokevirtual #x // Method java/lang/Thread.setDaemon:(Z)V + x: aload_0 + x: invokevirtual #x // Method java/lang/Thread.start:()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 thread Ljava/lang/Thread; + + public static int add(int, int); + descriptor: (II)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=2, args_size=2 + x: iload_0 + x: iload_1 + x: iadd + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 4 0 a I + 0 4 1 b I +} +SourceFile: "TinyFrameworkMethodCallReplace.java" +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 5, attributes: 5 + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace; + + public static boolean nonStaticMethodCallReplaceTester() throws java.lang.Exception; + descriptor: ()Z + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=3, locals=2, args_size=0 + x: new #x // class java/util/concurrent/atomic/AtomicBoolean + x: dup + x: iconst_0 + x: invokespecial #x // Method java/util/concurrent/atomic/AtomicBoolean."<init>":(Z)V + x: astore_0 + x: new #x // class java/lang/Thread + x: dup + x: aload_0 + x: invokedynamic #x, 0 // InvokeDynamic #x:run:(Ljava/util/concurrent/atomic/AtomicBoolean;)Ljava/lang/Runnable; + x: invokespecial #x // Method java/lang/Thread."<init>":(Ljava/lang/Runnable;)V + x: astore_1 + x: aload_1 + x: invokevirtual #x // Method java/lang/Thread.start:()V + x: aload_1 + x: invokevirtual #x // Method java/lang/Thread.join:()V + x: aload_0 + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.get:()Z + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 9 27 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; + 23 13 1 th Ljava/lang/Thread; + Exceptions: + throws java.lang.Exception + + public static int staticMethodCallReplaceTester(); + descriptor: ()I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: iconst_1 + x: iconst_2 + x: invokestatic #x // Method originalAdd:(II)I + x: ireturn + LineNumberTable: + + private static int originalAdd(int, int); + descriptor: (II)I + flags: (0x000a) ACC_PRIVATE, ACC_STATIC + Code: + stack=2, locals=2, args_size=2 + x: iload_0 + x: iload_1 + x: iadd + x: iconst_1 + x: isub + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 6 0 a I + 0 6 1 b I + + private static void lambda$nonStaticMethodCallReplaceTester$0(java.util.concurrent.atomic.AtomicBoolean); + descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;)V + flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: invokestatic #x // Method java/lang/Thread.currentThread:()Ljava/lang/Thread; + x: invokevirtual #x // Method java/lang/Thread.isDaemon:()Z + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.set:(Z)V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 11 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; +} +SourceFile: "TinyFrameworkMethodCallReplace.java" +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +NestMembers: + com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo +BootstrapMethods: + x: #x REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; + Method arguments: + #x ()V + #x REF_invokeStatic com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.lambda$nonStaticMethodCallReplaceTester$0:(Ljava/util/concurrent/atomic/AtomicBoolean;)V + #x ()V +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.class Compiled from "TinyFrameworkNative.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative @@ -1905,7 +1983,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 11, attributes: 2 + interfaces: 0, fields: 1, methods: 14, attributes: 2 int value; descriptor: I flags: (0x0000) @@ -1926,6 +2004,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative public static native int nativeAddTwo(int); descriptor: (I)I flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect public static int nativeAddTwo_should_be_like_this(int); descriptor: (I)I @@ -1943,6 +2024,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative public static native long nativeLongPlus(long, long); descriptor: (JJ)J flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect public static long nativeLongPlus_should_be_like_this(long, long); descriptor: (JJ)J @@ -1977,6 +2061,9 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative public native int nativeNonStaticAddToValue(int); descriptor: (I)I flags: (0x0101) ACC_PUBLIC, ACC_NATIVE + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect public int nativeNonStaticAddToValue_should_be_like_this(int); descriptor: (I)I @@ -2000,6 +2087,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() android.hosttest.annotation.HostSideTestThrow + public static native void nativeStillKeep(); + descriptor: ()V + flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + public static void nativeStillNotSupported_should_be_like_this(); descriptor: ()V flags: (0x0009) ACC_PUBLIC, ACC_STATIC @@ -2014,13 +2105,47 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative public static native byte nativeBytePlus(byte, byte); descriptor: (BB)B flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public void notNativeRedirected(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: new #x // class java/lang/RuntimeException + x: dup + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: athrow + LineNumberTable: + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect } SourceFile: "TinyFrameworkNative.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestNativeSubstitutionClass( + android.hosttest.annotation.HostSideTestRedirectionClass( value="TinyFrameworkNative_host" ) ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.class @@ -2031,7 +2156,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 5, attributes: 2 + interfaces: 0, fields: 0, methods: 7, attributes: 2 public com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host(); descriptor: ()V flags: (0x0001) ACC_PUBLIC @@ -2105,6 +2230,25 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host Start Length Slot Name Signature 0 5 0 arg1 B 0 5 1 arg2 B + + public static void notNativeRedirected(com.android.hoststubgen.test.tinyframework.TinyFrameworkNative); + descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=0, locals=1, args_size=1 + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 1 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=0, locals=0, args_size=0 + x: return + LineNumberTable: } SourceFile: "TinyFrameworkNative_host.java" RuntimeInvisibleAnnotations: @@ -2390,7 +2534,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 1, attributes: 4 + interfaces: 0, fields: 2, methods: 1, attributes: 3 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC @@ -2423,9 +2567,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass <no name> final mandated } SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses InnerClasses: public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses @@ -2484,6 +2625,40 @@ NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedCl InnerClasses: public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass.class + Compiled from "TinyFrameworkNestedClasses.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + super_class: #x // java/lang/Object + interfaces: 0, fields: 1, methods: 1, attributes: 3 + public int value; + descriptor: I + flags: (0x0001) ACC_PUBLIC + + public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: aload_0 + x: bipush 8 + x: putfield #x // Field value:I + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 11 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass; +} +SourceFile: "TinyFrameworkNestedClasses.java" +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses +InnerClasses: + public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass.class Compiled from "TinyFrameworkNestedClasses.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass @@ -2492,7 +2667,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 4 + interfaces: 0, fields: 1, methods: 2, attributes: 3 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC @@ -2526,13 +2701,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; } SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses InnerClasses: public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass.class Compiled from "TinyFrameworkNestedClasses.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$SubClass extends com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass @@ -2643,11 +2816,12 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass SourceFile: "TinyFrameworkNestedClasses.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep NestMembers: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass + com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 @@ -2663,6 +2837,7 @@ InnerClasses: public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.class Compiled from "TinyFrameworkPackageRedirect.java" @@ -2705,7 +2880,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi SourceFile: "TinyFrameworkPackageRedirect.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.class Compiled from "TinyFrameworkRenamedClassCaller.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller @@ -2747,7 +2922,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.class Compiled from "TinyFrameworkToBeRenamed.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed @@ -2794,7 +2969,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed SourceFile: "TinyFrameworkToBeRenamed.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/packagetest/A.class Compiled from "A.java" public class com.android.hoststubgen.test.tinyframework.packagetest.A @@ -3540,4 +3715,4 @@ public class com.unsupported.UnsupportedClass SourceFile: "UnsupportedClass.java" RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/02-hoststubgen-test-tiny-framework-host-stub-dump.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/02-hoststubgen-test-tiny-framework-host-stub-dump.txt deleted file mode 100644 index 17ba48c67d98..000000000000 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/02-hoststubgen-test-tiny-framework-host-stub-dump.txt +++ /dev/null @@ -1,2530 +0,0 @@ -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy.class - Compiled from "IPretendingAidl.java" -public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Proxy - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - public com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Proxy(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int addTwo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub.class - Compiled from "IPretendingAidl.java" -public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - public com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int addOne(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl.class - Compiled from "IPretendingAidl.java" -public interface com.android.hoststubgen.test.tinyframework.IPretendingAidl - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 4 -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestMembers: - com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub - com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy -## Class: com/android/hoststubgen/test/tinyframework/R$Nested.class - Compiled from "R.java" -public class com.android.hoststubgen.test.tinyframework.R$Nested - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/R$Nested - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 4 - public static int[] ARRAY; - descriptor: [I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.R$Nested(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R -SourceFile: "R.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/R -## Class: com/android/hoststubgen/test/tinyframework/R.class - Compiled from "R.java" -public class com.android.hoststubgen.test.tinyframework.R - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/R - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 1, attributes: 4 - public com.android.hoststubgen.test.tinyframework.R(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R -SourceFile: "R.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestMembers: - com/android/hoststubgen/test/tinyframework/R$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.class - Compiled from "TinyFrameworkCallerCheck.java" -class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl - minor version: 0 - major version: 61 - flags: (0x0020) ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - private com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOneStub(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.class - Compiled from "TinyFrameworkCallerCheck.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 5 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_withCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_noCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.class - Compiled from "TinyFrameworkClassAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 5, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -SourceFile: "TinyFrameworkClassAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestClassLoadHook( - value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" - ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.class - Compiled from "TinyFrameworkClassClassWideAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 8, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int remove; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public void toBeRemoved(java.lang.String); - descriptor: (Ljava/lang/String;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String unsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassClassWideAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class - Compiled from "TinyFrameworkClassLoadHook.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 - public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; - descriptor: Ljava/util/Set; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void onClassLoaded(java.lang.Class<?>); - descriptor: (Ljava/lang/Class;)V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // (Ljava/lang/Class<*>;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassLoadHook.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.class - Compiled from "TinyFrameworkClassWithInitializerDefault.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 0, attributes: 3 - public static boolean sInitialized; - descriptor: Z - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.lang.Object sObject; - descriptor: Ljava/lang/Object; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - -} -SourceFile: "TinyFrameworkClassWithInitializerDefault.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.class - Compiled from "TinyFrameworkClassWithInitializerStub.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 0, attributes: 3 - public static boolean sInitialized; - descriptor: Z - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.lang.Object sObject; - descriptor: Ljava/lang/Object; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - -} -SourceFile: "TinyFrameworkClassWithInitializerStub.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestClassLoadHook( - value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" - ) - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.class - Compiled from "TinyFrameworkEnumComplex.java" -public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex> - minor version: 0 - major version: 61 - flags: (0x4031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex - super_class: #x // java/lang/Enum - interfaces: 0, fields: 4, methods: 7, attributes: 4 - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex RED; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex GREEN; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex BLUE; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $VALUES; - descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex valueOf(java.lang.String); - descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> mandated - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex(java.lang.String, java.lang.String); - descriptor: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=5, args_size=5 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // (Ljava/lang/String;Ljava/lang/String;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - MethodParameters: - Name Flags - <no name> synthetic - <no name> synthetic - <no name> - <no name> - - public java.lang.String getLongName(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.lang.String getShortName(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex;>; -SourceFile: "TinyFrameworkEnumComplex.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.class - Compiled from "TinyFrameworkEnumSimple.java" -public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple> - minor version: 0 - major version: 61 - flags: (0x4031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple - super_class: #x // java/lang/Enum - interfaces: 0, fields: 3, methods: 5, attributes: 4 - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple CAT; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple DOG; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $VALUES; - descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple valueOf(java.lang.String); - descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> mandated - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple(); - descriptor: (Ljava/lang/String;I)V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=3, args_size=3 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> synthetic - <no name> synthetic - - private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple;>; -SourceFile: "TinyFrameworkEnumSimple.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.class - Compiled from "TinyFrameworkExceptionTester.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int testException(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkExceptionTester.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.class - Compiled from "TinyFrameworkForTextPolicy.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 5, attributes: 2 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkForTextPolicy.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested.class - Compiled from "TinyFrameworkLambdas.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 7, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static java.lang.Integer lambda$getSupplier_static$3(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$getSupplier$2(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$static$1(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$new$0(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles -SourceFile: "TinyFrameworkLambdas.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.class - Compiled from "TinyFrameworkLambdas.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 7, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static java.lang.Integer lambda$getSupplier_static$3(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$getSupplier$2(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$static$1(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$new$0(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles -SourceFile: "TinyFrameworkLambdas.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.class - Compiled from "TinyFrameworkNative.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 10, attributes: 3 - int value; - descriptor: I - flags: (0x0000) - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNative(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native int nativeAddTwo(int); - descriptor: (I)I - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddTwo_should_be_like_this(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native long nativeLongPlus(long, long); - descriptor: (JJ)J - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static long nativeLongPlus_should_be_like_this(long, long); - descriptor: (JJ)J - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=4, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public void setValue(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public native int nativeNonStaticAddToValue(int); - descriptor: (I)I - flags: (0x0101) ACC_PUBLIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int nativeNonStaticAddToValue_should_be_like_this(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void nativeStillNotSupported_should_be_like_this(); - descriptor: ()V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native byte nativeBytePlus(byte, byte); - descriptor: (BB)B - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkNative.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestNativeSubstitutionClass( - value="TinyFrameworkNative_host" - ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 1, attributes: 4 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$InnerClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 1, attributes: 5 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - final com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses this$0; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; - flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$InnerClass(com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses); - descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> final mandated -} -InnerClasses: - public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 5 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$SubClass extends com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass - super_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - interfaces: 0, fields: 0, methods: 1, attributes: 4 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$SubClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 4, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.class - Compiled from "TinyFrameworkPackageRedirect.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedirect - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedirect(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int foo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkPackageRedirect.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.class - Compiled from "TinyFrameworkRenamedClassCaller.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller - minor version: 0 - major version: 61 - 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 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int foo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkRenamedClassCaller.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/packagetest/A.class - Compiled from "A.java" -public class com.android.hoststubgen.test.tinyframework.packagetest.A - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/packagetest/A - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "A.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/packagetest/sub/A.class - Compiled from "A.java" -public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/packagetest/sub/A - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "A.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C1.class - Compiled from "C1.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C1 - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C1.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C2.class - Compiled from "C2.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C2 - super_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C1 - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C2.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C3.class - Compiled from "C3.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C3 - super_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C2 - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C3.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CA.class - Compiled from "CA.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.CA - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/CA - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "CA.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CB.class - Compiled from "CB.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.CB - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/CB - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "CB.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I1.class - Compiled from "I1.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I1 - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I1.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I2.class - Compiled from "I2.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 extends com.android.hoststubgen.test.tinyframework.subclasstest.I1 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I2 - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I2.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I3.class - Compiled from "I3.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 extends com.android.hoststubgen.test.tinyframework.subclasstest.I2 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I3 - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I3.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IA.class - Compiled from "IA.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/IA - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "IA.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IB.class - Compiled from "IB.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/IB - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "IB.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/unsupported/UnsupportedClass.class - Compiled from "UnsupportedClass.java" -public class com.unsupported.UnsupportedClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/unsupported/UnsupportedClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.unsupported.UnsupportedClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int getValue(); - descriptor: ()I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "UnsupportedClass.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.class - Compiled from "TinyFrameworkToBeRenamed.java" -public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed - minor version: 0 - major version: 61 - 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 - private final int mValue; - descriptor: I - flags: (0x0012) ACC_PRIVATE, ACC_FINAL - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int getValue(); - descriptor: ()I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkToBeRenamed.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-impl-dump.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt index 0f5f7e747a2e..eeec554e954c 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-impl-dump.txt +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt @@ -12,12 +12,12 @@ public interface android.hosttest.annotation.HostSideTestClassLoadHook extends j flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "HostSideTestClassLoadHook.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -39,7 +39,7 @@ public interface android.hosttest.annotation.HostSideTestKeep extends java.lang. SourceFile: "HostSideTestKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -48,13 +48,35 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestNativeSubstitutionClass.class - Compiled from "HostSideTestNativeSubstitutionClass.java" -public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass extends java.lang.annotation.Annotation +## Class: android/hosttest/annotation/HostSideTestRedirect.class + Compiled from "HostSideTestRedirect.java" +public interface android.hosttest.annotation.HostSideTestRedirect extends java.lang.annotation.Annotation minor version: 0 major version: 61 flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestNativeSubstitutionClass + this_class: #x // android/hosttest/annotation/HostSideTestRedirect + super_class: #x // java/lang/Object + interfaces: 1, fields: 0, methods: 0, attributes: 2 +} +SourceFile: "HostSideTestRedirect.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + x: #x(#x=[e#x.#x]) + java.lang.annotation.Target( + value=[Ljava/lang/annotation/ElementType;.METHOD] + ) + x: #x(#x=e#x.#x) + java.lang.annotation.Retention( + value=Ljava/lang/annotation/RetentionPolicy;.CLASS + ) +## Class: android/hosttest/annotation/HostSideTestRedirectionClass.class + Compiled from "HostSideTestRedirectionClass.java" +public interface android.hosttest.annotation.HostSideTestRedirectionClass extends java.lang.annotation.Annotation + minor version: 0 + major version: 61 + flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION + this_class: #x // android/hosttest/annotation/HostSideTestRedirectionClass super_class: #x // java/lang/Object interfaces: 1, fields: 0, methods: 1, attributes: 2 public abstract java.lang.String value(); @@ -62,12 +84,12 @@ public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } -SourceFile: "HostSideTestNativeSubstitutionClass.java" +SourceFile: "HostSideTestRedirectionClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -89,7 +111,7 @@ public interface android.hosttest.annotation.HostSideTestRemove extends java.lan SourceFile: "HostSideTestRemove.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -98,20 +120,20 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestStub.class - Compiled from "HostSideTestStub.java" -public interface android.hosttest.annotation.HostSideTestStub extends java.lang.annotation.Annotation +## Class: android/hosttest/annotation/HostSideTestStaticInitializerKeep.class + Compiled from "HostSideTestStaticInitializerKeep.java" +public interface android.hosttest.annotation.HostSideTestStaticInitializerKeep extends java.lang.annotation.Annotation minor version: 0 major version: 61 flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestStub + this_class: #x // android/hosttest/annotation/HostSideTestStaticInitializerKeep super_class: #x // java/lang/Object interfaces: 1, fields: 0, methods: 0, attributes: 2 } -SourceFile: "HostSideTestStub.java" +SourceFile: "HostSideTestStaticInitializerKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -134,12 +156,12 @@ public interface android.hosttest.annotation.HostSideTestSubstitute extends java flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "HostSideTestSubstitute.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.METHOD] @@ -161,7 +183,7 @@ public interface android.hosttest.annotation.HostSideTestThrow extends java.lang SourceFile: "HostSideTestThrow.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -183,29 +205,7 @@ public interface android.hosttest.annotation.HostSideTestWholeClassKeep extends SourceFile: "HostSideTestWholeClassKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - x: #x(#x=[e#x.#x]) - java.lang.annotation.Target( - value=[Ljava/lang/annotation/ElementType;.TYPE] - ) - x: #x(#x=e#x.#x) - java.lang.annotation.Retention( - value=Ljava/lang/annotation/RetentionPolicy;.CLASS - ) -## Class: android/hosttest/annotation/HostSideTestWholeClassStub.class - Compiled from "HostSideTestWholeClassStub.java" -public interface android.hosttest.annotation.HostSideTestWholeClassStub extends java.lang.annotation.Annotation - minor version: 0 - major version: 61 - flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestWholeClassStub - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "HostSideTestWholeClassStub.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -237,9 +237,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Pro 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int addTwo(int); descriptor: (I)I @@ -256,9 +254,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Pro 0 4 0 a I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl @@ -266,9 +262,7 @@ InnerClasses: SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl ## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub.class Compiled from "IPretendingAidl.java" @@ -293,9 +287,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int addOne(int); descriptor: (I)I @@ -312,19 +304,15 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub 0 4 0 a I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl + public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl ## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl.class Compiled from "IPretendingAidl.java" @@ -342,9 +330,7 @@ InnerClasses: SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestMembers: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy @@ -362,9 +348,7 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.R$Nested(); descriptor: ()V @@ -380,9 +364,7 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/R$Nested; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -400,18 +382,14 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R + public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R SourceFile: "R.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/R ## Class: com/android/hoststubgen/test/tinyframework/R.class Compiled from "R.java" @@ -436,189 +414,31 @@ public class com.android.hoststubgen.test.tinyframework.R 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/R; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R + public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R SourceFile: "R.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestMembers: com/android/hoststubgen/test/tinyframework/R$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.class - Compiled from "TinyFrameworkCallerCheck.java" -class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl - minor version: 0 - major version: 61 - flags: (0x0020) ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 4 - private com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOneKeep(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - x: ldc #x // String getOneKeep - x: ldc #x // String ()I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_1 - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestKeep - - public static int getOneStub(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: iconst_1 - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.class - Compiled from "TinyFrameworkCallerCheck.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations.class + Compiled from "TinyFrameworkAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 5 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_withCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneKeep:()I - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_noCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=1, locals=0, args_size=0 - x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneStub:()I - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.class - Compiled from "TinyFrameworkClassAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 8, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - + interfaces: 0, fields: 1, methods: 7, attributes: 3 public int keep; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -628,12 +448,12 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations + x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V x: return - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations(); + public com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: @@ -642,70 +462,36 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: putfield #x // Field keep:I + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 - x: aload_0 x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I + x: iconst_1 + x: iadd x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; - 0 6 1 value I - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=2, args_size=2 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String addOneInner - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iload_1 - x: iconst_1 - x: iadd - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 15 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; - 15 4 1 value I + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; + 0 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -722,15 +508,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 0 4 1 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddThree(int); descriptor: (I)I @@ -749,364 +533,232 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String unsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Unreachable - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + stack=3, locals=1, args_size=1 + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V + x: new #x // class java/lang/RuntimeException + x: dup + x: ldc #x // String Unreachable + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V x: athrow RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestThrow - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; + public int toBeIgnored(); + descriptor: ()I flags: (0x0001) ACC_PUBLIC Code: stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + x: iconst_0 + x: ireturn RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestIgnore } -SourceFile: "TinyFrameworkClassAnnotations.java" +SourceFile: "TinyFrameworkAnnotations.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x(#x=s#x) android.hosttest.annotation.HostSideTestClassLoadHook( value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.class - Compiled from "TinyFrameworkClassClassWideAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class + Compiled from "TinyFrameworkClassLoadHook.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 8, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int remove; - descriptor: I - flags: (0x0001) ACC_PUBLIC + interfaces: 0, fields: 1, methods: 3, attributes: 3 + public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; + descriptor: Ljava/util/Set; + flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL + Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations(); + private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); descriptor: ()V - flags: (0x0001) ACC_PUBLIC + flags: (0x0002) ACC_PRIVATE Code: - stack=2, locals=1, args_size=1 + stack=1, locals=1, args_size=1 x: aload_0 x: invokespecial #x // Method java/lang/Object."<init>":()V - x: aload_0 - x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC + public static void onClassLoaded(java.lang.Class<?>); + descriptor: (Ljava/lang/Class;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: - stack=2, locals=2, args_size=2 + stack=2, locals=1, args_size=1 + x: getstatic #x // Field sLoadedClasses:Ljava/util/Set; x: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn + x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z + x: pop + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 0 6 1 value I + 0 11 0 clazz Ljava/lang/Class; + LocalVariableTypeTable: + Start Length Slot Name Signature + 0 11 0 clazz Ljava/lang/Class<*>; + Signature: #x // (Ljava/lang/Class<*>;)V RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC + static {}; + descriptor: ()V + flags: (0x0008) ACC_STATIC Code: - stack=2, locals=2, args_size=2 - x: iload_1 - x: iconst_1 - x: iadd - x: ireturn + stack=2, locals=0, args_size=0 + x: new #x // class java/util/HashSet + x: dup + x: invokespecial #x // Method java/util/HashSet."<init>":()V + x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; + x: return LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 0 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +SourceFile: "TinyFrameworkClassLoadHook.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations.class + Compiled from "TinyFrameworkClassWideAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations + super_class: #x // java/lang/Object + interfaces: 0, fields: 1, methods: 4, attributes: 3 + public int keep; + descriptor: I + flags: (0x0001) ACC_PUBLIC + RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public void toBeRemoved(java.lang.String); - descriptor: (Ljava/lang/String;)V + public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations(); + descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: - stack=2, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V - x: athrow + stack=2, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: aload_0 + x: iconst_1 + x: putfield #x // Field keep:I + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 0 8 1 foo Ljava/lang/String; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int addTwo(int); + public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 x: iload_1 - x: iconst_2 + x: iconst_1 x: iadd x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 0 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public static int nativeAddThree(int); + public int addTwo(int); descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC + flags: (0x0001) ACC_PUBLIC Code: - stack=2, locals=1, args_size=1 - x: iload_0 - x: iconst_3 + stack=2, locals=2, args_size=2 + x: iload_1 + x: iconst_2 x: iadd x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 4 0 value I + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; + 0 4 1 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: - stack=1, locals=1, args_size=1 - x: ldc #x // String This value shouldn\'t be seen on the host side. - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassClassWideAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class - Compiled from "TinyFrameworkClassLoadHook.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 - public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; - descriptor: Ljava/util/Set; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void onClassLoaded(java.lang.Class<?>); - descriptor: (Ljava/lang/Class;)V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=2, locals=1, args_size=1 - x: getstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: aload_0 - x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z - x: pop - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 11 0 clazz Ljava/lang/Class; - LocalVariableTypeTable: - Start Length Slot Name Signature - 0 11 0 clazz Ljava/lang/Class<*>; - Signature: #x // (Ljava/lang/Class<*>;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=2, locals=0, args_size=0 - x: new #x // class java/util/HashSet + stack=3, locals=1, args_size=1 + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V + x: new #x // class java/lang/RuntimeException x: dup - x: invokespecial #x // Method java/util/HashSet."<init>":()V - x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: return - LineNumberTable: + x: ldc #x // String Unreachable + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + x: athrow RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestThrow } -SourceFile: "TinyFrameworkClassLoadHook.java" +SourceFile: "TinyFrameworkClassWideAnnotations.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.class Compiled from "TinyFrameworkClassWithInitializerDefault.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault @@ -1121,35 +773,29 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep } SourceFile: "TinyFrameworkClassWithInitializerDefault.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.class Compiled from "TinyFrameworkClassWithInitializerStub.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub @@ -1164,24 +810,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep static {}; descriptor: ()V @@ -1201,21 +843,19 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkClassWithInitializerStub.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x(#x=s#x) android.hosttest.annotation.HostSideTestClassLoadHook( value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.class @@ -1232,43 +872,37 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex GREEN; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex BLUE; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private final java.lang.String mLongName; descriptor: Ljava/lang/String; flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -1278,7 +912,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -1288,9 +922,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1304,9 +936,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex valueOf(java.lang.String); descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1324,9 +954,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 0 10 0 name Ljava/lang/String; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> mandated @@ -1356,12 +984,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC Signature: #x // (Ljava/lang/String;Ljava/lang/String;)V RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep MethodParameters: Name Flags <no name> synthetic @@ -1383,12 +1009,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.lang.String getShortName(); descriptor: ()Ljava/lang/String; @@ -1404,12 +1028,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1434,9 +1056,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -1473,20 +1093,16 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex;>; SourceFile: "TinyFrameworkEnumComplex.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.class Compiled from "TinyFrameworkEnumSimple.java" public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple> @@ -1501,33 +1117,27 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple DOG; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $VALUES; descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; @@ -1541,9 +1151,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple valueOf(java.lang.String); descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; @@ -1561,9 +1169,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS 0 10 0 name Ljava/lang/String; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> mandated @@ -1585,9 +1191,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS Signature: #x // ()V RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> synthetic @@ -1612,9 +1216,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -1639,20 +1241,16 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple;>; SourceFile: "TinyFrameworkEnumSimple.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.class Compiled from "TinyFrameworkExceptionTester.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester @@ -1676,9 +1274,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int testException(); descriptor: ()I @@ -1709,19 +1305,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe 11 11 0 e Ljava/lang/Exception; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkExceptionTester.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.class Compiled from "TinyFrameworkForTextPolicy.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy @@ -1730,22 +1322,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 8, attributes: 2 + interfaces: 0, fields: 1, methods: 15, attributes: 2 public int stub; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -1753,7 +1336,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded + x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V x: return @@ -1767,63 +1350,148 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: aload_0 x: iconst_1 x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I - x: return + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 - x: aload_0 x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I + x: iconst_1 + x: iadd x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - 0 6 1 value I + 0 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + 0 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public java.lang.String toBeIgnoredObj(); + descriptor: ()Ljava/lang/String; + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aconst_null + x: areturn + RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int addOneInner(int); - descriptor: (I)I + public void toBeIgnoredV(); + descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=2, args_size=2 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String addOneInner - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iload_1 - x: iconst_1 - x: iadd - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 15 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - 15 4 1 value I + stack=0, locals=1, args_size=1 + x: return RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public boolean toBeIgnoredZ(); + descriptor: ()Z + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public byte toBeIgnoredB(); + descriptor: ()B + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public char toBeIgnoredC(); + descriptor: ()C + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public short toBeIgnoredS(); + descriptor: ()S + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public int toBeIgnoredI(); + descriptor: ()I + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public float toBeIgnoredF(); + descriptor: ()F + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: fconst_0 + x: freturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public double toBeIgnoredD(); + descriptor: ()D + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: dconst_0 + x: dreturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addTwo(int); descriptor: (I)I @@ -1843,9 +1511,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddThree(int); descriptor: (I)I @@ -1864,57 +1530,29 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String unsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Unreachable - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + stack=3, locals=1, args_size=1 + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V + x: new #x // class java/lang/RuntimeException + x: dup + x: ldc #x // String Unreachable + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V x: athrow RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=1, locals=1, args_size=1 - x: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkForTextPolicy.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested.class Compiled from "TinyFrameworkLambdas.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested @@ -1930,12 +1568,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -1943,12 +1579,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested(); descriptor: ()V @@ -1967,12 +1601,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes 0 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -1988,12 +1620,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -2006,12 +1636,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -2024,9 +1652,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$getSupplier$2(); descriptor: ()Ljava/lang/Integer; @@ -2039,9 +1665,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$static$1(); descriptor: ()Ljava/lang/Integer; @@ -2054,9 +1678,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$new$0(); descriptor: ()Ljava/lang/Integer; @@ -2069,9 +1691,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -2084,7 +1704,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas @@ -2092,12 +1712,10 @@ InnerClasses: SourceFile: "TinyFrameworkLambdas.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep BootstrapMethods: @@ -2137,12 +1755,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -2150,12 +1766,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas(); descriptor: ()V @@ -2174,12 +1788,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas 0 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -2195,12 +1807,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -2213,12 +1823,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -2231,9 +1839,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$getSupplier$2(); descriptor: ()Ljava/lang/Integer; @@ -2246,9 +1852,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$static$1(); descriptor: ()Ljava/lang/Integer; @@ -2261,9 +1865,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$new$0(); descriptor: ()Ljava/lang/Integer; @@ -2276,9 +1878,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -2291,7 +1891,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas @@ -2299,12 +1899,10 @@ InnerClasses: SourceFile: "TinyFrameworkLambdas.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep BootstrapMethods: @@ -2330,6 +1928,184 @@ BootstrapMethods: #x ()Ljava/lang/Integer; NestMembers: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 3, attributes: 4 + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void startThread(java.lang.Thread); + descriptor: (Ljava/lang/Thread;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: iconst_1 + x: invokevirtual #x // Method java/lang/Thread.setDaemon:(Z)V + x: aload_0 + x: invokevirtual #x // Method java/lang/Thread.start:()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 thread Ljava/lang/Thread; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int add(int, int); + descriptor: (II)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=2, args_size=2 + x: iload_0 + x: iload_1 + x: iadd + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 4 0 a I + 0 4 1 b I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +SourceFile: "TinyFrameworkMethodCallReplace.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 4, attributes: 6 + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static boolean nonStaticMethodCallReplaceTester() throws java.lang.Exception; + descriptor: ()Z + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=3, locals=2, args_size=0 + x: new #x // class java/util/concurrent/atomic/AtomicBoolean + x: dup + x: iconst_0 + x: invokespecial #x // Method java/util/concurrent/atomic/AtomicBoolean."<init>":(Z)V + x: astore_0 + x: new #x // class java/lang/Thread + x: dup + x: aload_0 + x: invokedynamic #x, 0 // InvokeDynamic #x:run:(Ljava/util/concurrent/atomic/AtomicBoolean;)Ljava/lang/Runnable; + x: invokespecial #x // Method java/lang/Thread."<init>":(Ljava/lang/Runnable;)V + x: astore_1 + x: aload_1 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.startThread:(Ljava/lang/Thread;)V + x: aload_1 + x: invokevirtual #x // Method java/lang/Thread.join:()V + x: aload_0 + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.get:()Z + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 9 27 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; + 23 13 1 th Ljava/lang/Thread; + Exceptions: + throws java.lang.Exception + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int staticMethodCallReplaceTester(); + descriptor: ()I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: iconst_1 + x: iconst_2 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.add:(II)I + x: ireturn + LineNumberTable: + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + private static void lambda$nonStaticMethodCallReplaceTester$0(java.util.concurrent.atomic.AtomicBoolean); + descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;)V + flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: invokestatic #x // Method java/lang/Thread.currentThread:()Ljava/lang/Thread; + x: invokevirtual #x // Method java/lang/Thread.isDaemon:()Z + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.set:(Z)V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 11 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles +SourceFile: "TinyFrameworkMethodCallReplace.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +BootstrapMethods: + x: #x REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; + Method arguments: + #x ()V + #x REF_invokeStatic com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.lambda$nonStaticMethodCallReplaceTester$0:(Ljava/util/concurrent/atomic/AtomicBoolean;)V + #x ()V +NestMembers: + com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.class Compiled from "TinyFrameworkNative.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative @@ -2338,15 +2114,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 11, attributes: 3 + interfaces: 0, fields: 1, methods: 14, attributes: 3 int value; descriptor: I flags: (0x0000) RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNative(); descriptor: ()V @@ -2362,9 +2136,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddTwo(int); descriptor: (I)I @@ -2378,9 +2150,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public static int nativeAddTwo_should_be_like_this(int); descriptor: (I)I @@ -2396,9 +2169,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 0 5 0 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static long nativeLongPlus(long, long); descriptor: (JJ)J @@ -2413,9 +2184,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public static long nativeLongPlus_should_be_like_this(long, long); descriptor: (JJ)J @@ -2433,9 +2205,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 0 6 2 arg2 J RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public void setValue(int); descriptor: (I)V @@ -2453,9 +2223,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 0 6 1 v I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int nativeNonStaticAddToValue(int); descriptor: (I)I @@ -2470,9 +2238,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public int nativeNonStaticAddToValue_should_be_like_this(int); descriptor: (I)I @@ -2490,38 +2259,35 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 0 6 1 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static void nativeStillNotSupported(); descriptor: ()V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: - stack=4, locals=0, args_size=0 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - x: ldc #x // String nativeStillNotSupported - x: ldc #x // String ()V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Unreachable - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + stack=3, locals=0, args_size=0 + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V + x: new #x // class java/lang/RuntimeException + x: dup + x: ldc #x // String Unreachable + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V x: athrow RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestThrow + public static native void nativeStillKeep(); + descriptor: ()V + flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + public static void nativeStillNotSupported_should_be_like_this(); descriptor: ()V flags: (0x0009) ACC_PUBLIC, ACC_STATIC @@ -2534,9 +2300,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static byte nativeBytePlus(byte, byte); descriptor: (BB)B @@ -2551,21 +2315,53 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public void notNativeRedirected(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.notNativeRedirected:(Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + x: return + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=0, locals=0, args_size=0 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.notNativeStaticRedirected:()V + x: return + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect } SourceFile: "TinyFrameworkNative.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestNativeSubstitutionClass( + android.hosttest.annotation.HostSideTestRedirectionClass( value="TinyFrameworkNative_host" ) ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.class @@ -2576,130 +2372,125 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 5, attributes: 3 + interfaces: 0, fields: 0, methods: 7, attributes: 3 public com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String <init> - x: ldc #x // String ()V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddTwo(int); descriptor: (I)I flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeAddTwo - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iload_0 - x: iconst_2 - x: iadd - x: ireturn + stack=2, locals=1, args_size=1 + x: iload_0 + x: iconst_2 + x: iadd + x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 4 0 arg I + 0 4 0 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static long nativeLongPlus(long, long); descriptor: (JJ)J flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=4, args_size=2 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeLongPlus - x: ldc #x // String (JJ)J - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: lload_0 - x: lload_2 - x: ladd - x: lreturn + x: lload_0 + x: lload_2 + x: ladd + x: lreturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 4 0 arg1 J - 15 4 2 arg2 J + 0 4 0 arg1 J + 0 4 2 arg2 J RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeNonStaticAddToValue(com.android.hoststubgen.test.tinyframework.TinyFrameworkNative, int); descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;I)I flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: - stack=4, locals=2, args_size=2 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeNonStaticAddToValue - x: ldc #x // String (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: getfield #x // Field com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.value:I - x: iload_1 - x: iadd - x: ireturn + stack=2, locals=2, args_size=2 + x: aload_0 + x: getfield #x // Field com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.value:I + x: iload_1 + x: iadd + x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 7 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; - 15 7 1 arg I + 0 7 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + 0 7 1 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static byte nativeBytePlus(byte, byte); descriptor: (BB)B flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: - stack=4, locals=2, args_size=2 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeBytePlus - x: ldc #x // String (BB)B - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iload_0 - x: iload_1 - x: iadd - x: i2b - x: ireturn + stack=2, locals=2, args_size=2 + x: iload_0 + x: iload_1 + x: iadd + x: i2b + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 arg1 B + 0 5 1 arg2 B + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void notNativeRedirected(com.android.hoststubgen.test.tinyframework.TinyFrameworkNative); + descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=0, locals=1, args_size=1 + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 arg1 B - 15 5 1 arg2 B + 0 1 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=0, locals=0, args_size=0 + x: return + LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkNative_host.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestWholeClassKeep @@ -2717,7 +2508,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1(com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses); descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses;)V @@ -2737,7 +2528,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex 0 10 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated @@ -2746,45 +2537,33 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex descriptor: ()Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_1 - x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: iconst_1 + x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokevirtual #x // Method get:()Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokevirtual #x // Method get:()Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 @@ -2793,7 +2572,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2.class Compiled from "TinyFrameworkNestedClasses.java" @@ -2818,51 +2597,39 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$2 ex 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_2 - x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: iconst_2 + x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokevirtual #x // Method get:()Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokevirtual #x // Method get:()Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 @@ -2871,7 +2638,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3.class Compiled from "TinyFrameworkNestedClasses.java" @@ -2887,7 +2654,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3(com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses); descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses;)V @@ -2907,7 +2674,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex 0 10 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated @@ -2916,45 +2683,33 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex descriptor: ()Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_3 - x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: iconst_3 + x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokevirtual #x // Method get:()Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokevirtual #x // Method get:()Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 @@ -2963,7 +2718,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4.class Compiled from "TinyFrameworkNestedClasses.java" @@ -2988,51 +2743,39 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$4 ex 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_4 - x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: iconst_4 + x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokevirtual #x // Method get:()Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokevirtual #x // Method get:()Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 @@ -3041,7 +2784,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3057,9 +2800,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass(int); descriptor: (I)V @@ -3079,18 +2820,14 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 0 10 1 x I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3100,24 +2837,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 1, attributes: 5 + interfaces: 0, fields: 2, methods: 1, attributes: 4 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep final com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses this$0; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$InnerClass(com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses); descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses;)V @@ -3140,24 +2873,17 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 0 15 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated } InnerClasses: - public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3182,51 +2908,39 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$Stat 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: bipush 7 - x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: bipush 7 + x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; + 0 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokevirtual #x // Method get:()Ljava/lang/Integer; - x: areturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: invokevirtual #x // Method get:()Ljava/lang/Integer; + x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; + 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses @@ -3236,7 +2950,50 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass.class + Compiled from "TinyFrameworkNestedClasses.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + super_class: #x // java/lang/Object + interfaces: 0, fields: 1, methods: 1, attributes: 4 + public int value; + descriptor: I + flags: (0x0001) ACC_PUBLIC + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=2, locals=1, args_size=1 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: aload_0 + x: bipush 8 + x: putfield #x // Field value:I + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 11 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass +SourceFile: "TinyFrameworkNestedClasses.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3246,15 +3003,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 5 + interfaces: 0, fields: 1, methods: 2, attributes: 4 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass(); descriptor: ()V @@ -3273,9 +3028,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 0 11 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -3290,22 +3043,16 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3332,19 +3079,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 0 6 1 x I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3361,9 +3104,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -3371,9 +3112,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses(); descriptor: ()V @@ -3395,9 +3134,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 0 17 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -3416,9 +3153,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -3433,9 +3168,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -3450,33 +3183,31 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep NestMembers: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass + com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 @@ -3506,9 +3237,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int foo(int); descriptor: (I)I @@ -3527,19 +3256,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi 0 12 0 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkPackageRedirect.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.class Compiled from "TinyFrameworkRenamedClassCaller.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller @@ -3563,9 +3288,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int foo(int); descriptor: (I)I @@ -3584,19 +3307,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas 0 12 0 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/packagetest/A.class Compiled from "A.java" public class com.android.hoststubgen.test.tinyframework.packagetest.A @@ -3610,9 +3329,7 @@ public class com.android.hoststubgen.test.tinyframework.packagetest.A SourceFile: "A.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/packagetest/sub/A.class Compiled from "A.java" public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A @@ -3626,9 +3343,7 @@ public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A SourceFile: "A.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C1.class Compiled from "C1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -3642,9 +3357,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 SourceFile: "C1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C2.class Compiled from "C2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -3658,9 +3371,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends SourceFile: "C2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C3.class Compiled from "C3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 @@ -3674,9 +3385,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends SourceFile: "C3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CA.class Compiled from "CA.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.CA @@ -3690,9 +3399,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.CA SourceFile: "CA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CB.class Compiled from "CB.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.CB @@ -3706,9 +3413,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.CB SourceFile: "CB.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C1.class Compiled from "Class_C1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C1 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -3722,7 +3427,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C1 ex SourceFile: "Class_C1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C2.class Compiled from "Class_C2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 @@ -3736,7 +3441,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C2 ex SourceFile: "Class_C2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C3.class Compiled from "Class_C3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C3 @@ -3750,7 +3455,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C3 ex SourceFile: "Class_C3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I1.class Compiled from "Class_I1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1 implements com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -3764,7 +3469,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1 im SourceFile: "Class_I1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I1_IA.class Compiled from "Class_I1_IA.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1_IA implements com.android.hoststubgen.test.tinyframework.subclasstest.I1,com.android.hoststubgen.test.tinyframework.subclasstest.IA @@ -3778,7 +3483,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1_IA SourceFile: "Class_I1_IA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I2.class Compiled from "Class_I2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I2 implements com.android.hoststubgen.test.tinyframework.subclasstest.I2 @@ -3792,7 +3497,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I2 im SourceFile: "Class_I2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I3.class Compiled from "Class_I3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I3 implements com.android.hoststubgen.test.tinyframework.subclasstest.I3 @@ -3806,7 +3511,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I3 im SourceFile: "Class_I3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I1.class Compiled from "I1.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -3820,9 +3525,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 SourceFile: "I1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I2.class Compiled from "I2.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 extends com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -3836,9 +3539,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 exte SourceFile: "I2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I3.class Compiled from "I3.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 extends com.android.hoststubgen.test.tinyframework.subclasstest.I2 @@ -3852,9 +3553,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 exte SourceFile: "I3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IA.class Compiled from "IA.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA @@ -3868,9 +3567,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA SourceFile: "IA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IB.class Compiled from "IB.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB @@ -3884,9 +3581,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB SourceFile: "IB.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/supported/UnsupportedClass.class Compiled from "UnsupportedClass.java" public class com.supported.UnsupportedClass @@ -3901,60 +3596,48 @@ public class com.supported.UnsupportedClass flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.supported.UnsupportedClass(int); descriptor: (I)V flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=2, args_size=2 - x: ldc #x // String com/supported/UnsupportedClass - x: ldc #x // String <init> - x: ldc #x // String (I)V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: aload_0 - x: iload_1 - x: putfield #x // Field mValue:I - x: return + stack=2, locals=2, args_size=2 + x: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: aload_0 + x: iload_1 + x: putfield #x // Field mValue:I + x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 10 0 this Lcom/supported/UnsupportedClass; - 15 10 1 value I + 0 10 0 this Lcom/supported/UnsupportedClass; + 0 10 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=1, args_size=1 - x: ldc #x // String com/supported/UnsupportedClass - x: ldc #x // String getValue - x: ldc #x // String ()I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: aload_0 - x: getfield #x // Field mValue:I - x: ireturn + stack=1, locals=1, args_size=1 + x: aload_0 + x: getfield #x // Field mValue:I + x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 15 5 0 this Lcom/supported/UnsupportedClass; + 0 5 0 this Lcom/supported/UnsupportedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "UnsupportedClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestWholeClassKeep @@ -3986,9 +3669,7 @@ public class com.unsupported.UnsupportedClass 0 14 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I @@ -4006,19 +3687,15 @@ public class com.unsupported.UnsupportedClass 0 10 0 this Lcom/unsupported/UnsupportedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "UnsupportedClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.class Compiled from "TinyFrameworkToBeRenamed.java" public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed @@ -4033,9 +3710,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed(int); descriptor: (I)V @@ -4055,9 +3730,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew 0 10 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I @@ -4073,16 +3746,12 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkToBeRenamed.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/12-hoststubgen-test-tiny-framework-host-ext-stub-dump.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/12-hoststubgen-test-tiny-framework-host-ext-stub-dump.txt deleted file mode 100644 index 17ba48c67d98..000000000000 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/12-hoststubgen-test-tiny-framework-host-ext-stub-dump.txt +++ /dev/null @@ -1,2530 +0,0 @@ -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy.class - Compiled from "IPretendingAidl.java" -public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Proxy - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - public com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Proxy(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int addTwo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub.class - Compiled from "IPretendingAidl.java" -public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - public com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int addOne(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl -## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl.class - Compiled from "IPretendingAidl.java" -public interface com.android.hoststubgen.test.tinyframework.IPretendingAidl - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/IPretendingAidl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 4 -} -InnerClasses: - public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl - public static #x= #x of #x; // Proxy=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy of class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub -SourceFile: "IPretendingAidl.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestMembers: - com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub - com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy -## Class: com/android/hoststubgen/test/tinyframework/R$Nested.class - Compiled from "R.java" -public class com.android.hoststubgen.test.tinyframework.R$Nested - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/R$Nested - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 4 - public static int[] ARRAY; - descriptor: [I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.R$Nested(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R -SourceFile: "R.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/R -## Class: com/android/hoststubgen/test/tinyframework/R.class - Compiled from "R.java" -public class com.android.hoststubgen.test.tinyframework.R - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/R - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 1, attributes: 4 - public com.android.hoststubgen.test.tinyframework.R(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R -SourceFile: "R.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestMembers: - com/android/hoststubgen/test/tinyframework/R$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.class - Compiled from "TinyFrameworkCallerCheck.java" -class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl - minor version: 0 - major version: 61 - flags: (0x0020) ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 4 - private com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOneStub(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.class - Compiled from "TinyFrameworkCallerCheck.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 5 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_withCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_noCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.class - Compiled from "TinyFrameworkClassAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 5, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -SourceFile: "TinyFrameworkClassAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestClassLoadHook( - value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" - ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.class - Compiled from "TinyFrameworkClassClassWideAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 8, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int remove; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public void toBeRemoved(java.lang.String); - descriptor: (Ljava/lang/String;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String unsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassClassWideAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class - Compiled from "TinyFrameworkClassLoadHook.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 - public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; - descriptor: Ljava/util/Set; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void onClassLoaded(java.lang.Class<?>); - descriptor: (Ljava/lang/Class;)V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // (Ljava/lang/Class<*>;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassLoadHook.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.class - Compiled from "TinyFrameworkClassWithInitializerDefault.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 0, attributes: 3 - public static boolean sInitialized; - descriptor: Z - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.lang.Object sObject; - descriptor: Ljava/lang/Object; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - -} -SourceFile: "TinyFrameworkClassWithInitializerDefault.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.class - Compiled from "TinyFrameworkClassWithInitializerStub.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 0, attributes: 3 - public static boolean sInitialized; - descriptor: Z - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.lang.Object sObject; - descriptor: Ljava/lang/Object; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - -} -SourceFile: "TinyFrameworkClassWithInitializerStub.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestClassLoadHook( - value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" - ) - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.class - Compiled from "TinyFrameworkEnumComplex.java" -public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex> - minor version: 0 - major version: 61 - flags: (0x4031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex - super_class: #x // java/lang/Enum - interfaces: 0, fields: 4, methods: 7, attributes: 4 - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex RED; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex GREEN; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex BLUE; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $VALUES; - descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex valueOf(java.lang.String); - descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> mandated - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex(java.lang.String, java.lang.String); - descriptor: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=5, args_size=5 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // (Ljava/lang/String;Ljava/lang/String;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - MethodParameters: - Name Flags - <no name> synthetic - <no name> synthetic - <no name> - <no name> - - public java.lang.String getLongName(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.lang.String getShortName(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex;>; -SourceFile: "TinyFrameworkEnumComplex.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.class - Compiled from "TinyFrameworkEnumSimple.java" -public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple> - minor version: 0 - major version: 61 - flags: (0x4031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple - super_class: #x // java/lang/Enum - interfaces: 0, fields: 3, methods: 5, attributes: 4 - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple CAT; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple DOG; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $VALUES; - descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple valueOf(java.lang.String); - descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> mandated - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple(); - descriptor: (Ljava/lang/String;I)V - flags: (0x0002) ACC_PRIVATE - Code: - stack=3, locals=3, args_size=3 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> synthetic - <no name> synthetic - - private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $values(); - descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple;>; -SourceFile: "TinyFrameworkEnumSimple.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.class - Compiled from "TinyFrameworkExceptionTester.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int testException(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkExceptionTester.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.class - Compiled from "TinyFrameworkForTextPolicy.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 5, attributes: 2 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOne(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addTwo(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkForTextPolicy.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested.class - Compiled from "TinyFrameworkLambdas.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 7, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static java.lang.Integer lambda$getSupplier_static$3(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$getSupplier$2(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$static$1(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$new$0(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles -SourceFile: "TinyFrameworkLambdas.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.class - Compiled from "TinyFrameworkLambdas.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 7, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - private static java.lang.Integer lambda$getSupplier_static$3(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$getSupplier$2(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$static$1(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private static java.lang.Integer lambda$new$0(); - descriptor: ()Ljava/lang/Integer; - flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas - public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles -SourceFile: "TinyFrameworkLambdas.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - x: #x() - android.hosttest.annotation.HostSideTestStaticInitializerKeep -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.class - Compiled from "TinyFrameworkNative.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 10, attributes: 3 - int value; - descriptor: I - flags: (0x0000) - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNative(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native int nativeAddTwo(int); - descriptor: (I)I - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddTwo_should_be_like_this(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native long nativeLongPlus(long, long); - descriptor: (JJ)J - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static long nativeLongPlus_should_be_like_this(long, long); - descriptor: (JJ)J - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=4, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public void setValue(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public native int nativeNonStaticAddToValue(int); - descriptor: (I)I - flags: (0x0101) ACC_PUBLIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int nativeNonStaticAddToValue_should_be_like_this(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void nativeStillNotSupported_should_be_like_this(); - descriptor: ()V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static native byte nativeBytePlus(byte, byte); - descriptor: (BB)B - flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkNative.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub - x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestNativeSubstitutionClass( - value="TinyFrameworkNative_host" - ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 1, attributes: 4 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$InnerClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 1, attributes: 5 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - final com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses this$0; - descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; - flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$InnerClass(com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses); - descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - MethodParameters: - Name Flags - <no name> final mandated -} -InnerClasses: - public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 5 - public int value; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$SubClass extends com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$BaseClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass - super_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - interfaces: 0, fields: 0, methods: 1, attributes: 4 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$SubClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.class - Compiled from "TinyFrameworkNestedClasses.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 4, attributes: 5 - public final java.util.function.Supplier<java.lang.Integer> mSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0011) ACC_PUBLIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static final java.util.function.Supplier<java.lang.Integer> sSupplier; - descriptor: Ljava/util/function/Supplier; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.util.function.Supplier<java.lang.Integer> getSupplier(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); - descriptor: ()Ljava/util/function/Supplier; - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=3, locals=0, args_size=0 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses - #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 -SourceFile: "TinyFrameworkNestedClasses.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.class - Compiled from "TinyFrameworkPackageRedirect.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedirect - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedirect(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int foo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkPackageRedirect.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.class - Compiled from "TinyFrameworkRenamedClassCaller.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller - minor version: 0 - major version: 61 - 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 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int foo(int); - descriptor: (I)I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkRenamedClassCaller.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/packagetest/A.class - Compiled from "A.java" -public class com.android.hoststubgen.test.tinyframework.packagetest.A - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/packagetest/A - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "A.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/packagetest/sub/A.class - Compiled from "A.java" -public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/packagetest/sub/A - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "A.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C1.class - Compiled from "C1.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C1 - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C1.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C2.class - Compiled from "C2.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C2 - super_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C1 - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C2.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C3.class - Compiled from "C3.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C3 - super_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/C2 - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "C3.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CA.class - Compiled from "CA.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.CA - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/CA - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "CA.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CB.class - Compiled from "CB.java" -public class com.android.hoststubgen.test.tinyframework.subclasstest.CB - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/CB - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "CB.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I1.class - Compiled from "I1.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I1 - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I1.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I2.class - Compiled from "I2.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 extends com.android.hoststubgen.test.tinyframework.subclasstest.I1 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I2 - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I2.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I3.class - Compiled from "I3.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 extends com.android.hoststubgen.test.tinyframework.subclasstest.I2 - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/I3 - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "I3.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IA.class - Compiled from "IA.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/IA - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "IA.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IB.class - Compiled from "IB.java" -public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB - minor version: 0 - major version: 61 - flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT - this_class: #x // com/android/hoststubgen/test/tinyframework/subclasstest/IB - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 0, attributes: 2 -} -SourceFile: "IB.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -## Class: com/unsupported/UnsupportedClass.class - Compiled from "UnsupportedClass.java" -public class com.unsupported.UnsupportedClass - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/unsupported/UnsupportedClass - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 - public com.unsupported.UnsupportedClass(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int getValue(); - descriptor: ()I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "UnsupportedClass.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.class - Compiled from "TinyFrameworkToBeRenamed.java" -public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed - minor version: 0 - major version: 61 - 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 - private final int mValue; - descriptor: I - flags: (0x0012) ACC_PRIVATE, ACC_FINAL - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed(int); - descriptor: (I)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=2, args_size=2 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int getValue(); - descriptor: ()I - flags: (0x0001) ACC_PUBLIC - Code: - stack=3, locals=1, args_size=1 - x: new #x // class java/lang/RuntimeException - x: dup - x: ldc #x // String Stub! - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V - x: athrow - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkToBeRenamed.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-impl-dump.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt index 3beea643823a..0f8af92dc486 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-impl-dump.txt +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt @@ -22,12 +22,12 @@ public interface android.hosttest.annotation.HostSideTestClassLoadHook extends j flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "HostSideTestClassLoadHook.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -58,7 +58,7 @@ public interface android.hosttest.annotation.HostSideTestKeep extends java.lang. SourceFile: "HostSideTestKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -67,13 +67,44 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestNativeSubstitutionClass.class - Compiled from "HostSideTestNativeSubstitutionClass.java" -public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass extends java.lang.annotation.Annotation +## Class: android/hosttest/annotation/HostSideTestRedirect.class + Compiled from "HostSideTestRedirect.java" +public interface android.hosttest.annotation.HostSideTestRedirect extends java.lang.annotation.Annotation minor version: 0 major version: 61 flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestNativeSubstitutionClass + this_class: #x // android/hosttest/annotation/HostSideTestRedirect + super_class: #x // java/lang/Object + interfaces: 1, fields: 0, methods: 1, attributes: 2 + private static {}; + descriptor: ()V + flags: (0x000a) ACC_PRIVATE, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: ldc #x // class android/hosttest/annotation/HostSideTestRedirect + 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 +} +SourceFile: "HostSideTestRedirect.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + x: #x(#x=[e#x.#x]) + java.lang.annotation.Target( + value=[Ljava/lang/annotation/ElementType;.METHOD] + ) + x: #x(#x=e#x.#x) + java.lang.annotation.Retention( + value=Ljava/lang/annotation/RetentionPolicy;.CLASS + ) +## Class: android/hosttest/annotation/HostSideTestRedirectionClass.class + Compiled from "HostSideTestRedirectionClass.java" +public interface android.hosttest.annotation.HostSideTestRedirectionClass extends java.lang.annotation.Annotation + minor version: 0 + major version: 61 + flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION + this_class: #x // android/hosttest/annotation/HostSideTestRedirectionClass super_class: #x // java/lang/Object interfaces: 1, fields: 0, methods: 2, attributes: 2 private static {}; @@ -81,7 +112,7 @@ public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class android/hosttest/annotation/HostSideTestNativeSubstitutionClass + x: ldc #x // class android/hosttest/annotation/HostSideTestRedirectionClass 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 @@ -91,12 +122,12 @@ public interface android.hosttest.annotation.HostSideTestNativeSubstitutionClass flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } -SourceFile: "HostSideTestNativeSubstitutionClass.java" +SourceFile: "HostSideTestRedirectionClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -127,7 +158,7 @@ public interface android.hosttest.annotation.HostSideTestRemove extends java.lan SourceFile: "HostSideTestRemove.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -136,13 +167,13 @@ RuntimeVisibleAnnotations: java.lang.annotation.Retention( value=Ljava/lang/annotation/RetentionPolicy;.CLASS ) -## Class: android/hosttest/annotation/HostSideTestStub.class - Compiled from "HostSideTestStub.java" -public interface android.hosttest.annotation.HostSideTestStub extends java.lang.annotation.Annotation +## Class: android/hosttest/annotation/HostSideTestStaticInitializerKeep.class + Compiled from "HostSideTestStaticInitializerKeep.java" +public interface android.hosttest.annotation.HostSideTestStaticInitializerKeep extends java.lang.annotation.Annotation minor version: 0 major version: 61 flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestStub + this_class: #x // android/hosttest/annotation/HostSideTestStaticInitializerKeep super_class: #x // java/lang/Object interfaces: 1, fields: 0, methods: 1, attributes: 2 private static {}; @@ -150,15 +181,15 @@ public interface android.hosttest.annotation.HostSideTestStub extends java.lang. flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class android/hosttest/annotation/HostSideTestStub + x: ldc #x // class android/hosttest/annotation/HostSideTestStaticInitializerKeep 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 } -SourceFile: "HostSideTestStub.java" +SourceFile: "HostSideTestStaticInitializerKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x,e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE,Ljava/lang/annotation/ElementType;.FIELD,Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -191,12 +222,12 @@ public interface android.hosttest.annotation.HostSideTestSubstitute extends java flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "HostSideTestSubstitute.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.METHOD] @@ -227,7 +258,7 @@ public interface android.hosttest.annotation.HostSideTestThrow extends java.lang SourceFile: "HostSideTestThrow.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x,e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.METHOD,Ljava/lang/annotation/ElementType;.CONSTRUCTOR] @@ -258,38 +289,7 @@ public interface android.hosttest.annotation.HostSideTestWholeClassKeep extends SourceFile: "HostSideTestWholeClassKeep.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - x: #x(#x=[e#x.#x]) - java.lang.annotation.Target( - value=[Ljava/lang/annotation/ElementType;.TYPE] - ) - x: #x(#x=e#x.#x) - java.lang.annotation.Retention( - value=Ljava/lang/annotation/RetentionPolicy;.CLASS - ) -## Class: android/hosttest/annotation/HostSideTestWholeClassStub.class - Compiled from "HostSideTestWholeClassStub.java" -public interface android.hosttest.annotation.HostSideTestWholeClassStub extends java.lang.annotation.Annotation - minor version: 0 - major version: 61 - flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION - this_class: #x // android/hosttest/annotation/HostSideTestWholeClassStub - super_class: #x // java/lang/Object - interfaces: 1, fields: 0, methods: 1, attributes: 2 - private static {}; - descriptor: ()V - flags: (0x000a) ACC_PRIVATE, ACC_STATIC - Code: - stack=2, locals=0, args_size=0 - x: ldc #x // class android/hosttest/annotation/HostSideTestWholeClassStub - 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 -} -SourceFile: "HostSideTestWholeClassStub.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep x: #x(#x=[e#x.#x]) java.lang.annotation.Target( value=[Ljava/lang/annotation/ElementType;.TYPE] @@ -313,7 +313,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Pro Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -336,9 +336,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Pro 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int addTwo(int); descriptor: (I)I @@ -360,9 +358,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub$Pro 11 4 0 a I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl @@ -370,9 +366,7 @@ InnerClasses: SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl ## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub.class Compiled from "IPretendingAidl.java" @@ -389,7 +383,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -412,9 +406,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int addOne(int); descriptor: (I)I @@ -436,9 +428,7 @@ public class com.android.hoststubgen.test.tinyframework.IPretendingAidl$Stub 11 4 0 a I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Stub=class com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub of class com/android/hoststubgen/test/tinyframework/IPretendingAidl @@ -446,9 +436,7 @@ InnerClasses: SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/IPretendingAidl ## Class: com/android/hoststubgen/test/tinyframework/IPretendingAidl.class Compiled from "IPretendingAidl.java" @@ -465,7 +453,7 @@ public interface com.android.hoststubgen.test.tinyframework.IPretendingAidl Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/IPretendingAidl - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } @@ -475,9 +463,7 @@ InnerClasses: SourceFile: "IPretendingAidl.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestMembers: com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub com/android/hoststubgen/test/tinyframework/IPretendingAidl$Stub$Proxy @@ -495,9 +481,7 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.R$Nested(); descriptor: ()V @@ -518,9 +502,7 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/R$Nested; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -546,18 +528,14 @@ public class com.android.hoststubgen.test.tinyframework.R$Nested LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: - public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R + public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R SourceFile: "R.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/R ## Class: com/android/hoststubgen/test/tinyframework/R.class Compiled from "R.java" @@ -574,7 +552,7 @@ public class com.android.hoststubgen.test.tinyframework.R Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/R - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -597,239 +575,31 @@ public class com.android.hoststubgen.test.tinyframework.R 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/R; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/R$Nested of class com/android/hoststubgen/test/tinyframework/R SourceFile: "R.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestMembers: com/android/hoststubgen/test/tinyframework/R$Nested -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.class - Compiled from "TinyFrameworkCallerCheck.java" -class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl - minor version: 0 - major version: 61 - flags: (0x0020) ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 4, attributes: 4 - private static {}; - descriptor: ()V - flags: (0x000a) ACC_PRIVATE, ACC_STATIC - Code: - stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - 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 - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck$Impl(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - x: ldc #x // String <init> - x: ldc #x // String ()V - 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: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOneKeep(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - x: ldc #x // String getOneKeep - x: ldc #x // String ()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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - x: ldc #x // String getOneKeep - x: ldc #x // String ()I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iconst_1 - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestKeep - - public static int getOneStub(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl - x: ldc #x // String getOneStub - x: ldc #x // String ()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: iconst_1 - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.class - Compiled from "TinyFrameworkCallerCheck.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations.class + Compiled from "TinyFrameworkAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 4, attributes: 5 - private static {}; - descriptor: ()V - flags: (0x000a) ACC_PRIVATE, ACC_STATIC - Code: - stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - 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 - - public com.android.hoststubgen.test.tinyframework.TinyFrameworkCallerCheck(); - descriptor: ()V - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - x: ldc #x // String <init> - x: ldc #x // String ()V - 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: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_withCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - x: ldc #x // String getOne_withCheck - x: ldc #x // String ()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: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneKeep:()I - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int getOne_noCheck(); - descriptor: ()I - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck - x: ldc #x // String getOne_noCheck - x: ldc #x // String ()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: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl.getOneStub:()I - x: ireturn - LineNumberTable: - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -InnerClasses: - private static #x= #x of #x; // Impl=class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl of class com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck -SourceFile: "TinyFrameworkCallerCheck.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -NestMembers: - com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck$Impl -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.class - Compiled from "TinyFrameworkClassAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 8, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - + interfaces: 0, fields: 1, methods: 7, attributes: 3 public int keep; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -839,20 +609,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations + 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: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V x: return - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnotations(); + public com.android.hoststubgen.test.tinyframework.TinyFrameworkAnnotations(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String <init> x: ldc #x // String ()V x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -861,68 +631,29 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 x: putfield #x // Field keep:I x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 11 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String addOne 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: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; - 11 6 1 value I - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestStub - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String addOneInner - 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String addOneInner - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iload_1 x: iconst_1 x: iadd @@ -930,11 +661,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; - 26 4 1 value I + 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; + 11 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -944,7 +675,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String addTwo x: ldc #x // String (I)I x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -956,22 +687,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations; 11 4 1 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddThree(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/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String nativeAddThree x: ldc #x // String (I)I x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -988,26 +717,18 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations x: ldc #x // String unsupportedMethod x: ldc #x // String ()Ljava/lang/String; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String unsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V x: new #x // class java/lang/RuntimeException x: dup @@ -1018,102 +739,170 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassAnnota x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestThrow - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; + public int toBeIgnored(); + descriptor: ()I flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations - x: ldc #x // String visibleButUsesUnsupportedMethod - x: ldc #x // String ()Ljava/lang/String; + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations + x: ldc #x // String toBeIgnored + x: ldc #x // String ()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: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations; + x: iconst_0 + x: ireturn RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestIgnore } -SourceFile: "TinyFrameworkClassAnnotations.java" +SourceFile: "TinyFrameworkAnnotations.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x(#x=s#x) android.hosttest.annotation.HostSideTestClassLoadHook( value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.class - Compiled from "TinyFrameworkClassClassWideAnnotations.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class + Compiled from "TinyFrameworkClassLoadHook.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook minor version: 0 major version: 61 flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook super_class: #x // java/lang/Object - interfaces: 0, fields: 3, methods: 9, attributes: 3 - public int stub; - descriptor: I - flags: (0x0001) ACC_PUBLIC + interfaces: 0, fields: 1, methods: 3, attributes: 3 + public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; + descriptor: Ljava/util/Set; + flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL + Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC + private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); + descriptor: ()V + flags: (0x0002) ACC_PRIVATE + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook + x: ldc #x // String <init> + x: ldc #x // String ()V + 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: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void onClassLoaded(java.lang.Class<?>); + descriptor: (Ljava/lang/Class;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook + x: ldc #x // String onClassLoaded + x: ldc #x // String (Ljava/lang/Class;)V + 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: getstatic #x // Field sLoadedClasses:Ljava/util/Set; + x: aload_0 + x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z + x: pop + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 11 0 clazz Ljava/lang/Class; + LocalVariableTypeTable: + Start Length Slot Name Signature + 11 11 0 clazz Ljava/lang/Class<*>; + Signature: #x // (Ljava/lang/Class<*>;)V + RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int remove; + static {}; + descriptor: ()V + flags: (0x0008) ACC_STATIC + Code: + stack=4, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook + x: ldc #x // String <clinit> + x: ldc #x // String ()V + 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: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook + 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: new #x // class java/util/HashSet + x: dup + x: invokespecial #x // Method java/util/HashSet."<init>":()V + x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; + x: return + LineNumberTable: + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +SourceFile: "TinyFrameworkClassLoadHook.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations.class + Compiled from "TinyFrameworkClassWideAnnotations.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations + super_class: #x // java/lang/Object + interfaces: 0, fields: 1, methods: 5, attributes: 3 + public int keep; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations + 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 - public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassWideAnnotations(); + public com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWideAnnotations(); descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations x: ldc #x // String <init> x: ldc #x // String ()V x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -1122,56 +911,26 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 x: iconst_1 - x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 x: putfield #x // Field keep:I x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 11 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addOne(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations x: ldc #x // String addOne 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: aload_0 - x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 11 6 1 value I - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int addOneInner(int); - descriptor: (I)I - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - x: ldc #x // String addOneInner - 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_1 x: iconst_1 x: iadd @@ -1179,45 +938,18 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 11 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public void toBeRemoved(java.lang.String); - descriptor: (Ljava/lang/String;)V - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - x: ldc #x // String toBeRemoved - x: ldc #x // String (Ljava/lang/String;)V - 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: new #x // class java/lang/RuntimeException - x: dup - x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V - x: athrow - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 8 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - 11 8 1 foo Ljava/lang/String; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addTwo(int); descriptor: (I)I flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations x: ldc #x // String addTwo x: ldc #x // String (I)I x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -1229,201 +961,46 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassClassW LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; + 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations; 11 4 1 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static int nativeAddThree(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/TinyFrameworkClassClassWideAnnotations - x: ldc #x // String nativeAddThree - 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: iconst_3 - x: iadd - x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 4 0 value I - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations x: ldc #x // String unsupportedMethod x: ldc #x // String ()Ljava/lang/String; 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: ldc #x // String This value shouldn\'t be seen on the host side. - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 3 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations - x: ldc #x // String visibleButUsesUnsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - 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: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -} -SourceFile: "TinyFrameworkClassClassWideAnnotations.java" -RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub -## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.class - Compiled from "TinyFrameworkClassLoadHook.java" -public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook - minor version: 0 - major version: 61 - flags: (0x0021) ACC_PUBLIC, ACC_SUPER - this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 - public static final java.util.Set<java.lang.Class<?>> sLoadedClasses; - descriptor: Ljava/util/Set; - flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL - Signature: #x // Ljava/util/Set<Ljava/lang/Class<*>;>; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - private com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook(); - descriptor: ()V - flags: (0x0002) ACC_PRIVATE - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - x: ldc #x // String <init> - x: ldc #x // String ()V - 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: aload_0 - x: invokespecial #x // Method java/lang/Object."<init>":()V - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public static void onClassLoaded(java.lang.Class<?>); - descriptor: (Ljava/lang/Class;)V - flags: (0x0009) ACC_PUBLIC, ACC_STATIC - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - x: ldc #x // String onClassLoaded - x: ldc #x // String (Ljava/lang/Class;)V - 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: getstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: aload_0 - x: invokeinterface #x, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z - x: pop - x: return - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 11 0 clazz Ljava/lang/Class; - LocalVariableTypeTable: - Start Length Slot Name Signature - 11 11 0 clazz Ljava/lang/Class<*>; - Signature: #x // (Ljava/lang/Class<*>;)V - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - static {}; - descriptor: ()V - flags: (0x0008) ACC_STATIC - Code: - stack=4, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - x: ldc #x // String <clinit> - x: ldc #x // String ()V - 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: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook - 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: new #x // class java/util/HashSet + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V + x: new #x // class java/lang/RuntimeException x: dup - x: invokespecial #x // Method java/util/HashSet."<init>":()V - x: putstatic #x // Field sLoadedClasses:Ljava/util/Set; - x: return - LineNumberTable: + x: ldc #x // String Unreachable + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + x: athrow RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestThrow } -SourceFile: "TinyFrameworkClassLoadHook.java" +SourceFile: "TinyFrameworkClassWideAnnotations.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.class Compiled from "TinyFrameworkClassWithInitializerDefault.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerDefault @@ -1438,35 +1015,29 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep } SourceFile: "TinyFrameworkClassWithInitializerDefault.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.class Compiled from "TinyFrameworkClassWithInitializerStub.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithInitializerStub @@ -1481,24 +1052,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.lang.Object sObject; descriptor: Ljava/lang/Object; flags: (0x0009) ACC_PUBLIC, ACC_STATIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep static {}; descriptor: ()V @@ -1526,21 +1093,19 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkClassWithIn LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkClassWithInitializerStub.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x(#x=s#x) android.hosttest.annotation.HostSideTestClassLoadHook( value="com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded" ) x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.class @@ -1557,43 +1122,37 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex GREEN; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex BLUE; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private final java.lang.String mLongName; descriptor: Ljava/lang/String; flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -1603,7 +1162,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestKeep @@ -1613,9 +1172,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1634,9 +1191,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex valueOf(java.lang.String); descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1659,9 +1214,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 11 10 0 name Ljava/lang/String; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> mandated @@ -1696,12 +1249,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC Signature: #x // (Ljava/lang/String;Ljava/lang/String;)V RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep MethodParameters: Name Flags <no name> synthetic @@ -1728,12 +1279,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.lang.String getShortName(); descriptor: ()Ljava/lang/String; @@ -1754,12 +1303,10 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumComplex[] $values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1789,9 +1336,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -1826,7 +1371,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC x: dup x: ldc #x // String BLUE x: iconst_2 - x: ldc #x // String Blue + x: ldc #x // String Blue x: ldc #x // String B x: invokespecial #x // Method "<init>":(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V x: putstatic #x // Field BLUE:Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex; @@ -1836,20 +1381,16 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumC LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex;>; SourceFile: "TinyFrameworkEnumComplex.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.class Compiled from "TinyFrameworkEnumSimple.java" public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple extends java.lang.Enum<com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple> @@ -1864,33 +1405,27 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple DOG; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static final com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] $VALUES; descriptor: [Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple[] values(); descriptor: ()[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; @@ -1909,9 +1444,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumSimple valueOf(java.lang.String); descriptor: (Ljava/lang/String;)Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple; @@ -1934,9 +1467,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS 11 10 0 name Ljava/lang/String; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> mandated @@ -1963,9 +1494,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS Signature: #x // ()V RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> synthetic @@ -1995,9 +1524,7 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -2030,20 +1557,16 @@ public final class com.android.hoststubgen.test.tinyframework.TinyFrameworkEnumS LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } Signature: #x // Ljava/lang/Enum<Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple;>; SourceFile: "TinyFrameworkEnumSimple.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.class Compiled from "TinyFrameworkExceptionTester.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTester @@ -2059,7 +1582,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -2082,9 +1605,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int testException(); descriptor: ()I @@ -2120,19 +1641,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkExceptionTe 22 11 0 e Ljava/lang/Exception; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkExceptionTester.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.class Compiled from "TinyFrameworkForTextPolicy.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPolicy @@ -2141,22 +1658,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 8, attributes: 2 + interfaces: 0, fields: 1, methods: 15, attributes: 2 public int stub; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public int keep; - descriptor: I - flags: (0x0001) ACC_PUBLIC - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -2164,7 +1672,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy x: ldc #x // String com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded @@ -2186,19 +1694,14 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: aload_0 x: iconst_1 x: putfield #x // Field stub:I - x: aload_0 - x: iconst_2 - x: putfield #x // Field keep:I x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 15 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + 11 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addOne(int); descriptor: (I)I @@ -2210,49 +1713,179 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli 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: aload_0 x: iload_1 - x: invokevirtual #x // Method addOneInner:(I)I + x: iconst_1 + x: iadd x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - 11 6 1 value I + 11 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; + 11 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public java.lang.String toBeIgnoredObj(); + descriptor: ()Ljava/lang/String; + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredObj + x: ldc #x // String ()Ljava/lang/String; + 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: aconst_null + x: areturn + RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep - public int addOneInner(int); - descriptor: (I)I + public void toBeIgnoredV(); + descriptor: ()V flags: (0x0001) ACC_PUBLIC Code: - stack=4, locals=2, args_size=2 + stack=4, locals=1, args_size=1 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String addOneInner - x: ldc #x // String (I)I + x: ldc #x // String toBeIgnoredV + x: ldc #x // String ()V 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String addOneInner - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V - x: iload_1 - x: iconst_1 - x: iadd + x: return + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public boolean toBeIgnoredZ(); + descriptor: ()Z + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredZ + x: ldc #x // String ()Z + 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_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public byte toBeIgnoredB(); + descriptor: ()B + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredB + x: ldc #x // String ()B + 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_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public char toBeIgnoredC(); + descriptor: ()C + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredC + x: ldc #x // String ()C + 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_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public short toBeIgnoredS(); + descriptor: ()S + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredS + x: ldc #x // String ()S + 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_0 x: ireturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 26 4 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - 26 4 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public int toBeIgnoredI(); + descriptor: ()I + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredI + x: ldc #x // String ()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: iconst_0 + x: ireturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public float toBeIgnoredF(); + descriptor: ()F + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredF + x: ldc #x // String ()F + 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: fconst_0 + x: freturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public double toBeIgnoredD(); + descriptor: ()D + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy + x: ldc #x // String toBeIgnoredD + x: ldc #x // String ()D + 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: dconst_0 + x: dreturn + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsIgnore + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int addTwo(int); descriptor: (I)I @@ -2277,9 +1910,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddThree(int); descriptor: (I)I @@ -2303,9 +1934,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.String unsupportedMethod(); descriptor: ()Ljava/lang/String; @@ -2317,12 +1946,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: ldc #x // String ()Ljava/lang/String; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String unsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V x: new #x // class java/lang/RuntimeException x: dup @@ -2333,37 +1956,12 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkForTextPoli x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl - - public java.lang.String visibleButUsesUnsupportedMethod(); - descriptor: ()Ljava/lang/String; - flags: (0x0001) ACC_PUBLIC - Code: - stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy - x: ldc #x // String visibleButUsesUnsupportedMethod - x: ldc #x // String ()Ljava/lang/String; - 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: aload_0 - x: invokevirtual #x // Method unsupportedMethod:()Ljava/lang/String; - x: areturn - LineNumberTable: - LocalVariableTable: - Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy; - RuntimeVisibleAnnotations: - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkForTextPolicy.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested.class Compiled from "TinyFrameworkLambdas.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested @@ -2379,12 +1977,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -2392,12 +1988,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nested(); descriptor: ()V @@ -2421,12 +2015,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes 11 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -2447,12 +2039,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -2470,12 +2060,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -2493,9 +2081,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$getSupplier$2(); descriptor: ()Ljava/lang/Integer; @@ -2513,9 +2099,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$static$1(); descriptor: ()Ljava/lang/Integer; @@ -2533,9 +2117,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$new$0(); descriptor: ()Ljava/lang/Integer; @@ -2553,9 +2135,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -2571,12 +2151,12 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas$Nes 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: invokedynamic #x, 0 // InvokeDynamic #x:get:()Ljava/util/function/Supplier; - x: putstatic #x // Field sSupplier:Ljava/util/function/Supplier; + x: putstatic #x // Field sSupplier:Ljava/util/function/Supplier; x: return LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas @@ -2584,12 +2164,10 @@ InnerClasses: SourceFile: "TinyFrameworkLambdas.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep BootstrapMethods: @@ -2629,12 +2207,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -2642,12 +2218,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas(); descriptor: ()V @@ -2671,12 +2245,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas 11 14 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -2697,12 +2269,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -2720,12 +2290,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep private static java.lang.Integer lambda$getSupplier_static$3(); descriptor: ()Ljava/lang/Integer; @@ -2743,9 +2311,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$getSupplier$2(); descriptor: ()Ljava/lang/Integer; @@ -2763,9 +2329,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$static$1(); descriptor: ()Ljava/lang/Integer; @@ -2783,9 +2347,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static java.lang.Integer lambda$new$0(); descriptor: ()Ljava/lang/Integer; @@ -2803,9 +2365,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -2821,12 +2381,12 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkLambdas 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: invokedynamic #x, 0 // InvokeDynamic #x:get:()Ljava/util/function/Supplier; - x: putstatic #x // Field sSupplier:Ljava/util/function/Supplier; + x: putstatic #x // Field sSupplier:Ljava/util/function/Supplier; x: return LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // Nested=class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested of class com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas @@ -2834,12 +2394,10 @@ InnerClasses: SourceFile: "TinyFrameworkLambdas.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestStub + android.hosttest.annotation.HostSideTestKeep x: #x() android.hosttest.annotation.HostSideTestStaticInitializerKeep BootstrapMethods: @@ -2865,6 +2423,239 @@ BootstrapMethods: #x ()Ljava/lang/Integer; NestMembers: com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas$Nested +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 4, attributes: 4 + private static {}; + descriptor: ()V + flags: (0x000a) ACC_PRIVATE, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + 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 + + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + x: ldc #x // String <init> + x: ldc #x // String ()V + 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: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void startThread(java.lang.Thread); + descriptor: (Ljava/lang/Thread;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + x: ldc #x // String startThread + x: ldc #x // String (Ljava/lang/Thread;)V + 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: aload_0 + x: iconst_1 + x: invokevirtual #x // Method java/lang/Thread.setDaemon:(Z)V + x: aload_0 + x: invokevirtual #x // Method java/lang/Thread.start:()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 10 0 thread Ljava/lang/Thread; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int add(int, int); + descriptor: (II)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=2, args_size=2 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo + x: ldc #x // String add + x: ldc #x // String (II)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: iload_1 + x: iadd + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 4 0 a I + 11 4 1 b I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +SourceFile: "TinyFrameworkMethodCallReplace.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.class + Compiled from "TinyFrameworkMethodCallReplace.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + super_class: #x // java/lang/Object + interfaces: 0, fields: 0, methods: 5, attributes: 6 + private static {}; + descriptor: ()V + flags: (0x000a) ACC_PRIVATE, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + 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 + + public com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + x: ldc #x // String <init> + x: ldc #x // String ()V + 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: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static boolean nonStaticMethodCallReplaceTester() throws java.lang.Exception; + descriptor: ()Z + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=2, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + x: ldc #x // String nonStaticMethodCallReplaceTester + x: ldc #x // String ()Z + 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: new #x // class java/util/concurrent/atomic/AtomicBoolean + x: dup + x: iconst_0 + x: invokespecial #x // Method java/util/concurrent/atomic/AtomicBoolean."<init>":(Z)V + x: astore_0 + x: new #x // class java/lang/Thread + x: dup + x: aload_0 + x: invokedynamic #x, 0 // InvokeDynamic #x:run:(Ljava/util/concurrent/atomic/AtomicBoolean;)Ljava/lang/Runnable; + x: invokespecial #x // Method java/lang/Thread."<init>":(Ljava/lang/Runnable;)V + x: astore_1 + x: aload_1 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.startThread:(Ljava/lang/Thread;)V + x: aload_1 + x: invokevirtual #x // Method java/lang/Thread.join:()V + x: aload_0 + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.get:()Z + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 20 27 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; + 34 13 1 th Ljava/lang/Thread; + Exceptions: + throws java.lang.Exception + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int staticMethodCallReplaceTester(); + descriptor: ()I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + x: ldc #x // String staticMethodCallReplaceTester + x: ldc #x // String ()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: iconst_1 + x: iconst_2 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo.add:(II)I + x: ireturn + LineNumberTable: + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + private static void lambda$nonStaticMethodCallReplaceTester$0(java.util.concurrent.atomic.AtomicBoolean); + descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;)V + flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + x: ldc #x // String lambda$nonStaticMethodCallReplaceTester$0 + x: ldc #x // String (Ljava/util/concurrent/atomic/AtomicBoolean;)V + 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: aload_0 + x: invokestatic #x // Method java/lang/Thread.currentThread:()Ljava/lang/Thread; + x: invokevirtual #x // Method java/lang/Thread.isDaemon:()Z + x: invokevirtual #x // Method java/util/concurrent/atomic/AtomicBoolean.set:(Z)V + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 11 0 ab Ljava/util/concurrent/atomic/AtomicBoolean; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // ReplaceTo=class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo of class com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace + public static final #x= #x of #x; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles +SourceFile: "TinyFrameworkMethodCallReplace.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestWholeClassKeep +BootstrapMethods: + x: #x REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; + Method arguments: + #x ()V + #x REF_invokeStatic com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.lambda$nonStaticMethodCallReplaceTester$0:(Ljava/util/concurrent/atomic/AtomicBoolean;)V + #x ()V +NestMembers: + com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace$ReplaceTo ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.class Compiled from "TinyFrameworkNative.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative @@ -2873,15 +2664,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 12, attributes: 3 + interfaces: 0, fields: 1, methods: 15, attributes: 3 int value; descriptor: I flags: (0x0000) RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -2889,7 +2678,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -2912,9 +2701,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddTwo(int); descriptor: (I)I @@ -2933,9 +2720,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public static int nativeAddTwo_should_be_like_this(int); descriptor: (I)I @@ -2956,9 +2744,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 11 5 0 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static long nativeLongPlus(long, long); descriptor: (JJ)J @@ -2978,9 +2764,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public static long nativeLongPlus_should_be_like_this(long, long); descriptor: (JJ)J @@ -3003,9 +2790,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 11 6 2 arg2 J RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public void setValue(int); descriptor: (I)V @@ -3028,9 +2813,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 11 6 1 v I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int nativeNonStaticAddToValue(int); descriptor: (I)I @@ -3050,9 +2833,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect public int nativeNonStaticAddToValue_should_be_like_this(int); descriptor: (I)I @@ -3075,9 +2859,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative 11 6 1 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static void nativeStillNotSupported(); descriptor: ()V @@ -3089,49 +2871,46 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative x: ldc #x // String ()V 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - x: ldc #x // String nativeStillNotSupported - x: ldc #x // String ()V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onThrowMethodCalled:()V x: new #x // class java/lang/RuntimeException x: dup x: ldc #x // String Unreachable - x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V + x: invokespecial #x // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V x: athrow RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsThrow x: #x() - com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestThrow + public static native void nativeStillKeep(); + descriptor: ()V + flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + public static void nativeStillNotSupported_should_be_like_this(); descriptor: ()V flags: (0x0009) ACC_PUBLIC, ACC_STATIC Code: stack=4, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - x: ldc #x // String nativeStillNotSupported_should_be_like_this + x: ldc #x // String nativeStillNotSupported_should_be_like_this x: ldc #x // String ()V 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: new #x // class java/lang/RuntimeException x: dup - x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V + x: invokespecial #x // Method java/lang/RuntimeException."<init>":()V x: athrow LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static byte nativeBytePlus(byte, byte); descriptor: (BB)B @@ -3139,33 +2918,75 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative Code: stack=4, locals=2, args_size=2 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative - x: ldc #x // String nativeBytePlus - x: ldc #x // String (BB)B + x: ldc #x // String nativeBytePlus + x: ldc #x // String (BB)B 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: iload_1 - x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.nativeBytePlus:(BB)B + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.nativeBytePlus:(BB)B x: ireturn RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public void notNativeRedirected(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative + x: ldc #x // String notNativeRedirected + x: ldc #x // String ()V + 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: aload_0 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.notNativeRedirected:(Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + x: return + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: + x: #x() + android.hosttest.annotation.HostSideTestRedirect + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative + x: ldc #x // String notNativeStaticRedirected + x: ldc #x // String ()V + 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: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.notNativeStaticRedirected:()V + x: return + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsSubstitute + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + RuntimeInvisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + android.hosttest.annotation.HostSideTestRedirect } SourceFile: "TinyFrameworkNative.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep x: #x(#x=s#x) - android.hosttest.annotation.HostSideTestNativeSubstitutionClass( + android.hosttest.annotation.HostSideTestRedirectionClass( value="TinyFrameworkNative_host" ) ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.class @@ -3176,7 +2997,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 6, attributes: 3 + interfaces: 0, fields: 0, methods: 8, attributes: 3 private static {}; descriptor: ()V flags: (0x000a) ACC_PRIVATE, ACC_STATIC @@ -3197,22 +3018,16 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host x: ldc #x // String ()V 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String <init> - x: ldc #x // String ()V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokespecial #x // Method java/lang/Object."<init>":()V x: return LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeAddTwo(int); descriptor: (I)I @@ -3224,12 +3039,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeAddTwo - x: ldc #x // String (I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iload_0 x: iconst_2 x: iadd @@ -3237,10 +3046,10 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 4 0 arg I + 11 4 0 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static long nativeLongPlus(long, long); descriptor: (JJ)J @@ -3252,12 +3061,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host x: ldc #x // String (JJ)J 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeLongPlus - x: ldc #x // String (JJ)J - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: lload_0 x: lload_2 x: ladd @@ -3265,11 +3068,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 4 0 arg1 J - 26 4 2 arg2 J + 11 4 0 arg1 J + 11 4 2 arg2 J RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int nativeNonStaticAddToValue(com.android.hoststubgen.test.tinyframework.TinyFrameworkNative, int); descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;I)I @@ -3281,12 +3084,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host x: ldc #x // String (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeNonStaticAddToValue - x: ldc #x // String (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;I)I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: getfield #x // Field com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.value:I x: iload_1 @@ -3295,11 +3092,11 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 7 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; - 26 7 1 arg I + 11 7 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + 11 7 1 arg I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static byte nativeBytePlus(byte, byte); descriptor: (BB)B @@ -3311,12 +3108,6 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host x: ldc #x // String (BB)B 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host - x: ldc #x // String nativeBytePlus - x: ldc #x // String (BB)B - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iload_0 x: iload_1 x: iadd @@ -3325,16 +3116,51 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNative_host LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 arg1 B - 26 5 1 arg2 B + 11 5 0 arg1 B + 11 5 1 arg2 B RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void notNativeRedirected(com.android.hoststubgen.test.tinyframework.TinyFrameworkNative); + descriptor: (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host + x: ldc #x // String notNativeRedirected + x: ldc #x // String (Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative;)V + 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: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 1 0 source Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNative; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static void notNativeStaticRedirected(); + descriptor: ()V + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host + x: ldc #x // String notNativeStaticRedirected + x: ldc #x // String ()V + 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: return + LineNumberTable: + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkNative_host.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestWholeClassKeep @@ -3352,7 +3178,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -3387,7 +3213,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex 11 10 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated @@ -3402,22 +3228,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex x: ldc #x // String ()Ljava/lang/Integer; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iconst_1 x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; @@ -3429,22 +3249,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$1 ex x: ldc #x // String ()Ljava/lang/Object; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokevirtual #x // Method get:()Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 @@ -3453,7 +3267,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3493,7 +3307,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$2 ex 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; @@ -3505,22 +3319,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$2 ex x: ldc #x // String ()Ljava/lang/Integer; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iconst_2 x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; @@ -3532,22 +3340,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$2 ex x: ldc #x // String ()Ljava/lang/Object; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokevirtual #x // Method get:()Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 @@ -3556,7 +3358,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3572,7 +3374,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -3607,7 +3409,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex 11 10 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated @@ -3622,22 +3424,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex x: ldc #x // String ()Ljava/lang/Integer; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iconst_3 x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; @@ -3649,22 +3445,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$3 ex x: ldc #x // String ()Ljava/lang/Object; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokevirtual #x // Method get:()Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 @@ -3673,7 +3463,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3713,7 +3503,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$4 ex 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; @@ -3725,22 +3515,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$4 ex x: ldc #x // String ()Ljava/lang/Integer; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: iconst_4 x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; @@ -3752,22 +3536,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$4 ex x: ldc #x // String ()Ljava/lang/Object; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokevirtual #x // Method get:()Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 @@ -3776,7 +3554,7 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3792,9 +3570,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -3802,7 +3578,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -3829,18 +3605,14 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 11 10 1 x I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3850,24 +3622,20 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass super_class: #x // java/lang/Object - interfaces: 0, fields: 2, methods: 2, attributes: 5 + interfaces: 0, fields: 2, methods: 2, attributes: 4 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep final com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses this$0; descriptor: Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -3875,7 +3643,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -3905,9 +3673,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 11 15 1 this$0 Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep MethodParameters: Name Flags <no name> final mandated @@ -3917,12 +3683,7 @@ InnerClasses: SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1.class Compiled from "TinyFrameworkNestedClasses.java" @@ -3962,7 +3723,7 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$Stat 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Integer get(); descriptor: ()Ljava/lang/Integer; @@ -3974,22 +3735,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$Stat x: ldc #x // String ()Ljava/lang/Integer; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Integer; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: bipush 7 x: invokestatic #x // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; + 11 6 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.lang.Object get(); descriptor: ()Ljava/lang/Object; @@ -4001,22 +3756,16 @@ class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$Stat x: ldc #x // String ()Ljava/lang/Object; 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: ldc #x // String com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 - x: ldc #x // String get - x: ldc #x // String ()Ljava/lang/Object; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokevirtual #x // Method get:()Ljava/lang/Integer; x: areturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; + 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses @@ -4026,7 +3775,65 @@ Signature: #x // Ljava/lang/Object;Ljava/util/function SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses +## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass.class + Compiled from "TinyFrameworkNestedClasses.java" +public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + minor version: 0 + major version: 61 + flags: (0x0021) ACC_PUBLIC, ACC_SUPER + this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + super_class: #x // java/lang/Object + interfaces: 0, fields: 1, methods: 2, attributes: 4 + public int value; + descriptor: I + flags: (0x0001) ACC_PUBLIC + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + private static {}; + descriptor: ()V + flags: (0x000a) ACC_PRIVATE, ACC_STATIC + Code: + stack=2, locals=0, args_size=0 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + 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 + + public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass(); + descriptor: ()V + flags: (0x0001) ACC_PUBLIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass + x: ldc #x // String <init> + x: ldc #x // String ()V + 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: aload_0 + x: invokespecial #x // Method java/lang/Object."<init>":()V + x: aload_0 + x: bipush 8 + x: putfield #x // Field value:I + x: return + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 11 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep +} +InnerClasses: + public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass +SourceFile: "TinyFrameworkNestedClasses.java" +RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -4036,15 +3843,13 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 5 + interfaces: 0, fields: 1, methods: 3, attributes: 4 public int value; descriptor: I flags: (0x0001) ACC_PUBLIC RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -4052,7 +3857,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -4078,9 +3883,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 11 11 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -4100,22 +3903,16 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl -RuntimeInvisibleAnnotations: - x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass.class Compiled from "TinyFrameworkNestedClasses.java" @@ -4132,7 +3929,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -4157,9 +3954,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 11 6 1 x I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses @@ -4167,9 +3962,7 @@ InnerClasses: SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep NestHost: class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.class Compiled from "TinyFrameworkNestedClasses.java" @@ -4186,9 +3979,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static final java.util.function.Supplier<java.lang.Integer> sSupplier; descriptor: Ljava/util/function/Supplier; @@ -4196,9 +3987,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses(); descriptor: ()V @@ -4225,9 +4014,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass 11 17 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public java.util.function.Supplier<java.lang.Integer> getSupplier(); descriptor: ()Ljava/util/function/Supplier; @@ -4251,9 +4038,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static java.util.function.Supplier<java.lang.Integer> getSupplier_static(); descriptor: ()Ljava/util/function/Supplier; @@ -4273,9 +4058,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass Signature: #x // ()Ljava/util/function/Supplier<Ljava/lang/Integer;>; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep static {}; descriptor: ()V @@ -4298,33 +4081,31 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClass LineNumberTable: RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } InnerClasses: #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$1 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$3 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$2 - public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // SubClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // BaseClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public static #x= #x of #x; // StaticNestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses public #x= #x of #x; // InnerClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses + public static #x= #x of #x; // Double$NestedClass=class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass of class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass #x; // class com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 SourceFile: "TinyFrameworkNestedClasses.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep NestMembers: com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$SubClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$BaseClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass + com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$Double$NestedClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$StaticNestedClass$1 com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$InnerClass com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses$4 @@ -4346,7 +4127,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -4369,9 +4150,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int foo(int); descriptor: (I)I @@ -4395,19 +4174,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkPackageRedi 11 12 0 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkPackageRedirect.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.class Compiled from "TinyFrameworkRenamedClassCaller.java" public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller @@ -4423,7 +4198,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -4446,9 +4221,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public static int foo(int); descriptor: (I)I @@ -4472,19 +4245,15 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas 11 12 0 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: com/android/hoststubgen/test/tinyframework/packagetest/A.class Compiled from "A.java" public class com.android.hoststubgen.test.tinyframework.packagetest.A @@ -4500,16 +4269,14 @@ public class com.android.hoststubgen.test.tinyframework.packagetest.A Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/packagetest/A - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "A.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/packagetest/sub/A.class Compiled from "A.java" public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A @@ -4525,16 +4292,14 @@ public class com.android.hoststubgen.test.tinyframework.packagetest.sub.A Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/packagetest/sub/A - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "A.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C1.class Compiled from "C1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -4550,16 +4315,14 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C1 Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/C1 - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "C1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C2.class Compiled from "C2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -4575,16 +4338,14 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C2 extends Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/C2 - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "C2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/C3.class Compiled from "C3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 @@ -4600,16 +4361,14 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.C3 extends Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/C3 - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "C3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CA.class Compiled from "CA.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.CA @@ -4625,16 +4384,14 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.CA Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/CA - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "CA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/CB.class Compiled from "CB.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.CB @@ -4650,16 +4407,14 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.CB Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/CB - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "CB.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C1.class Compiled from "Class_C1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C1 extends com.android.hoststubgen.test.tinyframework.subclasstest.C1 @@ -4682,7 +4437,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C1 ex SourceFile: "Class_C1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C2.class Compiled from "Class_C2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C2 extends com.android.hoststubgen.test.tinyframework.subclasstest.C2 @@ -4705,7 +4460,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C2 ex SourceFile: "Class_C2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_C3.class Compiled from "Class_C3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C3 extends com.android.hoststubgen.test.tinyframework.subclasstest.C3 @@ -4728,7 +4483,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_C3 ex SourceFile: "Class_C3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I1.class Compiled from "Class_I1.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1 implements com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -4751,7 +4506,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1 im SourceFile: "Class_I1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I1_IA.class Compiled from "Class_I1_IA.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1_IA implements com.android.hoststubgen.test.tinyframework.subclasstest.I1,com.android.hoststubgen.test.tinyframework.subclasstest.IA @@ -4774,7 +4529,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I1_IA SourceFile: "Class_I1_IA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I2.class Compiled from "Class_I2.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I2 implements com.android.hoststubgen.test.tinyframework.subclasstest.I2 @@ -4797,7 +4552,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I2 im SourceFile: "Class_I2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/Class_I3.class Compiled from "Class_I3.java" public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I3 implements com.android.hoststubgen.test.tinyframework.subclasstest.I3 @@ -4820,7 +4575,7 @@ public class com.android.hoststubgen.test.tinyframework.subclasstest.Class_I3 im SourceFile: "Class_I3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I1.class Compiled from "I1.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -4836,16 +4591,14 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I1 Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/I1 - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "I1.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I2.class Compiled from "I2.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 extends com.android.hoststubgen.test.tinyframework.subclasstest.I1 @@ -4868,9 +4621,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I2 exte SourceFile: "I2.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/I3.class Compiled from "I3.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 extends com.android.hoststubgen.test.tinyframework.subclasstest.I2 @@ -4893,9 +4644,7 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.I3 exte SourceFile: "I3.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IA.class Compiled from "IA.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA @@ -4911,16 +4660,14 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.IA Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/IA - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "IA.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/android/hoststubgen/test/tinyframework/subclasstest/IB.class Compiled from "IB.java" public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB @@ -4936,16 +4683,14 @@ public interface com.android.hoststubgen.test.tinyframework.subclasstest.IB Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/android/hoststubgen/test/tinyframework/subclasstest/IB - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 } SourceFile: "IB.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep ## Class: com/supported/UnsupportedClass.class Compiled from "UnsupportedClass.java" public class com.supported.UnsupportedClass @@ -4960,7 +4705,7 @@ public class com.supported.UnsupportedClass flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V @@ -4982,12 +4727,6 @@ public class com.supported.UnsupportedClass x: ldc #x // String (I)V 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: ldc #x // String com/supported/UnsupportedClass - x: ldc #x // String <init> - x: ldc #x // String (I)V - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: invokespecial #x // Method java/lang/Object."<init>":()V x: aload_0 @@ -4997,11 +4736,11 @@ public class com.supported.UnsupportedClass LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 10 0 this Lcom/supported/UnsupportedClass; - 26 10 1 value I + 11 10 0 this Lcom/supported/UnsupportedClass; + 11 10 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I @@ -5013,27 +4752,21 @@ public class com.supported.UnsupportedClass x: ldc #x // String ()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: ldc #x // String com/supported/UnsupportedClass - x: ldc #x // String getValue - x: ldc #x // String ()I - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.getStackWalker:()Ljava/lang/StackWalker; - x: invokevirtual #x // Method java/lang/StackWalker.getCallerClass:()Ljava/lang/Class; - x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onNonStubMethodCalled:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V x: aload_0 x: getfield #x // Field mValue:I x: ireturn LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 26 5 0 this Lcom/supported/UnsupportedClass; + 11 5 0 this Lcom/supported/UnsupportedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "UnsupportedClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() android.hosttest.annotation.HostSideTestWholeClassKeep @@ -5052,7 +4785,7 @@ public class com.unsupported.UnsupportedClass Code: stack=2, locals=0, args_size=0 x: ldc #x // class com/unsupported/UnsupportedClass - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + 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 @@ -5080,9 +4813,7 @@ public class com.unsupported.UnsupportedClass 11 14 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I @@ -5105,19 +4836,15 @@ public class com.unsupported.UnsupportedClass 11 10 0 this Lcom/unsupported/UnsupportedClass; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "UnsupportedClass.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep ## Class: rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.class Compiled from "TinyFrameworkToBeRenamed.java" public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed @@ -5132,16 +4859,14 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0012) ACC_PRIVATE, ACC_FINAL RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep private static {}; descriptor: ()V 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 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 @@ -5151,7 +4876,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew 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 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 @@ -5169,16 +4894,14 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew 11 10 1 value I RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep public int getValue(); descriptor: ()I 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 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 @@ -5192,16 +4915,12 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkToBeRenamed.java" RuntimeVisibleAnnotations: x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInStub - x: #x() - com.android.hoststubgen.hosthelper.HostStubGenKeptInImpl + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep RuntimeInvisibleAnnotations: x: #x() - android.hosttest.annotation.HostSideTestWholeClassStub + android.hosttest.annotation.HostSideTestWholeClassKeep diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt b/tools/hoststubgen/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt index 75c9721020bd..3c138d21b75d 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt @@ -1,9 +1,8 @@ -class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy stub - field stub stub - field keep keep +class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy keep + field stub keep # field remove remove # Implicitly remove - method <init> ()V stub - method addOne (I)I stub + method <init> ()V keep + method addOne (I)I keep method addOneInner (I)I keep method toBeRemoved (Ljava/lang/String;)V remove method addTwo (I)I @addTwo_host @@ -11,28 +10,38 @@ class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy stub method nativeAddThree (I)I @addThree_host # method addThree_host (I)I # used as a substitute method unsupportedMethod ()Ljava/lang/String; throw - method visibleButUsesUnsupportedMethod ()Ljava/lang/String; stub + method visibleButUsesUnsupportedMethod ()Ljava/lang/String; keep + method toBeIgnoredObj ()Ljava/lang/String; ignore + method toBeIgnoredV ()V ignore + method toBeIgnoredZ ()Z ignore + method toBeIgnoredB ()B ignore + method toBeIgnoredC ()C ignore + method toBeIgnoredS ()S ignore + method toBeIgnoredI ()I ignore + method toBeIgnoredL ()L ignore + method toBeIgnoredF ()F ignore + method toBeIgnoredD ()D ignore # Class load hook class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy ~com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded # Heuristics rule: Stub all the AIDL classes. -class :aidl stubclass +class :aidl keepclass # Heuristics rule: Stub all the R classes. -class :r stubclass +class :r keepclass # Default is "remove", so let's put all the base classes / interfaces in the stub first. -class com.android.hoststubgen.test.tinyframework.subclasstest.C1 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.C2 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.C3 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.CA stub -class com.android.hoststubgen.test.tinyframework.subclasstest.CB stub -class com.android.hoststubgen.test.tinyframework.subclasstest.I1 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.I2 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.I3 stub -class com.android.hoststubgen.test.tinyframework.subclasstest.IA stub -class com.android.hoststubgen.test.tinyframework.subclasstest.IB stub +class com.android.hoststubgen.test.tinyframework.subclasstest.C1 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.C2 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.C3 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.CA keep +class com.android.hoststubgen.test.tinyframework.subclasstest.CB keep +class com.android.hoststubgen.test.tinyframework.subclasstest.I1 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.I2 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.I3 keep +class com.android.hoststubgen.test.tinyframework.subclasstest.IA keep +class com.android.hoststubgen.test.tinyframework.subclasstest.IB keep # Then define inheritance based policies. class *com.android.hoststubgen.test.tinyframework.subclasstest.C1 keep @@ -42,15 +51,25 @@ class *com.android.hoststubgen.test.tinyframework.subclasstest.I1 keep class *com.android.hoststubgen.test.tinyframework.subclasstest.IA remove # Test package directive -package com.android.hoststubgen.test.tinyframework.packagetest stub +package com.android.hoststubgen.test.tinyframework.packagetest keep class com.android.hoststubgen.test.tinyframework.packagetest.B remove class com.android.hoststubgen.test.tinyframework.packagetest.sub.B remove # The following rules are the same as above -# class com.android.hoststubgen.test.tinyframework.packagetest.A stub -# class com.android.hoststubgen.test.tinyframework.packagetest.sub.A stub +# class com.android.hoststubgen.test.tinyframework.packagetest.A keep +# class com.android.hoststubgen.test.tinyframework.packagetest.sub.A keep + +# Used to test method call replacement. +class com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace keepclass + method originalAdd (II)I @com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo.add + +# Used to test method call replacement. +# Note because java.lang.Thread is _not_ within the tiny-framework jar, the policy ("keep") +# doesn't realy matter. +class java.lang.Thread keep + method start ()V @com.android.hoststubgen.test.tinyframework.TinyFrameworkMethodCallReplace$ReplaceTo.startThread # "rename" takes a type internal name, so '/'s is used as a separator. # The leading / in the prefix is not needed (it'll be stripped), but it's added to make # sure the stripping works. -rename ^.*/TinyFrameworkToBeRenamed$ /rename_prefix/
\ No newline at end of file +rename ^.*/TinyFrameworkToBeRenamed$ /rename_prefix/ diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/run-test-manually.sh b/tools/hoststubgen/hoststubgen/test-tiny-framework/run-test-manually.sh index 872bbf878de4..80ebf3adab3d 100755 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/run-test-manually.sh +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/run-test-manually.sh @@ -43,8 +43,7 @@ run m $HOSTSTUBGEN hoststubgen-annotations hoststubgen-helper-runtime truth juni tiny_framework_classes=$out/tiny-framework/classes/ tiny_framework_jar=$out/tiny-framework.jar -tiny_framework_host_stub_jar=$out/tiny-framework_host_stub.jar -tiny_framework_host_impl_jar=$out/tiny-framework_host_impl.jar +tiny_framework_host_jar=$out/tiny-framework_host.jar tiny_test_classes=$out/tiny-test/classes/ tiny_test_jar=$out/tiny-test.jar @@ -87,8 +86,7 @@ echo "# Generating the stub and impl jars..." run $HOSTSTUBGEN \ @../hoststubgen-standard-options.txt \ --in-jar $tiny_framework_jar \ - --out-stub-jar $tiny_framework_host_stub_jar \ - --out-impl-jar $tiny_framework_host_impl_jar \ + --out-jar $tiny_framework_host_jar \ --policy-override-file policy-override-tiny-framework.txt \ --gen-keep-all-file out/tiny-framework_keep_all.txt \ --gen-input-dump-file out/tiny-framework_dump.txt \ @@ -97,14 +95,14 @@ run $HOSTSTUBGEN \ $HOSTSTUBGEN_OPTS # Extract the jar files, so we can look into them. -extract $tiny_framework_host_stub_jar $tiny_framework_host_impl_jar +extract $tiny_framework_host_jar # Build the test echo "# Building tiny-test..." run $JAVAC \ -cp $( \ join : \ - $tiny_framework_host_stub_jar \ + $tiny_framework_jar \ "${test_compile_classpaths[@]}" \ ) \ -d $tiny_test_classes \ @@ -124,7 +122,7 @@ run $JAVA \ -cp $( \ join : \ $tiny_test_jar \ - $tiny_framework_host_impl_jar \ + $tiny_framework_host_jar \ "${test_compile_classpaths[@]}" \ "${test_runtime_classpaths[@]}" \ ) \ diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations.java index 6d8a48a37fea..3415deb957ed 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassAnnotations.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotations.java @@ -16,41 +16,33 @@ package com.android.hoststubgen.test.tinyframework; import android.hosttest.annotation.HostSideTestClassLoadHook; +import android.hosttest.annotation.HostSideTestIgnore; import android.hosttest.annotation.HostSideTestKeep; import android.hosttest.annotation.HostSideTestRemove; -import android.hosttest.annotation.HostSideTestStub; import android.hosttest.annotation.HostSideTestSubstitute; import android.hosttest.annotation.HostSideTestThrow; /** * Test without class-wide annotations. */ -@HostSideTestStub +@HostSideTestKeep @HostSideTestClassLoadHook( "com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded") -public class TinyFrameworkClassAnnotations { - @HostSideTestStub - public TinyFrameworkClassAnnotations() { +public class TinyFrameworkAnnotations { + @HostSideTestKeep + public TinyFrameworkAnnotations() { } - @HostSideTestStub - public int stub = 1; - @HostSideTestKeep - public int keep = 2; + public int keep = 1; // Members will be deleted by default. // Deleted fields cannot have an initial value, because otherwise .ctor will fail to set it at // runtime. public int remove; - @HostSideTestStub - public int addOne(int value) { - return addOneInner(value); - } - @HostSideTestKeep - public int addOneInner(int value) { + public int addOne(int value) { return value + 1; } @@ -59,7 +51,6 @@ public class TinyFrameworkClassAnnotations { throw new RuntimeException(); } - @HostSideTestStub @HostSideTestSubstitute(suffix = "_host") public int addTwo(int value) { throw new RuntimeException("not supported on host side"); @@ -69,7 +60,6 @@ public class TinyFrameworkClassAnnotations { return value + 2; } - @HostSideTestStub @HostSideTestSubstitute(suffix = "_host") public static native int nativeAddThree(int value); @@ -83,8 +73,8 @@ public class TinyFrameworkClassAnnotations { return "This value shouldn't be seen on the host side."; } - @HostSideTestStub - public String visibleButUsesUnsupportedMethod() { - return unsupportedMethod(); + @HostSideTestIgnore + public int toBeIgnored() { + throw new RuntimeException("not supported on host side"); } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.java deleted file mode 100644 index f53020771cc3..000000000000 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkCallerCheck.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.hoststubgen.test.tinyframework; - -import android.hosttest.annotation.HostSideTestKeep; -import android.hosttest.annotation.HostSideTestStub; -import android.hosttest.annotation.HostSideTestWholeClassStub; - -/** - * Used by the benchmark. - */ -@HostSideTestWholeClassStub -public class TinyFrameworkCallerCheck { - - /** - * This method uses an inner method (which has the caller check). - * - * Benchmark result: 768ns - */ - public static int getOne_withCheck() { - return Impl.getOneKeep(); - } - - /** - * This method doesn't have any caller check. - * - * Benchmark result: 2ns - */ - public static int getOne_noCheck() { - return Impl.getOneStub(); - } - - private static class Impl { - @HostSideTestKeep - public static int getOneKeep() { - return 1; - } - - @HostSideTestStub - public static int getOneStub() { - return 1; - } - } -} diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.java index 98fc6349cdc9..f734790c8dd9 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassLoadHook.java @@ -15,12 +15,12 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; import java.util.HashSet; import java.util.Set; -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkClassLoadHook { private TinyFrameworkClassLoadHook() { } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations.java index 145b65a98d7b..e83163edb5e5 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassClassWideAnnotations.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotations.java @@ -15,38 +15,25 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestStub; +import android.hosttest.annotation.HostSideTestRemove; import android.hosttest.annotation.HostSideTestSubstitute; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestThrow; +import android.hosttest.annotation.HostSideTestWholeClassKeep; -@HostSideTestWholeClassStub -public class TinyFrameworkClassClassWideAnnotations { - public TinyFrameworkClassClassWideAnnotations() { +@HostSideTestWholeClassKeep +public class TinyFrameworkClassWideAnnotations { + public TinyFrameworkClassWideAnnotations() { } - public int stub = 1; + public int keep = 1; - public int keep = 2; - - // Cannot have an initial value, because otherwise .ctor will fail to set it at runtime. + @HostSideTestRemove public int remove; - // @Stub public int addOne(int value) { - return addOneInner(value); - } - - // @Keep - public int addOneInner(int value) { return value + 1; } - // @Remove - public void toBeRemoved(String foo) { - throw new RuntimeException(); - } - - @HostSideTestStub @HostSideTestSubstitute(suffix = "_host") public int addTwo(int value) { throw new RuntimeException("not supported on host side"); @@ -56,19 +43,13 @@ public class TinyFrameworkClassClassWideAnnotations { return value + 2; } - @HostSideTestStub - @HostSideTestSubstitute(suffix = "_host") - public static native int nativeAddThree(int value); - - public static int nativeAddThree_host(int value) { - return value + 3; + @HostSideTestRemove + public void toBeRemoved(String foo) { + throw new RuntimeException(); } + @HostSideTestThrow public String unsupportedMethod() { return "This value shouldn't be seen on the host side."; } - - public String visibleButUsesUnsupportedMethod() { - return unsupportedMethod(); - } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.java index 8324ed93bf26..3df21d9a5647 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerDefault.java @@ -15,18 +15,16 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestClassLoadHook; -import android.hosttest.annotation.HostSideTestStub; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestKeep; -@HostSideTestStub +@HostSideTestKeep public class TinyFrameworkClassWithInitializerDefault { static { sInitialized = true; } - @HostSideTestStub + @HostSideTestKeep public static boolean sInitialized; - @HostSideTestStub + @HostSideTestKeep public static Object sObject = new Object(); } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.java index ea1ad93b21b4..cc665de9cd01 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithInitializerStub.java @@ -16,20 +16,20 @@ package com.android.hoststubgen.test.tinyframework; import android.hosttest.annotation.HostSideTestClassLoadHook; +import android.hosttest.annotation.HostSideTestKeep; import android.hosttest.annotation.HostSideTestStaticInitializerKeep; -import android.hosttest.annotation.HostSideTestStub; @HostSideTestClassLoadHook( "com.android.hoststubgen.test.tinyframework.TinyFrameworkClassLoadHook.onClassLoaded") -@HostSideTestStub +@HostSideTestKeep @HostSideTestStaticInitializerKeep public class TinyFrameworkClassWithInitializerStub { static { sInitialized = true; } - @HostSideTestStub + @HostSideTestKeep public static boolean sInitialized; - @HostSideTestStub + @HostSideTestKeep public static Object sObject = new Object(); } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.java index 51f48188fe74..f833ad814513 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumComplex.java @@ -16,15 +16,14 @@ package com.android.hoststubgen.test.tinyframework; import android.hosttest.annotation.HostSideTestKeep; -import android.hosttest.annotation.HostSideTestStub; -@HostSideTestStub +@HostSideTestKeep public enum TinyFrameworkEnumComplex { - @HostSideTestStub + @HostSideTestKeep RED("Red", "R"), - @HostSideTestStub + @HostSideTestKeep GREEN("Green", "G"), - @HostSideTestStub + @HostSideTestKeep BLUE("Blue", "B"); @HostSideTestKeep @@ -33,18 +32,18 @@ public enum TinyFrameworkEnumComplex { @HostSideTestKeep private final String mShortName; - @HostSideTestStub + @HostSideTestKeep TinyFrameworkEnumComplex(String longName, String shortName) { mLongName = longName; mShortName = shortName; } - @HostSideTestStub + @HostSideTestKeep public String getLongName() { return mLongName; } - @HostSideTestStub + @HostSideTestKeep public String getShortName() { return mShortName; } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.java index f440d8667fb4..c023169b5601 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkEnumSimple.java @@ -15,12 +15,12 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestStub; +import android.hosttest.annotation.HostSideTestKeep; -@HostSideTestStub +@HostSideTestKeep public enum TinyFrameworkEnumSimple { - @HostSideTestStub + @HostSideTestKeep CAT, - @HostSideTestStub + @HostSideTestKeep DOG, } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.java index 909d3b440f50..f7cae7d255fe 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkExceptionTester.java @@ -15,9 +15,9 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkExceptionTester { public static int testException() { try { diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.java index bde7c35dc294..ec1efba99c77 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy.java @@ -24,17 +24,11 @@ public class TinyFrameworkForTextPolicy { public int stub = 1; - public int keep = 2; - // Removed fields cannot have an initial value, because otherwise .ctor will fail to set it at // runtime. public int remove; public int addOne(int value) { - return addOneInner(value); - } - - public int addOneInner(int value) { return value + 1; } @@ -42,6 +36,42 @@ public class TinyFrameworkForTextPolicy { throw new RuntimeException(); } + public String toBeIgnoredObj() { + throw new RuntimeException(); + } + + public void toBeIgnoredV() { + throw new RuntimeException(); + } + + public boolean toBeIgnoredZ() { + throw new RuntimeException(); + } + + public byte toBeIgnoredB() { + throw new RuntimeException(); + } + + public char toBeIgnoredC() { + throw new RuntimeException(); + } + + public short toBeIgnoredS() { + throw new RuntimeException(); + } + + public int toBeIgnoredI() { + throw new RuntimeException(); + } + + public float toBeIgnoredF() { + throw new RuntimeException(); + } + + public double toBeIgnoredD() { + throw new RuntimeException(); + } + public int addTwo(int value) { throw new RuntimeException("not supported on host side"); } @@ -59,8 +89,4 @@ public class TinyFrameworkForTextPolicy { public String unsupportedMethod() { return "This value shouldn't be seen on the host side."; } - - public String visibleButUsesUnsupportedMethod() { - return unsupportedMethod(); - } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.java index 0d1203b0dedc..1ca653ec7da6 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkLambdas.java @@ -15,8 +15,8 @@ */ package com.android.hoststubgen.test.tinyframework; +import android.hosttest.annotation.HostSideTestKeep; import android.hosttest.annotation.HostSideTestStaticInitializerKeep; -import android.hosttest.annotation.HostSideTestStub; import java.util.function.Supplier; @@ -28,48 +28,48 @@ import java.util.function.Supplier; * * Implicit filter should take care of them. */ -@HostSideTestStub +@HostSideTestKeep @HostSideTestStaticInitializerKeep public class TinyFrameworkLambdas { - @HostSideTestStub + @HostSideTestKeep public TinyFrameworkLambdas() { } - @HostSideTestStub + @HostSideTestKeep public final Supplier<Integer> mSupplier = () -> 1; - @HostSideTestStub + @HostSideTestKeep public static final Supplier<Integer> sSupplier = () -> 2; - @HostSideTestStub + @HostSideTestKeep public Supplier<Integer> getSupplier() { return () -> 3; } - @HostSideTestStub + @HostSideTestKeep public static Supplier<Integer> getSupplier_static() { return () -> 4; } - @HostSideTestStub + @HostSideTestKeep @HostSideTestStaticInitializerKeep public static class Nested { - @HostSideTestStub + @HostSideTestKeep public Nested() { } - @HostSideTestStub + @HostSideTestKeep public final Supplier<Integer> mSupplier = () -> 5; - @HostSideTestStub + @HostSideTestKeep public static final Supplier<Integer> sSupplier = () -> 6; - @HostSideTestStub + @HostSideTestKeep public Supplier<Integer> getSupplier() { return () -> 7; } - @HostSideTestStub + @HostSideTestKeep public static Supplier<Integer> getSupplier_static() { return () -> 8; } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.java new file mode 100644 index 000000000000..57c69a336654 --- /dev/null +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkMethodCallReplace.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.test.tinyframework; + +import android.hosttest.annotation.HostSideTestWholeClassKeep; + +import java.util.concurrent.atomic.AtomicBoolean; + +@HostSideTestWholeClassKeep +public class TinyFrameworkMethodCallReplace { + // This method should return true. + public static boolean nonStaticMethodCallReplaceTester() throws Exception { + final AtomicBoolean ab = new AtomicBoolean(false); + + Thread th = new Thread(() -> { + ab.set(Thread.currentThread().isDaemon()); + }); + // This Thread.start() call will be redirected to ReplaceTo.startThread() + // (because of the policy file directive) which will make the thread "daemon" and start it. + th.start(); + th.join(); + + return ab.get(); // This should be true. + } + + public static int staticMethodCallReplaceTester() { + // This method call will be replaced with ReplaceTo.add(). + return originalAdd(1, 2); + } + + private static int originalAdd(int a, int b) { + return a + b - 1; // Original is broken. + } + + public static class ReplaceTo { + public static void startThread(Thread thread) { + thread.setDaemon(true); + thread.start(); + } + + public static int add(int a, int b) { + return a + b; + } + } +} diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.java index 09ee183a2dcc..04a551c8c46e 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative.java @@ -15,19 +15,23 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestNativeSubstitutionClass; +import android.hosttest.annotation.HostSideTestRedirect; +import android.hosttest.annotation.HostSideTestRedirectionClass; import android.hosttest.annotation.HostSideTestThrow; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; -@HostSideTestWholeClassStub -@HostSideTestNativeSubstitutionClass("TinyFrameworkNative_host") +@HostSideTestWholeClassKeep +@HostSideTestRedirectionClass("TinyFrameworkNative_host") public class TinyFrameworkNative { + + @HostSideTestRedirect public static native int nativeAddTwo(int arg); public static int nativeAddTwo_should_be_like_this(int arg) { return TinyFrameworkNative_host.nativeAddTwo(arg); } + @HostSideTestRedirect public static native long nativeLongPlus(long arg1, long arg2); public static long nativeLongPlus_should_be_like_this(long arg1, long arg2) { @@ -40,6 +44,7 @@ public class TinyFrameworkNative { this.value = v; } + @HostSideTestRedirect public native int nativeNonStaticAddToValue(int arg); public int nativeNonStaticAddToValue_should_be_like_this(int arg) { @@ -49,9 +54,22 @@ public class TinyFrameworkNative { @HostSideTestThrow public static native void nativeStillNotSupported(); + public static native void nativeStillKeep(); + public static void nativeStillNotSupported_should_be_like_this() { throw new RuntimeException(); } + @HostSideTestRedirect public static native byte nativeBytePlus(byte arg1, byte arg2); + + @HostSideTestRedirect + public void notNativeRedirected() { + throw new RuntimeException(); + } + + @HostSideTestRedirect + public static void notNativeStaticRedirected() { + throw new RuntimeException(); + } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.java index b23c21602967..c7a29a1cc0f9 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNative_host.java @@ -17,8 +17,6 @@ package com.android.hoststubgen.test.tinyframework; import android.hosttest.annotation.HostSideTestWholeClassKeep; -// TODO: This annotation shouldn't be needed. -// We should infer it from HostSideTestNativeSubstitutionClass. @HostSideTestWholeClassKeep public class TinyFrameworkNative_host { public static int nativeAddTwo(int arg) { @@ -38,4 +36,10 @@ public class TinyFrameworkNative_host { public static byte nativeBytePlus(byte arg1, byte arg2) { return (byte) (arg1 + arg2); } + + public static void notNativeRedirected(TinyFrameworkNative source) { + } + + public static void notNativeStaticRedirected() { + } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.java index e1c48bb85563..c1ea2ee59fbb 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkNestedClasses.java @@ -15,11 +15,11 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; import java.util.function.Supplier; -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkNestedClasses { public final Supplier<Integer> mSupplier = new Supplier<Integer>() { @Override @@ -34,6 +34,7 @@ public class TinyFrameworkNestedClasses { return 2; } }; + public Supplier<Integer> getSupplier() { return new Supplier<Integer>() { @Override @@ -52,12 +53,10 @@ public class TinyFrameworkNestedClasses { }; } - @HostSideTestWholeClassStub public class InnerClass { public int value = 5; } - @HostSideTestWholeClassStub public static class StaticNestedClass { public int value = 6; @@ -70,6 +69,10 @@ public class TinyFrameworkNestedClasses { } }; } + + public static class Double$NestedClass { + public int value = 8; + } } public static class BaseClass { diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.java index a82be5453b1e..941fcff31d8e 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkPackageRedirect.java @@ -15,9 +15,9 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkPackageRedirect { /** * A method that uses "unsupported" class. HostStubGen will redirect them to the "supported" diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java index 31a164af03f5..707bc0ebb4db 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java @@ -15,9 +15,9 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkRenamedClassCaller { /** Calls the class that'll be renamed. */ public static int foo(int value) { diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java index 1430bcb0276b..8319ced6109a 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java @@ -15,12 +15,12 @@ */ package com.android.hoststubgen.test.tinyframework; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; /** * This class will be renamed by the "rename" directive in the policy file. */ -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class TinyFrameworkToBeRenamed { private final int mValue; diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/unsupported/UnsupportedClass.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/unsupported/UnsupportedClass.java index 0409b02b0f5d..92f41ac63cdb 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/unsupported/UnsupportedClass.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-framework/src/com/unsupported/UnsupportedClass.java @@ -15,10 +15,10 @@ */ package com.unsupported; -import android.hosttest.annotation.HostSideTestWholeClassStub; +import android.hosttest.annotation.HostSideTestWholeClassKeep; // Used for testing --package-redirect. -@HostSideTestWholeClassStub +@HostSideTestWholeClassKeep public class UnsupportedClass { public UnsupportedClass(int value) { throw new RuntimeException("This class is not supported"); diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithAnnotTest.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotationsTest.java index 288c7162aa58..1ae049371229 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWithAnnotTest.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkAnnotationsTest.java @@ -17,50 +17,48 @@ package com.android.hoststubgen.test.tinyframework; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -public class TinyFrameworkClassWithAnnotTest { +public class TinyFrameworkAnnotationsTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testSimple() { - TinyFrameworkClassAnnotations tfc = new TinyFrameworkClassAnnotations(); + TinyFrameworkAnnotations tfc = new TinyFrameworkAnnotations(); assertThat(tfc.addOne(1)).isEqualTo(2); - assertThat(tfc.stub).isEqualTo(1); + assertThat(tfc.keep).isEqualTo(1); } -// @Test -// public void testDoesntCompile() { -// TinyFrameworkClassWithAnnot tfc = new TinyFrameworkClassWithAnnot(); -// -// tfc.addOneInner(1); // Shouldn't compile. -// tfc.toBeRemoved("abc"); // Shouldn't compile. -// tfc.unsupportedMethod(); // Shouldn't compile. -// int a = tfc.keep; // Shouldn't compile -// int b = tfc.remove; // Shouldn't compile -// } + @Test + public void testRemove() { + TinyFrameworkAnnotations tfc = new TinyFrameworkAnnotations(); + assertThrows(NoSuchMethodError.class, () -> tfc.toBeRemoved("abc")); + assertThrows(NoSuchFieldError.class, () -> tfc.remove = 1); + } @Test public void testSubstitute() { - TinyFrameworkClassAnnotations tfc = new TinyFrameworkClassAnnotations(); + TinyFrameworkAnnotations tfc = new TinyFrameworkAnnotations(); assertThat(tfc.addTwo(1)).isEqualTo(3); } @Test public void testSubstituteNative() { - TinyFrameworkClassAnnotations tfc = new TinyFrameworkClassAnnotations(); + TinyFrameworkAnnotations tfc = new TinyFrameworkAnnotations(); assertThat(tfc.nativeAddThree(1)).isEqualTo(4); } @Test - public void testVisibleButUsesUnsupportedMethod() { - TinyFrameworkClassAnnotations tfc = new TinyFrameworkClassAnnotations(); + public void testUnsupportedMethod() { + TinyFrameworkAnnotations tfc = new TinyFrameworkAnnotations(); thrown.expect(RuntimeException.class); thrown.expectMessage("not yet supported"); - tfc.visibleButUsesUnsupportedMethod(); + tfc.unsupportedMethod(); } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkBenchmark.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkBenchmark.java deleted file mode 100644 index d57735b1987c..000000000000 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkBenchmark.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.hoststubgen.test.tinyframework; - -import org.junit.Test; - -import java.text.DecimalFormat; - -/** - * Contains simple micro-benchmarks. - */ -@LargeTest -public class TinyFrameworkBenchmark { - private static final int MINIMAL_ITERATION = 1000; - private static final int MEASURE_SECONDS = 1; - - private static final DecimalFormat sFormatter = new DecimalFormat("#,###"); - - private void doBenchmark(String name, Runnable r) { - // Worm up - for (int i = 0; i < MINIMAL_ITERATION; i++) { - r.run(); - } - - // Start measuring. - final long start = System.nanoTime(); - final long end = start + MEASURE_SECONDS * 1_000_000_000L; - - double iteration = 0; - while (System.nanoTime() <= end) { - for (int i = 0; i < MINIMAL_ITERATION; i++) { - r.run(); - } - iteration += MINIMAL_ITERATION; - } - - final long realEnd = System.nanoTime(); - - System.out.println(String.format("%s\t%s", name, - sFormatter.format((((double) realEnd - start)) / iteration))); - } - - /** - * Micro-benchmark for a method without a non-stub caller check. - */ - @Test - public void benchNoCallerCheck() { - doBenchmark("No caller check", TinyFrameworkCallerCheck::getOne_noCheck); - } - - /** - * Micro-benchmark for a method with a non-stub caller check. - */ - @Test - public void benchWithCallerCheck() { - doBenchmark("With caller check", TinyFrameworkCallerCheck::getOne_withCheck); - } -} diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java index bf0f6545d1f5..68673dc2a5b8 100644 --- a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java @@ -17,10 +17,9 @@ package com.android.hoststubgen.test.tinyframework; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; +import static org.junit.Assert.assertThrows; import com.android.hoststubgen.test.tinyframework.R.Nested; -import com.android.hoststubgen.test.tinyframework.TinyFrameworkNestedClasses.SubClass; import org.junit.Rule; import org.junit.Test; @@ -41,16 +40,26 @@ public class TinyFrameworkClassTest { assertThat(tfc.stub).isEqualTo(1); } -// @Test -// public void testDoesntCompile() { -// TinyFrameworkClass tfc = new TinyFrameworkClass(); -// -// tfc.addOneInner(1); // Shouldn't compile. -// tfc.toBeRemoved("abc"); // Shouldn't compile. -// tfc.unsupportedMethod(); // Shouldn't compile. -// int a = tfc.keep; // Shouldn't compile -// int b = tfc.remove; // Shouldn't compile -// } + @Test + public void testRemove() { + TinyFrameworkForTextPolicy tfc = new TinyFrameworkForTextPolicy(); + assertThrows(NoSuchMethodError.class, () -> tfc.toBeRemoved("abc")); + assertThrows(NoSuchFieldError.class, () -> tfc.remove = 1); + } + + @Test + public void testIgnore() { + TinyFrameworkForTextPolicy tfc = new TinyFrameworkForTextPolicy(); + tfc.toBeIgnoredV(); + assertThat(tfc.toBeIgnoredZ()).isEqualTo(false); + assertThat(tfc.toBeIgnoredB()).isEqualTo(0); + assertThat(tfc.toBeIgnoredC()).isEqualTo(0); + assertThat(tfc.toBeIgnoredS()).isEqualTo(0); + assertThat(tfc.toBeIgnoredI()).isEqualTo(0); + assertThat(tfc.toBeIgnoredF()).isEqualTo(0); + assertThat(tfc.toBeIgnoredD()).isEqualTo(0); + assertThat(tfc.toBeIgnoredObj()).isEqualTo(null); + } @Test public void testSubstitute() { @@ -65,48 +74,12 @@ public class TinyFrameworkClassTest { } @Test - public void testVisibleButUsesUnsupportedMethod() { + public void testUnsupportedMethod() { TinyFrameworkForTextPolicy tfc = new TinyFrameworkForTextPolicy(); thrown.expect(RuntimeException.class); thrown.expectMessage("not yet supported"); - tfc.visibleButUsesUnsupportedMethod(); - } - - @Test - public void testNestedClass1() { - assertThat(new TinyFrameworkNestedClasses().mSupplier.get()).isEqualTo(1); - } - - @Test - public void testNestedClass2() { - assertThat(TinyFrameworkNestedClasses.sSupplier.get()).isEqualTo(2); - } - - @Test - public void testNestedClass3() { - assertThat(new TinyFrameworkNestedClasses().getSupplier().get()).isEqualTo(3); - } - - @Test - public void testNestedClass4() { - assertThat(TinyFrameworkNestedClasses.getSupplier_static().get()).isEqualTo(4); - } - - @Test - public void testNestedClass5() { - assertThat((new TinyFrameworkNestedClasses()).new InnerClass().value).isEqualTo(5); - } - - @Test - public void testNestedClass6() { - assertThat(new TinyFrameworkNestedClasses.StaticNestedClass().value).isEqualTo(6); - } - - @Test - public void testNestedClass7() { - assertThat(TinyFrameworkNestedClasses.StaticNestedClass.getSupplier_static().get()) - .isEqualTo(7); + tfc.unsupportedMethod(); } @Test @@ -172,28 +145,28 @@ public class TinyFrameworkClassTest { } @Test - public void testSubstituteNativeWithThrow() throws Exception { - // We can't use TinyFrameworkNative.nativeStillNotSupported() directly in this class, - // because @Throw implies @Keep (not @Stub), and we currently compile this test - // against the stub jar (so it won't contain @Throw methods). - // - // But the method exists at runtime, so we can use reflections to call it. - // - // In the real Ravenwood environment, we don't use HostStubGen's stub jar at all, - // so it's not a problem. + public void testSubstituteNativeWithThrow() { + thrown.expect(RuntimeException.class); + thrown.expectMessage("not yet supported"); - final var clazz = TinyFrameworkNative.class; - final var method = clazz.getMethod("nativeStillNotSupported"); + TinyFrameworkNative.nativeStillNotSupported(); + } - try { - method.invoke(null); + @Test + public void testSubstituteNativeWithKeep() { + // We don't want to complicate the test by setting up JNI, + // so to test out whether the native method is preserved, we + // check whether calling it will throw UnsatisfiedLinkError, + // which would only happen on native methods. + thrown.expect(UnsatisfiedLinkError.class); - fail("java.lang.reflect.InvocationTargetException expected"); + TinyFrameworkNative.nativeStillKeep(); + } - } catch (java.lang.reflect.InvocationTargetException e) { - var inner = e.getCause(); - assertThat(inner.getMessage()).contains("not yet supported"); - } + @Test + public void testNotNativeRedirect() { + TinyFrameworkNative.notNativeStaticRedirected(); + new TinyFrameworkNative().notNativeRedirected(); } @Test @@ -202,12 +175,6 @@ public class TinyFrameworkClassTest { thrown.expectMessage("Outer exception"); TinyFrameworkExceptionTester.testException(); - - } - - @Test - public void testMethodCallBeforeSuperCall() { - assertThat(new SubClass(3).value).isEqualTo(3); } @Test @@ -217,7 +184,7 @@ public class TinyFrameworkClassTest { // Having this line before assertThat() will ensure these class are already loaded. var classes = new Class[]{ TinyFrameworkClassWithInitializerStub.class, - TinyFrameworkClassAnnotations.class, + TinyFrameworkAnnotations.class, TinyFrameworkForTextPolicy.class, }; @@ -339,4 +306,16 @@ public class TinyFrameworkClassTest { public void testTypeRename() { assertThat(TinyFrameworkRenamedClassCaller.foo(1)).isEqualTo(1); } + + @Test + public void testMethodCallReplaceNonStatic() throws Exception { + assertThat(TinyFrameworkMethodCallReplace.nonStaticMethodCallReplaceTester()) + .isEqualTo(true); + } + + @Test + public void testMethodCallReplaceStatic() throws Exception { + assertThat(TinyFrameworkMethodCallReplace.staticMethodCallReplaceTester()) + .isEqualTo(3); + } } diff --git a/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotationsTest.java b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotationsTest.java new file mode 100644 index 000000000000..1816b383f6f7 --- /dev/null +++ b/tools/hoststubgen/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassWideAnnotationsTest.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.hoststubgen.test.tinyframework; + +import static com.google.common.truth.Truth.assertThat; + +import static org.junit.Assert.assertThrows; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +public class TinyFrameworkClassWideAnnotationsTest { + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void testSimple() { + var tfc = new TinyFrameworkClassWideAnnotations(); + assertThat(tfc.addOne(1)).isEqualTo(2); + assertThat(tfc.keep).isEqualTo(1); + } + + @Test + public void testRemove() { + var tfc = new TinyFrameworkClassWideAnnotations(); + assertThrows(NoSuchMethodError.class, () -> tfc.toBeRemoved("abc")); + assertThrows(NoSuchFieldError.class, () -> tfc.remove = 1); + } + + @Test + public void testSubstitute() { + var tfc = new TinyFrameworkClassWideAnnotations(); + assertThat(tfc.addTwo(1)).isEqualTo(3); + } + + @Test + public void testUnsupportedMethod() { + var tfc = new TinyFrameworkClassWideAnnotations(); + + thrown.expect(RuntimeException.class); + thrown.expectMessage("not yet supported"); + tfc.unsupportedMethod(); + } + + @Test + public void testMethodCallBeforeSuperCall() { + assertThat(new TinyFrameworkNestedClasses.SubClass(3).value).isEqualTo(3); + } + + @Test + public void testNestedClass1() { + assertThat(new TinyFrameworkNestedClasses().mSupplier.get()).isEqualTo(1); + } + + @Test + public void testNestedClass2() { + assertThat(TinyFrameworkNestedClasses.sSupplier.get()).isEqualTo(2); + } + + @Test + public void testNestedClass3() { + assertThat(new TinyFrameworkNestedClasses().getSupplier().get()).isEqualTo(3); + } + + @Test + public void testNestedClass4() { + assertThat(TinyFrameworkNestedClasses.getSupplier_static().get()).isEqualTo(4); + } + + @Test + public void testNestedClass5() { + assertThat((new TinyFrameworkNestedClasses()).new InnerClass().value).isEqualTo(5); + } + + @Test + public void testNestedClass6() { + assertThat(new TinyFrameworkNestedClasses.StaticNestedClass().value).isEqualTo(6); + } + + @Test + public void testNestedClass7() { + assertThat(TinyFrameworkNestedClasses.StaticNestedClass.getSupplier_static().get()) + .isEqualTo(7); + } + + @Test + public void testNestedClass8() { + assertThat(new TinyFrameworkNestedClasses.StaticNestedClass.Double$NestedClass().value) + .isEqualTo(8); + } + + @Test + public void testIgnoreAnnotation() { + // The actual method will throw, but because of @Ignore, it'll return 0. + assertThat(new TinyFrameworkAnnotations().toBeIgnored()) + .isEqualTo(0); + } +} diff --git a/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/asm/AsmUtilsTest.kt b/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/asm/AsmUtilsTest.kt index 6b46c84bd0bb..5b2795c4cff2 100644 --- a/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/asm/AsmUtilsTest.kt +++ b/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/asm/AsmUtilsTest.kt @@ -23,18 +23,6 @@ import org.objectweb.asm.Opcodes.ACC_PUBLIC import org.objectweb.asm.Opcodes.ACC_STATIC class AsmUtilsTest { - private fun checkGetDirectOuterClassName(input: String, expected: String?) { - assertThat(getDirectOuterClassName(input)).isEqualTo(expected) - } - - @Test - fun testGetDirectOuterClassName() { - checkGetDirectOuterClassName("a", null) - checkGetDirectOuterClassName("a\$x", "a") - checkGetDirectOuterClassName("a.b.c\$x", "a.b.c") - checkGetDirectOuterClassName("a.b.c\$x\$y", "a.b.c\$x") - } - @Test fun testVisibility() { fun test(access: Int, expected: Visibility) { diff --git a/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt b/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt index f6515142ccdb..d4e75d43a54a 100644 --- a/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt +++ b/tools/hoststubgen/hoststubgen/test/com/android/hoststubgen/utils/ClassFilterTest.kt @@ -69,6 +69,20 @@ class ClassFilterTest { assertThat(f.matches("d/e/f")).isEqualTo(false) assertThat(f.matches("d/e/f/g")).isEqualTo(true) assertThat(f.matches("x")).isEqualTo(true) + + assertThat(f.matches("ab/x")).isEqualTo(true) + } + + @Test + fun testNestedClass() { + val f = ClassFilter.buildFromString("a.b.c\nm.n.o\$p\n", false, "X") + assertThat(f.matches("a/b/c")).isEqualTo(true) + assertThat(f.matches("a/b/c\$d")).isEqualTo(true) + assertThat(f.matches("a/b/c\$d\$e")).isEqualTo(true) + assertThat(f.matches("m/n/o")).isEqualTo(false) + assertThat(f.matches("m/n/o\$p")).isEqualTo(true) + assertThat(f.matches("m/n/o\$p\$r")).isEqualTo(true) + assertThat(f.matches("m/n/o\$p\$r\$")).isEqualTo(true) } @Test @@ -84,4 +98,18 @@ class ClassFilterTest { assertThat(e.message).contains("line 1") } } + + @Test + fun testSuffix() { + val f = ClassFilter.buildFromString(""" + *.Abc # allow + !* # Disallow by default + """.trimIndent(), true, "X") + assertThat(f.matches("a/b/c")).isEqualTo(false) + assertThat(f.matches("a/Abc")).isEqualTo(true) + assertThat(f.matches("a/b/c/Abc")).isEqualTo(true) + assertThat(f.matches("a/b/c/Abc\$Nested")).isEqualTo(true) + + assertThat(f.matches("a/XyzAbc")).isEqualTo(false) + } }
\ No newline at end of file diff --git a/tools/hoststubgen/scripts/dump-jar b/tools/hoststubgen/scripts/dump-jar index fe546fe9cc92..87652451359d 100755 --- a/tools/hoststubgen/scripts/dump-jar +++ b/tools/hoststubgen/scripts/dump-jar @@ -26,12 +26,12 @@ help() { Dump a *.class file - dump-jar [-v] [-s] [-o OUTPUT-FILENAME] JAR-FILE[: filename regex] [...] + dump-jar [-v] [-s] [-o OUTPUT-FILENAME] JAR-FILE[: class internal name regex] [...] Dump a jar file. If a filename contains a ':', then the following part - will be used to filter files in the jar file. + will be used to filter files in the jar file that matches against class internal names. For example, "file.jar:/MyClass$" will only dump "MyClass" in file.jar. @@ -78,16 +78,6 @@ if (( $simple )) ; then JAVAP_OPTS="-p -c -v" fi - -# Normalize a java class name. -# Convert '.' to '/' -# Remove the *.class suffix. -normalize() { - local name="$1" - name="${name%.class}" # Remove the .class suffix. - echo "$name" | tr '.' '/' -} - # Convert the output for `-s` as needed. filter_output() { if (( $simple )) ; then @@ -124,6 +114,12 @@ write_to_out() { fi } +# Read jar file names and remove the .class suffix. +# Also remove non-class files. +to_internal_names() { + sed -ne 's/\.class$//p' +} + for file in "${@}"; do # *.class? @@ -136,7 +132,7 @@ for file in "${@}"; do # Take the regex. Remove everything up to : in $file regex="" if [[ "$file" =~ : ]] ; then - regex="$(normalize "${file##*:}")" + regex="${file##*:}" fi # Remove everything after ':', inclusively, in $file. @@ -151,13 +147,9 @@ for file in "${@}"; do echo fi - jar tf "$file" | grep '\.class$' | sort | while read -r class ; do - if normalize "$class" | grep -q -- "$regex" ; then - echo "## Class: $class" - javap $dump_code_opt $JAVAP_OPTS -cp $file ${class%.class} - else - (( $verbose )) && echo "## Skipping class: $class" - fi + jar tf "$file" | sort | to_internal_names | grep -- "$regex" | while read -r class ; do + echo "## Class: $class.class" + javap $dump_code_opt $JAVAP_OPTS -cp "$file" "${class}" done else |