1 /*
2 * Copyright (c) 2003, 2015, 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 *
78 Reference = 0x0, // _sym contains the name
79 Primitive = 0x1, // see below for primitive list
80 Uninitialized = 0x2, // 0x00ffff00 contains bci
81 TypeQuery = 0x3, // Meta-types used for category testing
82
83 // Utility flags
84 ReferenceFlag = 0x00, // For reference query types
85 Category1Flag = 0x01, // One-word values
86 Category2Flag = 0x02, // First word of a two-word value
87 Category2_2ndFlag = 0x04, // Second word of a two-word value
88
89 // special reference values
90 Null = 0x00000000, // A reference with a 0 sym is null
91
92 // Primitives categories (the second byte determines the category)
93 Category1 = (Category1Flag << 1 * BitsPerByte) | Primitive,
94 Category2 = (Category2Flag << 1 * BitsPerByte) | Primitive,
95 Category2_2nd = (Category2_2ndFlag << 1 * BitsPerByte) | Primitive,
96
97 // Primitive values (type descriminator stored in most-signifcant bytes)
98 Bogus = (ITEM_Bogus << 2 * BitsPerByte) | Category1,
99 Boolean = (ITEM_Boolean << 2 * BitsPerByte) | Category1,
100 Byte = (ITEM_Byte << 2 * BitsPerByte) | Category1,
101 Short = (ITEM_Short << 2 * BitsPerByte) | Category1,
102 Char = (ITEM_Char << 2 * BitsPerByte) | Category1,
103 Integer = (ITEM_Integer << 2 * BitsPerByte) | Category1,
104 Float = (ITEM_Float << 2 * BitsPerByte) | Category1,
105 Long = (ITEM_Long << 2 * BitsPerByte) | Category2,
106 Double = (ITEM_Double << 2 * BitsPerByte) | Category2,
107 Long_2nd = (ITEM_Long_2nd << 2 * BitsPerByte) | Category2_2nd,
108 Double_2nd = (ITEM_Double_2nd << 2 * BitsPerByte) | Category2_2nd,
109
110 // Used by Uninitialized (second and third bytes hold the bci)
111 BciMask = 0xffff << 1 * BitsPerByte,
112 BciForThis = ((u2)-1), // A bci of -1 is an Unintialized-This
113
114 // Query values
115 ReferenceQuery = (ReferenceFlag << 1 * BitsPerByte) | TypeQuery,
116 Category1Query = (Category1Flag << 1 * BitsPerByte) | TypeQuery,
117 Category2Query = (Category2Flag << 1 * BitsPerByte) | TypeQuery,
118 Category2_2ndQuery = (Category2_2ndFlag << 1 * BitsPerByte) | TypeQuery
|
1 /*
2 * Copyright (c) 2003, 2016, 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 *
78 Reference = 0x0, // _sym contains the name
79 Primitive = 0x1, // see below for primitive list
80 Uninitialized = 0x2, // 0x00ffff00 contains bci
81 TypeQuery = 0x3, // Meta-types used for category testing
82
83 // Utility flags
84 ReferenceFlag = 0x00, // For reference query types
85 Category1Flag = 0x01, // One-word values
86 Category2Flag = 0x02, // First word of a two-word value
87 Category2_2ndFlag = 0x04, // Second word of a two-word value
88
89 // special reference values
90 Null = 0x00000000, // A reference with a 0 sym is null
91
92 // Primitives categories (the second byte determines the category)
93 Category1 = (Category1Flag << 1 * BitsPerByte) | Primitive,
94 Category2 = (Category2Flag << 1 * BitsPerByte) | Primitive,
95 Category2_2nd = (Category2_2ndFlag << 1 * BitsPerByte) | Primitive,
96
97 // Primitive values (type descriminator stored in most-signifcant bytes)
98 // Bogus needs the " | Primitive". Else, is_reference(Bogus) returns TRUE.
99 Bogus = (ITEM_Bogus << 2 * BitsPerByte) | Primitive,
100 Boolean = (ITEM_Boolean << 2 * BitsPerByte) | Category1,
101 Byte = (ITEM_Byte << 2 * BitsPerByte) | Category1,
102 Short = (ITEM_Short << 2 * BitsPerByte) | Category1,
103 Char = (ITEM_Char << 2 * BitsPerByte) | Category1,
104 Integer = (ITEM_Integer << 2 * BitsPerByte) | Category1,
105 Float = (ITEM_Float << 2 * BitsPerByte) | Category1,
106 Long = (ITEM_Long << 2 * BitsPerByte) | Category2,
107 Double = (ITEM_Double << 2 * BitsPerByte) | Category2,
108 Long_2nd = (ITEM_Long_2nd << 2 * BitsPerByte) | Category2_2nd,
109 Double_2nd = (ITEM_Double_2nd << 2 * BitsPerByte) | Category2_2nd,
110
111 // Used by Uninitialized (second and third bytes hold the bci)
112 BciMask = 0xffff << 1 * BitsPerByte,
113 BciForThis = ((u2)-1), // A bci of -1 is an Unintialized-This
114
115 // Query values
116 ReferenceQuery = (ReferenceFlag << 1 * BitsPerByte) | TypeQuery,
117 Category1Query = (Category1Flag << 1 * BitsPerByte) | TypeQuery,
118 Category2Query = (Category2Flag << 1 * BitsPerByte) | TypeQuery,
119 Category2_2ndQuery = (Category2_2ndFlag << 1 * BitsPerByte) | TypeQuery
|