ciClassList.hpp revision 1472:c18cbe5936b8
1223013Sdim/*
2223013Sdim * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
3223013Sdim * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4223013Sdim *
5223013Sdim * This code is free software; you can redistribute it and/or modify it
6223013Sdim * under the terms of the GNU General Public License version 2 only, as
7223013Sdim * published by the Free Software Foundation.
8223013Sdim *
9223013Sdim * This code is distributed in the hope that it will be useful, but WITHOUT
10234353Sdim * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11234353Sdim * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12234353Sdim * version 2 for more details (a copy is included in the LICENSE file that
13234353Sdim * accompanied this code).
14223013Sdim *
15223013Sdim * You should have received a copy of the GNU General Public License version
16223013Sdim * 2 along with this work; if not, write to the Free Software Foundation,
17223013Sdim * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18223013Sdim *
19249423Sdim * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20224145Sdim * or visit www.oracle.com if you need additional information or have any
21223013Sdim * questions.
22226633Sdim *
23226633Sdim */
24249423Sdim
25234353Sdimclass ciEnv;
26223013Sdimclass ciObjectFactory;
27223013Sdimclass ciConstantPoolCache;
28234353Sdimclass ciCPCache;
29243830Sdim
30243830Sdimclass ciField;
31243830Sdimclass ciConstant;
32243830Sdimclass ciFlags;
33243830Sdimclass ciExceptionHandler;
34243830Sdimclass ciCallProfile;
35249423Sdimclass ciSignature;
36234353Sdim
37234353Sdimclass ciBytecodeStream;
38234353Sdimclass ciSignatureStream;
39223013Sdimclass ciExceptionHandlerStream;
40223013Sdim
41234353Sdimclass ciTypeFlow;
42223013Sdim
43223013Sdimclass ciObject;
44234353Sdimclass   ciNullObject;
45234353Sdimclass   ciInstance;
46223013Sdimclass     ciCallSite;
47249423Sdimclass     ciMethodHandle;
48223013Sdimclass   ciMethod;
49223013Sdimclass   ciMethodData;
50223013Sdimclass     ciReceiverTypeData;  // part of ciMethodData
51223013Sdimclass   ciSymbol;
52223013Sdimclass   ciArray;
53223013Sdimclass     ciObjArray;
54223013Sdimclass     ciTypeArray;
55223013Sdimclass   ciType;
56223013Sdimclass    ciReturnAddress;
57223013Sdimclass    ciKlass;
58223013Sdimclass     ciInstanceKlass;
59223013Sdimclass     ciMethodKlass;
60223013Sdimclass     ciSymbolKlass;
61239462Sdimclass     ciArrayKlass;
62239462Sdimclass       ciObjArrayKlass;
63239462Sdimclass       ciTypeArrayKlass;
64223013Sdimclass     ciKlassKlass;
65223013Sdimclass       ciInstanceKlassKlass;
66223013Sdimclass       ciArrayKlassKlass;
67223013Sdimclass         ciObjArrayKlassKlass;
68234353Sdimclass         ciTypeArrayKlassKlass;
69223013Sdim
70223013Sdim// Simulate Java Language style package-private access with
71223013Sdim// friend declarations.
72223013Sdim// This is a great idea but gcc and other C++ compilers give an
73223013Sdim// error for being friends with yourself, so this macro does not
74223013Sdim// compile on some platforms.
75223013Sdim
76223013Sdim// Everyone gives access to ciObjectFactory
77223013Sdim#define CI_PACKAGE_ACCESS \
78223013Sdimfriend class ciObjectFactory;
79223013Sdim
80223013Sdim// These are the packages that have access to ciEnv
81223013Sdim// Any more access must be given explicitly.
82223013Sdim#define CI_PACKAGE_ACCESS_TO           \
83223013Sdimfriend class ciObjectFactory;          \
84224145Sdimfriend class ciCallSite;               \
85223013Sdimfriend class ciConstantPoolCache;      \
86223013Sdimfriend class ciField;                  \
87223013Sdimfriend class ciConstant;               \
88223013Sdimfriend class ciFlags;                  \
89223013Sdimfriend class ciExceptionHandler;       \
90223013Sdimfriend class ciCallProfile;            \
91263508Sdimfriend class ciSignature;              \
92263508Sdimfriend class ciBytecodeStream;         \
93263508Sdimfriend class ciSignatureStream;        \
94263508Sdimfriend class ciExceptionHandlerStream; \
95263508Sdimfriend class ciObject;                 \
96263508Sdimfriend class ciNullObject;             \
97263508Sdimfriend class ciInstance;               \
98263508Sdimfriend class ciMethod;                 \
99223013Sdimfriend class ciMethodData;             \
100226633Sdimfriend class ciMethodHandle;           \
101226633Sdimfriend class ciReceiverTypeData;       \
102234353Sdimfriend class ciSymbol;                 \
103234353Sdimfriend class ciArray;                  \
104234353Sdimfriend class ciObjArray;               \
105223013Sdimfriend class ciTypeArray;              \
106223013Sdimfriend class ciType;                   \
107223013Sdimfriend class ciReturnAddress;          \
108friend class ciKlass;                  \
109friend class ciInstanceKlass;          \
110friend class ciMethodKlass;            \
111friend class ciSymbolKlass;            \
112friend class ciArrayKlass;             \
113friend class ciObjArrayKlass;          \
114friend class ciTypeArrayKlass;         \
115friend class ciKlassKlass;             \
116friend class ciInstanceKlassKlass;     \
117friend class ciArrayKlassKlass;        \
118friend class ciObjArrayKlassKlass;     \
119friend class ciTypeArrayKlassKlass;
120