1 /* 2 * Copyright (c) 2003, 2018, 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 */ 23 24 package nsk.jvmti.GetFieldModifiers; 25 26 import java.io.PrintStream; 27 import java.lang.reflect.Modifier; 28 29 public class getfldmdf004 { 30 31 final static int JCK_STATUS_BASE = 95; 32 33 static { 34 try { 35 System.loadLibrary("getfldmdf004"); 36 } catch (UnsatisfiedLinkError ule) { 37 System.err.println("Could not load getfldmdf004 library"); 38 System.err.println("java.library.path:" 39 + System.getProperty("java.library.path")); 40 throw ule; 41 } 42 } 43 check(int i, int mod)44 native static void check(int i, int mod); getRes()45 native static int getRes(); 46 main(String args[])47 public static void main(String args[]) { 48 args = nsk.share.jvmti.JVMTITest.commonInit(args); 49 50 // produce JCK-like exit status. 51 System.exit(run(args, System.out) + JCK_STATUS_BASE); 52 } 53 54 int field0 = 0; 55 final int field1 = 1; 56 volatile int field2 = 2; 57 transient int field3 = 3; 58 transient final int field4 = 4; 59 transient volatile int field5 = 5; 60 61 private int field6 = 6; 62 private final int field7 = 7; 63 private volatile int field8 = 8; 64 private transient int field9 = 9; 65 private transient final int field10 = 10; 66 private transient volatile int field11 = 11; 67 68 public int field12 = 12; 69 public final int field13 = 13; 70 public volatile int field14 = 14; 71 public transient int field15 = 15; 72 public transient final int field16 = 16; 73 public transient volatile int field17 = 17; 74 75 protected int field18 = 18; 76 protected final int field19 = 19; 77 protected volatile int field20 = 20; 78 protected transient int field21 = 21; 79 protected transient final int field22 = 22; 80 protected transient volatile int field23 = 23; 81 82 static int field24 = 24; 83 static final int field25 = 25; 84 static volatile int field26 = 26; 85 static transient int field27 = 27; 86 static transient final int field28 = 28; 87 static transient volatile int field29 = 29; 88 89 static private int field30 = 30; 90 static private final int field31 = 31; 91 static private volatile int field32 = 32; 92 static private transient int field33 = 33; 93 static private transient final int field34 = 34; 94 static private transient volatile int field35 = 35; 95 96 static public int field36 = 36; 97 static public final int field37 = 37; 98 static public volatile int field38 = 38; 99 static public transient int field39 = 39; 100 static public transient final int field40 = 40; 101 static public transient volatile int field41 = 41; 102 103 static protected int field42 = 42; 104 static protected final int field43 = 43; 105 static protected volatile int field44 = 44; 106 static protected transient int field45 = 45; 107 static protected transient final int field46 = 46; 108 static protected transient volatile int field47 = 47; 109 run(String args[], PrintStream out)110 public static int run(String args[], PrintStream out) { 111 check(0, 0); 112 check(1, Modifier.FINAL); 113 check(2, Modifier.VOLATILE); 114 check(3, Modifier.TRANSIENT); 115 check(4, Modifier.TRANSIENT | Modifier.FINAL); 116 check(5, Modifier.TRANSIENT | Modifier.VOLATILE); 117 118 check(6, Modifier.PRIVATE); 119 check(7, Modifier.PRIVATE | Modifier.FINAL); 120 check(8, Modifier.PRIVATE | Modifier.VOLATILE); 121 check(9, Modifier.PRIVATE | Modifier.TRANSIENT); 122 check(10, Modifier.PRIVATE | Modifier.TRANSIENT | Modifier.FINAL); 123 check(11, Modifier.PRIVATE | Modifier.TRANSIENT | Modifier.VOLATILE); 124 125 check(12, Modifier.PUBLIC); 126 check(13, Modifier.PUBLIC | Modifier.FINAL); 127 check(14, Modifier.PUBLIC | Modifier.VOLATILE); 128 check(15, Modifier.PUBLIC | Modifier.TRANSIENT); 129 check(16, Modifier.PUBLIC | Modifier.TRANSIENT | Modifier.FINAL); 130 check(17, Modifier.PUBLIC | Modifier.TRANSIENT | Modifier.VOLATILE); 131 132 check(18, Modifier.PROTECTED); 133 check(19, Modifier.PROTECTED | Modifier.FINAL); 134 check(20, Modifier.PROTECTED | Modifier.VOLATILE); 135 check(21, Modifier.PROTECTED | Modifier.TRANSIENT); 136 check(22, Modifier.PROTECTED | Modifier.TRANSIENT | Modifier.FINAL); 137 check(23, Modifier.PROTECTED | Modifier.TRANSIENT | Modifier.VOLATILE); 138 139 check(24, Modifier.STATIC); 140 check(25, Modifier.STATIC | Modifier.FINAL); 141 check(26, Modifier.STATIC | Modifier.VOLATILE); 142 check(27, Modifier.STATIC | Modifier.TRANSIENT); 143 check(28, Modifier.STATIC | Modifier.TRANSIENT | Modifier.FINAL); 144 check(29, Modifier.STATIC | Modifier.TRANSIENT | Modifier.VOLATILE); 145 146 check(30, Modifier.STATIC | Modifier.PRIVATE); 147 check(31, Modifier.STATIC | Modifier.PRIVATE | Modifier.FINAL); 148 check(32, Modifier.STATIC | Modifier.PRIVATE | Modifier.VOLATILE); 149 check(33, Modifier.STATIC | Modifier.PRIVATE | Modifier.TRANSIENT); 150 check(34, Modifier.STATIC | Modifier.PRIVATE | Modifier.TRANSIENT | 151 Modifier.FINAL); 152 check(35, Modifier.STATIC | Modifier.PRIVATE | Modifier.TRANSIENT | 153 Modifier.VOLATILE); 154 155 check(36, Modifier.STATIC | Modifier.PUBLIC); 156 check(37, Modifier.STATIC | Modifier.PUBLIC | Modifier.FINAL); 157 check(38, Modifier.STATIC | Modifier.PUBLIC | Modifier.VOLATILE); 158 check(39, Modifier.STATIC | Modifier.PUBLIC | Modifier.TRANSIENT); 159 check(40, Modifier.STATIC | Modifier.PUBLIC | Modifier.TRANSIENT | 160 Modifier.FINAL); 161 check(41, Modifier.STATIC | Modifier.PUBLIC | Modifier.TRANSIENT | 162 Modifier.VOLATILE); 163 164 check(42, Modifier.STATIC | Modifier.PROTECTED); 165 check(43, Modifier.STATIC | Modifier.PROTECTED | Modifier.FINAL); 166 check(44, Modifier.STATIC | Modifier.PROTECTED | Modifier.VOLATILE); 167 check(45, Modifier.STATIC | Modifier.PROTECTED | Modifier.TRANSIENT); 168 check(46, Modifier.STATIC | Modifier.PROTECTED | Modifier.TRANSIENT | 169 Modifier.FINAL); 170 check(47, Modifier.STATIC | Modifier.PROTECTED | Modifier.TRANSIENT | 171 Modifier.VOLATILE); 172 173 return getRes(); 174 } 175 } 176