|  | // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | // Test megamorphic calls. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | class A { | 
|  | A() {} | 
|  | f1() { | 
|  | return 1; | 
|  | } | 
|  |  | 
|  | f2() { | 
|  | return 2; | 
|  | } | 
|  |  | 
|  | f3() { | 
|  | return 3; | 
|  | } | 
|  |  | 
|  | f4() { | 
|  | return 4; | 
|  | } | 
|  |  | 
|  | f5() { | 
|  | return 5; | 
|  | } | 
|  |  | 
|  | f6() { | 
|  | return 6; | 
|  | } | 
|  |  | 
|  | f7() { | 
|  | return 7; | 
|  | } | 
|  |  | 
|  | f8() { | 
|  | return 8; | 
|  | } | 
|  |  | 
|  | f9() { | 
|  | return 9; | 
|  | } | 
|  |  | 
|  | f11() { | 
|  | return 11; | 
|  | } | 
|  |  | 
|  | f12() { | 
|  | return 12; | 
|  | } | 
|  |  | 
|  | f13() { | 
|  | return 13; | 
|  | } | 
|  |  | 
|  | f14() { | 
|  | return 14; | 
|  | } | 
|  |  | 
|  | f15() { | 
|  | return 15; | 
|  | } | 
|  |  | 
|  | f16() { | 
|  | return 16; | 
|  | } | 
|  |  | 
|  | f17() { | 
|  | return 17; | 
|  | } | 
|  |  | 
|  | f18() { | 
|  | return 18; | 
|  | } | 
|  |  | 
|  | f19() { | 
|  | return 19; | 
|  | } | 
|  |  | 
|  | f20() { | 
|  | return 20; | 
|  | } | 
|  |  | 
|  | f21() { | 
|  | return 21; | 
|  | } | 
|  |  | 
|  | f22() { | 
|  | return 22; | 
|  | } | 
|  |  | 
|  | f23() { | 
|  | return 23; | 
|  | } | 
|  |  | 
|  | f24() { | 
|  | return 24; | 
|  | } | 
|  |  | 
|  | f25() { | 
|  | return 25; | 
|  | } | 
|  |  | 
|  | f26() { | 
|  | return 26; | 
|  | } | 
|  |  | 
|  | f27() { | 
|  | return 27; | 
|  | } | 
|  |  | 
|  | f28() { | 
|  | return 28; | 
|  | } | 
|  |  | 
|  | f29() { | 
|  | return 29; | 
|  | } | 
|  |  | 
|  | f30() { | 
|  | return 30; | 
|  | } | 
|  |  | 
|  | f31() { | 
|  | return 31; | 
|  | } | 
|  |  | 
|  | f32() { | 
|  | return 32; | 
|  | } | 
|  |  | 
|  | f33() { | 
|  | return 33; | 
|  | } | 
|  |  | 
|  | f34() { | 
|  | return 34; | 
|  | } | 
|  |  | 
|  | f35() { | 
|  | return 35; | 
|  | } | 
|  |  | 
|  | f36() { | 
|  | return 36; | 
|  | } | 
|  |  | 
|  | f37() { | 
|  | return 37; | 
|  | } | 
|  |  | 
|  | f38() { | 
|  | return 38; | 
|  | } | 
|  |  | 
|  | f39() { | 
|  | return 39; | 
|  | } | 
|  | } | 
|  |  | 
|  | class B extends A { | 
|  | B() : super() {} | 
|  | } | 
|  |  | 
|  | class ManyCallsTest { | 
|  | static testMain() { | 
|  | var list = new List(10); | 
|  | for (int i = 0; i < (list.length ~/ 2); i++) { | 
|  | list[i] = new A(); | 
|  | } | 
|  | for (int i = (list.length ~/ 2); i < list.length; i++) { | 
|  | list[i] = new B(); | 
|  | } | 
|  | for (int loop = 0; loop < 7; loop++) { | 
|  | for (int i = 0; i < list.length; i++) { | 
|  | Expect.equals(1, list[i].f1()); | 
|  | Expect.equals(2, list[i].f2()); | 
|  | Expect.equals(3, list[i].f3()); | 
|  | Expect.equals(4, list[i].f4()); | 
|  | Expect.equals(5, list[i].f5()); | 
|  | Expect.equals(6, list[i].f6()); | 
|  | Expect.equals(7, list[i].f7()); | 
|  | Expect.equals(8, list[i].f8()); | 
|  | Expect.equals(9, list[i].f9()); | 
|  | Expect.equals(11, list[i].f11()); | 
|  | Expect.equals(12, list[i].f12()); | 
|  | Expect.equals(13, list[i].f13()); | 
|  | Expect.equals(14, list[i].f14()); | 
|  | Expect.equals(15, list[i].f15()); | 
|  | Expect.equals(16, list[i].f16()); | 
|  | Expect.equals(17, list[i].f17()); | 
|  | Expect.equals(18, list[i].f18()); | 
|  | Expect.equals(19, list[i].f19()); | 
|  | Expect.equals(20, list[i].f20()); | 
|  | Expect.equals(21, list[i].f21()); | 
|  | Expect.equals(22, list[i].f22()); | 
|  | Expect.equals(23, list[i].f23()); | 
|  | Expect.equals(24, list[i].f24()); | 
|  | Expect.equals(25, list[i].f25()); | 
|  | Expect.equals(26, list[i].f26()); | 
|  | Expect.equals(27, list[i].f27()); | 
|  | Expect.equals(28, list[i].f28()); | 
|  | Expect.equals(29, list[i].f29()); | 
|  | Expect.equals(30, list[i].f30()); | 
|  | Expect.equals(31, list[i].f31()); | 
|  | Expect.equals(32, list[i].f32()); | 
|  | Expect.equals(33, list[i].f33()); | 
|  | Expect.equals(34, list[i].f34()); | 
|  | Expect.equals(35, list[i].f35()); | 
|  | Expect.equals(36, list[i].f36()); | 
|  | Expect.equals(37, list[i].f37()); | 
|  | Expect.equals(38, list[i].f38()); | 
|  | Expect.equals(39, list[i].f39()); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | main() { | 
|  | ManyCallsTest.testMain(); | 
|  | } |