universe.hpp revision 845
100N/A * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 100N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 100N/A * This code is free software; you can redistribute it and/or modify it 100N/A * under the terms of the GNU General Public License version 2 only, as 100N/A * published by the Free Software Foundation. 100N/A * This code is distributed in the hope that it will be useful, but WITHOUT 100N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 100N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 100N/A * version 2 for more details (a copy is included in the LICENSE file that 100N/A * accompanied this code). 100N/A * You should have received a copy of the GNU General Public License version 100N/A * 2 along with this work; if not, write to the Free Software Foundation, 100N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 100N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 100N/A * CA 95054 USA or visit www.sun.com if you need additional information or 720N/A// Universe is a name space holding known system classes and objects in the VM. 100N/A// Loaded classes are accessible through the SystemDictionary. 100N/A// The object heap is allocated and accessed through Universe, and various allocation 100N/A// support is provided. Allocation by the interpreter and compiled code is done inline 100N/A// and bails out to Scavenge::invoke_and_allocate. 100N/A// Common parts of a methodOop cache. This cache safely interacts with 720N/A// the RedefineClasses API. 720N/A // We save the klassOop and the idnum of methodOop in order to get 720N/A // the current cached methodOop. 720N/A// A helper class for caching a methodOop when the user of the cache 720N/A// cares about all versions of the methodOop. 720N/A // This subclass adds weak references to older versions of the 720N/A // methodOop and a query method for a methodOop. 720N/A // If the cached methodOop has not been redefined, then 100N/A // _prev_methods will be NULL. If all of the previous 720N/A // versions of the method have been collected, then 720N/A // _prev_methods can have a length of zero. 720N/A// A helper class for caching a methodOop when the user of the cache 100N/A// only cares about the latest version of the methodOop. 100N/A // This subclass adds a getter method for the latest methodOop. 720N/A// For UseCompressedOops. 100N/A // Base address for oop-within-java-object materialization. 100N/A // NULL if using wide oops or zero based narrow oops. 100N/A // 0 if using wide oops or zero based unscaled narrow oops, 100N/A // LogMinObjAlignmentInBytes otherwise. 100N/A // Generate code with implicit null checks for narrow oops. 100N/A // Ugh. Universe is much too friendly. 720N/A // Known classes in the VM 720N/A // Known objects in the VM // array of preallocated error objects with backtrace // number of preallocated error objects available for use // The object used as an exception dummy when exceptions are thrown for // The particular choice of collected heap. // For UseCompressedOops. // array of dummy objects used with +FullGCAlot // index of next entry to clear // the array of preallocated errors with backtraces // generate an out of memory error; if possible using an error with preallocated backtrace; // otherwise return the given default error. // Historic gc information // Mirrors for primitive classes (created eagerly) // True during call to verify(). Should only be set/cleared in verify(). // Known classes in the VM // Known objects in tbe VM // OutOfMemoryError support. Returns an error with the required message. The returned error // may or may not have a backtrace. If error has a backtrace then the stack trace is already // Accessors needed for fast allocation // The particular choice of collected heap. // Narrow Oop encoding mode: // 0 - Use 32-bits oops without encoding when // NarrowOopHeapBaseMin + heap_size < 4Gb // 1 - Use zero based compressed oops with encoding when // NarrowOopHeapBaseMin + heap_size < 32Gb // 2 - Use compressed oops with heap base + encoding. // Historic gc information // Apply "f" to the addresses of all the direct heap pointers maintained // as static fields of "Universe". // Apply "f" to all klasses for basic types (classes not present in // Apply "f" to all system klasses (classes not present in SystemDictionary). // For sharing -- fill in a list of known vtable pointers. // Change the number of dummy objects kept reachable by the full gc dummy // array; this should trigger relocation in a sliding compaction collector. // Oop verification (see MacroAssembler::verify_oop) // Flushing and deoptimization // Flushing and deoptimization in case of evolution // Support for fullspeed debugging