12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/*
22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2007 The Android Open Source Project
32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License.
62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at
72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software
112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and
142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License.
152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */
165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/*
185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoInitial:
195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest001: 2039901us  (4079ns per call)
205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest049: 3346619us  (6693ns per call)
215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest099: 4687402us  (9374ns per call)
225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1327216us  (2654ns per use)
235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1326995us  (2653ns per use)
245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1327735us  (2655ns per use)
255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter refactoring cache code: 2871ns per use
275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter re-refactoring cache code: 2797ns per use
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter de-inlining invoke-interface:
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest001: 2164873us  (4329ns per call)
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest049: 3303884us  (6607ns per call)
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest099: 4656718us  (9313ns per call)
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1401731us  (2803ns per use)
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1401120us  (2802ns per use)
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1401298us  (2802ns per use)
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter adding caching for invoke-interface:
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface001: 1909330us  (3818ns per call)
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface049: 1905204us  (3810ns per call)
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface099: 1899012us  (3798ns per call)
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt001: 1825001us  (3650ns per call)
425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt049: 1826161us  (3652ns per call)
435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt099: 1823915us  (3647ns per call)
445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1393963us  (2787ns per use)
455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1393163us  (2786ns per use)
465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1390496us  (2780ns per use)
475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter repeating each operation 16 times inside the inner loop:
495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface001: 1429472us  (2726ns per call)      * 2382ns
505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface049: 1427847us  (2723ns per call)      * 2396ns
515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface099: 1423707us  (2715ns per call)      * 2387ns
525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt001: 1277790us  (2437ns per call)       * 2118ns
535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt049: 1280276us  (2441ns per call)       * 2119ns
545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt099: 1272640us  (2427ns per call)       * 2118ns
555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 844694us  (1611ns per use)         * 1396ns
565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 845619us  (1612ns per use)         * 1395ns
575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 845526us  (1612ns per use)         * 1394ns
585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao('*' is with dx optimizations enabled)
595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao*/
605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/**
625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Semi-generated class with many interfaces.
635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class ManyInterfaces
655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    implements
665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface000,
675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface001,
685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface002,
695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface003,
705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface004,
715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface005,
725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface006,
735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface007,
745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface008,
755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface009,
765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface010,
775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface011,
785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface012,
795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface013,
805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface014,
815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface015,
825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface016,
835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface017,
845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface018,
855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface019,
865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface020,
875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface021,
885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface022,
895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface023,
905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface024,
915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface025,
925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface026,
935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface027,
945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface028,
955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface029,
965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface030,
975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface031,
985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface032,
995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface033,
1005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface034,
1015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface035,
1025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface036,
1035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface037,
1045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface038,
1055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface039,
1065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface040,
1075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface041,
1085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface042,
1095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface043,
1105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface044,
1115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface045,
1125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface046,
1135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface047,
1145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface048,
1155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface049,
1165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface050,
1175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface051,
1185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface052,
1195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface053,
1205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface054,
1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface055,
1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface056,
1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface057,
1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface058,
1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface059,
1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface060,
1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface061,
1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface062,
1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface063,
1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface064,
1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface065,
1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface066,
1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface067,
1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface068,
1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface069,
1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface070,
1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface071,
1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface072,
1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface073,
1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface074,
1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface075,
1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface076,
1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface077,
1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface078,
1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface079,
1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface080,
1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface081,
1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface082,
1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface083,
1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface084,
1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface085,
1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface086,
1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface087,
1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface088,
1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface089,
1565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface090,
1575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface091,
1585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface092,
1595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface093,
1605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface094,
1615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface095,
1625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface096,
1635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface097,
1645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface098,
1655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface099
1665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao{
1675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /** whether to report timing information */
1685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    private static boolean timing = false;
1695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /**
1715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     * Report on a section.
1725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     */
1735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    private static void report(String label, long start, long end, int iter,
1745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            int rept) {
1755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (timing) {
1765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.println(label + ": " + (end - start) / 1000 + "us"
1775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao                    + "  (" + (end - start) / (iter*rept) + "ns per call)");
1785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } else {
1795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.println(label + ": done");
1805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
1815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /**
1845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     * Run tests.
1855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     *
1865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     * @param timing whether to print out timing info
1875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao     */
1885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public static void run(boolean timing) {
1895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        ManyInterfaces.timing = timing;
1905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        ManyInterfaces obj = new ManyInterfaces();
1915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface001 one;
1925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface049 forty;
1935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Interface099 ninety;
1945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long start, end;
1955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int iter = 32768;
1965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int rept = 16;
1975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int i;
1985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /*
2005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         * Clear the heap.  The various classes involved should already
2015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         * be loaded and ready as a result of instantiating ManyInterfaces.
2025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         */
2037befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier        Runtime.getRuntime().gc();
2045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testIface001(obj, iter);
2075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testIface001", start, end, iter, rept);
2095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testIface049(obj, iter);
2125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testIface049", start, end, iter, rept);
2145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testIface099(obj, iter);
2175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testIface099", start, end, iter, rept);
2195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testVirt001(obj, iter);
2225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testVirt001", start, end, iter, rept);
2245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testVirt049(obj, iter);
2275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testVirt049", start, end, iter, rept);
2295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testVirt099(obj, iter);
2325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testVirt099", start, end, iter, rept);
2345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testInstance001(obj, iter);
2375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testInst001", start, end, iter, rept);
2395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testInstance049(obj, iter);
2425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testInst049", start, end, iter, rept);
2445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        start = System.nanoTime();
2465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        testInstance099(obj, iter);
2475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        end = System.nanoTime();
2485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        report("testInst099", start, end, iter, rept);
2495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
2505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func001() { return 1; }
2525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func003() { return 3; }
2535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func005() { return 5; }
2545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func007() { return 7; }
2555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func009() { return 9; }
2565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func011() { return 11; }
2575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func013() { return 13; }
2585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func015() { return 15; }
2595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func017() { return 17; }
2605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func019() { return 19; }
2615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func021() { return 21; }
2625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func023() { return 23; }
2635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func025() { return 25; }
2645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func027() { return 27; }
2655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func029() { return 29; }
2665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func031() { return 31; }
2675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func033() { return 33; }
2685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func035() { return 35; }
2695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func037() { return 37; }
2705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func039() { return 39; }
2715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func041() { return 41; }
2725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func043() { return 43; }
2735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func045() { return 45; }
2745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func047() { return 47; }
2755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func049() { return 49; }
2765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func051() { return 51; }
2775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func053() { return 53; }
2785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func055() { return 55; }
2795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func057() { return 57; }
2805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func059() { return 59; }
2815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func061() { return 61; }
2825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func063() { return 63; }
2835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func065() { return 65; }
2845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func067() { return 67; }
2855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func069() { return 69; }
2865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func071() { return 71; }
2875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func073() { return 73; }
2885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func075() { return 75; }
2895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func077() { return 77; }
2905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func079() { return 79; }
2915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func081() { return 81; }
2925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func083() { return 83; }
2935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func085() { return 85; }
2945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func087() { return 87; }
2955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func089() { return 89; }
2965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func091() { return 91; }
2975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func093() { return 93; }
2985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func095() { return 95; }
2995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func097() { return 97; }
3005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public int func099() { return 99; }
3015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testIface001(Interface001 iface, int count) {
3035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func001(); iface.func001(); iface.func001(); iface.func001();
3055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func001(); iface.func001(); iface.func001(); iface.func001();
3065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func001(); iface.func001(); iface.func001(); iface.func001();
3075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func001(); iface.func001(); iface.func001(); iface.func001();
3085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testIface049(Interface049 iface, int count) {
3125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func049(); iface.func049(); iface.func049(); iface.func049();
3145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func049(); iface.func049(); iface.func049(); iface.func049();
3155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func049(); iface.func049(); iface.func049(); iface.func049();
3165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func049(); iface.func049(); iface.func049(); iface.func049();
3175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testIface099(Interface099 iface, int count) {
3215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func099(); iface.func099(); iface.func099(); iface.func099();
3235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func099(); iface.func099(); iface.func099(); iface.func099();
3245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func099(); iface.func099(); iface.func099(); iface.func099();
3255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            iface.func099(); iface.func099(); iface.func099(); iface.func099();
3265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testVirt001(ManyInterfaces obj, int count) {
3305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func001(); obj.func001(); obj.func001(); obj.func001();
3325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func001(); obj.func001(); obj.func001(); obj.func001();
3335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func001(); obj.func001(); obj.func001(); obj.func001();
3345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func001(); obj.func001(); obj.func001(); obj.func001();
3355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testVirt049(ManyInterfaces obj, int count) {
3395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func049(); obj.func049(); obj.func049(); obj.func049();
3415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func049(); obj.func049(); obj.func049(); obj.func049();
3425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func049(); obj.func049(); obj.func049(); obj.func049();
3435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func049(); obj.func049(); obj.func049(); obj.func049();
3445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testVirt099(ManyInterfaces obj, int count) {
3485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func099(); obj.func099(); obj.func099(); obj.func099();
3505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func099(); obj.func099(); obj.func099(); obj.func099();
3515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func099(); obj.func099(); obj.func099(); obj.func099();
3525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            obj.func099(); obj.func099(); obj.func099(); obj.func099();
3535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testInstance001(Object obj, int count) {
3575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (!(obj instanceof Interface001))
3585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.err.println("BAD");
3595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            boolean is;
3615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface001;
3775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
3785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
3795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testInstance049(Object obj, int count) {
3815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (!(obj instanceof Interface049))
3825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.err.println("BAD");
3835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
3845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            boolean is;
3855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
3995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
4005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface049;
4015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
4025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
4035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
4045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static void testInstance099(Object obj, int count) {
4055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (!(obj instanceof Interface099))
4065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.err.println("BAD");
4075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        while (count-- != 0) {
4085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            boolean is;
4095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            is = obj instanceof Interface099;
4255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
4265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
4275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
428