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