ciInstanceKlassKlass.hpp revision 1472
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk/*
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * This code is free software; you can redistribute it and/or modify it
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * under the terms of the GNU General Public License version 2 only, as
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * published by the Free Software Foundation.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * This code is distributed in the hope that it will be useful, but WITHOUT
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * version 2 for more details (a copy is included in the LICENSE file that
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * accompanied this code).
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * You should have received a copy of the GNU General Public License version
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * 2 along with this work; if not, write to the Free Software Foundation,
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * or visit www.oracle.com if you need additional information or have any
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk * questions.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk *
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk */
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk// ciInstanceKlassKlass
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk//
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk// This class represents a klassOop in the HotSpot virtual machine
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk// whose Klass part is a instanceKlassKlass.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkclass ciInstanceKlassKlass : public ciKlassKlass {
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk CI_PACKAGE_ACCESS
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkprivate:
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk ciInstanceKlassKlass(KlassHandle h_k)
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk : ciKlassKlass(h_k, ciSymbol::make("unique_instanceKlassKlass")) {
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk assert(h_k()->klass_part()->oop_is_instanceKlass(), "wrong type");
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk }
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk instanceKlassKlass* get_instanceKlassKlass() {
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk return (instanceKlassKlass*)get_Klass();
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk }
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk const char* type_string() { return "ciInstanceKlassKlass"; }
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenkpublic:
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk // What kind of ciObject is this?
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk bool is_instance_klass_klass() { return true; }
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk // Return the distinguished ciInstanceKlassKlass instance.
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk static ciInstanceKlassKlass* make();
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk};
4b8d88eb610aa1e0bb6ec632f792744b3d6b5f22jeff.schenk