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