/* * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /** * Remote access to objects in the VM heap. * <p> * Remote object instances in the VM are represented by subclasses of {@link com.sun.max.tele.object.TeleObject}. * <p> * Remote object instances are intended to be <em>canonical</em> with respect to object identity in the VM. The * {@link com.sun.max.tele.object.TeleObjectFactory} maintains a map from {@link com.sun.max.tele.reference.RemoteReference}s * to instances of {@link com.sun.max.tele.object.TeleObject}, and ensure that there is never more than one remote object * per remote reference. * <p> * The three specific kinds of object in the Maxine VM are: * <ul> * <li><b>Tuples</b>: represented by instances of {@link com.sun.max.tele.object.TeleTupleObject} and its subclasses;</li> * <li><b>Arrays</b>: represented by instances of {@link com.sun.max.tele.object.TeleArrayObject} and;</li> * <li><b>Hybrids</b>: represented by instances of the two concrete subtypes of {@link com.sun.max.tele.object.TeleHybridObject} * ({@link com.sun.max.tele.object.TeleDynamicHub} and {@link com.sun.max.tele.object.TeleStaticHub}) which correspond to * the only two concrete hybrids that occur in the VM.</li> * </ul> * The several dozen concrete subtypes of {@link com.sun.max.tele.object.TeleTupleObject} are instantiated to represent precisely * those types of object in VM memory that hold metadata needed to interpret other aspects of the VM's runtime state. These * subtypes include methods designed to extract, model, and possibly cache information about those specific kinds of remote objects. * These concrete subtypes * are registered with the {@link com.sun.max.tele.object.TeleObjectFactory}, both statically in this package and dynamically by * other Inspection services as needed. The object factory automatically instantiates the most specific concrete subclass of * {@link com.sun.max.tele.object.TeleTupleObject} that is registered corresponding to an instance discovered in the VM. * <p> * Classes that model VM memory regions that can hold data in Maxine object format (typically heap regions and code cache regions) * are obliged to implement the interface {@link com.sun.max.tele.object.VmObjectHoldingRegion}. */ package com.sun.max.tele.object;