Tue, 01 Sep 2015 18:28:11 +0530
8068901: Surprising behavior with more than one functional interface on a class
8068903: Can't invoke vararg @FunctionalInterface methods
Reviewed-by: attila, hannesw
1 /*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
24 /**
25 * JDK-8026292: Megamorphic setter fails with boolean value
26 *
27 * @test
28 * @run
29 */
31 function megamorphic(o) {
32 o.w = true;
33 if (!o.w)
34 throw new Error();
35 }
37 // Calls below must exceed megamorphic callsite threshhold
38 for (var i = 0; i < 10; i++) {
39 megamorphic({a: 1});
40 megamorphic({b: 1});
41 megamorphic({c: 1});
42 megamorphic({d: 1});
43 megamorphic({e: 1});
44 megamorphic({f: 1});
45 megamorphic({g: 1});
46 megamorphic({h: 1});
47 megamorphic({i: 1});
48 megamorphic({j: 1});
49 megamorphic({k: 1});
50 megamorphic({l: 1});
51 megamorphic({m: 1});
52 megamorphic({n: 1});
53 megamorphic({o: 1});
54 megamorphic({p: 1});
55 megamorphic({q: 1});
56 megamorphic({r: 1});
57 megamorphic({s: 1});
58 megamorphic({t: 1});
59 megamorphic({u: 1});
60 megamorphic({v: 1});
61 megamorphic({w: 1});
62 megamorphic({x: 1});
63 megamorphic({y: 1});
64 megamorphic({z: 1});
65 }