From a2f1319a8941ae52c98594824b919c08eeb0ecd1 Mon Sep 17 00:00:00 2001 From: Alex Light Date: Wed, 3 Feb 2021 18:19:03 -0800 Subject: Add text-profile support for multiple ICs Text profile inline-cache support was limited to methods with only a single invoke. This extends support so it is instead based on the receiver type and supports an arbitrary number of invokes. It does assume that all invokes of the same receivers should have the same ICs. This enables us to create text profiles that can survive most common edits to the underlying java language files. IC lines are of the following format <> := {CLASS}(,{CLASS})* <> := \[{CLASS}{CLASS_GROUP} <> := {PROFILE_FLAGS}{CLASS}->{METHOD}\+{IC_GROUP}* This means a typical line might look like: ``` HLTestInline;->inlineTriplePolymorphic(LSuper;LSecret;LSecret;)I+[LSuper;LSubA;,LSubB;,LSubC;[LSecret;LSubB;,LSubC; ``` Note that old style single-invoke IC lines are still supported as well and their format has not changed. Updated --dump-classes-and-methods to dump ICs using this format. Note that it will combine ICs for different pcs with the same target so it is possible to construct a profile where the 'profile -> dump -> profile' operation is not idempotent. Any profile coming from a text-dump will be idempotent under this transform. Test: ./test.py --host Bug: 168941430 Change-Id: I69ba3b312caa7ca454487aaeb49862e393de3a4a --- test/ProfileTestMultiDex/Second.java | 1 + 1 file changed, 1 insertion(+) (limited to 'test/ProfileTestMultiDex/Second.java') diff --git a/test/ProfileTestMultiDex/Second.java b/test/ProfileTestMultiDex/Second.java index a2bb8d4bfd..c9b3c0be04 100644 --- a/test/ProfileTestMultiDex/Second.java +++ b/test/ProfileTestMultiDex/Second.java @@ -28,6 +28,7 @@ class Second { class SubC extends Super { int getValue() { return 24; } + int getIdentity() { return 42; } } class TestIntrinsicOatdump { -- cgit v1.2.3