summaryrefslogtreecommitdiff
path: root/test/551-checker-clinit/src/Main.java
AgeCommit message (Collapse)Author
2022-11-18Update test to avoid int[] pattern Clément Béra
int[] pattern are now compiled differently Test: m -j PRODUCT-aosp_arm64-eng core-oj Change-Id: I0110d9d74c8c54610aff17173cdc09f20f6abf72
2018-10-31Fix and improve ClinitCheck elimination. Vladimir Marko
Fix erroneous usage of the inner method's access flags while checking the class of the outer method. This allowed erroneous elimination of a needed ClinitCheck when inlining. Treat constructors the same way as static methods as the instance allocation necessarily preceding the constructor call performs the class initialization check. The size of the aosp_taimen-userdebug prebuilts: - before: arm/boot*.oat: 20252196 arm64/boot*.oat: 24030776 oat/arm64/services.odex: 22406664 - after: arm/boot*.oat: 20252092 (-0.1KiB) arm64/boot*.oat: 24027024 (-3.7KiB) oat/arm64/services.odex: 22402528 (-4.0KiB) (Insignificant changes.) Test: Add regression test to 174-escaping-instance-of-bad-class. Test: Add optimization test to 551-checker-clinit. Test: testrunner.py --jvm -t 174 Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: m test-art-target-gtest Test: testrunner.py --target --optimizing Bug: 62478025 Change-Id: I591aca2c538d10cf6df1d38d59270af1de380b3e
2018-07-23Elide ClinitCheck for superclasses with trivial init. Vladimir Marko
We cannot generally elide ClinitCheck for superclasses because of escaping instances of erroneous classes and because a subclass can be successfully initialized while the superclass is initializing and the subclass remains initialized even when the superclass initializer throws. However, for those superclasses that have trivial init, i.e. that class and its superclasses (and superinterfaces with default methods) initialize only their own static fields using constant values, there is no chance to end up in one of these weird situations and we can safely eliminate the ClinitCheck. The size of the aosp_taimen-userdebug prebuilts: - before: arm/boot*.oat: 16856928 arm64/boot*.oat: 19846592 oat/arm64/services.odex: 24662880 - after: arm/boot*.oat: 16848696 (-8.0KiB, -0.05%) arm64/boot*.oat: 19842320 (-4.2KiB, -0.02%) oat/arm64/services.odex: 24629952 (-32.2KiB, -0.13%) with minor changes to other app prebuilts. Test: Improved 478-checker-clinit-check-pruning. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: testrunner.py --target --optimizing Bug: 62478025 Change-Id: I865f567443f1b7f172e5e6559d8eb3232adb7833
2018-07-12Fix HClinitCheck elimination in instruction builder. Vladimir Marko
To handle escaping instances of erroneous classes correctly, we can omit the HClinitCheck only when using a class in the static method of the very same class. Even for superclasses we need to do the check. The new test exposes the cases where we were previously diverging from the RI. Also clean up the CompilerDriver by inlining one function directly to the HInstructionBuild::IsInitialized(.) and removing some related functions that are no longer used. The size of the aosp_taimen-userdebug prebuilts: - before: arm/boot*.oat: 16891788 arm64/boot*.oat: 19815520 oat/arm64/services.odex: 20071624 - after: arm/boot*.oat: 16949532 (+56.4KiB, +0.34%) arm64/boot*.oat: 19889752 (+72.5KiB, +0.37%) oat/arm64/services.odex: 20224328 (+149.1KiB, +0.76%) with minor changes to other app prebuilts. Note: Some of that could be reclaimed by reinstating the old optimization for classes where no bytecode can be executed during initialization (no <clinit> to execute in that class or superclasses). Test: 174-escaping-instance-of-bad-class Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: testrunner.py --jvm -t 174 Test: Pixel 2 XL boots. Test: testrunner.py --target --optimizing Bug: 62478025 Change-Id: I41f026ea7fecc615c06e87f3b6cb847de0ede8a6
2015-11-24A few more optimizations on avoiding HClinit. Nicolas Geoffray
Change-Id: I622a98b620e9d261cb654e2f5ab578bd8b3484b1