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