objArrayKlassKlass.cpp revision 0
0N/A * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 2362N/A * CA 95054 USA or visit www.sun.com if you need additional information or 0N/A * have any questions. 0N/A#
include "incls/_precompiled.incl" 0N/A // system_objArrays have no instance klass, so allocate with fake class, then reset to NULL 2352N/A // Eagerly allocate the direct array supertype. 2352N/A // The element type has a direct super. E.g., String[] has direct super of Object[]. 2352N/A // Also, see if the element has secondary supertypes. 2352N/A // We need an array type for each. 2352N/A // Oops. Not allocated yet. Back out, allocate it, and retry. // Now retry from the beginning // Create a handle because the enclosing brace, when locking // can cause a gc. Better to have this function return a Handle. // The element type is already Object. Object[] has direct super of Object. // Create type name for klass (except for symbol arrays, since symbolKlass // does not have a name). This will potentially allocate an object, cause // GC, and all other kinds of things. Hence, this must be done before we // get a handle to the new objArrayKlass we want to construct. We cannot // block while holding a handling to a partly initialized object. // Initialize instance variables // Call complete_create_array_klass after all instance variables has been initialized. return "{object array class}";