Home | History | Annotate | Download | only in src
      1 // Copyright (C) 2017 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 //
     16 // Lists several combinations of Classes X Methods X Hotness:
     17 //
     18 // Class A-C:
     19 //   - Ensure method hotness overrides sorting by class_def_idx
     20 //
     21 // Method m_a : m_c
     22 //   - Ensure method hotness overrides sorting by method_id
     23 //
     24 // Method m_a$Hot$Enum$Bits
     25 //   - $X$Y$Z is an encoding of MethodHotness flags ($[Hot]$[Startup]$[Poststartup])
     26 //   - The method name encoding matches the `profile` hotness.
     27 //   - Check all variations of the bits to make sure it sorts by hotness correctly.
     28 //
     29 
     30 class A {
     31   // Note that every method has unique dex code (by using a unique string literal).
     32   // This is to prevent dex/oat code deduping. Deduped methods do not get distinct bins.
     33   void m_a$$$() { System.out.println("Don't dedupe me! A::m_a$$$"); }
     34   void m_a$Hot$$() { System.out.println("Don't dedupe me! A::m_a$Hot$$"); }
     35   void m_a$$Startup$() { System.out.println("Don't dedupe me! A::m_a$$Startup$"); }
     36   void m_a$Hot$Startup$() { System.out.println("Don't dedupe me! A::m_a$Hot$Startup$"); }
     37   void m_a$$$Poststartup() { System.out.println("Don't dedupe me! A::m_a$$$Poststartup"); }
     38   void m_a$Hot$$Poststartup() { System.out.println("Don't dedupe me! A::m_a$Hot$$Poststartup"); }
     39   void m_a$$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_a$$Startup$Poststartup"); }
     40   void m_a$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_a$Hot$Startup$Poststartup"); }
     41   void m_b$$$() { System.out.println("Don't dedupe me! A::m_b$$$"); }
     42   void m_b$Hot$$() { System.out.println("Don't dedupe me! A::m_b$Hot$$"); }
     43   void m_b$$Startup$() { System.out.println("Don't dedupe me! A::m_b$$Startup$"); }
     44   void m_b$Hot$Startup$() { System.out.println("Don't dedupe me! A::m_b$Hot$Startup$"); }
     45   void m_b$$$Poststartup() { System.out.println("Don't dedupe me! A::m_b$$$Poststartup"); }
     46   void m_b$Hot$$Poststartup() { System.out.println("Don't dedupe me! A::m_b$Hot$$Poststartup"); }
     47   void m_b$$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_b$$Startup$Poststartup"); }
     48   void m_b$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_b$Hot$Startup$Poststartup"); }
     49   void m_c$$$() { System.out.println("Don't dedupe me! A::m_c$$$"); }
     50   void m_c$Hot$$() { System.out.println("Don't dedupe me! A::m_c$Hot$$"); }
     51   void m_c$$Startup$() { System.out.println("Don't dedupe me! A::m_c$$Startup$"); }
     52   void m_c$Hot$Startup$() { System.out.println("Don't dedupe me! A::m_c$Hot$Startup$"); }
     53   void m_c$$$Poststartup() { System.out.println("Don't dedupe me! A::m_c$$$Poststartup"); }
     54   void m_c$Hot$$Poststartup() { System.out.println("Don't dedupe me! A::m_c$Hot$$Poststartup"); }
     55   void m_c$$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_c$$Startup$Poststartup"); }
     56   void m_c$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! A::m_c$Hot$Startup$Poststartup"); }
     57 }
     58 class B {
     59   void m_a$$$() { System.out.println("Don't dedupe me! B::m_a$$$"); }
     60   void m_a$Hot$$() { System.out.println("Don't dedupe me! B::m_a$Hot$$"); }
     61   void m_a$$Startup$() { System.out.println("Don't dedupe me! B::m_a$$Startup$"); }
     62   void m_a$Hot$Startup$() { System.out.println("Don't dedupe me! B::m_a$Hot$Startup$"); }
     63   void m_a$$$Poststartup() { System.out.println("Don't dedupe me! B::m_a$$$Poststartup"); }
     64   void m_a$Hot$$Poststartup() { System.out.println("Don't dedupe me! B::m_a$Hot$$Poststartup"); }
     65   void m_a$$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_a$$Startup$Poststartup"); }
     66   void m_a$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_a$Hot$Startup$Poststartup"); }
     67   void m_b$$$() { System.out.println("Don't dedupe me! B::m_b$$$"); }
     68   void m_b$Hot$$() { System.out.println("Don't dedupe me! B::m_b$Hot$$"); }
     69   void m_b$$Startup$() { System.out.println("Don't dedupe me! B::m_b$$Startup$"); }
     70   void m_b$Hot$Startup$() { System.out.println("Don't dedupe me! B::m_b$Hot$Startup$"); }
     71   void m_b$$$Poststartup() { System.out.println("Don't dedupe me! B::m_b$$$Poststartup"); }
     72   void m_b$Hot$$Poststartup() { System.out.println("Don't dedupe me! B::m_b$Hot$$Poststartup"); }
     73   void m_b$$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_b$$Startup$Poststartup"); }
     74   void m_b$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_b$Hot$Startup$Poststartup"); }
     75   void m_c$$$() { System.out.println("Don't dedupe me! B::m_c$$$"); }
     76   void m_c$Hot$$() { System.out.println("Don't dedupe me! B::m_c$Hot$$"); }
     77   void m_c$$Startup$() { System.out.println("Don't dedupe me! B::m_c$$Startup$"); }
     78   void m_c$Hot$Startup$() { System.out.println("Don't dedupe me! B::m_c$Hot$Startup$"); }
     79   void m_c$$$Poststartup() { System.out.println("Don't dedupe me! B::m_c$$$Poststartup"); }
     80   void m_c$Hot$$Poststartup() { System.out.println("Don't dedupe me! B::m_c$Hot$$Poststartup"); }
     81   void m_c$$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_c$$Startup$Poststartup"); }
     82   void m_c$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! B::m_c$Hot$Startup$Poststartup"); }
     83 }
     84 class C {
     85   void m_a$$$() { System.out.println("Don't dedupe me! C::m_a$$$"); }
     86   void m_a$Hot$$() { System.out.println("Don't dedupe me! C::m_a$Hot$$"); }
     87   void m_a$$Startup$() { System.out.println("Don't dedupe me! C::m_a$$Startup$"); }
     88   void m_a$Hot$Startup$() { System.out.println("Don't dedupe me! C::m_a$Hot$Startup$"); }
     89   void m_a$$$Poststartup() { System.out.println("Don't dedupe me! C::m_a$$$Poststartup"); }
     90   void m_a$Hot$$Poststartup() { System.out.println("Don't dedupe me! C::m_a$Hot$$Poststartup"); }
     91   void m_a$$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_a$$Startup$Poststartup"); }
     92   void m_a$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_a$Hot$Startup$Poststartup"); }
     93   void m_b$$$() { System.out.println("Don't dedupe me! C::m_b$$$"); }
     94   void m_b$Hot$$() { System.out.println("Don't dedupe me! C::m_b$Hot$$"); }
     95   void m_b$$Startup$() { System.out.println("Don't dedupe me! C::m_b$$Startup$"); }
     96   void m_b$Hot$Startup$() { System.out.println("Don't dedupe me! C::m_b$Hot$Startup$"); }
     97   void m_b$$$Poststartup() { System.out.println("Don't dedupe me! C::m_b$$$Poststartup"); }
     98   void m_b$Hot$$Poststartup() { System.out.println("Don't dedupe me! C::m_b$Hot$$Poststartup"); }
     99   void m_b$$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_b$$Startup$Poststartup"); }
    100   void m_b$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_b$Hot$Startup$Poststartup"); }
    101   void m_c$$$() { System.out.println("Don't dedupe me! C::m_c$$$"); }
    102   void m_c$Hot$$() { System.out.println("Don't dedupe me! C::m_c$Hot$$"); }
    103   void m_c$$Startup$() { System.out.println("Don't dedupe me! C::m_c$$Startup$"); }
    104   void m_c$Hot$Startup$() { System.out.println("Don't dedupe me! C::m_c$Hot$Startup$"); }
    105   void m_c$$$Poststartup() { System.out.println("Don't dedupe me! C::m_c$$$Poststartup"); }
    106   void m_c$Hot$$Poststartup() { System.out.println("Don't dedupe me! C::m_c$Hot$$Poststartup"); }
    107   void m_c$$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_c$$Startup$Poststartup"); }
    108   void m_c$Hot$Startup$Poststartup() { System.out.println("Don't dedupe me! C::m_c$Hot$Startup$Poststartup"); }
    109 }
    110