/* * 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. */ package com.sun.max.tele; import com.sun.max.tele.data.*; import com.sun.max.tele.debug.*; import com.sun.max.tele.field.*; import com.sun.max.tele.heap.*; import com.sun.max.tele.method.CodeLocation.VmCodeLocationManager; import com.sun.max.tele.method.*; import com.sun.max.tele.object.*; import com.sun.max.tele.reference.*; import com.sun.max.tele.type.*; import com.sun.max.vm.type.*; /** * An object that refer to some aspect of the VM state, with * convenience methods for access to other aspects. */ public interface TeleVMAccess { /** * @return the instance of VM being managed by this code. */ MaxVM vm(); /** * Gets access to the registry of loaded classes in the * VM and related information. * * @see ClassRegistry * @see VmClassAccess */ VmClassAccess classes(); /** * Gets access to low level reading & writing methods * for VM memory. */ VmMemoryIO memory(); /** * Gets access to information and services for managing * object {@link RemoteReference}s in the VM. * * @see RemoteReference */ VmReferenceManager referenceManager(); /** * Gets access to predefined accessors to specific fields * in specific classes. */ VmFieldAccess fields(); /** * Gets access to predefined accessors for specific methods * in specific classes. */ MaxMethods methods(); /** * Gets the manager for information about objects in the VM. * * @return the singleton manager for object information. */ VmObjectAccess objects(); /** * Gets access to information about the heap in the VM. */ VmHeapAccess heap(); /** * Gets access to information about compiled code in the VM. */ VmCodeCacheAccess codeCache(); /** * Gets the manager for creating and managing code location information in the VM. * <p> * Thread-safe * * @return the singleton manager for information about code locations in the VM. */ VmCodeLocationManager codeLocations(); /** * Gets the factory for creating and managing VM breakpoints. * <p> * Thread-safe * * @return the singleton factory for creating and managing VM breakpoints */ VmBreakpointManager breakpointManager(); /** * Gets the factory for creating and managing VM watchpoints; null * if watchpoints are not supported on this platform. * <p> * Thread-safe * * @return the singleton factory for creating and managing VM watchpoints, or * null if watchpoints not supported. */ VmWatchpoint.VmWatchpointManager watchpointManager(); }