diff options
author | Calin Juravle <calin@google.com> | 2017-02-13 19:03:47 -0800 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2017-03-03 13:12:31 -0800 |
commit | e0ac1151b360be7147fa20320c0b427688b1424f (patch) | |
tree | c33419b00c47b731075bcfd7b75b81f366beda91 /test/ProfileTestMultiDex | |
parent | 425b5d23e2c60d295471817a75b1b554481c5334 (diff) |
Extend profman to generate profiles with inline caches
Extend profman logic to generate profiles based on a simple textual
respresentation. This will help writing tests for profile guided
compilation.
Before this CL, profman was able to generate profiles based on a list of
classes like:
java.lang.Comparable
java.lang.Math
java.lang.Object
This CL, enables profman to understand methods and classes alike. The
new format is:
# Classes
Ljava/lang/Comparable;
Ljava/lang/Math;
# Methods with inline caches
LTestInline;->inlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;
LTestInline;->noInlineCache(LSuper;)I
"LTestInline;->inlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;"
means that method `int inlineMonomorphicSubA(Super)` from class Main
will be added to the profile with the inline cache (SubA,SubB) for its
one and only invoke virtual.
@Main#noInlineCache:(LSuper;)I+;
meaning that method `int noInlineCache' from class Main will be added
to the profile with no inline cache.
Note that the methods are allowed to have a single invoke virtual in
their dex bytecode. That is to keep the parsing the file format
simple and easy to use.
Also, add a few more tests for profiles and fix an issue caused by
writing the dex files in a possibly wrong order.
Test: m run-test-host-gtest-profile_assistant_test
Bug: 32434870
Change-Id: I6b7340cf613007117d9818be206ccb3a27b815bf
Diffstat (limited to 'test/ProfileTestMultiDex')
-rw-r--r-- | test/ProfileTestMultiDex/Main.java | 38 | ||||
-rw-r--r-- | test/ProfileTestMultiDex/Second.java | 5 | ||||
-rw-r--r-- | test/ProfileTestMultiDex/main.jpp | 22 | ||||
-rw-r--r-- | test/ProfileTestMultiDex/main.list | 6 |
4 files changed, 69 insertions, 2 deletions
diff --git a/test/ProfileTestMultiDex/Main.java b/test/ProfileTestMultiDex/Main.java index 41532ea8f7..73fbb00d25 100644 --- a/test/ProfileTestMultiDex/Main.java +++ b/test/ProfileTestMultiDex/Main.java @@ -25,3 +25,41 @@ class Main { return "C"; } } + +class TestInline { + public int inlineMonomorphic(Super s) { + return s.getValue(); + } + + public int inlinePolymorphic(Super s) { + return s.getValue(); + } + + public int inlineMegamorphic(Super s) { + return s.getValue(); + } + + public int noInlineCache(Super s) { + return s.getValue(); + } +} + +abstract class Super { + abstract int getValue(); +} + +class SubA extends Super { + int getValue() { return 42; } +} + +class SubB extends Super { + int getValue() { return 38; }; +} + +class SubD extends Super { + int getValue() { return 20; }; +} + +class SubE extends Super { + int getValue() { return 16; }; +} diff --git a/test/ProfileTestMultiDex/Second.java b/test/ProfileTestMultiDex/Second.java index 4ac5abc300..4b3c7a479b 100644 --- a/test/ProfileTestMultiDex/Second.java +++ b/test/ProfileTestMultiDex/Second.java @@ -25,3 +25,8 @@ class Second { return "Z"; } } + +class SubC extends Super { + int getValue() { return 24; } +} + diff --git a/test/ProfileTestMultiDex/main.jpp b/test/ProfileTestMultiDex/main.jpp index f2e3b4e14c..5e55e96874 100644 --- a/test/ProfileTestMultiDex/main.jpp +++ b/test/ProfileTestMultiDex/main.jpp @@ -1,3 +1,21 @@ -main: +Main: @@com.android.jack.annotations.ForceInMainDex - class Second + class Main +TestInqline: + @@com.android.jack.annotations.ForceInMainDex + class TestInline +Super: + @@com.android.jack.annotations.ForceInMainDex + class Super +SubA: + @@com.android.jack.annotations.ForceInMainDex + class SubA +SubB: + @@com.android.jack.annotations.ForceInMainDex + class SubB +SubD: + @@com.android.jack.annotations.ForceInMainDex + class SubD +SubE: + @@com.android.jack.annotations.ForceInMainDex + class SubE diff --git a/test/ProfileTestMultiDex/main.list b/test/ProfileTestMultiDex/main.list index 44ba78ead5..ec131f0f71 100644 --- a/test/ProfileTestMultiDex/main.list +++ b/test/ProfileTestMultiDex/main.list @@ -1 +1,7 @@ Main.class +TestInline.class +Super.class +SubA.class +SubB.class +SubD.class +SubE.class |