ciClassList.hpp revision 3602:da91efe96a93
1/*
2 * Copyright (c) 1999, 2012, 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;
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     ciArray;
53class       ciObjArray;
54class       ciTypeArray;
55class   ciSymbol;
56class   ciMetadata;
57class   ciMethod;
58class   ciMethodData;
59class     ciReceiverTypeData;  // part of ciMethodData
60class   ciType;
61class    ciReturnAddress;
62class    ciKlass;
63class     ciInstanceKlass;
64class     ciArrayKlass;
65class       ciObjArrayKlass;
66class       ciTypeArrayKlass;
67
68// Simulate Java Language style package-private access with
69// friend declarations.
70// This is a great idea but gcc and other C++ compilers give an
71// error for being friends with yourself, so this macro does not
72// compile on some platforms.
73
74// Everyone gives access to ciObjectFactory
75#define CI_PACKAGE_ACCESS \
76friend class ciObjectFactory; \
77friend class VMStructs;
78
79// These are the packages that have access to ciEnv
80// Any more access must be given explicitly.
81#define CI_PACKAGE_ACCESS_TO           \
82friend class ciObjectFactory;          \
83friend class VMStructs;                \
84friend class ciCallSite;               \
85friend class ciConstantPoolCache;      \
86friend class ciField;                  \
87friend class ciConstant;               \
88friend class ciFlags;                  \
89friend class ciExceptionHandler;       \
90friend class ciCallProfile;            \
91friend class ciSignature;              \
92friend class ciBytecodeStream;         \
93friend class ciSignatureStream;        \
94friend class ciExceptionHandlerStream; \
95friend class ciObject;                 \
96friend class ciNullObject;             \
97friend class ciInstance;               \
98friend class ciMemberName;             \
99friend class ciMethod;                 \
100friend class ciMethodData;             \
101friend class ciMethodHandle;           \
102friend class ciReceiverTypeData;       \
103friend class ciSymbol;                 \
104friend class ciArray;                  \
105friend class ciObjArray;               \
106friend class ciMetadata;               \
107friend class ciTypeArray;              \
108friend class ciType;                   \
109friend class ciReturnAddress;          \
110friend class ciKlass;                  \
111friend class ciInstanceKlass;          \
112friend class ciArrayKlass;             \
113friend class ciObjArrayKlass;          \
114friend class ciTypeArrayKlass;         \
115
116#endif // SHARE_VM_CI_CICLASSLIST_HPP
117