ciClassList.hpp revision 2273:1d1603768966
1/*
2 * Copyright (c) 1999, 2011, 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
25#ifndef SHARE_VM_CI_CICLASSLIST_HPP
26#define SHARE_VM_CI_CICLASSLIST_HPP
27
28class ciEnv;
29class ciObjectFactory;
30class ciConstantPoolCache;
31class ciCPCache;
32
33class ciField;
34class ciConstant;
35class ciFlags;
36class ciExceptionHandler;
37class ciCallProfile;
38class ciSignature;
39
40class ciBytecodeStream;
41class ciSignatureStream;
42class ciExceptionHandlerStream;
43
44class ciTypeFlow;
45
46class ciObject;
47class   ciNullObject;
48class   ciInstance;
49class     ciCallSite;
50class     ciMethodHandle;
51class   ciMethod;
52class   ciMethodData;
53class     ciReceiverTypeData;  // part of ciMethodData
54class   ciSymbol;
55class   ciArray;
56class     ciObjArray;
57class     ciTypeArray;
58class   ciType;
59class    ciReturnAddress;
60class    ciKlass;
61class     ciInstanceKlass;
62class     ciMethodKlass;
63class     ciArrayKlass;
64class       ciObjArrayKlass;
65class       ciTypeArrayKlass;
66class     ciKlassKlass;
67class       ciInstanceKlassKlass;
68class       ciArrayKlassKlass;
69class         ciObjArrayKlassKlass;
70class         ciTypeArrayKlassKlass;
71
72// Simulate Java Language style package-private access with
73// friend declarations.
74// This is a great idea but gcc and other C++ compilers give an
75// error for being friends with yourself, so this macro does not
76// compile on some platforms.
77
78// Everyone gives access to ciObjectFactory
79#define CI_PACKAGE_ACCESS \
80friend class ciObjectFactory;
81
82// These are the packages that have access to ciEnv
83// Any more access must be given explicitly.
84#define CI_PACKAGE_ACCESS_TO           \
85friend class ciObjectFactory;          \
86friend class ciCallSite;               \
87friend class ciConstantPoolCache;      \
88friend class ciField;                  \
89friend class ciConstant;               \
90friend class ciCPCache;                \
91friend class ciFlags;                  \
92friend class ciExceptionHandler;       \
93friend class ciCallProfile;            \
94friend class ciSignature;              \
95friend class ciBytecodeStream;         \
96friend class ciSignatureStream;        \
97friend class ciExceptionHandlerStream; \
98friend class ciObject;                 \
99friend class ciNullObject;             \
100friend class ciInstance;               \
101friend class ciMethod;                 \
102friend class ciMethodData;             \
103friend class ciMethodHandle;           \
104friend class ciReceiverTypeData;       \
105friend class ciSymbol;                 \
106friend class ciArray;                  \
107friend class ciObjArray;               \
108friend class ciTypeArray;              \
109friend class ciType;                   \
110friend class ciReturnAddress;          \
111friend class ciKlass;                  \
112friend class ciInstanceKlass;          \
113friend class ciMethodKlass;            \
114friend class ciArrayKlass;             \
115friend class ciObjArrayKlass;          \
116friend class ciTypeArrayKlass;         \
117friend class ciKlassKlass;             \
118friend class ciInstanceKlassKlass;     \
119friend class ciArrayKlassKlass;        \
120friend class ciObjArrayKlassKlass;     \
121friend class ciTypeArrayKlassKlass;
122
123#endif // SHARE_VM_CI_CICLASSLIST_HPP
124