author | jwilhelm |
Sun, 25 Feb 2018 04:59:43 +0100 | |
changeset 49067 | c153e9daadce |
parent 49057 | 045b2de329b9 |
child 49592 | 77fb0be7d19f |
permissions | -rw-r--r-- |
1 | 1 |
/* |
48831
05894c073b7e
8196199: Remove miscellaneous oop comparison operators
coleenp
parents:
47609
diff
changeset
|
2 |
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. |
1 | 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 |
* |
|
5547
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
3262
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
3262
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
3262
diff
changeset
|
21 |
* questions. |
1 | 22 |
* |
23 |
*/ |
|
24 |
||
7397 | 25 |
#ifndef SHARE_VM_OOPS_OOPSHIERARCHY_HPP |
26 |
#define SHARE_VM_OOPS_OOPSHIERARCHY_HPP |
|
27 |
||
46958
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
28 |
#include "metaprogramming/integralConstant.hpp" |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
29 |
#include "metaprogramming/primitiveConversions.hpp" |
7397 | 30 |
#include "runtime/globals.hpp" |
31 |
#include "utilities/globalDefinitions.hpp" |
|
32 |
||
1 | 33 |
// OBJECT hierarchy |
34 |
// This hierarchy is a representation hierarchy, i.e. if A is a superclass |
|
35 |
// of B, A's representation is a prefix of B's representation. |
|
36 |
||
360
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
37 |
typedef juint narrowOop; // Offset instead of address for an oop within a java object |
19319
0ad35be0733a
8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
13952
diff
changeset
|
38 |
|
0ad35be0733a
8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
13952
diff
changeset
|
39 |
// If compressed klass pointers then use narrowKlass. |
0ad35be0733a
8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
13952
diff
changeset
|
40 |
typedef juint narrowKlass; |
0ad35be0733a
8003424: Enable Class Data Sharing for CompressedOops
hseigel
parents:
13952
diff
changeset
|
41 |
|
3262
30d1c247fc25
6700789: G1: Enable use of compressed oops with G1 heaps
ysr
parents:
2105
diff
changeset
|
42 |
typedef void* OopOrNarrowOopStar; |
13728
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
43 |
typedef class markOopDesc* markOop; |
360
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
44 |
|
1 | 45 |
#ifndef CHECK_UNHANDLED_OOPS |
46 |
||
360
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
47 |
typedef class oopDesc* oop; |
1 | 48 |
typedef class instanceOopDesc* instanceOop; |
360
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
49 |
typedef class arrayOopDesc* arrayOop; |
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
50 |
typedef class objArrayOopDesc* objArrayOop; |
21d113ecbf6a
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
1
diff
changeset
|
51 |
typedef class typeArrayOopDesc* typeArrayOop; |
1 | 52 |
|
53 |
#else |
|
54 |
||
55 |
// When CHECK_UNHANDLED_OOPS is defined, an "oop" is a class with a |
|
56 |
// carefully chosen set of constructors and conversion operators to go |
|
57 |
// to and from the underlying oopDesc pointer type. |
|
58 |
// |
|
59 |
// Because oop and its subclasses <type>Oop are class types, arbitrary |
|
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
60 |
// conversions are not accepted by the compiler. Applying a cast to |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
61 |
// an oop will cause the best matched conversion operator to be |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
62 |
// invoked returning the underlying oopDesc* type if appropriate. |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
63 |
// No copy constructors, explicit user conversions or operators of |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
64 |
// numerical type should be defined within the oop class. Most C++ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
65 |
// compilers will issue a compile time error concerning the overloading |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
66 |
// ambiguity between operators of numerical and pointer types. If |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
67 |
// a conversion to or from an oop to a numerical type is needed, |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
68 |
// use the inline template methods, cast_*_oop, defined below. |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
69 |
// |
1 | 70 |
// Converting NULL to oop to Handle implicit is no longer accepted by the |
71 |
// compiler because there are too many steps in the conversion. Use Handle() |
|
72 |
// instead, which generates less code anyway. |
|
73 |
||
74 |
class Thread; |
|
75 |
class PromotedObject; |
|
76 |
||
77 |
||
78 |
class oop { |
|
79 |
oopDesc* _o; |
|
80 |
||
81 |
void register_oop(); |
|
82 |
void unregister_oop(); |
|
83 |
||
84 |
// friend class markOop; |
|
85 |
public: |
|
86 |
void set_obj(const void* p) { |
|
87 |
raw_set_obj(p); |
|
88 |
if (CheckUnhandledOops) register_oop(); |
|
89 |
} |
|
90 |
void raw_set_obj(const void* p) { _o = (oopDesc*)p; } |
|
91 |
||
92 |
oop() { set_obj(NULL); } |
|
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
93 |
oop(const oop& o) { set_obj(o.obj()); } |
1 | 94 |
oop(const volatile oop& o) { set_obj(o.obj()); } |
95 |
oop(const void* p) { set_obj(p); } |
|
96 |
~oop() { |
|
97 |
if (CheckUnhandledOops) unregister_oop(); |
|
98 |
} |
|
99 |
||
100 |
oopDesc* obj() const volatile { return _o; } |
|
101 |
||
102 |
// General access |
|
103 |
oopDesc* operator->() const { return obj(); } |
|
104 |
bool operator==(const oop o) const { return obj() == o.obj(); } |
|
105 |
bool operator==(void *p) const { return obj() == p; } |
|
13728
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
106 |
bool operator!=(const volatile oop o) const { return obj() != o.obj(); } |
1 | 107 |
bool operator!=(void *p) const { return obj() != p; } |
108 |
||
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
109 |
// Assignment |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
110 |
oop& operator=(const oop& o) { _o = o.obj(); return *this; } |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
111 |
volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; } |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
112 |
volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; } |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
113 |
|
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
114 |
// Explict user conversions |
1 | 115 |
operator void* () const { return (void *)obj(); } |
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
116 |
#ifndef SOLARIS |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
117 |
operator void* () const volatile { return (void *)obj(); } |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
118 |
#endif |
1 | 119 |
operator HeapWord* () const { return (HeapWord*)obj(); } |
24831
e4df2f64bb2e
8041623: Solaris Studio 12.4 C++ 5.13, CHECK_UNHANDLED_OOPS use of class oop's copy constructor definitions causing error level diagnostic.
lfoltan
parents:
20282
diff
changeset
|
120 |
operator oopDesc* () const volatile { return obj(); } |
1 | 121 |
operator intptr_t* () const { return (intptr_t*)obj(); } |
122 |
operator PromotedObject* () const { return (PromotedObject*)obj(); } |
|
25478
7e6c884aa31f
8048128: Fix for Solaris Studio C++ 5.13, CHECK_UNHANDLED_OOPS breaks PPC build.
lfoltan
parents:
24831
diff
changeset
|
123 |
operator markOop () const volatile { return markOop(obj()); } |
1 | 124 |
operator address () const { return (address)obj(); } |
125 |
||
126 |
// from javaCalls.cpp |
|
127 |
operator jobject () const { return (jobject)obj(); } |
|
128 |
||
129 |
// from parNewGeneration and other things that want to get to the end of |
|
13952
e3cf184080bc
8000213: NPG: Should have renamed arrayKlass and typeArrayKlass
coleenp
parents:
13738
diff
changeset
|
130 |
// an oop for stuff (like ObjArrayKlass.cpp) |
1 | 131 |
operator oop* () const { return (oop *)obj(); } |
132 |
}; |
|
133 |
||
46958
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
134 |
template<> |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
135 |
struct PrimitiveConversions::Translate<oop> : public TrueType { |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
136 |
typedef oop Value; |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
137 |
typedef oopDesc* Decayed; |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
138 |
|
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
139 |
static Decayed decay(Value x) { return x.obj(); } |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
140 |
static Value recover(Decayed x) { return oop(x); } |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
141 |
}; |
a13bd8c6b7a2
8186166: Generalize Atomic::cmpxchg with templates
eosterlund
parents:
25478
diff
changeset
|
142 |
|
1 | 143 |
#define DEF_OOP(type) \ |
144 |
class type##OopDesc; \ |
|
145 |
class type##Oop : public oop { \ |
|
146 |
public: \ |
|
147 |
type##Oop() : oop() {} \ |
|
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
148 |
type##Oop(const oop& o) : oop(o) {} \ |
1 | 149 |
type##Oop(const volatile oop& o) : oop(o) {} \ |
150 |
type##Oop(const void* p) : oop(p) {} \ |
|
151 |
operator type##OopDesc* () const { return (type##OopDesc*)obj(); } \ |
|
152 |
type##OopDesc* operator->() const { \ |
|
153 |
return (type##OopDesc*)obj(); \ |
|
154 |
} \ |
|
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
155 |
type##Oop& operator=(const type##Oop& o) { \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
156 |
oop::operator=(o); \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
157 |
return *this; \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
158 |
} \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
159 |
volatile type##Oop& operator=(const type##Oop& o) volatile { \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
160 |
(void)const_cast<oop&>(oop::operator=(o)); \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
161 |
return *this; \ |
24831
e4df2f64bb2e
8041623: Solaris Studio 12.4 C++ 5.13, CHECK_UNHANDLED_OOPS use of class oop's copy constructor definitions causing error level diagnostic.
lfoltan
parents:
20282
diff
changeset
|
162 |
} \ |
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
163 |
volatile type##Oop& operator=(const volatile type##Oop& o) volatile {\ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
164 |
(void)const_cast<oop&>(oop::operator=(o)); \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
165 |
return *this; \ |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
166 |
} \ |
47609
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
167 |
}; \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
168 |
\ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
169 |
template<> \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
170 |
struct PrimitiveConversions::Translate<type##Oop> : public TrueType { \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
171 |
typedef type##Oop Value; \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
172 |
typedef type##OopDesc* Decayed; \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
173 |
\ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
174 |
static Decayed decay(Value x) { return (type##OopDesc*)x.obj(); } \ |
a1f68e415b48
8188813: Generalize OrderAccess to use templates
eosterlund
parents:
47216
diff
changeset
|
175 |
static Value recover(Decayed x) { return type##Oop(x); } \ |
13728
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
176 |
}; |
1 | 177 |
|
178 |
DEF_OOP(instance); |
|
179 |
DEF_OOP(array); |
|
180 |
DEF_OOP(objArray); |
|
181 |
DEF_OOP(typeArray); |
|
182 |
||
183 |
#endif // CHECK_UNHANDLED_OOPS |
|
184 |
||
20282
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
185 |
// For CHECK_UNHANDLED_OOPS, it is ambiguous C++ behavior to have the oop |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
186 |
// structure contain explicit user defined conversions of both numerical |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
187 |
// and pointer type. Define inline methods to provide the numerical conversions. |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
188 |
template <class T> inline oop cast_to_oop(T value) { |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
189 |
return (oop)(CHECK_UNHANDLED_OOPS_ONLY((void *))(value)); |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
190 |
} |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
191 |
template <class T> inline T cast_from_oop(oop o) { |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
192 |
return (T)(CHECK_UNHANDLED_OOPS_ONLY((void*))o); |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
193 |
} |
7f9cbdf89af2
7195622: CheckUnhandledOops has limited usefulness now
hseigel
parents:
19319
diff
changeset
|
194 |
|
13728
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
195 |
// The metadata hierarchy is separate from the oop hierarchy |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
196 |
|
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
197 |
// class MetaspaceObj |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
198 |
class ConstMethod; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
199 |
class ConstantPoolCache; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
200 |
class MethodData; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
201 |
// class Metadata |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
202 |
class Method; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
203 |
class ConstantPool; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
204 |
// class CHeapObj |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
205 |
class CompiledICHolder; |
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
206 |
|
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
207 |
|
1 | 208 |
// The klass hierarchy is separate from the oop hierarchy. |
209 |
||
210 |
class Klass; |
|
13728
882756847a04
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
8725
diff
changeset
|
211 |
class InstanceKlass; |
13738
d67be49a5beb
7195833: NPG: Rename instanceClassLoaderKlass, instanceRefKlass and instanceMirrorKlass
coleenp
parents:
13728
diff
changeset
|
212 |
class InstanceMirrorKlass; |
d67be49a5beb
7195833: NPG: Rename instanceClassLoaderKlass, instanceRefKlass and instanceMirrorKlass
coleenp
parents:
13728
diff
changeset
|
213 |
class InstanceClassLoaderKlass; |
d67be49a5beb
7195833: NPG: Rename instanceClassLoaderKlass, instanceRefKlass and instanceMirrorKlass
coleenp
parents:
13728
diff
changeset
|
214 |
class InstanceRefKlass; |
13952
e3cf184080bc
8000213: NPG: Should have renamed arrayKlass and typeArrayKlass
coleenp
parents:
13738
diff
changeset
|
215 |
class ArrayKlass; |
e3cf184080bc
8000213: NPG: Should have renamed arrayKlass and typeArrayKlass
coleenp
parents:
13738
diff
changeset
|
216 |
class ObjArrayKlass; |
e3cf184080bc
8000213: NPG: Should have renamed arrayKlass and typeArrayKlass
coleenp
parents:
13738
diff
changeset
|
217 |
class TypeArrayKlass; |
7397 | 218 |
|
219 |
#endif // SHARE_VM_OOPS_OOPSHIERARCHY_HPP |