ciClassList.hpp revision 1879:f95d63e2154a
1160576Sobrien/*
2160576Sobrien * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
3239272Sgonzo * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4162241Sobrien *
5162241Sobrien * This code is free software; you can redistribute it and/or modify it
6162241Sobrien * under the terms of the GNU General Public License version 2 only, as
7162241Sobrien * published by the Free Software Foundation.
8160576Sobrien *
9160576Sobrien * This code is distributed in the hope that it will be useful, but WITHOUT
10160576Sobrien * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11162300Simp * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12160576Sobrien * version 2 for more details (a copy is included in the LICENSE file that
13219811Smarcel * accompanied this code).
14160576Sobrien *
15160576Sobrien * You should have received a copy of the GNU General Public License version
16162300Simp * 2 along with this work; if not, write to the Free Software Foundation,
17162300Simp * 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     ciSymbolKlass;
64class     ciArrayKlass;
65class       ciObjArrayKlass;
66class       ciTypeArrayKlass;
67class     ciKlassKlass;
68class       ciInstanceKlassKlass;
69class       ciArrayKlassKlass;
70class         ciObjArrayKlassKlass;
71class         ciTypeArrayKlassKlass;
72
73// Simulate Java Language style package-private access with
74// friend declarations.
75// This is a great idea but gcc and other C++ compilers give an
76// error for being friends with yourself, so this macro does not
77// compile on some platforms.
78
79// Everyone gives access to ciObjectFactory
80#define CI_PACKAGE_ACCESS \
81friend class ciObjectFactory;
82
83// These are the packages that have access to ciEnv
84// Any more access must be given explicitly.
85#define CI_PACKAGE_ACCESS_TO           \
86friend class ciObjectFactory;          \
87friend class ciCallSite;               \
88friend class ciConstantPoolCache;      \
89friend class ciField;                  \
90friend class ciConstant;               \
91friend class ciCPCache;                \
92friend class ciFlags;                  \
93friend class ciExceptionHandler;       \
94friend class ciCallProfile;            \
95friend class ciSignature;              \
96friend class ciBytecodeStream;         \
97friend class ciSignatureStream;        \
98friend class ciExceptionHandlerStream; \
99friend class ciObject;                 \
100friend class ciNullObject;             \
101friend class ciInstance;               \
102friend class ciMethod;                 \
103friend class ciMethodData;             \
104friend class ciMethodHandle;           \
105friend class ciReceiverTypeData;       \
106friend class ciSymbol;                 \
107friend class ciArray;                  \
108friend class ciObjArray;               \
109friend class ciTypeArray;              \
110friend class ciType;                   \
111friend class ciReturnAddress;          \
112friend class ciKlass;                  \
113friend class ciInstanceKlass;          \
114friend class ciMethodKlass;            \
115friend class ciSymbolKlass;            \
116friend class ciArrayKlass;             \
117friend class ciObjArrayKlass;          \
118friend class ciTypeArrayKlass;         \
119friend class ciKlassKlass;             \
120friend class ciInstanceKlassKlass;     \
121friend class ciArrayKlassKlass;        \
122friend class ciObjArrayKlassKlass;     \
123friend class ciTypeArrayKlassKlass;
124
125#endif // SHARE_VM_CI_CICLASSLIST_HPP
126