aoqi@0: /* aoqi@0: * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. aoqi@0: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: * aoqi@0: * This code is free software; you can redistribute it and/or modify it aoqi@0: * under the terms of the GNU General Public License version 2 only, as aoqi@0: * published by the Free Software Foundation. aoqi@0: * aoqi@0: * This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: * version 2 for more details (a copy is included in the LICENSE file that aoqi@0: * accompanied this code). aoqi@0: * aoqi@0: * You should have received a copy of the GNU General Public License version aoqi@0: * 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: * aoqi@0: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: * or visit www.oracle.com if you need additional information or have any aoqi@0: * questions. aoqi@0: * aoqi@0: */ aoqi@0: aoqi@0: #ifndef SHARE_VM_CI_CICLASSLIST_HPP aoqi@0: #define SHARE_VM_CI_CICLASSLIST_HPP aoqi@0: aoqi@0: class ciEnv; aoqi@0: class ciObjectFactory; aoqi@0: class ciConstantPoolCache; aoqi@0: aoqi@0: class ciField; aoqi@0: class ciConstant; aoqi@0: class ciFlags; aoqi@0: class ciExceptionHandler; aoqi@0: class ciCallProfile; aoqi@0: class ciSignature; aoqi@0: aoqi@0: class ciBytecodeStream; aoqi@0: class ciSignatureStream; aoqi@0: class ciExceptionHandlerStream; aoqi@0: aoqi@0: class ciTypeFlow; aoqi@0: aoqi@0: class ciBaseObject; aoqi@0: class ciObject; aoqi@0: class ciNullObject; aoqi@0: class ciInstance; aoqi@0: class ciCallSite; aoqi@0: class ciMemberName; aoqi@0: class ciMethodHandle; aoqi@0: class ciMethodType; aoqi@0: class ciArray; aoqi@0: class ciObjArray; aoqi@0: class ciTypeArray; aoqi@0: class ciSymbol; aoqi@0: class ciMetadata; aoqi@0: class ciMethod; aoqi@0: class ciMethodData; aoqi@0: class ciReceiverTypeData; // part of ciMethodData aoqi@0: class ciType; aoqi@0: class ciReturnAddress; aoqi@0: class ciKlass; aoqi@0: class ciInstanceKlass; aoqi@0: class ciArrayKlass; aoqi@0: class ciObjArrayKlass; aoqi@0: class ciTypeArrayKlass; aoqi@0: aoqi@0: // Simulate Java Language style package-private access with aoqi@0: // friend declarations. aoqi@0: // This is a great idea but gcc and other C++ compilers give an aoqi@0: // error for being friends with yourself, so this macro does not aoqi@0: // compile on some platforms. aoqi@0: aoqi@0: // Everyone gives access to ciObjectFactory aoqi@0: #define CI_PACKAGE_ACCESS \ aoqi@0: friend class ciObjectFactory; \ aoqi@0: friend class VMStructs; aoqi@0: aoqi@0: // These are the packages that have access to ciEnv aoqi@0: // Any more access must be given explicitly. aoqi@0: #define CI_PACKAGE_ACCESS_TO \ aoqi@0: friend class ciObjectFactory; \ aoqi@0: friend class VMStructs; \ aoqi@0: friend class ciCallSite; \ aoqi@0: friend class ciConstantPoolCache; \ aoqi@0: friend class ciField; \ aoqi@0: friend class ciConstant; \ aoqi@0: friend class ciFlags; \ aoqi@0: friend class ciExceptionHandler; \ aoqi@0: friend class ciCallProfile; \ aoqi@0: friend class ciSignature; \ aoqi@0: friend class ciBytecodeStream; \ aoqi@0: friend class ciSignatureStream; \ aoqi@0: friend class ciExceptionHandlerStream; \ aoqi@0: friend class ciObject; \ aoqi@0: friend class ciNullObject; \ aoqi@0: friend class ciInstance; \ aoqi@0: friend class ciMemberName; \ aoqi@0: friend class ciMethod; \ aoqi@0: friend class ciMethodData; \ aoqi@0: friend class ciMethodHandle; \ aoqi@0: friend class ciMethodType; \ aoqi@0: friend class ciReceiverTypeData; \ aoqi@0: friend class ciTypeEntries; \ aoqi@0: friend class ciSpeculativeTrapData; \ aoqi@0: friend class ciSymbol; \ aoqi@0: friend class ciArray; \ aoqi@0: friend class ciObjArray; \ aoqi@0: friend class ciMetadata; \ aoqi@0: friend class ciReplay; \ aoqi@0: friend class ciTypeArray; \ aoqi@0: friend class ciType; \ aoqi@0: friend class ciReturnAddress; \ aoqi@0: friend class ciKlass; \ aoqi@0: friend class ciInstanceKlass; \ aoqi@0: friend class ciArrayKlass; \ aoqi@0: friend class ciObjArrayKlass; \ aoqi@0: friend class ciTypeArrayKlass; \ aoqi@0: aoqi@0: #endif // SHARE_VM_CI_CICLASSLIST_HPP