annotate test/compiler/7141637/SpreadNullArg.java @ 6611:7383557659bd

7185699: G1: Prediction model discrepancies Summary: Correct the result value of G1CollectedHeap::pending_card_num(). Change the code that calculates the GC efficiency of a non-young heap region to use historical data from mixed GCs and the actual number of live bytes when predicting how long it would take to collect the region. Changes were also reviewed by Thomas Schatzl. Reviewed-by: azeemj, brutisso
author johnc
date Tue, 21 Aug 2012 14:10:39 -0700
parents 392a3f07d567
children 62084ffe573b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4874
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
1 /*
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
2 * Copyright 2011 SAP AG. All Rights Reserved.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
4 *
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
8 *
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
13 * accompanied this code).
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
14 *
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
18 *
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
21 * questions.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
22 */
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
23
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
24 /*
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
25 * @test SpreadNullArg
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
26 * @bug 7141637
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
27 * @summary verifies that the MethodHandle spread adapter can gracefully handle null arguments.
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
28 * @run main SpreadNullArg
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
29 * @author volker.simonis@gmail.com
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
30 */
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
31
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
32 import java.lang.invoke.MethodHandle;
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
33 import java.lang.invoke.MethodHandles;
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
34 import java.lang.invoke.MethodType;
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
35
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
36 public class SpreadNullArg {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
37
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
38 public static void main(String args[]) {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
39
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
40 MethodType mt_ref_arg = MethodType.methodType(int.class, Integer.class);
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
41 MethodHandle mh_spreadInvoker = MethodHandles.spreadInvoker(mt_ref_arg, 0);
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
42 MethodHandle mh_spread_target;
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
43 int result = 42;
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
44
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
45 try {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
46 mh_spread_target =
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
47 MethodHandles.lookup().findStatic(SpreadNullArg.class, "target_spread_arg", mt_ref_arg);
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
48 result = (int) mh_spreadInvoker.invokeExact(mh_spread_target, (Object[]) null);
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
49 } catch(NullPointerException e) {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
50 // Expected exception - do nothing!
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
51 } catch(Throwable e) {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
52 throw new Error(e);
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
53 }
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
54
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
55 if (result != 42) throw new Error("Expected NullPointerException was not thrown");
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
56 }
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
57
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
58 public static int target_spread_arg(Integer i1) {
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
59 return i1.intValue();
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
60 }
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
61
392a3f07d567 7141637: JSR 292: MH spread invoker crashes with NULL argument on x86_32
twisti
parents:
diff changeset
62 }