8158050: Remove SA-JDI
authordsamersoff
Mon, 01 Aug 2016 10:51:22 +0300
changeset 40100 a9b665f0879f
parent 40099 24807846ffe1
child 40101 3b8101f0fd65
8158050: Remove SA-JDI Summary: Remove SA-JDI Reviewed-by: alanb, dsamersoff Contributed-by: sharath.ballal@oracle.com
hotspot/src/jdk.hotspot.agent/doc/ReadMe-JavaScript.text
hotspot/src/jdk.hotspot.agent/share/classes/module-info.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ArrayReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BaseLineInfo.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BooleanTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BooleanValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ByteTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ByteValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/CharTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/CharValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassLoaderReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassObjectReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ConcreteMethodImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/DoubleTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/DoubleValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FieldImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FloatTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FloatValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/IntegerTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/IntegerValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/JNITypeParser.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LineInfo.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LocalVariableImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LocationImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LongTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LongValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MirrorImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MonitorInfoImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/NonConcreteMethodImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/PrimitiveTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/PrimitiveValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SACoreAttachingConnector.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SADebugServer.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SADebugServerAttachingConnector.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SAPIDAttachingConnector.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SDE.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ShortTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ShortValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StackFrameImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StratumLineInfo.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StringReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ThreadGroupReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/TypeComponentImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/TypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VMModifiers.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ValueContainer.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VoidTypeImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VoidValueImpl.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java
hotspot/src/jdk.hotspot.agent/test/jdi/README.jjh
hotspot/src/jdk.hotspot.agent/test/jdi/SASanityChecker.java
hotspot/src/jdk.hotspot.agent/test/jdi/TEST.ROOT
hotspot/src/jdk.hotspot.agent/test/jdi/TargetAdapter.java
hotspot/src/jdk.hotspot.agent/test/jdi/TargetListener.java
hotspot/src/jdk.hotspot.agent/test/jdi/TestScaffold.java
hotspot/src/jdk.hotspot.agent/test/jdi/VMConnection.java
hotspot/src/jdk.hotspot.agent/test/jdi/jstack.sh
hotspot/src/jdk.hotspot.agent/test/jdi/jstack64.sh
hotspot/src/jdk.hotspot.agent/test/jdi/multivm.java
hotspot/src/jdk.hotspot.agent/test/jdi/multivm.sh
hotspot/src/jdk.hotspot.agent/test/jdi/runjdb.sh
hotspot/src/jdk.hotspot.agent/test/jdi/runjpda.sh
hotspot/src/jdk.hotspot.agent/test/jdi/runsa.sh
hotspot/src/jdk.hotspot.agent/test/jdi/sagclient.java
hotspot/src/jdk.hotspot.agent/test/jdi/sagdoit.java
hotspot/src/jdk.hotspot.agent/test/jdi/sagtarg.java
hotspot/src/jdk.hotspot.agent/test/jdi/sagtest.java
hotspot/src/jdk.hotspot.agent/test/jdi/sasanity.sh
hotspot/src/jdk.hotspot.agent/test/jdi/serialvm.java
hotspot/src/jdk.hotspot.agent/test/jdi/serialvm.sh
hotspot/test/serviceability/sa/TestClassLoaderStats.java
hotspot/test/serviceability/sa/TestStackTrace.java
--- a/hotspot/src/jdk.hotspot.agent/doc/ReadMe-JavaScript.text	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-The HotSpot Serviceability Agent (SA) is a debugger for hotspot core
-dumps and hung processes. There is a read-only JDI (Java Debugger
-Interface) implementation on top of SA. This is part of JDK product and
-the classes are in $JDK/tools/sa-jdi.jar.
-
-In addition, there are few serviceability tools in $JDK/bin, namely,
-jstack (java stack trace tool), jmap (heap tool), jinfo (Java config
-tool) and jsadebugd. The classes for these are also in sa-jdi.jar
-file. sa-jdi.jar file is built along with hotspot (libjvm.so) on Solaris
-and Linux platforms. On Windows platform, SA-JDI is not included and
-serviceability tools do not use SA.
-
-Apart from these, HotSpot SA consists of a number of tools that are
-*not* included in JDK product bits.
-
-The sources and makefile for all-of-SA (including non-productized stuff)
-are under $HOTSPOT_WS/agent directory. The makefile $HOTSPOT/agent/make
-directory and shell scripts (and batch files) are used to build and run
-SA non-product tools. There is also documentation of SA under
-$HOTSPOT/agent/doc directory.
-
-To build complete SA, you need to have Rhino Mozilla jar (js.jar)
-version 1.5R5 under $HOTSPOT/agent/src/share/lib directory. Rhino is
-JavaScript interpreter written in Java. Rhino is used to implement SA
-features such as
-
-* SA command line debugger's JavaScript interface
- - refer to $HOTSPOT/agent/doc/clhsdb.html
- - refer to $HOTSPOT/agent/doc/jsdb.html
-* SA simple object query language (SOQL) 
- - language to query Java heap. 
-
-Rhino's "js.jar" is not included in hotspot source bundles. You need to
-download it from http://www.mozilla.org/rhino/download.html.
- 
-Without js.jar, $HOTSPOT/agent/make/Makefile will fail to build. But,
-note that sa-jdi.jar containing the productized portions of SA will
-still be built when you build hotspot JVM. 
--- a/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java	Fri Jul 29 16:50:45 2016 -0700
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/module-info.java	Mon Aug 01 10:51:22 2016 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
@@ -28,12 +28,8 @@
     requires java.desktop;
     requires java.rmi;
     requires java.scripting;
-    requires jdk.jdi;
 
     // RMI needs to serialize types in this package
     exports sun.jvm.hotspot.debugger.remote to java.rmi;
-    provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SACoreAttachingConnector;
-    provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SADebugServerAttachingConnector;
-    provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SAPIDAttachingConnector;
 
 }
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ArrayReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Array;
-import sun.jvm.hotspot.runtime.BasicType;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class ArrayReferenceImpl extends ObjectReferenceImpl
-    implements ArrayReference
-{
-    private int length;
-    ArrayReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Array aRef) {
-        super(aVm, aRef);
-        length = (int) aRef.getLength();
-    }
-
-    ArrayTypeImpl arrayType() {
-        return (ArrayTypeImpl)type();
-    }
-
-    /**
-     * Return array length.
-     */
-    public int length() {
-        return length;
-    }
-
-    public Value getValue(int index) {
-        List list = getValues(index, 1);
-        return (Value)list.get(0);
-    }
-
-    public List getValues() {
-        return getValues(0, -1);
-    }
-
-    /**
-     * Validate that the range to set/get is valid.
-     * length of -1 (meaning rest of array) has been converted
-     * before entry.
-     */
-    private void validateArrayAccess(int index, int len) {
-        // because length can be computed from index,
-        // index must be tested first for correct error message
-        if ((index < 0) || (index > length())) {
-            throw new IndexOutOfBoundsException(
-                        "Invalid array index: " + index);
-        }
-        if (len < 0) {
-            throw new IndexOutOfBoundsException(
-                        "Invalid array range length: " + len);
-        }
-        if (index + len > length()) {
-            throw new IndexOutOfBoundsException(
-                        "Invalid array range: " +
-                        index + " to " + (index + len - 1));
-        }
-    }
-
-    public List getValues(int index, int len) {
-        if (len == -1) { // -1 means the rest of the array
-           len = length() - index;
-        }
-        validateArrayAccess(index, len);
-        List vals = new ArrayList();
-        if (len == 0) {
-            return vals;
-        }
-
-        sun.jvm.hotspot.oops.TypeArray typeArray = null;
-        sun.jvm.hotspot.oops.ObjArray objArray = null;
-        if (ref() instanceof sun.jvm.hotspot.oops.TypeArray) {
-            typeArray = (sun.jvm.hotspot.oops.TypeArray)ref();
-        } else if (ref() instanceof sun.jvm.hotspot.oops.ObjArray) {
-            objArray = (sun.jvm.hotspot.oops.ObjArray)ref();
-        } else {
-            throw new RuntimeException("should not reach here");
-        }
-
-        char c = arrayType().componentSignature().charAt(0);
-        BasicType variableType = BasicType.charToBasicType(c);
-
-        final int limit = index + len;
-        for (int ii = index; ii < limit; ii++) {
-            ValueImpl valueImpl;
-            if (variableType == BasicType.T_BOOLEAN) {
-                valueImpl = (BooleanValueImpl) vm.mirrorOf(typeArray.getBooleanAt(ii));
-            } else if (variableType == BasicType.T_CHAR) {
-                valueImpl = (CharValueImpl) vm.mirrorOf(typeArray.getCharAt(ii));
-            } else if (variableType == BasicType.T_FLOAT) {
-                valueImpl = (FloatValueImpl) vm.mirrorOf(typeArray.getFloatAt(ii));
-            } else if (variableType == BasicType.T_DOUBLE) {
-                valueImpl =  (DoubleValueImpl) vm.mirrorOf(typeArray.getDoubleAt(ii));
-            } else if (variableType == BasicType.T_BYTE) {
-                valueImpl =  (ByteValueImpl) vm.mirrorOf(typeArray.getByteAt(ii));
-            } else if (variableType == BasicType.T_SHORT) {
-                valueImpl =  (ShortValueImpl) vm.mirrorOf(typeArray.getShortAt(ii));
-            } else if (variableType == BasicType.T_INT) {
-                valueImpl =  (IntegerValueImpl) vm.mirrorOf(typeArray.getIntAt(ii));
-            } else if (variableType == BasicType.T_LONG) {
-                valueImpl =  (LongValueImpl) vm.mirrorOf(typeArray.getLongAt(ii));
-            } else if (variableType == BasicType.T_OBJECT) {
-                // we may have an [Ljava/lang/Object; - i.e., Object[] with the
-                // elements themselves may be arrays because every array is an Object.
-                valueImpl = (ObjectReferenceImpl) vm.objectMirror(objArray.getObjAt(ii));
-            } else if (variableType == BasicType.T_ARRAY) {
-                valueImpl = (ArrayReferenceImpl) vm.arrayMirror((Array) objArray.getObjAt(ii));
-            } else {
-                throw new RuntimeException("should not reach here");
-            }
-            vals.add (valueImpl);
-        }
-        return vals;
-    }
-
-    public void setValue(int index, Value value)
-            throws InvalidTypeException,
-                   ClassNotLoadedException {
-        vm.throwNotReadOnlyException("ArrayReference.setValue(...)");
-    }
-
-    public void setValues(List values)
-            throws InvalidTypeException,
-                   ClassNotLoadedException {
-        setValues(0, values, 0, -1);
-    }
-
-    public void setValues(int index, List values,
-                          int srcIndex, int length)
-            throws InvalidTypeException,
-                   ClassNotLoadedException {
-
-        vm.throwNotReadOnlyException("ArrayReference.setValue(...)");
-
-    }
-
-    public String toString() {
-        return "instance of " + arrayType().componentTypeName() +
-               "[" + length() + "] (id=" + uniqueID() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ArrayTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import sun.jvm.hotspot.oops.ArrayKlass;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.ObjArrayKlass;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.TypeArrayKlass;
-
-import com.sun.jdi.ArrayReference;
-import com.sun.jdi.ArrayType;
-import com.sun.jdi.ClassLoaderReference;
-import com.sun.jdi.ClassNotLoadedException;
-import com.sun.jdi.InterfaceType;
-import com.sun.jdi.Method;
-import com.sun.jdi.PrimitiveType;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.Type;
-import com.sun.jdi.VirtualMachine;
-
-public class ArrayTypeImpl extends ReferenceTypeImpl implements ArrayType {
-  protected ArrayTypeImpl(VirtualMachine aVm, ArrayKlass aRef) {
-        super(aVm, aRef);
-    }
-
-    public ArrayReference newInstance(int length) {
-        vm.throwNotReadOnlyException("ArrayType.newInstance(int)");
-        return null;
-    }
-
-    public String componentSignature() {
-        return signature().substring(1); // Just skip the leading '['
-    }
-
-    public String componentTypeName() {
-        JNITypeParser parser = new JNITypeParser(componentSignature());
-        return parser.typeName();
-    }
-
-    public ClassLoaderReference classLoader() {
-        if (ref() instanceof TypeArrayKlass) {
-            // primitive array klasses are loaded by bootstrap loader
-            return null;
-        } else {
-            Klass bottomKlass = ((ObjArrayKlass)ref()).getBottomKlass();
-            if (bottomKlass instanceof TypeArrayKlass) {
-                // multidimensional primitive array klasses are loaded by bootstrap loader
-                return null;
-            } else {
-                // class loader of any other obj array klass is same as the loader
-                // that loaded the bottom InstanceKlass
-                Instance xx = (Instance)(((InstanceKlass) bottomKlass).getClassLoader());
-                return vm.classLoaderMirror(xx);
-            }
-        }
-    }
-
-    @Override
-    void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> handledInterfaces) {
-        // arrays don't have methods
-    }
-
-    List getAllMethods() {
-        // arrays don't have methods
-        // JLS says arrays have methods of java.lang.Object. But
-        // JVMDI-JDI returns zero size list. We do the same here
-        // for consistency.
-        return new ArrayList(0);
-    }
-
-    /*
-     * Find the type object, if any, of a component type of this array.
-     * The component type does not have to be immediate; e.g. this method
-     * can be used to find the component Foo of Foo[][].
-     */
-    public Type componentType() throws ClassNotLoadedException {
-        ArrayKlass k = (ArrayKlass) ref();
-        if (k instanceof ObjArrayKlass) {
-            Klass elementKlass = ((ObjArrayKlass)k).getElementKlass();
-            if (elementKlass == null) {
-                throw new ClassNotLoadedException(componentSignature());
-            } else {
-                return vm.referenceType(elementKlass);
-            }
-        } else {
-            // It's a primitive type
-            return vm.primitiveTypeMirror(signature().charAt(1));
-        }
-    }
-
-    static boolean isComponentAssignable(Type destination, Type source) {
-        if (source instanceof PrimitiveType) {
-            // Assignment of primitive arrays requires identical
-            // component types.
-            return source.equals(destination);
-        } else {
-           if (destination instanceof PrimitiveType) {
-                return false;
-            }
-
-            ReferenceTypeImpl refSource = (ReferenceTypeImpl)source;
-            ReferenceTypeImpl refDestination = (ReferenceTypeImpl)destination;
-            // Assignment of object arrays requires availability
-            // of widening conversion of component types
-            return refSource.isAssignableTo(refDestination);
-        }
-    }
-
-
-    /*
-    * Return true if an instance of the  given reference type
-    * can be assigned to a variable of this type
-    */
-    boolean isAssignableTo(ReferenceType destType) {
-        if (destType instanceof ArrayType) {
-            try {
-                Type destComponentType = ((ArrayType)destType).componentType();
-                return isComponentAssignable(destComponentType, componentType());
-            } catch (ClassNotLoadedException e) {
-                // One or both component types has not yet been
-                // loaded => can't assign
-                return false;
-            }
-        } else {
-            Symbol typeName = ((ReferenceTypeImpl)destType).typeNameAsSymbol();
-            if (destType instanceof InterfaceType) {
-                // Every array type implements java.io.Serializable and
-                // java.lang.Cloneable. fixme in JVMDI-JDI, includes only
-                // Cloneable but not Serializable.
-                return typeName.equals(vm.javaLangCloneable()) ||
-                       typeName.equals(vm.javaIoSerializable());
-            } else {
-                // Only valid ClassType assignee is Object
-                return typeName.equals(vm.javaLangObject());
-            }
-        }
-    }
-
-    List inheritedTypes() {
-        // arrays are derived from java.lang.Object and
-        // B[] is derived from A[] if B is derived from A.
-        // But JVMDI-JDI returns zero sized list and we do the
-        // same for consistency.
-        return new ArrayList(0);
-    }
-
-    int getModifiers() {
-        /*
-         * For object arrays, the return values for Interface
-         * Accessible.isPrivate(), Accessible.isProtected(),
-         * etc... are the same as would be returned for the
-         * component type.  Fetch the modifier bits from the
-         * component type and use those.
-         *
-         * For primitive arrays, the modifiers are always
-         *   VMModifiers.FINAL | VMModifiers.PUBLIC
-         *
-         * Reference com.sun.jdi.Accessible.java.
-         */
-        try {
-            Type t = componentType();
-            if (t instanceof PrimitiveType) {
-                return VMModifiers.FINAL | VMModifiers.PUBLIC;
-            } else {
-                ReferenceType rt = (ReferenceType)t;
-                return rt.modifiers();
-            }
-        } catch (ClassNotLoadedException cnle) {
-            cnle.printStackTrace();
-        }
-        return -1;
-    }
-
-    public String toString() {
-       return "array class " + name() + " (" + loaderString() + ")";
-    }
-
-    /*
-     * Save a pointless trip over the wire for these methods
-     * which have undefined results for arrays.
-     */
-    public boolean isPrepared() { return true; }
-    public boolean isVerified() { return true; }
-    public boolean isInitialized() { return true; }
-    public boolean failedToInitialize() { return false; }
-    public boolean isAbstract() { return false; }
-
-    /*
-     * Defined always to be true for arrays
-     */
-    public boolean isFinal() { return true; }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BaseLineInfo.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-class BaseLineInfo implements LineInfo {
-    private final int lineNumber;
-    private final ReferenceTypeImpl declaringType;
-
-    BaseLineInfo(int lineNumber,
-                 ReferenceTypeImpl declaringType) {
-        this.lineNumber = lineNumber;
-        this.declaringType = declaringType;
-    }
-
-    public String liStratum() {
-        return SDE.BASE_STRATUM_NAME;
-    }
-
-    public int liLineNumber() {
-        return lineNumber;
-    }
-
-    public String liSourceName()
-                            throws AbsentInformationException {
-        return declaringType.baseSourceName();
-    }
-
-    public String liSourcePath()
-                            throws AbsentInformationException {
-        return declaringType.baseSourcePath();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BooleanTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class BooleanTypeImpl extends PrimitiveTypeImpl implements BooleanType {
-    BooleanTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-    public String signature() {
-        return "Z";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedBooleanValue());
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/BooleanValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class BooleanValueImpl extends PrimitiveValueImpl
-                              implements BooleanValue {
-    private boolean value;
-
-    BooleanValueImpl(VirtualMachine aVm,boolean aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof BooleanValue)) {
-            return (value == ((BooleanValue)obj).value())
-                   && super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public Type type() {
-        return vm.theBooleanType();
-    }
-
-    public boolean value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return value;
-    }
-
-    public byte byteValue() {
-        return(byte)((value)?1:0);
-    }
-
-    public char charValue() {
-        return(char)((value)?1:0);
-    }
-
-    public short shortValue() {
-        return(short)((value)?1:0);
-    }
-
-    public int intValue() {
-        return(int)((value)?1:0);
-    }
-
-    public long longValue() {
-        return(long)((value)?1:0);
-    }
-
-    public float floatValue() {
-        return(float)((value)?1.0:0.0);
-    }
-
-    public double doubleValue() {
-        return(double)((value)?1.0:0.0);
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ByteTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class ByteTypeImpl extends PrimitiveTypeImpl implements ByteType {
-    ByteTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "B";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedByteValue());
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ByteValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class ByteValueImpl extends PrimitiveValueImpl
-                           implements ByteValue {
-    private byte value;
-
-    ByteValueImpl(VirtualMachine aVm,byte aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof ByteValue)) {
-            return (value == ((ByteValue)obj).value())
-                   && super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(ByteValue byteVal) {
-        return value() - byteVal.value();
-    }
-
-    public Type type() {
-        return vm.theByteType();
-    }
-
-    public byte value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0)?false:true;
-    }
-
-    public byte byteValue() {
-        return value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/CharTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class CharTypeImpl extends PrimitiveTypeImpl implements CharType {
-    CharTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "C";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedCharValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/CharValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class CharValueImpl extends PrimitiveValueImpl
-                           implements CharValue {
-    private char value;
-
-    CharValueImpl(VirtualMachine aVm,char aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof CharValue)) {
-            return (value == ((CharValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(CharValue charVal) {
-        return value() - charVal.value();
-    }
-
-    public Type type() {
-        return vm.theCharType();
-    }
-
-    public char value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        // Note: since char is unsigned, don't check against MIN_VALUE
-        if (value > Byte.MAX_VALUE) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    short checkedShortValue() throws InvalidTypeException {
-        // Note: since char is unsigned, don't check against MIN_VALUE
-        if (value > Short.MAX_VALUE) {
-            throw new InvalidTypeException("Can't convert " + value + " to short");
-        } else {
-            return super.checkedShortValue();
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassLoaderReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.memory.SystemDictionary;
-import sun.jvm.hotspot.memory.Universe;
-import sun.jvm.hotspot.runtime.VM;
-
-import com.sun.jdi.*;
-import java.util.*;
-
-public class ClassLoaderReferenceImpl
-    extends ObjectReferenceImpl
-    implements ClassLoaderReference
-{
-     // because we work on process snapshot or core we can
-     // cache visibleClasses & definedClasses always (i.e., no suspension)
-     private List visibleClassesCache;
-     private List definedClassesCache;
-
-     ClassLoaderReferenceImpl(VirtualMachine aVm, Instance oRef) {
-         super(aVm, oRef);
-     }
-
-     protected String description() {
-         return "ClassLoaderReference " + uniqueID();
-     }
-
-     public List definedClasses() {
-         if (definedClassesCache == null) {
-             definedClassesCache = new ArrayList();
-             Iterator iter = vm.allClasses().iterator();
-             while (iter.hasNext()) {
-                 ReferenceType type = (ReferenceType)iter.next();
-                 if (equals(type.classLoader())) {  /* thanks OTI */
-                     definedClassesCache.add(type);
-                 }
-             }
-         }
-         return definedClassesCache;
-     }
-
-     private SystemDictionary getSystemDictionary() {
-         return vm.saSystemDictionary();
-     }
-
-     private Universe getUniverse() {
-         return vm.saUniverse();
-     }
-
-     public List visibleClasses() {
-         if (visibleClassesCache != null)
-            return visibleClassesCache;
-
-         visibleClassesCache = new ArrayList();
-
-         // refer to getClassLoaderClasses in jvmtiGetLoadedClasses.cpp
-         //  a. SystemDictionary::classes_do doesn't include arrays of primitive types (any dimensions)
-         SystemDictionary sysDict = getSystemDictionary();
-         sysDict.classesDo(
-                           new SystemDictionary.ClassAndLoaderVisitor() {
-                                public void visit(Klass k, Oop loader) {
-                                    if (ref().equals(loader)) {
-                                        for (Klass l = k; l != null; l = l.arrayKlassOrNull()) {
-                                            visibleClassesCache.add(vm.referenceType(l));
-                                        }
-                                    }
-                                }
-                           }
-                           );
-
-         // b. multi dimensional arrays of primitive types
-         sysDict.primArrayClassesDo(
-                                    new SystemDictionary.ClassAndLoaderVisitor() {
-                                         public void visit(Klass k, Oop loader) {
-                                             if (ref().equals(loader)) {
-                                                 visibleClassesCache.add(vm.referenceType(k));
-                                             }
-                                         }
-                                     }
-                                     );
-
-         // c. single dimensional primitive array klasses from Universe
-         // these are not added to SystemDictionary
-         getUniverse().basicTypeClassesDo(
-                            new SystemDictionary.ClassVisitor() {
-                                public void visit(Klass k) {
-                                    visibleClassesCache.add(vm.referenceType(k));
-                                }
-                            }
-                            );
-
-         return visibleClassesCache;
-     }
-
-     Type findType(String signature) throws ClassNotLoadedException {
-         List types = visibleClasses();
-         Iterator iter = types.iterator();
-         while (iter.hasNext()) {
-             ReferenceType type = (ReferenceType)iter.next();
-             if (type.signature().equals(signature)) {
-                 return type;
-             }
-         }
-         JNITypeParser parser = new JNITypeParser(signature);
-         throw new ClassNotLoadedException(parser.typeName(),
-                                          "Class " + parser.typeName() + " not loaded");
-     }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassObjectReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.java_lang_Class;
-
-public class ClassObjectReferenceImpl extends ObjectReferenceImpl
-                                      implements ClassObjectReference {
-    private ReferenceType reflectedType;
-
-    ClassObjectReferenceImpl(VirtualMachine vm, Instance oRef) {
-        super(vm, oRef);
-    }
-
-    public ReferenceType reflectedType() {
-        if (reflectedType == null) {
-            Klass k = java_lang_Class.asKlass(ref());
-            reflectedType = vm.referenceType(k);
-        }
-        return reflectedType;
-    }
-
-    public String toString() {
-        return "instance of " + referenceType().name() +
-               "(reflected class=" + reflectedType().name() + ", " + "id=" +
-               uniqueID() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ClassTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
- * Copyright (c) 2002, 2007, 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 sun.jvm.hotspot.jdi;
-
-import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import sun.jvm.hotspot.oops.InstanceKlass;
-
-import com.sun.jdi.ClassNotLoadedException;
-import com.sun.jdi.ClassType;
-import com.sun.jdi.Field;
-import com.sun.jdi.IncompatibleThreadStateException;
-import com.sun.jdi.InterfaceType;
-import com.sun.jdi.InvalidTypeException;
-import com.sun.jdi.InvocationException;
-import com.sun.jdi.Method;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.ThreadReference;
-import com.sun.jdi.Value;
-import com.sun.jdi.VirtualMachine;
-
-public class ClassTypeImpl extends ReferenceTypeImpl
-    implements ClassType
-{
-    private SoftReference interfacesCache    = null;
-    private SoftReference allInterfacesCache = null;
-    private SoftReference subclassesCache    = null;
-
-    protected ClassTypeImpl(VirtualMachine aVm, InstanceKlass aRef) {
-        super(aVm, aRef);
-    }
-
-    public ClassType superclass() {
-        InstanceKlass kk = (InstanceKlass)ref().getSuper();
-        if (kk == null) {
-            return null;
-        }
-        return (ClassType) vm.referenceType(kk);
-    }
-
-    public List interfaces()  {
-        List interfaces = (interfacesCache != null)? (List) interfacesCache.get() : null;
-        if (interfaces == null) {
-            checkPrepared();
-            interfaces = Collections.unmodifiableList(getInterfaces());
-            interfacesCache = new SoftReference(interfaces);
-        }
-        return interfaces;
-    }
-
-    void addInterfaces(List list) {
-        List immediate = interfaces();
-
-        HashSet hashList = new HashSet(list);
-        hashList.addAll(immediate);
-        list.clear();
-        list.addAll(hashList);
-
-        Iterator iter = immediate.iterator();
-        while (iter.hasNext()) {
-            InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-            interfaze.addSuperinterfaces(list);
-        }
-
-        ClassTypeImpl superclass = (ClassTypeImpl)superclass();
-        if (superclass != null) {
-            superclass.addInterfaces(list);
-        }
-    }
-
-    public List allInterfaces()  {
-        List allinterfaces = (allInterfacesCache != null)? (List) allInterfacesCache.get() : null;
-        if (allinterfaces == null) {
-            checkPrepared();
-            allinterfaces = new ArrayList();
-            addInterfaces(allinterfaces);
-            allinterfaces = Collections.unmodifiableList(allinterfaces);
-            allInterfacesCache = new SoftReference(allinterfaces);
-        }
-        return allinterfaces;
-    }
-
-    public List subclasses() {
-        List subclasses = (subclassesCache != null)? (List) subclassesCache.get() : null;
-        if (subclasses == null) {
-            List all = vm.allClasses();
-            subclasses = new ArrayList(0);
-            Iterator iter = all.iterator();
-            while (iter.hasNext()) {
-                ReferenceType refType = (ReferenceType)iter.next();
-                if (refType instanceof ClassType) {
-                    ClassType clazz = (ClassType)refType;
-                    ClassType superclass = clazz.superclass();
-                    if ((superclass != null) && superclass.equals(this)) {
-                        subclasses.add(refType);
-                    }
-                }
-            }
-            subclasses = Collections.unmodifiableList(subclasses);
-            subclassesCache = new SoftReference(subclasses);
-        }
-        return subclasses;
-    }
-
-    public Method concreteMethodByName(String name, String signature)  {
-       checkPrepared();
-       List methods = visibleMethods();
-       Method method = null;
-       Iterator iter = methods.iterator();
-       while (iter.hasNext()) {
-           Method candidate = (Method)iter.next();
-           if (candidate.name().equals(name) &&
-               candidate.signature().equals(signature) &&
-               !candidate.isAbstract()) {
-
-               method = candidate;
-               break;
-           }
-       }
-       return method;
-   }
-
-   List getAllMethods() {
-        ArrayList list = new ArrayList(methods());
-        ClassType clazz = superclass();
-        while (clazz != null) {
-            list.addAll(clazz.methods());
-            clazz = clazz.superclass();
-        }
-        /*
-         * Avoid duplicate checking on each method by iterating through
-         * duplicate-free allInterfaces() rather than recursing
-         */
-        Iterator iter = allInterfaces().iterator();
-        while (iter.hasNext()) {
-            InterfaceType interfaze = (InterfaceType)iter.next();
-            list.addAll(interfaze.methods());
-        }
-        return list;
-    }
-
-    List inheritedTypes() {
-        List inherited = new ArrayList(interfaces());
-        if (superclass() != null) {
-            inherited.add(0, superclass()); /* insert at front */
-        }
-        return inherited;
-    }
-
-    public boolean isEnum() {
-        ClassTypeImpl superclass = (ClassTypeImpl) superclass();
-        if (superclass != null) {
-            return superclass.typeNameAsSymbol().equals(vm.javaLangEnum());
-        } else {
-            return false;
-        }
-    }
-
-    public void setValue(Field field, Value value)
-        throws InvalidTypeException, ClassNotLoadedException {
-        vm.throwNotReadOnlyException("ClassType.setValue(...)");
-    }
-
-
-    public Value invokeMethod(ThreadReference threadIntf, Method methodIntf,
-                              List arguments, int options)
-                                   throws InvalidTypeException,
-                                          ClassNotLoadedException,
-                                          IncompatibleThreadStateException,
-                                          InvocationException {
-        vm.throwNotReadOnlyException("ClassType.invokeMethod(...)");
-        return null;
-    }
-
-    public ObjectReference newInstance(ThreadReference threadIntf,
-                                       Method methodIntf,
-                                       List arguments, int options)
-                                   throws InvalidTypeException,
-                                          ClassNotLoadedException,
-                                          IncompatibleThreadStateException,
-                                          InvocationException {
-        vm.throwNotReadOnlyException("ClassType.newInstance(...)");
-        return null;
-    }
-
-    @Override
-    void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
-        /*
-         * Add methods from
-         * parent types first, so that the methods in this class will
-         * overwrite them in the hash table
-         */
-
-        Iterator<InterfaceType> iter = interfaces().iterator();
-        while (iter.hasNext()) {
-            InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-            if (!seenInterfaces.contains(interfaze)) {
-                interfaze.addVisibleMethods(methodMap, seenInterfaces);
-                seenInterfaces.add(interfaze);
-            }
-        }
-
-        ClassTypeImpl clazz = (ClassTypeImpl)superclass();
-        if (clazz != null) {
-            clazz.addVisibleMethods(methodMap, seenInterfaces);
-        }
-
-        addToMethodMap(methodMap, methods());
-    }
-
-    boolean isAssignableTo(ReferenceType type) {
-        ClassTypeImpl superclazz = (ClassTypeImpl)superclass();
-        if (this.equals(type)) {
-            return true;
-        } else if ((superclazz != null) && superclazz.isAssignableTo(type)) {
-            return true;
-        } else {
-            List interfaces = interfaces();
-            Iterator iter = interfaces.iterator();
-            while (iter.hasNext()) {
-                InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-                if (interfaze.isAssignableTo(type)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-    }
-
-    public String toString() {
-       return "class " + name() + "(" + loaderString() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ConcreteMethodImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.LocalVariableTableElement;
-import sun.jvm.hotspot.oops.LineNumberTableElement;
-import java.util.List;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.lang.ref.SoftReference;
-import java.util.Collections;
-
-public class ConcreteMethodImpl extends MethodImpl {
-
-    /*
-     * A subset of the line number info that is softly cached
-     */
-    static private class SoftLocationXRefs {
-        final String stratumID;   // The stratum of this information
-        final Map lineMapper;     // Maps line number to location(s)
-        final List lineLocations; // List of locations ordered by code index
-
-        /*
-         * Note: these do not necessarily correspond to
-         * the line numbers of the first and last elements
-         * in the lineLocations list. Use these only for bounds
-         * checking and with lineMapper.
-         */
-        final int lowestLine;
-        final int highestLine;
-
-        SoftLocationXRefs(String stratumID, Map lineMapper, List lineLocations,
-                     int lowestLine, int highestLine) {
-            this.stratumID = stratumID;
-            this.lineMapper = Collections.unmodifiableMap(lineMapper);
-            this.lineLocations =
-                Collections.unmodifiableList(lineLocations);
-            this.lowestLine = lowestLine;
-            this.highestLine = highestLine;
-        }
-    }
-
-    private SoftReference softBaseLocationXRefsRef;
-    private SoftReference softOtherLocationXRefsRef;
-    private SoftReference variablesRef = null;
-    private int firstIndex = -1;
-    private int lastIndex = -1;
-    private Location location;
-    private SoftReference bytecodesRef = null;
-
-    ConcreteMethodImpl(VirtualMachine vm, ReferenceTypeImpl declaringType,
-               sun.jvm.hotspot.oops.Method saMethod ) {
-        super(vm, declaringType, saMethod);
-    }
-
-    int argSlotCount() throws AbsentInformationException {
-        return (int) saMethod.getSizeOfParameters();
-    }
-
-    private SoftLocationXRefs getLocations(SDE.Stratum stratum) {
-        if (stratum.isJava()) {
-            return getBaseLocations();
-        }
-        String stratumID = stratum.id();
-        SoftLocationXRefs info =
-            (softOtherLocationXRefsRef == null) ? null :
-               (SoftLocationXRefs)softOtherLocationXRefsRef.get();
-        if (info != null && info.stratumID.equals(stratumID)) {
-            return info;
-        }
-
-        List lineLocations = new ArrayList();
-        Map lineMapper = new HashMap();
-        int lowestLine = -1;
-        int highestLine = -1;
-        SDE.LineStratum lastLineStratum = null;
-        SDE.Stratum baseStratum =
-            declaringType.stratum(SDE.BASE_STRATUM_NAME);
-        Iterator it = getBaseLocations().lineLocations.iterator();
-        while(it.hasNext()) {
-            LocationImpl loc = (LocationImpl)it.next();
-            int baseLineNumber = loc.lineNumber(baseStratum);
-            SDE.LineStratum lineStratum =
-                  stratum.lineStratum(declaringType,
-                                      baseLineNumber);
-
-            if (lineStratum == null) {
-                // location not mapped in this stratum
-                continue;
-            }
-
-            int lineNumber = lineStratum.lineNumber();
-
-            // remove unmapped and dup lines
-            if ((lineNumber != -1) &&
-                          (!lineStratum.equals(lastLineStratum))) {
-                lastLineStratum = lineStratum;
-                // Remember the largest/smallest line number
-                if (lineNumber > highestLine) {
-                    highestLine = lineNumber;
-                }
-                if ((lineNumber < lowestLine) || (lowestLine == -1)) {
-                    lowestLine = lineNumber;
-                }
-
-                loc.addStratumLineInfo(
-                new StratumLineInfo(stratumID,
-                                      lineNumber,
-                                      lineStratum.sourceName(),
-                                      lineStratum.sourcePath()));
-
-                // Add to the location list
-                lineLocations.add(loc);
-
-                // Add to the line -> locations map
-                Integer key = new Integer(lineNumber);
-                List mappedLocs = (List)lineMapper.get(key);
-                if (mappedLocs == null) {
-                    mappedLocs = new ArrayList(1);
-                    lineMapper.put(key, mappedLocs);
-                }
-                mappedLocs.add(loc);
-            }
-        }
-
-        info = new SoftLocationXRefs(stratumID,
-                                lineMapper, lineLocations,
-                                lowestLine, highestLine);
-        softOtherLocationXRefsRef = new SoftReference(info);
-        return info;
-    }
-
-    private SoftLocationXRefs getBaseLocations() {
-        SoftLocationXRefs info = (softBaseLocationXRefsRef == null) ? null :
-                                     (SoftLocationXRefs)softBaseLocationXRefsRef.get();
-        if (info != null) {
-            return info;
-        }
-
-        byte[] codeBuf = bytecodes();
-        firstIndex = 0;
-        lastIndex = codeBuf.length - 1;
-        // This is odd; what is the Location of a Method?
-        // A StackFrame can have a location, but a Method?
-        // I guess it must be the Location for bci 0.
-        location = new LocationImpl(virtualMachine(), this, 0);
-
-        boolean hasLineInfo = saMethod.hasLineNumberTable();
-        LineNumberTableElement[] lntab = null;
-        int count;
-
-        if (hasLineInfo) {
-            lntab = saMethod.getLineNumberTable();
-            count = lntab.length;
-        } else {
-            count = 0;
-        }
-
-        List lineLocations = new ArrayList(count);
-        Map lineMapper = new HashMap();
-        int lowestLine = -1;
-        int highestLine = -1;
-        for (int i = 0; i < count; i++) {
-            long bci = lntab[i].getStartBCI();
-            int lineNumber = lntab[i].getLineNumber();
-
-            /*
-             * Some compilers will point multiple consecutive
-             * lines at the same location. We need to choose
-             * one of them so that we can consistently map back
-             * and forth between line and location. So we choose
-             * to record only the last line entry at a particular
-             * location.
-             */
-            if ((i + 1 == count) || (bci != lntab[i+1].getStartBCI())) {
-                // Remember the largest/smallest line number
-                if (lineNumber > highestLine) {
-                    highestLine = lineNumber;
-                }
-                if ((lineNumber < lowestLine) || (lowestLine == -1)) {
-                    lowestLine = lineNumber;
-                }
-                LocationImpl loc =
-                    new LocationImpl(virtualMachine(), this, bci);
-                loc.addBaseLineInfo(
-                    new BaseLineInfo(lineNumber, declaringType));
-
-                // Add to the location list
-                lineLocations.add(loc);
-
-                // Add to the line -> locations map
-                Integer key = new Integer(lineNumber);
-                List mappedLocs = (List)lineMapper.get(key);
-                if (mappedLocs == null) {
-                    mappedLocs = new ArrayList(1);
-                    lineMapper.put(key, mappedLocs);
-                }
-                mappedLocs.add(loc);
-            }
-        }
-
-        info = new SoftLocationXRefs(SDE.BASE_STRATUM_NAME,
-                                lineMapper, lineLocations,
-                                lowestLine, highestLine);
-        softBaseLocationXRefsRef = new SoftReference(info);
-        return info;
-    }
-
-    List sourceNameFilter(List list,
-                          SDE.Stratum stratum,
-                          String sourceName)
-                            throws AbsentInformationException {
-        if (sourceName == null) {
-            return list;
-        } else {
-            /* needs sourceName filteration */
-            List locs = new ArrayList();
-            Iterator it = list.iterator();
-            while (it.hasNext()) {
-                LocationImpl loc = (LocationImpl)it.next();
-                if (loc.sourceName(stratum).equals(sourceName)) {
-                    locs.add(loc);
-                }
-            }
-            return locs;
-        }
-    }
-
-    public List allLineLocations(SDE.Stratum stratum, String sourceName)
-        throws AbsentInformationException {
-        List lineLocations = getLocations(stratum).lineLocations;
-
-        if (lineLocations.size() == 0) {
-            throw new AbsentInformationException();
-        }
-
-        return Collections.unmodifiableList(
-          sourceNameFilter(lineLocations, stratum, sourceName));
-    }
-
-    public List locationsOfLine(SDE.Stratum stratum, String sourceName,
-                         int lineNumber) throws AbsentInformationException {
-        SoftLocationXRefs info = getLocations(stratum);
-
-        if (info.lineLocations.size() == 0) {
-            throw new AbsentInformationException();
-        }
-
-        /*
-         * Find the locations which match the line number
-         * passed in.
-         */
-        List list = (List)info.lineMapper.get(
-                                  new Integer(lineNumber));
-
-        if (list == null) {
-            list = new ArrayList(0);
-        }
-        return Collections.unmodifiableList(
-          sourceNameFilter(list, stratum, sourceName));
-    }
-
-    LineInfo codeIndexToLineInfo(SDE.Stratum stratum,
-                                 long codeIndex) {
-        if (firstIndex == -1) {
-            getBaseLocations();
-        }
-
-        /*
-         * Check for invalid code index.
-         */
-        if (codeIndex < firstIndex || codeIndex > lastIndex) {
-            throw new InternalError(
-                    "Location with invalid code index");
-        }
-
-        List lineLocations = getLocations(stratum).lineLocations;
-
-        /*
-         * Check for absent line numbers.
-         */
-        if (lineLocations.size() == 0) {
-            return super.codeIndexToLineInfo(stratum, codeIndex);
-        }
-
-        Iterator iter = lineLocations.iterator();
-        /*
-         * Treat code before the beginning of the first line table
-         * entry as part of the first line.  javac will generate
-         * code like this for some local classes. This "prolog"
-         * code contains assignments from locals in the enclosing
-         * scope to synthetic fields in the local class.  Same for
-         * other language prolog code.
-         */
-        LocationImpl bestMatch = (LocationImpl)iter.next();
-        while (iter.hasNext()) {
-            LocationImpl current = (LocationImpl)iter.next();
-            if (current.codeIndex() > codeIndex) {
-                break;
-            }
-            bestMatch = current;
-        }
-        return bestMatch.getLineInfo(stratum);
-    }
-
-    public Location locationOfCodeIndex(long codeIndex) {
-        if (firstIndex == -1) {
-            getBaseLocations();
-        }
-
-        /*
-         * Check for invalid code index.
-         */
-        if (codeIndex < firstIndex || codeIndex > lastIndex) {
-            return null;
-        }
-
-        return new LocationImpl(virtualMachine(), this, codeIndex);
-    }
-
-    public List variables() throws AbsentInformationException {
-        return getVariables();
-    }
-
-    public List variablesByName(String name) throws AbsentInformationException {
-        List variables = getVariables();
-
-        List retList = new ArrayList(2);
-        Iterator iter = variables.iterator();
-        while(iter.hasNext()) {
-            LocalVariable variable = (LocalVariable)iter.next();
-            if (variable.name().equals(name)) {
-                retList.add(variable);
-            }
-        }
-        return retList;
-    }
-
-    public List arguments() throws AbsentInformationException {
-        if (argumentTypeNames().size() == 0) {
-            return new ArrayList(0);
-        }
-        List variables = getVariables();
-        List retList = new ArrayList(variables.size());
-        Iterator iter = variables.iterator();
-        while(iter.hasNext()) {
-            LocalVariable variable = (LocalVariable)iter.next();
-            if (variable.isArgument()) {
-                retList.add(variable);
-            }
-        }
-        return retList;
-    }
-
-    public byte[] bytecodes() {
-        byte[] bytecodes = (bytecodesRef == null) ? null :
-                                     (byte[])bytecodesRef.get();
-        if (bytecodes == null) {
-            bytecodes = saMethod.getByteCode();
-            bytecodesRef = new SoftReference(bytecodes);
-        }
-        /*
-         * Arrays are always modifiable, so it is a little unsafe
-         * to return the cached bytecodes directly; instead, we
-         * make a clone at the cost of using more memory.
-         */
-        return (byte[])bytecodes.clone();
-    }
-
-    public Location location() {
-        if (location == null) {
-            getBaseLocations();
-        }
-        return location;
-    }
-
-    private List getVariables() throws AbsentInformationException {
-        List variables = (variablesRef == null) ? null :
-                                     (List)variablesRef.get();
-        if (variables != null) {
-            return variables;
-        }
-
-        // if there are no locals, there won't be a LVT
-        if (saMethod.getMaxLocals() == 0) {
-           variables = Collections.unmodifiableList(new ArrayList(0));
-           variablesRef = new SoftReference(variables);
-           return variables;
-        }
-
-        if (! saMethod.hasLocalVariableTable()) {
-            throw new AbsentInformationException();
-        }
-        //Build up the JDI view of local variable table.
-        LocalVariableTableElement[] locals = saMethod.getLocalVariableTable();
-        int localCount = locals.length;
-        variables = new ArrayList(localCount);
-        for (int ii = 0; ii < localCount; ii++) {
-            String name =
-                saMethod.getConstants().getSymbolAt(locals[ii].getNameCPIndex()).asString();
-            /*
-             * Skip "this$*", "this+*", "this" entries because they are never real
-             * variables from the JLS perspective. "this+*" is new with 1.5.
-             * Instead of using '+', we check for java letter or digit to avoid
-             * depending on javac's current choice of '+'.
-             */
-            boolean isInternalName = name.startsWith("this") &&
-                  (name.length() == 4 || name.charAt(4)=='$' || !Character.isJavaIdentifierPart(name.charAt(4)));
-            if (! isInternalName) {
-                int slot = locals[ii].getSlot();
-                long codeIndex = locals[ii].getStartBCI();
-                int length = locals[ii].getLength();
-                Location scopeStart = new LocationImpl(virtualMachine(),
-                                                       this, codeIndex);
-                Location scopeEnd =
-                    new LocationImpl(virtualMachine(), this,
-                                     codeIndex + length - 1);
-                String signature =
-                    saMethod.getConstants().getSymbolAt(locals[ii].getDescriptorCPIndex()).asString();
-
-                int genericSigIndex = locals[ii].getSignatureCPIndex();
-                String genericSignature = null;
-                if (genericSigIndex != 0) {
-                    genericSignature = saMethod.getConstants().getSymbolAt(genericSigIndex).asString();
-                }
-
-                LocalVariable variable =
-                    new LocalVariableImpl(virtualMachine(), this,
-                                          slot, scopeStart, scopeEnd,
-                                          name, signature, genericSignature);
-                // Add to the variable list
-                variables.add(variable);
-            }
-        }
-
-        variables = Collections.unmodifiableList(variables);
-        variablesRef = new SoftReference(variables);
-        return variables;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ConnectorImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,631 +0,0 @@
-/*
- * Copyright (c) 2002, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.connect.*;
-import com.sun.jdi.InternalException;
-
-import java.io.*;
-import java.lang.ref.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-abstract class ConnectorImpl implements Connector {
-    Map defaultArguments = new LinkedHashMap();
-
-    // Used by BooleanArgument
-    static String trueString = null;
-    static String falseString;
-
-
-    /**  This is not public in VirtualMachineManagerImpl
-    ThreadGroup mainGroupForJDI() {
-        return ((VirtualMachineManagerImpl)manager).mainGroupForJDI();
-    }
-    ***/
-
-    // multiple debuggee support for SA/JDI
-    private static List freeVMClasses; // List<SoftReference<Class>>
-    private static ClassLoader myLoader;
-    // debug mode for SA/JDI connectors
-    static final protected boolean DEBUG;
-    static {
-        myLoader = ConnectorImpl.class.getClassLoader();
-        freeVMClasses = new ArrayList(0);
-        DEBUG = System.getProperty("sun.jvm.hotspot.jdi.ConnectorImpl.DEBUG") != null;
-    }
-
-    // add a new free VirtualMachineImpl class
-    private static synchronized void addFreeVMImplClass(Class clazz) {
-        if (DEBUG) {
-            System.out.println("adding free VirtualMachineImpl class");
-        }
-        freeVMClasses.add(new SoftReference(clazz));
-    }
-
-    // returns null if we don't have anything free
-    private static synchronized Class getFreeVMImplClass() {
-        while (!freeVMClasses.isEmpty()) {
-              SoftReference ref = (SoftReference) freeVMClasses.remove(0);
-              Object o = ref.get();
-              if (o != null) {
-                  if (DEBUG) {
-                      System.out.println("re-using loaded VirtualMachineImpl");
-                  }
-                  return (Class) o;
-              }
-        }
-        return null;
-    }
-
-    private static Class getVMImplClassFrom(ClassLoader cl)
-                               throws ClassNotFoundException {
-        return Class.forName("sun.jvm.hotspot.jdi.VirtualMachineImpl", true, cl);
-    }
-
-    /* SA has not been designed to support multiple debuggee VMs
-     * at-a-time.  But, JDI supports multiple debuggee VMs.  We
-     * support multiple debuggee VMs in SA/JDI, by creating a new
-     * class loader instance (refer to comment in SAJDIClassLoader
-     * for details). But, to avoid excessive class loading (and
-     * thereby resulting in larger footprint), we re-use 'dispose'd
-     * VirtualMachineImpl classes.
-     */
-    protected static Class loadVirtualMachineImplClass()
-                               throws ClassNotFoundException {
-        Class vmImplClass = getFreeVMImplClass();
-        if (vmImplClass == null) {
-            ClassLoader cl = new SAJDIClassLoader(myLoader);
-            vmImplClass = getVMImplClassFrom(cl);
-        }
-        return vmImplClass;
-    }
-
-    /* We look for System property sun.jvm.hotspot.jdi.<vm version>.
-     * This property should have the value of JDK HOME directory for
-     * the given <vm version>.
-     */
-    private static String getSAClassPathForVM(String vmVersion) {
-        final String prefix = "sun.jvm.hotspot.jdi.";
-        // look for exact match of VM version
-        String jvmHome = System.getProperty(prefix + vmVersion);
-        if (DEBUG) {
-            System.out.println("looking for System property " + prefix + vmVersion);
-        }
-
-        if (jvmHome == null) {
-            // omit chars after first '-' in VM version and try
-            // for example, in '1.5.0-b55' we take '1.5.0'
-            int index = vmVersion.indexOf('-');
-            if (index != -1) {
-                vmVersion = vmVersion.substring(0, index);
-                if (DEBUG) {
-                    System.out.println("looking for System property " + prefix + vmVersion);
-                }
-                jvmHome = System.getProperty(prefix + vmVersion);
-            }
-
-            if (jvmHome == null) {
-                // System property is not set
-                if (DEBUG) {
-                    System.out.println("can't locate JDK home for " + vmVersion);
-                }
-                return null;
-            }
-        }
-
-        if (DEBUG) {
-            System.out.println("JDK home for " + vmVersion + " is " + jvmHome);
-        }
-
-        // sa-jdi is in $JDK_HOME/lib directory
-        StringBuffer buf = new StringBuffer();
-        buf.append(jvmHome);
-        buf.append(File.separatorChar);
-        buf.append("lib");
-        buf.append(File.separatorChar);
-        buf.append("sa-jdi.jar");
-        return buf.toString();
-    }
-
-    /* This method loads VirtualMachineImpl class by a ClassLoader
-     * configured with sa-jdi.jar path of given 'vmVersion'. This is
-     * used for cross VM version debugging. Refer to comments in
-     * SAJDIClassLoader as well.
-     */
-    protected static Class loadVirtualMachineImplClass(String vmVersion)
-            throws ClassNotFoundException {
-        if (DEBUG) {
-            System.out.println("attemping to load sa-jdi.jar for version " + vmVersion);
-        }
-        String classPath = getSAClassPathForVM(vmVersion);
-        if (classPath != null) {
-            ClassLoader cl = new SAJDIClassLoader(myLoader, classPath);
-            return getVMImplClassFrom(cl);
-        } else {
-            return null;
-        }
-    }
-
-    /* Is the given throwable an instanceof VMVersionMismatchException?
-     * Note that we can't do instanceof check because the exception
-     * class might have been loaded by a different class loader.
-     */
-    private static boolean isVMVersionMismatch(Throwable throwable) {
-        String className = throwable.getClass().getName();
-        return className.equals("sun.jvm.hotspot.runtime.VMVersionMismatchException");
-    }
-
-    /* gets target VM version from the given VMVersionMismatchException.
-     * Note that we need to reflectively call the method because of we may
-     * have got this from different classloader's namespace */
-    private static String getVMVersion(Throwable throwable)
-        throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        // assert isVMVersionMismatch(throwable), "not a VMVersionMismatch"
-        Class expClass = throwable.getClass();
-        Method targetVersionMethod = expClass.getMethod("getTargetVersion", new Class[0]);
-        return (String) targetVersionMethod.invoke(throwable);
-    }
-
-    /** If the causal chain has a sun.jvm.hotspot.runtime.VMVersionMismatchException,
-        attempt to load VirtualMachineImpl class for target VM version. */
-    protected static Class handleVMVersionMismatch(InvocationTargetException ite) {
-        Throwable cause = ite.getCause();
-        if (DEBUG) {
-            System.out.println("checking for version mismatch...");
-        }
-        while (cause != null) {
-            try {
-                if (isVMVersionMismatch(cause)) {
-                    if (DEBUG) {
-                        System.out.println("Triggering cross VM version support...");
-                    }
-                    return loadVirtualMachineImplClass(getVMVersion(cause));
-                }
-            } catch (Exception exp) {
-                if (DEBUG) {
-                    System.out.println("failed to load VirtualMachineImpl class");
-                    exp.printStackTrace();
-                }
-                return null;
-            }
-            cause = cause.getCause();
-        }
-        return null;
-    }
-
-    protected void checkNativeLink(SecurityManager sm, String os) {
-        if (os.equals("SunOS") || os.equals("Linux") || os.contains("OS X")) {
-            // link "saproc" - SA native library on SunOS, Linux, and Mac OS X
-            sm.checkLink("saproc");
-        } else if (os.startsWith("Windows")) {
-            // link "sawindbg" - SA native library on Windows.
-            sm.checkLink("sawindbg");
-        } else {
-           throw new RuntimeException(os + " is not yet supported");
-        }
-    }
-
-    // we set an observer to detect VirtualMachineImpl.dispose call
-    // and on dispose we add corresponding VirtualMachineImpl.class to
-    // free VirtualMachimeImpl Class list.
-    protected static void setVMDisposeObserver(final Object vm) {
-        try {
-            Method setDisposeObserverMethod = vm.getClass().getDeclaredMethod("setDisposeObserver",
-                                                         new Class[] { java.util.Observer.class });
-            setDisposeObserverMethod.setAccessible(true);
-            setDisposeObserverMethod.invoke(vm,
-                                         new Object[] {
-                                             new Observer() {
-                                                 public void update(Observable o, Object data) {
-                                                     if (DEBUG) {
-                                                         System.out.println("got VM.dispose notification");
-                                                     }
-                                                     addFreeVMImplClass(vm.getClass());
-                                                 }
-                                             }
-                                         });
-        } catch (Exception exp) {
-            if (DEBUG) {
-               System.out.println("setVMDisposeObserver() got an exception:");
-               exp.printStackTrace();
-            }
-        }
-    }
-
-    public Map defaultArguments() {
-        Map defaults = new LinkedHashMap();
-        Collection values = defaultArguments.values();
-
-        Iterator iter = values.iterator();
-        while (iter.hasNext()) {
-            ArgumentImpl argument = (ArgumentImpl)iter.next();
-            defaults.put(argument.name(), argument.clone());
-        }
-        return defaults;
-    }
-
-    void addStringArgument(String name, String label, String description,
-                           String defaultValue, boolean mustSpecify) {
-        defaultArguments.put(name,
-                             new StringArgumentImpl(name, label,
-                                                    description,
-                                                    defaultValue,
-                                                    mustSpecify));
-    }
-
-    void addBooleanArgument(String name, String label, String description,
-                            boolean defaultValue, boolean mustSpecify) {
-        defaultArguments.put(name,
-                             new BooleanArgumentImpl(name, label,
-                                                     description,
-                                                     defaultValue,
-                                                     mustSpecify));
-    }
-
-    void addIntegerArgument(String name, String label, String description,
-                            String defaultValue, boolean mustSpecify,
-                            int min, int max) {
-        defaultArguments.put(name,
-                             new IntegerArgumentImpl(name, label,
-                                                     description,
-                                                     defaultValue,
-                                                     mustSpecify,
-                                                     min, max));
-    }
-
-    void addSelectedArgument(String name, String label, String description,
-                             String defaultValue, boolean mustSpecify,
-                             List list) {
-        defaultArguments.put(name,
-                             new SelectedArgumentImpl(name, label,
-                                                      description,
-                                                      defaultValue,
-                                                      mustSpecify, list));
-    }
-
-    ArgumentImpl argument(String name, Map arguments)
-                throws IllegalConnectorArgumentsException {
-
-        ArgumentImpl argument = (ArgumentImpl)arguments.get(name);
-        if (argument == null) {
-            throw new IllegalConnectorArgumentsException(
-                         "Argument missing", name);
-        }
-        String value = argument.value();
-        if (value == null || value.length() == 0) {
-            if (argument.mustSpecify()) {
-            throw new IllegalConnectorArgumentsException(
-                         "Argument unspecified", name);
-            }
-        } else if(!argument.isValid(value)) {
-            throw new IllegalConnectorArgumentsException(
-                         "Argument invalid", name);
-        }
-
-        return argument;
-    }
-
-    String getString(String key) {
-        //fixme jjh; needs i18n
-        // this is not public return ((VirtualMachineManagerImpl)manager).getString(key);
-        return key;
-    }
-
-    public String toString() {
-        String string = name() + " (defaults: ";
-        Iterator iter = defaultArguments().values().iterator();
-        boolean first = true;
-        while (iter.hasNext()) {
-            ArgumentImpl argument = (ArgumentImpl)iter.next();
-            if (!first) {
-                string += ", ";
-            }
-            string += argument.toString();
-            first = false;
-        }
-        return string  + ")";
-    }
-
-    abstract class ArgumentImpl implements Connector.Argument, Cloneable, Serializable {
-        private String name;
-        private String label;
-        private String description;
-        private String value;
-        private boolean mustSpecify;
-
-        ArgumentImpl(String name, String label, String description,
-                     String value,
-                     boolean mustSpecify) {
-            this.name = name;
-            this.label = label;
-            this.description = description;
-            this.value = value;
-            this.mustSpecify = mustSpecify;
-        }
-
-        public abstract boolean isValid(String value);
-
-        public String name() {
-            return name;
-        }
-
-        public String label() {
-            return label;
-        }
-
-        public String description() {
-            return description;
-        }
-
-        public String value() {
-            return value;
-        }
-
-        public void setValue(String value) {
-            if (value == null) {
-                throw new NullPointerException("Can't set null value");
-            }
-            this.value = value;
-        }
-
-        public boolean mustSpecify() {
-            return mustSpecify;
-        }
-
-        public boolean equals(Object obj) {
-            if ((obj != null) && (obj instanceof Connector.Argument)) {
-                Connector.Argument other = (Connector.Argument)obj;
-                return (name().equals(other.name())) &&
-                       (description().equals(other.description())) &&
-                       (mustSpecify() == other.mustSpecify()) &&
-                       (value().equals(other.value()));
-            } else {
-                return false;
-            }
-        }
-
-        public int hashCode() {
-            return description().hashCode();
-        }
-
-        public Object clone() {
-            try {
-                return super.clone();
-            } catch (CloneNotSupportedException e) {
-                // Object should always support clone
-                throw (InternalException) new InternalException().initCause(e);
-            }
-        }
-
-        public String toString() {
-            return name() + "=" + value();
-        }
-    }
-
-    class BooleanArgumentImpl extends ConnectorImpl.ArgumentImpl
-                              implements Connector.BooleanArgument {
-
-        BooleanArgumentImpl(String name, String label, String description,
-                            boolean value,
-                            boolean mustSpecify) {
-            super(name, label, description, null, mustSpecify);
-            if(trueString == null) {
-                trueString = getString("true");
-                falseString = getString("false");
-            }
-            setValue(value);
-        }
-
-        /**
-         * Sets the value of the argument.
-         */
-        public void setValue(boolean value) {
-            setValue(stringValueOf(value));
-        }
-
-        /**
-         * Performs basic sanity check of argument.
-         * @return <code>true</code> if value is a string
-         * representation of a boolean value.
-         * @see #stringValueOf(boolean)
-         */
-        public boolean isValid(String value) {
-            return value.equals(trueString) || value.equals(falseString);
-        }
-
-        /**
-         * Return the string representation of the <code>value</code>
-         * parameter.
-         * Does not set or examine the value or the argument.
-         * @return the localized String representation of the
-         * boolean value.
-         */
-        public String stringValueOf(boolean value) {
-            return value? trueString : falseString;
-        }
-
-        /**
-         * Return the value of the argument as a boolean.  Since
-         * the argument may not have been set or may have an invalid
-         * value {@link #isValid(String)} should be called on
-         * {@link #value()} to check its validity.  If it is invalid
-         * the boolean returned by this method is undefined.
-         * @return the value of the argument as a boolean.
-         */
-        public boolean booleanValue() {
-            return value().equals(trueString);
-        }
-    }
-
-    class IntegerArgumentImpl extends ConnectorImpl.ArgumentImpl
-                              implements Connector.IntegerArgument {
-
-        private final int min;
-        private final int max;
-
-        IntegerArgumentImpl(String name, String label, String description,
-                            String value,
-                            boolean mustSpecify, int min, int max) {
-            super(name, label, description, value, mustSpecify);
-            this.min = min;
-            this.max = max;
-        }
-
-        /**
-         * Sets the value of the argument.
-         * The value should be checked with {@link #isValid(int)}
-         * before setting it; invalid values will throw an exception
-         * when the connection is established - for example,
-         * on {@link LaunchingConnector#launch}
-         */
-        public void setValue(int value) {
-            setValue(stringValueOf(value));
-        }
-
-        /**
-         * Performs basic sanity check of argument.
-         * @return <code>true</code> if value represents an int that is
-         * <code>{@link #min()} &lt;= value &lt;= {@link #max()}</code>
-         */
-        public boolean isValid(String value) {
-            if (value == null) {
-                return false;
-            }
-            try {
-                return isValid(Integer.decode(value).intValue());
-            } catch(NumberFormatException exc) {
-                return false;
-            }
-        }
-
-        /**
-         * Performs basic sanity check of argument.
-         * @return <code>true</code> if
-         * <code>{@link #min()} &lt;= value  &lt;= {@link #max()}</code>
-         */
-        public boolean isValid(int value) {
-            return min <= value && value <= max;
-        }
-
-        /**
-         * Return the string representation of the <code>value</code>
-         * parameter.
-         * Does not set or examine the value or the argument.
-         * @return the String representation of the
-         * int value.
-         */
-        public String stringValueOf(int value) {
-            // *** Should this be internationalized????
-            // *** Even Brian Beck was unsure if an Arabic programmer
-            // *** would expect port numbers in Arabic numerals,
-            // *** so punt for now.
-            return ""+value;
-        }
-
-        /**
-         * Return the value of the argument as a int.  Since
-         * the argument may not have been set or may have an invalid
-         * value {@link #isValid(String)} should be called on
-         * {@link #value()} to check its validity.  If it is invalid
-         * the int returned by this method is undefined.
-         * @return the value of the argument as a int.
-         */
-        public int intValue() {
-            if (value() == null) {
-                return 0;
-            }
-            try {
-                return Integer.decode(value()).intValue();
-            } catch(NumberFormatException exc) {
-                return 0;
-            }
-        }
-
-        /**
-         * The upper bound for the value.
-         * @return the maximum allowed value for this argument.
-         */
-        public int max() {
-            return max;
-        }
-
-        /**
-         * The lower bound for the value.
-         * @return the minimum allowed value for this argument.
-         */
-        public int min() {
-            return min;
-        }
-    }
-
-    class StringArgumentImpl extends ConnectorImpl.ArgumentImpl
-                              implements Connector.StringArgument {
-
-        StringArgumentImpl(String name, String label, String description,
-                           String value,
-                           boolean mustSpecify) {
-            super(name, label, description, value, mustSpecify);
-        }
-
-        /**
-         * Performs basic sanity check of argument.
-         * @return <code>true</code> always
-         */
-        public boolean isValid(String value) {
-            return true;
-        }
-    }
-
-    class SelectedArgumentImpl extends ConnectorImpl.ArgumentImpl
-                              implements Connector.SelectedArgument {
-
-        private final List choices;
-
-        SelectedArgumentImpl(String name, String label, String description,
-                             String value,
-                             boolean mustSpecify, List choices) {
-            super(name, label, description, value, mustSpecify);
-            this.choices = Collections.unmodifiableList(
-                                           new ArrayList(choices));
-        }
-
-        /**
-         * Return the possible values for the argument
-         * @return {@link List} of {@link String}
-         */
-        public List choices() {
-            return choices;
-        }
-
-        /**
-         * Performs basic sanity check of argument.
-         * @return <code>true</code> if value is one of {@link #choices()}.
-         */
-        public boolean isValid(String value) {
-            return choices.contains(value);
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/DoubleTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class DoubleTypeImpl extends PrimitiveTypeImpl implements DoubleType {
-    DoubleTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "D";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedDoubleValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/DoubleValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class DoubleValueImpl extends PrimitiveValueImpl
-                             implements DoubleValue {
-    private double value;
-
-    DoubleValueImpl(VirtualMachine aVm,double aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof DoubleValue)) {
-            return (value == ((DoubleValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int compareTo(DoubleValue doubleVal) {
-        double other = doubleVal.value();
-        if (value() < other) {
-            return -1;
-        } else if (value() == other) {
-            return 0;
-        } else {
-            return 1;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public Type type() {
-        return vm.theDoubleType();
-    }
-
-    public double value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0.0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    short checkedShortValue() throws InvalidTypeException {
-        if ((value > Short.MAX_VALUE) || (value < Short.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to short");
-        } else {
-            return super.checkedShortValue();
-        }
-    }
-
-    int checkedIntValue() throws InvalidTypeException {
-        if ((value > Integer.MAX_VALUE) || (value < Integer.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to int");
-        } else {
-            return super.checkedIntValue();
-        }
-    }
-
-    long checkedLongValue() throws InvalidTypeException {
-        long longValue = (long)value;
-        if (longValue != value) {
-            throw new InvalidTypeException("Can't convert " + value + " to long");
-        } else {
-            return super.checkedLongValue();
-        }
-    }
-
-    float checkedFloatValue() throws InvalidTypeException {
-        float floatValue = (float)value;
-        if (floatValue != value) {
-            throw new InvalidTypeException("Can't convert " + value + " to float");
-        } else {
-            return super.checkedFloatValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FieldImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Array;
-import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.FieldIdentifier;
-
-import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
-import java.util.Comparator;
-
-public class FieldImpl extends TypeComponentImpl implements Field {
-    private JNITypeParser signatureParser;
-    private sun.jvm.hotspot.oops.Field saField;
-
-    FieldImpl( VirtualMachine vm, ReferenceTypeImpl declaringType,
-               sun.jvm.hotspot.oops.Field saField) {
-        super(vm, declaringType);
-        this.saField = saField;
-        getParser();
-    }
-
-    private void getParser() {
-        if (signatureParser == null) {
-            Symbol sig1 = saField.getSignature();
-            signature = sig1.asString();
-            signatureParser = new JNITypeParser(signature);
-        }
-    }
-
-    sun.jvm.hotspot.oops.Field ref() {
-        return saField;
-    }
-
-    // get the value of static field
-    ValueImpl getValue() {
-        return getValue(saField.getFieldHolder().getJavaMirror());
-    }
-
-    // get the value of this Field from a specific Oop
-    ValueImpl getValue(Oop target) {
-        ValueImpl valueImpl;
-        sun.jvm.hotspot.oops.Field saField = (sun.jvm.hotspot.oops.Field) ref();
-        sun.jvm.hotspot.oops.FieldType ft = saField.getFieldType();
-        if (ft.isArray()) {
-            sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
-            valueImpl = (ArrayReferenceImpl) vm.arrayMirror((Array)of.getValue(target));
-        } else if (ft.isObject()) {
-            sun.jvm.hotspot.oops.OopField of = (sun.jvm.hotspot.oops.OopField)saField;
-            valueImpl = (ObjectReferenceImpl) vm.objectMirror(of.getValue(target));
-        } else if (ft.isByte()) {
-            sun.jvm.hotspot.oops.ByteField bf = (sun.jvm.hotspot.oops.ByteField)saField;
-            valueImpl = (ByteValueImpl) vm.mirrorOf(bf.getValue(target));
-        } else if (ft.isChar()) {
-            sun.jvm.hotspot.oops.CharField cf = (sun.jvm.hotspot.oops.CharField)saField;
-            valueImpl = (CharValueImpl) vm.mirrorOf(cf.getValue(target));
-        } else if (ft.isDouble()) {
-            sun.jvm.hotspot.oops.DoubleField df = (sun.jvm.hotspot.oops.DoubleField)saField;
-            valueImpl = (DoubleValueImpl) vm.mirrorOf(df.getValue(target));
-        } else if (ft.isFloat()) {
-            sun.jvm.hotspot.oops.FloatField ff = (sun.jvm.hotspot.oops.FloatField)saField;
-            valueImpl = (FloatValueImpl) vm.mirrorOf(ff.getValue(target));
-        } else if (ft.isInt()) {
-            sun.jvm.hotspot.oops.IntField iif = (sun.jvm.hotspot.oops.IntField)saField;
-            valueImpl = (IntegerValueImpl) vm.mirrorOf(iif.getValue(target));
-        } else if (ft.isLong()) {
-            sun.jvm.hotspot.oops.LongField lf = (sun.jvm.hotspot.oops.LongField)saField;
-            valueImpl = (LongValueImpl) vm.mirrorOf(lf.getValue(target));
-        } else if (ft.isShort()) {
-            sun.jvm.hotspot.oops.ShortField sf = (sun.jvm.hotspot.oops.ShortField)saField;
-            valueImpl = (ShortValueImpl) vm.mirrorOf(sf.getValue(target));
-        } else if (ft.isBoolean()) {
-            sun.jvm.hotspot.oops.BooleanField bf = (sun.jvm.hotspot.oops.BooleanField)saField;
-            valueImpl = (BooleanValueImpl) vm.mirrorOf(bf.getValue(target));
-        } else {
-            throw new RuntimeException("Should not reach here");
-        }
-        return valueImpl;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof FieldImpl)) {
-            FieldImpl other = (FieldImpl)obj;
-            return (declaringType().equals(other.declaringType())) &&
-                (ref().equals(other.ref())) &&
-                super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public boolean isTransient() {
-        return saField.isTransient();
-    }
-
-    public boolean isVolatile() {
-        return saField.isVolatile();
-    }
-
-    public boolean isEnumConstant() {
-        return saField.isEnumConstant();
-    }
-
-    public Type type() throws ClassNotLoadedException {
-        // So, we do it just like JDI does by searching the enclosing type.
-        return findType(signature());
-    }
-
-    public String typeName() { //fixme jjh: jpda version creates redundant JNITypeParsers
-        getParser();
-        return signatureParser.typeName();
-    }
-
-    public String genericSignature() {
-        Symbol genSig = saField.getGenericSignature();
-        return (genSig != null)? genSig.asString() : null;
-    }
-
-    // From interface Comparable
-    public int compareTo(Field field) {
-        ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
-        int rc = declaringType.compareTo(field.declaringType());
-        if (rc == 0) {
-            rc = declaringType.indexOf(this) -
-                declaringType.indexOf(field);
-        }
-        return rc;
-    }
-
-    // from interface Mirror
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-
-        buf.append(declaringType().name());
-        buf.append('.');
-        buf.append(name());
-        return buf.toString();
-    }
-
-    public String name() {
-        FieldIdentifier myName =  saField.getID();
-        return myName.getName();
-    }
-
-    // From interface Accessible
-    public int modifiers() {
-        return saField.getAccessFlagsObj().getStandardFlags();
-    }
-
-    public boolean isPackagePrivate() {
-        return saField.isPackagePrivate();
-    }
-
-    public boolean isPrivate() {
-        return saField.isPrivate();
-    }
-
-    public boolean isProtected() {
-        return saField.isProtected();
-    }
-
-    public boolean isPublic() {
-        return saField.isPublic();
-    }
-
-    public boolean isStatic() {
-        return saField.isStatic();
-    }
-
-    public boolean isFinal() {
-        return saField.isFinal();
-    }
-
-    public boolean isSynthetic() {
-        return saField.isSynthetic();
-    }
-
-    public int hashCode() {
-        return saField.hashCode();
-    }
-
-
-    private Type findType(String signature) throws ClassNotLoadedException {
-        ReferenceTypeImpl enclosing = (ReferenceTypeImpl)declaringType();
-        return enclosing.findType(signature);
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FloatTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class FloatTypeImpl extends PrimitiveTypeImpl implements FloatType {
-    FloatTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "F";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedFloatValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/FloatValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class FloatValueImpl extends PrimitiveValueImpl
-                            implements FloatValue {
-    private float value;
-
-    FloatValueImpl(VirtualMachine aVm,float aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof FloatValue)) {
-            return (value == ((FloatValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(FloatValue floatVal) {
-        float other = floatVal.value();
-        if (value() < other) {
-            return -1;
-        } else if (value() == other) {
-            return 0;
-        } else {
-            return 1;
-        }
-    }
-
-    public Type type() {
-        return vm.theFloatType();
-    }
-
-    public float value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0.0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    short checkedShortValue() throws InvalidTypeException {
-        if ((value > Short.MAX_VALUE) || (value < Short.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to short");
-        } else {
-            return super.checkedShortValue();
-        }
-    }
-
-    int checkedIntValue() throws InvalidTypeException {
-        int intValue = (int)value;
-        if (intValue != value) {
-            throw new InvalidTypeException("Can't convert " + value + " to int");
-        } else {
-            return super.checkedIntValue();
-        }
-    }
-
-    long checkedLongValue() throws InvalidTypeException {
-        long longValue = (long)value;
-        if (longValue != value) {
-            throw new InvalidTypeException("Can't convert " + value + " to long");
-        } else {
-            return super.checkedLongValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/IntegerTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class IntegerTypeImpl extends PrimitiveTypeImpl implements IntegerType {
-    IntegerTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-    public String signature() {
-        return "I";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedIntValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/IntegerValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class IntegerValueImpl extends PrimitiveValueImpl
-                              implements IntegerValue {
-    private int value;
-
-    IntegerValueImpl(VirtualMachine aVm,int aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof IntegerValue)) {
-            return (value == ((IntegerValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(IntegerValue integerVal) {
-        return value() - integerVal.value();
-    }
-
-    public Type type() {
-        return vm.theIntegerType();
-    }
-
-    public int value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    short checkedShortValue() throws InvalidTypeException {
-        if ((value > Short.MAX_VALUE) || (value < Short.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to short");
-        } else {
-            return super.checkedShortValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/InterfaceTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import sun.jvm.hotspot.oops.InstanceKlass;
-
-import com.sun.jdi.ClassNotPreparedException;
-import com.sun.jdi.ClassType;
-import com.sun.jdi.InterfaceType;
-import com.sun.jdi.Method;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.VirtualMachine;
-
-public class InterfaceTypeImpl extends ReferenceTypeImpl
-                               implements InterfaceType {
-    private SoftReference superInterfacesCache = null;
-    private SoftReference subInterfacesCache = null;
-    private SoftReference implementorsCache = null;
-
-    protected InterfaceTypeImpl(VirtualMachine aVm, InstanceKlass aRef) {
-        super(aVm, aRef);
-    }
-
-    public List superinterfaces() throws ClassNotPreparedException {
-        List superinterfaces = (superInterfacesCache != null)? (List) superInterfacesCache.get() : null;
-        if (superinterfaces == null) {
-            checkPrepared();
-            superinterfaces = Collections.unmodifiableList(getInterfaces());
-            superInterfacesCache = new SoftReference(superinterfaces);
-        }
-        return superinterfaces;
-    }
-
-    public List subinterfaces() {
-        List subinterfaces = (subInterfacesCache != null)? (List) subInterfacesCache.get() : null;
-        if (subinterfaces == null) {
-            List all = vm.allClasses();
-            subinterfaces = new ArrayList();
-            Iterator iter = all.iterator();
-            while (iter.hasNext()) {
-                ReferenceType refType = (ReferenceType)iter.next();
-                if (refType instanceof InterfaceType) {
-                    InterfaceType interfaze = (InterfaceType)refType;
-                    if (interfaze.isPrepared() && interfaze.superinterfaces().contains(this)) {
-                        subinterfaces.add(interfaze);
-                    }
-               }
-            }
-            subinterfaces = Collections.unmodifiableList(subinterfaces);
-            subInterfacesCache = new SoftReference(subinterfaces);
-        }
-        return subinterfaces;
-    }
-
-    public List implementors() {
-        List implementors = (implementorsCache != null)? (List) implementorsCache.get() : null;
-        if (implementors == null) {
-            List all = vm.allClasses();
-            implementors = new ArrayList();
-            Iterator iter = all.iterator();
-            while (iter.hasNext()) {
-                ReferenceType refType = (ReferenceType)iter.next();
-                if (refType instanceof ClassType) {
-                    ClassType clazz = (ClassType)refType;
-                    if (clazz.isPrepared() && clazz.interfaces().contains(this)) {
-                        implementors.add(clazz);
-                    }
-                }
-            }
-            implementors = Collections.unmodifiableList(implementors);
-            implementorsCache = new SoftReference(implementors);
-        }
-        return implementors;
-    }
-
-    @Override
-    void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces) {
-        /*
-         * Add methods from
-         * parent types first, so that the methods in this class will
-         * overwrite them in the hash table
-         */
-        Iterator<InterfaceType> iter = superinterfaces().iterator();
-        while (iter.hasNext()) {
-            InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-            if (!seenInterfaces.contains(interfaze)) {
-                interfaze.addVisibleMethods(methodMap, seenInterfaces);
-                seenInterfaces.add(interfaze);
-            }
-        }
-
-        addToMethodMap(methodMap, methods());
-    }
-
-    List getAllMethods() {
-        ArrayList list = new ArrayList(methods());
-        /*
-         * It's more efficient if don't do this
-         * recursively.
-         */
-        List interfaces = allSuperinterfaces();
-        Iterator iter = interfaces.iterator();
-        while (iter.hasNext()) {
-            InterfaceType interfaze = (InterfaceType)iter.next();
-            list.addAll(interfaze.methods());
-        }
-
-        return list;
-    }
-
-    List allSuperinterfaces() {
-        ArrayList list = new ArrayList();
-        addSuperinterfaces(list);
-        return list;
-    }
-
-    void addSuperinterfaces(List list) {
-        /*
-         * This code is a little strange because it
-         * builds the list with a more suitable order than the
-         * depth-first approach a normal recursive solution would
-         * take. Instead, all direct superinterfaces precede all
-         * indirect ones.
-         */
-
-        /*
-         * Get a list of direct superinterfaces that's not already in the
-         * list being built.
-         */
-        List immediate = new ArrayList(superinterfaces());
-        Iterator iter = immediate.iterator();
-        while (iter.hasNext()) {
-            InterfaceType interfaze = (InterfaceType)iter.next();
-            if (list.contains(interfaze)) {
-                iter.remove();
-            }
-        }
-
-        /*
-         * Add all new direct superinterfaces
-         */
-        list.addAll(immediate);
-
-        /*
-         * Recurse for all new direct superinterfaces.
-         */
-        iter = immediate.iterator();
-        while (iter.hasNext()) {
-            InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-            interfaze.addSuperinterfaces(list);
-        }
-    }
-
-    boolean isAssignableTo(ReferenceType type) {
-
-        // Exact match?
-        if (this.equals(type)) {
-            return true;
-        } else {
-            // Try superinterfaces.
-            List supers = superinterfaces();
-            Iterator iter = supers.iterator();
-            while (iter.hasNext()) {
-                InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next();
-                if (interfaze.isAssignableTo(type)) {
-                    return true;
-                }
-            }
-
-            return false;
-        }
-    }
-
-    List inheritedTypes() {
-        return superinterfaces();
-    }
-
-    public boolean isInitialized() {
-        return isPrepared();
-    }
-
-    public String toString() {
-       return "interface " + name() + " (" + loaderString() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/JNITypeParser.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import java.util.List;
-import java.util.ArrayList;
-
-public class JNITypeParser {
-
-    static final char SIGNATURE_ENDCLASS = ';';
-    static final char SIGNATURE_FUNC = '(';
-    static final char SIGNATURE_ENDFUNC = ')';
-
-    private String signature;
-    private List typeNameList;
-    private List signatureList;
-    private int currentIndex;
-
-    JNITypeParser(String signature) {
-        this.signature = signature;
-    }
-
-    static String typeNameToSignature(String signature) {
-        StringBuffer buffer = new StringBuffer();
-        int firstIndex = signature.indexOf('[');
-        int index = firstIndex;
-        while (index != -1) {
-            buffer.append('[');
-            index = signature.indexOf('[', index + 1);
-        }
-
-        if (firstIndex != -1) {
-            signature = signature.substring(0, firstIndex);
-        }
-
-        if (signature.equals("boolean")) {
-            buffer.append('Z');
-        } else if (signature.equals("byte")) {
-            buffer.append('B');
-        } else if (signature.equals("char")) {
-            buffer.append('C');
-        } else if (signature.equals("short")) {
-            buffer.append('S');
-        } else if (signature.equals("int")) {
-            buffer.append('I');
-        } else if (signature.equals("long")) {
-            buffer.append('J');
-        } else if (signature.equals("float")) {
-            buffer.append('F');
-        } else if (signature.equals("double")) {
-            buffer.append('D');
-        } else {
-            buffer.append('L');
-            buffer.append(signature.replace('.', '/'));
-            buffer.append(';');
-        }
-
-        return buffer.toString();
-    }
-
-    String typeName() {
-        return (String)typeNameList().get(typeNameList().size()-1);
-    }
-
-    List argumentTypeNames() {
-        return typeNameList().subList(0, typeNameList().size() - 1);
-    }
-
-    String signature() {
-        return (String)signatureList().get(signatureList().size()-1);
-    }
-
-    List argumentSignatures() {
-        return signatureList().subList(0, signatureList().size() - 1);
-    }
-
-    int dimensionCount() {
-        int count = 0;
-        String signature = signature();
-        while (signature.charAt(count) == '[') {
-            count++;
-        }
-        return count;
-    }
-
-    String componentSignature(int level) {
-        return signature().substring(level);
-    }
-
-    private synchronized List signatureList() {
-        if (signatureList == null) {
-            signatureList = new ArrayList(10);
-            String elem;
-
-            currentIndex = 0;
-
-            while(currentIndex < signature.length()) {
-                elem = nextSignature();
-                signatureList.add(elem);
-            }
-            if (signatureList.size() == 0) {
-                throw new IllegalArgumentException("Invalid JNI signature '" +
-                                                   signature + "'");
-            }
-        }
-        return signatureList;
-    }
-
-    private synchronized List typeNameList() {
-        if (typeNameList == null) {
-            typeNameList = new ArrayList(10);
-            String elem;
-
-            currentIndex = 0;
-
-            while(currentIndex < signature.length()) {
-                elem = nextTypeName();
-                typeNameList.add(elem);
-            }
-            if (typeNameList.size() == 0) {
-                throw new IllegalArgumentException("Invalid JNI signature '" +
-                                                   signature + "'");
-            }
-        }
-        return typeNameList;
-    }
-
-    private String nextSignature() {
-        char key = signature.charAt(currentIndex++);
-
-        switch(key) {
-            case '[':
-                return  key + nextSignature();
-
-            case 'L':
-                int endClass = signature.indexOf(SIGNATURE_ENDCLASS,
-                                                 currentIndex);
-                String retVal = signature.substring(currentIndex - 1,
-                                                    endClass + 1);
-                currentIndex = endClass + 1;
-                return retVal;
-
-            case 'V':
-            case 'Z':
-            case 'B':
-            case 'C':
-            case 'S':
-            case 'I':
-            case 'J':
-            case 'F':
-            case 'D':
-                return String.valueOf(key);
-
-            case SIGNATURE_FUNC:
-            case SIGNATURE_ENDFUNC:
-                return nextSignature();
-
-            default:
-                throw new IllegalArgumentException(
-                    "Invalid JNI signature character '" + key + "'");
-
-        }
-    }
-
-    private String nextTypeName() {
-        char key = signature.charAt(currentIndex++);
-
-        switch(key) {
-            case '[':
-                return  nextTypeName() + "[]";
-
-            case 'B':
-                return "byte";
-
-            case 'C':
-                return "char";
-
-            case 'L':
-                int endClass = signature.indexOf(SIGNATURE_ENDCLASS,
-                                                 currentIndex);
-                String retVal = signature.substring(currentIndex,
-                                                    endClass);
-                retVal = retVal.replace('/','.');
-                currentIndex = endClass + 1;
-                return retVal;
-
-            case 'F':
-                return "float";
-
-            case 'D':
-                return "double";
-
-            case 'I':
-                return "int";
-
-            case 'J':
-                return "long";
-
-            case 'S':
-                return "short";
-
-            case 'V':
-                return "void";
-
-            case 'Z':
-                return "boolean";
-
-            case SIGNATURE_ENDFUNC:
-            case SIGNATURE_FUNC:
-                return nextTypeName();
-
-            default:
-                throw new IllegalArgumentException(
-                    "Invalid JNI signature character '" + key + "'");
-
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2004, 2013, 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 sun.jvm.hotspot.jdi;
-
-// from JVMTI specification - refer to jvmti.xml
-public interface JVMTIThreadState {
-    public static final int JVMTI_THREAD_STATE_ALIVE = 0x0001;
-    public static final int JVMTI_THREAD_STATE_TERMINATED = 0x0002;
-    public static final int JVMTI_THREAD_STATE_RUNNABLE = 0x0004;
-    public static final int JVMTI_THREAD_STATE_WAITING = 0x0080;
-    public static final int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010;
-    public static final int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020;
-    public static final int JVMTI_THREAD_STATE_SLEEPING = 0x0040;
-    public static final int JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100;
-    public static final int JVMTI_THREAD_STATE_PARKED = 0x0200;
-    public static final int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400;
-    public static final int JVMTI_THREAD_STATE_SUSPENDED = 0x100000;
-    public static final int JVMTI_THREAD_STATE_INTERRUPTED = 0x200000;
-    public static final int JVMTI_THREAD_STATE_IN_NATIVE = 0x400000;
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LineInfo.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-interface LineInfo {
-
-    String liStratum();
-
-    int liLineNumber();
-
-    String liSourceName() throws AbsentInformationException;
-
-    String liSourcePath() throws AbsentInformationException;
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LocalVariableImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-import com.sun.jdi.*;
-
-public class LocalVariableImpl extends MirrorImpl
-                               implements LocalVariable, ValueContainer
-{
-    private final Method method;
-    private final int slot;
-    private final Location scopeStart;
-    private final Location scopeEnd;
-    private final String name;
-    private final String signature;
-    private final String genericSignature;
-
-    LocalVariableImpl(VirtualMachine vm, Method method,
-                      int slot, Location scopeStart, Location scopeEnd,
-                      String name, String signature, String genericSignature) {
-        super(vm);
-        this.method = method;
-        this.slot = slot;
-        this.scopeStart = scopeStart;
-        this.scopeEnd = scopeEnd;
-        this.name = name;
-        this.signature = signature;
-        this.genericSignature = genericSignature;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof LocalVariableImpl)) {
-            LocalVariableImpl other = (LocalVariableImpl)obj;
-            return (method.equals(other.method) &&
-                    slot() == other.slot() &&
-                    super.equals(obj));
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return (int)method.hashCode() + slot();
-    }
-
-    public int compareTo(LocalVariable localVar) {
-        LocalVariableImpl other = (LocalVariableImpl) localVar;
-        int rc = method.compareTo(other.method);
-        if (rc == 0) {
-            rc = slot() - other.slot();
-        }
-        return rc;
-    }
-
-    public String name() {
-        return name;
-    }
-
-    /**
-     * @return a text representation of the declared type
-     * of this variable.
-     */
-    public String typeName() {
-        JNITypeParser parser = new JNITypeParser(signature);
-        return parser.typeName();
-    }
-
-    public Type type() throws ClassNotLoadedException {
-        return findType(signature());
-    }
-
-    public Type findType(String signature) throws ClassNotLoadedException {
-        ReferenceTypeImpl enclosing = (ReferenceTypeImpl)method.declaringType();
-        return enclosing.findType(signature);
-    }
-
-    public String signature() {
-        return signature;
-    }
-
-    public String genericSignature() {
-        return genericSignature;
-    }
-
-    public boolean isVisible(StackFrame frame) {
-        //validateMirror(frame);
-        Method frameMethod = frame.location().method();
-
-        if (!frameMethod.equals(method)) {
-            throw new IllegalArgumentException(
-                       "frame method different than variable's method");
-        }
-
-        // this is here to cover the possibility that we will
-        // allow LocalVariables for native methods.  If we do
-        // so we will have to re-examinine this.
-        if (frameMethod.isNative()) {
-            return false;
-        }
-
-        return ((scopeStart.compareTo(frame.location()) <= 0)
-             && (scopeEnd.compareTo(frame.location()) >= 0));
-    }
-
-    public boolean isArgument() {
-        try {
-            MethodImpl method = (MethodImpl)scopeStart.method();
-            return (slot < method.argSlotCount());
-        } catch (AbsentInformationException e) {
-            // If this variable object exists, there shouldn't be absent info
-            throw (InternalException) new InternalException().initCause(e);
-        }
-    }
-
-    int slot() {
-        return slot;
-    }
-
-    /*
-     * Compilers/VMs can have byte code ranges for variables of the
-     * same names that overlap. This is because the byte code ranges
-     * aren't necessarily scopes; they may have more to do with the
-     * lifetime of the variable's slot, depending on implementation.
-     *
-     * This method determines whether this variable hides an
-     * identically named variable; ie, their byte code ranges overlap
-     * this one starts after the given one. If it returns true this
-     * variable should be preferred when looking for a single variable
-     * with its name when both variables are visible.
-     */
-    boolean hides(LocalVariable other) {
-        LocalVariableImpl otherImpl = (LocalVariableImpl)other;
-        if (!method.equals(otherImpl.method) ||
-            !name.equals(otherImpl.name)) {
-            return false;
-        } else {
-            return (scopeStart.compareTo(otherImpl.scopeStart) > 0);
-        }
-    }
-
-    public String toString() {
-       return name() + " in " + method.toString() +
-              "@" + scopeStart.toString();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LocationImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-import java.util.*;
-
-public class LocationImpl extends MirrorImpl implements Location {
-    private final ReferenceTypeImpl declaringType;
-    private Method method;
-    private sun.jvm.hotspot.oops.Method methodRef;
-    private long codeIndex;
-    private LineInfo baseLineInfo = null;
-    private LineInfo otherLineInfo = null;
-
-    LocationImpl(VirtualMachine vm,
-                 Method method, long codeIndex) {
-        super(vm);
-
-        this.method = method;
-        this.codeIndex = method.isNative()? -1 : codeIndex;
-        this.declaringType = (ReferenceTypeImpl)method.declaringType();
-    }
-
-    /*
-     * This constructor allows lazy creation of the method mirror. This
-     * can be a performance savings if the method mirror does not yet
-     * exist.
-     */
-    LocationImpl(VirtualMachine vm, ReferenceType declaringType,
-                 sun.jvm.hotspot.oops.Method methodRef, long codeIndex) {
-        super(vm);
-
-        this.method = null;
-        this.codeIndex = codeIndex;
-        this.declaringType = (ReferenceTypeImpl)declaringType;
-        this.methodRef = methodRef;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof Location)) {
-            Location other = (Location)obj;
-            return (method().equals(other.method())) &&
-                   (codeIndex() == other.codeIndex()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: better hash code?
-         */
-        return method().hashCode() + (int)codeIndex();
-    }
-
-    public int compareTo(Location other) {
-        int rc = method().compareTo(other.method());
-        if (rc == 0) {
-            long diff = codeIndex() - other.codeIndex();
-            if (diff < 0)
-                return -1;
-            else if (diff > 0)
-                return 1;
-            else
-                return 0;
-        }
-        return rc;
-    }
-
-    public ReferenceType declaringType() {
-        return declaringType;
-    }
-
-    public Method method() {
-        if (method == null) {
-            method = declaringType.getMethodMirror(methodRef);
-            if (method.isNative()) {
-                codeIndex = -1;
-            }
-        }
-        return method;
-    }
-
-    public long codeIndex() {
-        method();  // be sure information is up-to-date
-        return codeIndex;
-    }
-
-    LineInfo getBaseLineInfo(SDE.Stratum stratum) {
-        LineInfo lineInfo;
-
-        /* check if there is cached info to use */
-        if (baseLineInfo != null) {
-            return baseLineInfo;
-        }
-
-        /* compute the line info */
-        MethodImpl methodImpl = (MethodImpl)method();
-         lineInfo = methodImpl.codeIndexToLineInfo(stratum,
-                                                   codeIndex());
-
-        /* cache it */
-        addBaseLineInfo(lineInfo);
-
-        return lineInfo;
-    }
-
-    LineInfo getLineInfo(SDE.Stratum stratum) {
-        LineInfo lineInfo;
-
-        /* base stratum is done slighly differently */
-        if (stratum.isJava()) {
-            return getBaseLineInfo(stratum);
-        }
-
-        /* check if there is cached info to use */
-        lineInfo = otherLineInfo; // copy because of concurrency
-        if (lineInfo != null &&
-                           stratum.id().equals(lineInfo.liStratum())) {
-            return lineInfo;
-        }
-        int baseLineNumber = lineNumber(SDE.BASE_STRATUM_NAME);
-        SDE.LineStratum lineStratum =
-                  stratum.lineStratum(declaringType, baseLineNumber);
-
-        if (lineStratum != null && lineStratum.lineNumber() != -1) {
-            lineInfo = new StratumLineInfo(stratum.id(),
-                                           lineStratum.lineNumber(),
-                                           lineStratum.sourceName(),
-                                           lineStratum.sourcePath());
-        } else {
-            /* find best match */
-            MethodImpl methodImpl = (MethodImpl)method();
-            lineInfo = methodImpl.codeIndexToLineInfo(stratum,
-                                                      codeIndex());
-        }
-
-        /* cache it */
-        addStratumLineInfo(lineInfo);
-
-        return lineInfo;
-    }
-
-    void addStratumLineInfo(LineInfo lineInfo) {
-        otherLineInfo = lineInfo;
-    }
-
-    void addBaseLineInfo(LineInfo lineInfo) {
-        baseLineInfo = lineInfo;
-    }
-
-    public String sourceName() throws AbsentInformationException {
-        return sourceName(vm.getDefaultStratum());
-    }
-
-    public String sourceName(String stratumID)
-                               throws AbsentInformationException {
-        return sourceName(declaringType.stratum(stratumID));
-    }
-
-    String sourceName(SDE.Stratum stratum)
-                               throws AbsentInformationException {
-        return getLineInfo(stratum).liSourceName();
-    }
-
-    public String sourcePath() throws AbsentInformationException {
-        return sourcePath(vm.getDefaultStratum());
-    }
-
-    public String sourcePath(String stratumID)
-                               throws AbsentInformationException {
-        return sourcePath(declaringType.stratum(stratumID));
-    }
-
-    String sourcePath(SDE.Stratum stratum)
-                               throws AbsentInformationException {
-        return getLineInfo(stratum).liSourcePath();
-    }
-
-    public int lineNumber() {
-        return lineNumber(vm.getDefaultStratum());
-    }
-
-    public int lineNumber(String stratumID) {
-        return lineNumber(declaringType.stratum(stratumID));
-    }
-
-    int lineNumber(SDE.Stratum stratum) {
-        return getLineInfo(stratum).liLineNumber();
-    }
-
-    public String toString() {
-        if (lineNumber() == -1) {
-            return method().toString() + "+" + codeIndex();
-        } else {
-            return declaringType().name() + ":" + lineNumber();
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LongTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class LongTypeImpl extends PrimitiveTypeImpl implements LongType {
-    LongTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "J";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedLongValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/LongValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class LongValueImpl extends PrimitiveValueImpl
-                           implements LongValue {
-    private long value;
-
-    LongValueImpl(VirtualMachine aVm,long aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof LongValue)) {
-            return (value == ((LongValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(LongValue longVal) {
-        long other = longVal.value();
-        if (value() < other) {
-            return -1;
-        } else if (value() == other) {
-            return 0;
-        } else {
-            return 1;
-        }
-    }
-
-    public Type type() {
-        return vm.theLongType();
-    }
-
-    public long value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    short checkedShortValue() throws InvalidTypeException {
-        if ((value > Short.MAX_VALUE) || (value < Short.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to short");
-        } else {
-            return super.checkedShortValue();
-        }
-    }
-
-    int checkedIntValue() throws InvalidTypeException {
-        if ((value > Integer.MAX_VALUE) || (value < Integer.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to int");
-        } else {
-            return super.checkedIntValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MethodImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.LocalVariableTableElement;
-import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.lang.ref.SoftReference;
-import java.util.Collections;
-
-public abstract class MethodImpl extends TypeComponentImpl implements Method {
-    private JNITypeParser signatureParser;
-    protected sun.jvm.hotspot.oops.Method saMethod;
-
-    abstract int argSlotCount() throws AbsentInformationException;
-    abstract List allLineLocations(SDE.Stratum stratum,
-                                   String sourceName)
-                           throws AbsentInformationException;
-    abstract List locationsOfLine(SDE.Stratum stratum,
-                                  String sourceName,
-                                  int lineNumber)
-                           throws AbsentInformationException;
-
-    static MethodImpl createMethodImpl(VirtualMachine vm, ReferenceTypeImpl declaringType,
-                                       sun.jvm.hotspot.oops.Method saMethod) {
-        // Someday might have to add concrete and non-concrete subclasses.
-        if (saMethod.isNative() || saMethod.isAbstract()) {
-            return new NonConcreteMethodImpl(vm, declaringType, saMethod);
-        } else {
-            return new ConcreteMethodImpl(vm, declaringType, saMethod);
-        }
-    }
-
-    MethodImpl(VirtualMachine vm, ReferenceTypeImpl declaringType,
-               sun.jvm.hotspot.oops.Method saMethod ) {
-        super(vm, declaringType);
-        this.saMethod = saMethod;
-        getParser();
-    }
-
-    private JNITypeParser getParser() {
-        if (signatureParser == null) {
-            Symbol sig1 = saMethod.getSignature();
-            signature = sig1.asString();
-            signatureParser = new JNITypeParser(signature);
-        }
-        return signatureParser;
-    }
-
-    // Object ref() {
-    sun.jvm.hotspot.oops.Method ref() {
-        return saMethod;
-    }
-
-    public String genericSignature() {
-        Symbol genSig = saMethod.getGenericSignature();
-        return (genSig != null)? genSig.asString() : null;
-    }
-
-    public String returnTypeName() {
-        return getParser().typeName();
-    }
-
-    public Type returnType() throws ClassNotLoadedException {
-        return findType(getParser().signature());
-    }
-
-    private Type findType(String signature) throws ClassNotLoadedException {
-        ReferenceTypeImpl enclosing = (ReferenceTypeImpl)declaringType();
-        return enclosing.findType(signature);
-    }
-
-    public List argumentTypeNames() {
-        return getParser().argumentTypeNames();
-    }
-
-    List argumentSignatures() {
-        return getParser().argumentSignatures();
-    }
-
-    Type argumentType(int index) throws ClassNotLoadedException {
-        ReferenceTypeImpl enclosing = (ReferenceTypeImpl)declaringType();
-        String signature = (String)argumentSignatures().get(index);
-        return enclosing.findType(signature);
-    }
-
-    public List argumentTypes() throws ClassNotLoadedException {
-        int size = argumentSignatures().size();
-        ArrayList types = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-            Type type = argumentType(i);
-            types.add(type);
-        }
-        return types;
-    }
-
-    public boolean isAbstract() {
-        return saMethod.isAbstract();
-    }
-
-    public boolean isBridge() {
-        return saMethod.isBridge();
-    }
-
-    public boolean isSynchronized() {
-        return saMethod.isSynchronized();
-    }
-
-    public boolean isNative() {
-        return saMethod.isNative();
-    }
-
-    public boolean isVarArgs() {
-        return saMethod.isVarArgs();
-    }
-
-    public boolean isConstructor() {
-        return saMethod.isConstructor();
-    }
-
-    public boolean isStaticInitializer() {
-        return saMethod.isStaticInitializer();
-    }
-
-    public boolean isObsolete() {
-        return saMethod.isObsolete();
-    }
-
-    public final List allLineLocations()
-                           throws AbsentInformationException {
-        return allLineLocations(vm.getDefaultStratum(), null);
-    }
-
-    public List allLineLocations(String stratumID,
-                                 String sourceName)
-                           throws AbsentInformationException {
-        return allLineLocations(declaringType.stratum(stratumID),
-                                sourceName);
-    }
-
-    public final List locationsOfLine(int lineNumber)
-                           throws AbsentInformationException {
-        return locationsOfLine(vm.getDefaultStratum(),
-                               null, lineNumber);
-    }
-
-    public List locationsOfLine(String stratumID,
-                                String sourceName,
-                                int lineNumber)
-                           throws AbsentInformationException {
-        return locationsOfLine(declaringType.stratum(stratumID),
-                               sourceName, lineNumber);
-    }
-
-    LineInfo codeIndexToLineInfo(SDE.Stratum stratum,
-                                 long codeIndex) {
-        if (stratum.isJava()) {
-            return new BaseLineInfo(-1, declaringType);
-        } else {
-            return new StratumLineInfo(stratum.id(), -1,
-                                       null, null);
-        }
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof MethodImpl)) {
-            MethodImpl other = (MethodImpl)obj;
-            return (declaringType().equals(other.declaringType())) &&
-                (ref().equals(other.ref())) &&
-                super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    // From interface Comparable
-    public int compareTo(Method method) {
-        ReferenceTypeImpl declaringType = (ReferenceTypeImpl)declaringType();
-         int rc = declaringType.compareTo(method.declaringType());
-         if (rc == 0) {
-           rc = declaringType.indexOf(this) -
-               declaringType.indexOf(method);
-         }
-         return rc;
-    }
-
-    // from interface Mirror
-    public String toString() {
-        StringBuffer sb = new StringBuffer();
-        sb.append(declaringType().name());
-        sb.append(".");
-        sb.append(name());
-        sb.append("(");
-        boolean first = true;
-        for (Iterator it = argumentTypeNames().iterator(); it.hasNext();) {
-            if (!first) {
-                sb.append(", ");
-            }
-            sb.append((String)it.next());
-            first = false;
-        }
-        sb.append(")");
-        return sb.toString();
-    }
-
-    public String name() {
-        Symbol myName = saMethod.getName();
-        return myName.asString();
-    }
-
-    public int modifiers() {
-        return saMethod.getAccessFlagsObj().getStandardFlags();
-    }
-
-    public boolean isPackagePrivate() {
-        return saMethod.isPackagePrivate();
-    }
-
-    public boolean isPrivate() {
-        return saMethod.isPrivate();
-    }
-
-    public boolean isProtected() {
-        return saMethod.isProtected();
-    }
-
-    public boolean isPublic() {
-        return saMethod.isPublic();
-    }
-
-    public boolean isStatic() {
-        return saMethod.isStatic();
-    }
-
-    public boolean isSynthetic() {
-        return saMethod.isSynthetic();
-    }
-
-    public boolean isFinal() {
-        return saMethod.isFinal();
-    }
-
-    public int hashCode() {
-        return saMethod.hashCode();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MirrorImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-abstract class MirrorImpl extends Object implements Mirror {
-    protected VirtualMachineImpl vm;
-
-    MirrorImpl(VirtualMachine aVm) {
-        super();
-
-        // Yes, its a bit of a hack. But by doing it this
-        // way, this is the only place we have to change
-        // typing to substitute a new impl.
-        vm = (VirtualMachineImpl)aVm;
-    }
-
-    public VirtualMachine virtualMachine() {
-        return vm;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof Mirror)) {
-            Mirror other = (Mirror)obj;
-            return vm.equals(other.virtualMachine());
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        return vm.hashCode();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/MonitorInfoImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2005, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-// FIXME: This class should implement com.sun.jdi.MonitorInfo.
-//        So fix this when hotspot is started to build with
-//        jdk1.6.
-public class MonitorInfoImpl extends MirrorImpl {
-
-    /* Once false, monitorInfo should not be used.
-     * access synchronized on (vm.state())
-     */
-    private boolean isValid = true;
-
-    ObjectReference monitor;
-    ThreadReference thread;
-    int  stack_depth;
-
-    MonitorInfoImpl(VirtualMachine vm, ObjectReference mon,
-                    ThreadReference thread, int dpth) {
-        super(vm);
-        this.monitor = mon;
-        this.thread = thread;
-        this.stack_depth = dpth;
-    }
-
-    private void validateMonitorInfo() {
-        if (!isValid) {
-            throw new InvalidStackFrameException("Thread has been resumed");
-        }
-    }
-
-    public ObjectReference monitor() {
-        validateMonitorInfo();
-        return monitor;
-    }
-
-    public int stackDepth() {
-        validateMonitorInfo();
-        return stack_depth;
-    }
-
-    public ThreadReference thread() {
-        validateMonitorInfo();
-        return thread;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/NonConcreteMethodImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2002, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Collections;
-
-/**
- * Represents non-concrete (that is, native or abstract) methods.
- * Private to MethodImpl.
- */
-public class NonConcreteMethodImpl extends MethodImpl {
-
-    private Location location = null;
-
-    NonConcreteMethodImpl(VirtualMachine vm,
-                          ReferenceTypeImpl declaringType,
-                          sun.jvm.hotspot.oops.Method saMethod) {
-        super(vm, declaringType, saMethod);
-    }
-
-    public Location location() {
-        if (isAbstract()) {
-            return null;
-        }
-        if (location == null) {
-            location = new LocationImpl(vm, this, -1);
-        }
-        return location;
-    }
-
-    public List allLineLocations(String stratumID,
-                                 String sourceName) {
-        return new ArrayList(0);
-    }
-
-    public List allLineLocations(SDE.Stratum stratum,
-                                 String sourceName) {
-        return new ArrayList(0);
-    }
-
-    public List locationsOfLine(String stratumID,
-                                String sourceName,
-                                int lineNumber) {
-        return new ArrayList(0);
-    }
-
-    public List locationsOfLine(SDE.Stratum stratum,
-                                String sourceName,
-                                int lineNumber) {
-        return new ArrayList(0);
-    }
-
-    public Location locationOfCodeIndex(long codeIndex) {
-        return null;
-    }
-
-    LineInfo codeIndexToLineInfo(SDE.Stratum stratum,
-                                 long codeIndex) {
-
-        if (stratum.isJava()) {
-            return new BaseLineInfo(-1, declaringType);
-        } else {
-            return new StratumLineInfo(stratum.id(), -1,
-                                       null, null);
-        }
-    }
-
-    public List variables() throws AbsentInformationException {
-        throw new AbsentInformationException();
-    }
-
-    public List variablesByName(String name) throws AbsentInformationException {
-        throw new AbsentInformationException();
-    }
-
-    public List arguments() throws AbsentInformationException {
-        throw new AbsentInformationException();
-    }
-
-    public byte[] bytecodes() {
-        return new byte[0];
-    }
-
-    int argSlotCount() throws AbsentInformationException {
-        throw new InternalException("should not get here");
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ObjectReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/*
- * Copyright (c) 2002, 2009, 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 sun.jvm.hotspot.jdi;
-
-import java.io.*;
-import com.sun.jdi.*;
-
-import sun.jvm.hotspot.debugger.Address;
-import sun.jvm.hotspot.debugger.OopHandle;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Mark;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Array;
-import sun.jvm.hotspot.oops.OopUtilities;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.DefaultHeapVisitor;
-import sun.jvm.hotspot.runtime.JavaThread;
-import sun.jvm.hotspot.runtime.JavaVFrame;
-import sun.jvm.hotspot.runtime.MonitorInfo;
-import sun.jvm.hotspot.runtime.ObjectMonitor;
-import sun.jvm.hotspot.runtime.Threads;
-import sun.jvm.hotspot.utilities.Assert;
-
-import java.util.*;
-
-public class ObjectReferenceImpl extends ValueImpl implements ObjectReference {
-    private Oop  saObject;
-    private long myID;
-    private boolean monitorInfoCached = false;
-    private ThreadReferenceImpl owningThread = null;
-    private List waitingThreads = null; // List<ThreadReferenceImpl>
-    private int entryCount = 0;
-
-    private static long nextID = 0L;
-    private static synchronized long nextID() {
-        return nextID++;
-    }
-
-    ObjectReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Oop oRef) {
-        super(aVm);
-        saObject = oRef;
-        myID = nextID();
-    }
-
-    protected Oop ref() {
-        return saObject;
-    }
-
-    public Type type() {
-        return referenceType();
-    }
-
-    public ReferenceType referenceType() {
-        Klass myKlass = ref().getKlass();
-        return vm.referenceType(myKlass);
-    }
-
-    public Value getValue(Field sig) {
-        List list = new ArrayList(1);
-        list.add(sig);
-        Map map = getValues(list);
-        return(Value)map.get(sig);
-    }
-
-    public Map getValues(List theFields) {
-        //validateMirrors(theFields);
-
-        List staticFields = new ArrayList(0);
-        int size = theFields.size();
-        List instanceFields = new ArrayList(size);
-
-        for (int i=0; i<size; i++) {
-            sun.jvm.hotspot.jdi.FieldImpl field =
-                (sun.jvm.hotspot.jdi.FieldImpl)theFields.get(i);
-
-            // Make sure the field is valid
-            ((ReferenceTypeImpl)referenceType()).validateFieldAccess(field);
-
-            // FIX ME! We need to do some sanity checking
-            // here; make sure the field belongs to this
-            // object.
-            if (field.isStatic()) {
-                staticFields.add(field);
-            } else {
-                instanceFields.add(field);
-            }
-        }
-
-        // Look up static field(s) first to mimic the JDI implementation
-        Map map;
-        if (staticFields.size() > 0) {
-            map = referenceType().getValues(staticFields);
-        } else {
-            map = new HashMap(size);
-        }
-
-        // Then get instance field(s)
-        size = instanceFields.size();
-        for (int ii=0; ii<size; ii++){
-            FieldImpl fieldImpl = (FieldImpl)instanceFields.get(ii);
-            map.put(fieldImpl, fieldImpl.getValue(saObject));
-        }
-
-        return map;
-    }
-
-    public void setValue(Field field, Value value)
-                   throws InvalidTypeException, ClassNotLoadedException {
-        vm.throwNotReadOnlyException("ObjectReference.setValue(...)");
-    }
-
-    public Value invokeMethod(ThreadReference threadIntf, Method methodIntf,
-                              List arguments, int options)
-                              throws InvalidTypeException,
-                                     IncompatibleThreadStateException,
-                                     InvocationException,
-                                     ClassNotLoadedException {
-        vm.throwNotReadOnlyException("ObjectReference.invokeMethod(...)");
-        return null;
-    }
-
-    public void disableCollection() {
-        vm.throwNotReadOnlyException("ObjectReference.disableCollection()");
-    }
-
-    public void enableCollection() {
-        vm.throwNotReadOnlyException("ObjectReference.enableCollection()");
-    }
-
-    public boolean isCollected() {
-        vm.throwNotReadOnlyException("ObjectReference.isCollected()");
-        return false;
-    }
-
-    public long uniqueID() {
-        return myID;
-    }
-
-    public List waitingThreads() throws IncompatibleThreadStateException {
-        if (vm.canGetMonitorInfo() == false) {
-            throw new UnsupportedOperationException();
-        }
-
-        if (! monitorInfoCached) {
-            computeMonitorInfo();
-        }
-        return waitingThreads;
-    }
-
-
-    public ThreadReference owningThread() throws IncompatibleThreadStateException {
-        if (vm.canGetMonitorInfo() == false) {
-            throw new UnsupportedOperationException();
-        }
-
-        if (! monitorInfoCached) {
-            computeMonitorInfo();
-        }
-        return owningThread;
-    }
-
-
-    public int entryCount() throws IncompatibleThreadStateException {
-        if (vm.canGetMonitorInfo() == false) {
-            throw new UnsupportedOperationException();
-        }
-
-        if (! monitorInfoCached) {
-            computeMonitorInfo();
-        }
-        return entryCount;
-    }
-
-    // new method since 1.6.
-    // Real body will be supplied later.
-    public List referringObjects(long maxReferrers) {
-        if (!vm.canGetInstanceInfo()) {
-            throw new UnsupportedOperationException(
-                      "target does not support getting instances");
-        }
-        if (maxReferrers < 0) {
-            throw new IllegalArgumentException("maxReferrers is less than zero: "
-                                              + maxReferrers);
-        }
-        final ObjectReference obj = this;
-        final List objects = new ArrayList(0);
-        final long max = maxReferrers;
-                vm.saObjectHeap().iterate(new DefaultHeapVisitor() {
-                private long refCount = 0;
-                public boolean doObj(Oop oop) {
-                                        try {
-                                                ObjectReference objref = vm.objectMirror(oop);
-                                                List fields = objref.referenceType().allFields();
-                                                for (int i=0; i < fields.size(); i++) {
-                                                        Field fld = (Field)fields.get(i);
-                                                        if (objref.getValue(fld).equals(obj) && !objects.contains(objref)) {
-                                                                objects.add(objref);
-                                                                refCount++;
-                                                        }
-                                                }
-                                                if (max > 0 && refCount >= max) {
-                                                        return true;
-                                                }
-                                        } catch  (RuntimeException x) {
-                                          // Ignore RuntimeException thrown from vm.objectMirror(oop)
-                                          // for bad oop. It is possible to see some bad oop
-                                          // because heap might be iterating at no safepoint.
-                                        }
-                                        return false;
-
-                }
-            });
-        return objects;
-    }
-
-    // refer to JvmtiEnvBase::count_locked_objects.
-    // Count the number of objects for a lightweight monitor. The obj
-    // parameter is object that owns the monitor so this routine will
-    // count the number of times the same object was locked by frames
-    // in JavaThread. i.e., we count total number of times the same
-    // object is (lightweight) locked by given thread.
-    private int countLockedObjects(JavaThread jt, Oop obj) {
-        int res = 0;
-        JavaVFrame frame = jt.getLastJavaVFrameDbg();
-        while (frame != null) {
-            List monitors = frame.getMonitors();
-            OopHandle givenHandle = obj.getHandle();
-            for (Iterator itr = monitors.iterator(); itr.hasNext();) {
-                MonitorInfo mi = (MonitorInfo) itr.next();
-                if (mi.eliminated() && frame.isCompiledFrame()) continue; // skip eliminated monitor
-                if (givenHandle.equals(mi.owner())) {
-                    res++;
-                }
-            }
-            frame = (JavaVFrame) frame.javaSender();
-        }
-        return res;
-    }
-
-    // wrappers on same named method of Threads class
-    // returns List<JavaThread>
-    private List getPendingThreads(ObjectMonitor mon) {
-        return vm.saVM().getThreads().getPendingThreads(mon);
-    }
-
-    // returns List<JavaThread>
-    private List getWaitingThreads(ObjectMonitor mon) {
-        return vm.saVM().getThreads().getWaitingThreads(mon);
-    }
-
-    private JavaThread owningThreadFromMonitor(Address addr) {
-        return vm.saVM().getThreads().owningThreadFromMonitor(addr);
-    }
-
-    // refer to JvmtiEnv::GetObjectMonitorUsage
-    private void computeMonitorInfo() {
-        monitorInfoCached = true;
-        Mark mark = saObject.getMark();
-        ObjectMonitor mon = null;
-        Address owner = null;
-        // check for heavyweight monitor
-        if (! mark.hasMonitor()) {
-            // check for lightweight monitor
-            if (mark.hasLocker()) {
-                owner = mark.locker().getAddress(); // save the address of the Lock word
-            }
-            // implied else: no owner
-        } else {
-            // this object has a heavyweight monitor
-            mon = mark.monitor();
-
-            // The owner field of a heavyweight monitor may be NULL for no
-            // owner, a JavaThread * or it may still be the address of the
-            // Lock word in a JavaThread's stack. A monitor can be inflated
-            // by a non-owning JavaThread, but only the owning JavaThread
-            // can change the owner field from the Lock word to the
-            // JavaThread * and it may not have done that yet.
-            owner = mon.owner();
-        }
-
-        // find the owning thread
-        if (owner != null) {
-            owningThread = vm.threadMirror(owningThreadFromMonitor(owner));
-        }
-
-        // compute entryCount
-        if (owningThread != null) {
-            if (owningThread.getJavaThread().getAddress().equals(owner)) {
-                // the owner field is the JavaThread *
-                if (Assert.ASSERTS_ENABLED) {
-                    Assert.that(false, "must have heavyweight monitor with JavaThread * owner");
-                }
-                entryCount = (int) mark.monitor().recursions() + 1;
-            } else {
-                // The owner field is the Lock word on the JavaThread's stack
-                // so the recursions field is not valid. We have to count the
-                // number of recursive monitor entries the hard way.
-                entryCount = countLockedObjects(owningThread.getJavaThread(), saObject);
-            }
-        }
-
-        // find the contenders & waiters
-        waitingThreads = new ArrayList();
-        if (mon != null) {
-            // this object has a heavyweight monitor. threads could
-            // be contenders or waiters
-            // add all contenders
-            List pendingThreads = getPendingThreads(mon);
-            // convert the JavaThreads to ThreadReferenceImpls
-            for (Iterator itrPend = pendingThreads.iterator(); itrPend.hasNext();) {
-                waitingThreads.add(vm.threadMirror((JavaThread) itrPend.next()));
-            }
-
-            // add all waiters (threads in Object.wait())
-            // note that we don't do this JVMTI way. To do it JVMTI way,
-            // we would need to access ObjectWaiter list maintained in
-            // ObjectMonitor::_queue. But we don't have this struct exposed
-            // in vmStructs. We do waiters list in a way similar to getting
-            // pending threads list
-            List objWaitingThreads = getWaitingThreads(mon);
-            // convert the JavaThreads to ThreadReferenceImpls
-            for (Iterator itrWait = objWaitingThreads.iterator(); itrWait.hasNext();) {
-                waitingThreads.add(vm.threadMirror((JavaThread) itrWait.next()));
-            }
-        }
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof ObjectReferenceImpl)) {
-            ObjectReferenceImpl other = (ObjectReferenceImpl)obj;
-            return (ref().equals(other.ref())) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        return saObject.hashCode();
-    }
-
-    public String toString() {
-        return  "instance of " + referenceType().name() + "(id=" + uniqueID() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/PrimitiveTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-abstract class PrimitiveTypeImpl extends TypeImpl implements PrimitiveType {
-
-    PrimitiveTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-    /*
-     * Converts the given primitive value to a value of this type.
-     */
-    abstract PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException;
-
-    public String toString() {
-        return name();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/PrimitiveValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public abstract class PrimitiveValueImpl extends ValueImpl
-                                         implements PrimitiveValue {
-
-    PrimitiveValueImpl(VirtualMachine aVm) {
-        super(aVm);
-    }
-
-    abstract public boolean booleanValue();
-    abstract public byte byteValue();
-    abstract public char charValue();
-    abstract public short shortValue();
-    abstract public int intValue();
-    abstract public long longValue();
-    abstract public float floatValue();
-    abstract public double doubleValue();
-
-    /*
-     * The checked versions of the value accessors throw
-     * InvalidTypeException if the required conversion is
-     * narrowing and would result in the loss of information
-     * (either magnitude or precision).
-     *
-     * Default implementations here do no checking; subclasses
-     * override as necessary to do the proper checking.
-     */
-    byte checkedByteValue() throws InvalidTypeException {
-        return byteValue();
-    }
-    char checkedCharValue() throws InvalidTypeException {
-        return charValue();
-    }
-    short checkedShortValue() throws InvalidTypeException {
-        return shortValue();
-    }
-    int checkedIntValue() throws InvalidTypeException {
-        return intValue();
-    }
-    long checkedLongValue() throws InvalidTypeException {
-        return longValue();
-    }
-    float checkedFloatValue() throws InvalidTypeException {
-        return floatValue();
-    }
-
-    final boolean checkedBooleanValue() throws InvalidTypeException {
-        /*
-         * Always disallow a conversion to boolean from any other
-         * primitive
-         */
-        if (this instanceof BooleanValue) {
-            return booleanValue();
-        } else {
-            throw new InvalidTypeException("Can't convert non-boolean value to boolean");
-        }
-    }
-
-    final double checkedDoubleValue() throws InvalidTypeException {
-        /*
-         * Can't overflow by converting to double, so this method
-         * is never overridden
-         */
-        return doubleValue();
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1008 +0,0 @@
-/*
- * Copyright (c) 2002, 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 sun.jvm.hotspot.jdi;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import sun.jvm.hotspot.memory.SystemDictionary;
-import sun.jvm.hotspot.oops.ArrayKlass;
-import sun.jvm.hotspot.oops.DefaultHeapVisitor;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.JVMDIClassStatus;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.utilities.Assert;
-
-import com.sun.jdi.AbsentInformationException;
-import com.sun.jdi.ArrayType;
-import com.sun.jdi.ClassLoaderReference;
-import com.sun.jdi.ClassNotLoadedException;
-import com.sun.jdi.ClassNotPreparedException;
-import com.sun.jdi.ClassObjectReference;
-import com.sun.jdi.Field;
-import com.sun.jdi.InterfaceType;
-import com.sun.jdi.Method;
-import com.sun.jdi.ObjectReference;
-import com.sun.jdi.PrimitiveType;
-import com.sun.jdi.ReferenceType;
-import com.sun.jdi.Type;
-import com.sun.jdi.Value;
-import com.sun.jdi.VirtualMachine;
-
-public abstract class ReferenceTypeImpl extends TypeImpl
-implements ReferenceType {
-    protected Klass       saKlass;          // This can be an InstanceKlass or an ArrayKlass
-    protected Symbol      typeNameSymbol;   // This is used in vm.classesByName to speedup search
-    private int           modifiers = -1;
-    private String        signature = null;
-    private SoftReference sdeRef = null;
-    private SoftReference fieldsCache;
-    private SoftReference allFieldsCache;
-    private SoftReference methodsCache;
-    private SoftReference allMethodsCache;
-    private SoftReference nestedTypesCache;
-    private SoftReference methodInvokesCache;
-
-    /* to mark when no info available */
-    static final SDE NO_SDE_INFO_MARK = new SDE();
-
-    protected ReferenceTypeImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Klass klass) {
-        super(aVm);
-        saKlass = klass;
-        typeNameSymbol = saKlass.getName();
-        if (Assert.ASSERTS_ENABLED) {
-            Assert.that(typeNameSymbol != null, "null type name for a Klass");
-        }
-    }
-
-    Symbol typeNameAsSymbol() {
-        return typeNameSymbol;
-    }
-
-    Method getMethodMirror(sun.jvm.hotspot.oops.Method ref) {
-        // SA creates new Method objects when they are referenced which means
-        // that the incoming object might not be the same object as on our
-        // even though it is the same method. So do an address compare by
-        // calling equals rather than just reference compare.
-        Iterator it = methods().iterator();
-        while (it.hasNext()) {
-            MethodImpl method = (MethodImpl)it.next();
-            if (ref.equals(method.ref())) {
-                return method;
-            }
-        }
-        if (ref.getMethodHolder().equals(SystemDictionary.getMethodHandleKlass())) {
-          // invoke methods are generated as needed, so make mirrors as needed
-          List mis = null;
-          if (methodInvokesCache == null) {
-            mis = new ArrayList();
-            methodInvokesCache = new SoftReference(mis);
-          } else {
-            mis = (List)methodInvokesCache.get();
-          }
-          it = mis.iterator();
-          while (it.hasNext()) {
-            MethodImpl method = (MethodImpl)it.next();
-            if (ref.equals(method.ref())) {
-              return method;
-            }
-          }
-
-          MethodImpl method = MethodImpl.createMethodImpl(vm, this, ref);
-          mis.add(method);
-          return method;
-        }
-        throw new IllegalArgumentException("Invalid method id: " + ref);
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof ReferenceTypeImpl)) {
-            ReferenceTypeImpl other = (ReferenceTypeImpl)obj;
-            return (ref().equals(other.ref())) &&
-                (vm.equals(other.virtualMachine()));
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        return saKlass.hashCode();
-    }
-
-    public int compareTo(ReferenceType refType) {
-        /*
-         * Note that it is critical that compareTo() == 0
-         * implies that equals() == true. Otherwise, TreeSet
-         * will collapse classes.
-         *
-         * (Classes of the same name loaded by different class loaders
-         * or in different VMs must not return 0).
-         */
-        ReferenceTypeImpl other = (ReferenceTypeImpl)refType;
-        int comp = name().compareTo(other.name());
-        if (comp == 0) {
-            Klass rf1 = ref();
-            Klass rf2 = other.ref();
-            // optimize for typical case: refs equal and VMs equal
-            if (rf1.equals(rf2)) {
-                // sequenceNumbers are always positive
-                comp = vm.sequenceNumber -
-                 ((VirtualMachineImpl)(other.virtualMachine())).sequenceNumber;
-            } else {
-                comp = rf1.getAddress().minus(rf2.getAddress()) < 0? -1 : 1;
-            }
-        }
-        return comp;
-    }
-
-    public String signature() {
-        if (signature == null) {
-            signature = saKlass.signature();
-        }
-        return signature;
-    }
-
-    // refer to JvmtiEnv::GetClassSignature.
-    // null is returned for array klasses.
-    public String genericSignature() {
-        if (saKlass instanceof ArrayKlass) {
-            return null;
-        } else {
-            Symbol genSig = ((InstanceKlass)saKlass).getGenericSignature();
-            return (genSig != null)? genSig.asString() : null;
-        }
-    }
-
-    public ClassLoaderReference classLoader() {
-      Instance xx = (Instance)(((InstanceKlass)saKlass).getClassLoader());
-      return (ClassLoaderReferenceImpl)vm.classLoaderMirror(xx);
-    }
-
-    public boolean isPublic() {
-        return((modifiers() & VMModifiers.PUBLIC) != 0);
-    }
-
-    public boolean isProtected() {
-        return((modifiers() & VMModifiers.PROTECTED) != 0);
-    }
-
-    public boolean isPrivate() {
-        return((modifiers() & VMModifiers.PRIVATE) != 0);
-    }
-
-    public boolean isPackagePrivate() {
-        return !isPublic() && !isPrivate() && !isProtected();
-    }
-
-    public boolean isAbstract() {
-        return((modifiers() & VMModifiers.ABSTRACT) != 0);
-    }
-
-    public boolean isFinal() {
-        return((modifiers() & VMModifiers.FINAL) != 0);
-    }
-
-    public boolean isStatic() {
-        return((modifiers() & VMModifiers.STATIC) != 0);
-    }
-
-    public boolean isPrepared() {
-        return (saKlass.getClassStatus() & JVMDIClassStatus.PREPARED) != 0;
-    }
-
-    final void checkPrepared() throws ClassNotPreparedException {
-        if (! isPrepared()) {
-            throw new ClassNotPreparedException();
-        }
-    }
-
-    public boolean isVerified() {
-        return (saKlass.getClassStatus() & JVMDIClassStatus.VERIFIED) != 0;
-    }
-
-    public boolean isInitialized() {
-        return (saKlass.getClassStatus() & JVMDIClassStatus.INITIALIZED) != 0;
-    }
-
-    public boolean failedToInitialize() {
-        return (saKlass.getClassStatus() & JVMDIClassStatus.ERROR) != 0;
-    }
-
-    private boolean isThrowableBacktraceField(sun.jvm.hotspot.oops.Field fld) {
-        // refer to JvmtiEnv::GetClassFields in jvmtiEnv.cpp.
-        // We want to filter out java.lang.Throwable.backtrace (see 4446677).
-        // It contains some Method*s that aren't quite real Objects.
-        if (fld.getFieldHolder().getName().equals(vm.javaLangThrowable()) &&
-            fld.getID().getName().equals("backtrace")) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public final List fields() throws ClassNotPreparedException {
-        List fields = (fieldsCache != null)? (List) fieldsCache.get() : null;
-        if (fields == null) {
-            checkPrepared();
-            if (saKlass instanceof ArrayKlass) {
-                fields = new ArrayList(0);
-            } else {
-                // Get a list of the sa Field types
-                List saFields = ((InstanceKlass)saKlass).getImmediateFields();
-
-                // Create a list of our Field types
-                int len = saFields.size();
-                fields = new ArrayList(len);
-                for (int ii = 0; ii < len; ii++) {
-                    sun.jvm.hotspot.oops.Field curField = (sun.jvm.hotspot.oops.Field)saFields.get(ii);
-                    if (! isThrowableBacktraceField(curField)) {
-                        fields.add(new FieldImpl(vm, this, curField));
-                    }
-                }
-            }
-            fields = Collections.unmodifiableList(fields);
-            fieldsCache = new SoftReference(fields);
-        }
-        return fields;
-    }
-
-    public final List allFields() throws ClassNotPreparedException {
-        List allFields = (allFieldsCache != null)? (List) allFieldsCache.get() : null;
-        if (allFields == null) {
-            checkPrepared();
-            if (saKlass instanceof ArrayKlass) {
-                // is 'length' a field of array klasses? To maintain
-                // consistency with JVMDI-JDI we return 0 size.
-                allFields = new ArrayList(0);
-            } else {
-                List saFields;
-
-                // Get a list of the sa Field types
-                saFields = ((InstanceKlass)saKlass).getAllFields();
-
-                // Create a list of our Field types
-                int len = saFields.size();
-                allFields = new ArrayList(len);
-                for (int ii = 0; ii < len; ii++) {
-                    sun.jvm.hotspot.oops.Field curField = (sun.jvm.hotspot.oops.Field)saFields.get(ii);
-                    if (! isThrowableBacktraceField(curField)) {
-                        allFields.add(new FieldImpl(vm, vm.referenceType(curField.getFieldHolder()), curField));
-                    }
-                }
-            }
-            allFields = Collections.unmodifiableList(allFields);
-            allFieldsCache = new SoftReference(allFields);
-        }
-        return allFields;
-    }
-
-    abstract List inheritedTypes();
-
-    void addVisibleFields(List visibleList, Map visibleTable, List ambiguousNames) {
-        List list = visibleFields();
-        Iterator iter = list.iterator();
-        while (iter.hasNext()) {
-            Field field = (Field)iter.next();
-            String name = field.name();
-            if (!ambiguousNames.contains(name)) {
-                Field duplicate = (Field)visibleTable.get(name);
-                if (duplicate == null) {
-                    visibleList.add(field);
-                    visibleTable.put(name, field);
-                } else if (!field.equals(duplicate)) {
-                    ambiguousNames.add(name);
-                    visibleTable.remove(name);
-                    visibleList.remove(duplicate);
-                } else {
-                    // identical field from two branches; do nothing
-                }
-            }
-        }
-    }
-
-    public final List visibleFields() throws ClassNotPreparedException {
-        checkPrepared();
-        /*
-         * Maintain two different collections of visible fields. The
-         * list maintains a reasonable order for return. The
-         * hash map provides an efficient way to lookup visible fields
-         * by name, important for finding hidden or ambiguous fields.
-         */
-        List visibleList = new ArrayList();
-        Map  visibleTable = new HashMap();
-
-        /* Track fields removed from above collection due to ambiguity */
-        List ambiguousNames = new ArrayList();
-
-        /* Add inherited, visible fields */
-        List types = inheritedTypes();
-        Iterator iter = types.iterator();
-        while (iter.hasNext()) {
-            /*
-             * TO DO: Be defensive and check for cyclic interface inheritance
-             */
-            ReferenceTypeImpl type = (ReferenceTypeImpl)iter.next();
-            type.addVisibleFields(visibleList, visibleTable, ambiguousNames);
-        }
-
-        /*
-         * Insert fields from this type, removing any inherited fields they
-         * hide.
-         */
-        List retList = new ArrayList(fields());
-        iter = retList.iterator();
-        while (iter.hasNext()) {
-            Field field = (Field)iter.next();
-            Field hidden = (Field)visibleTable.get(field.name());
-            if (hidden != null) {
-                visibleList.remove(hidden);
-            }
-        }
-        retList.addAll(visibleList);
-        return retList;
-    }
-
-   public final Field fieldByName(String fieldName) throws ClassNotPreparedException {
-        java.util.List searchList;
-        Field f;
-
-        // visibleFields calls checkPrepared
-        searchList = visibleFields();
-
-        for (int i=0; i<searchList.size(); i++) {
-            f = (Field)searchList.get(i);
-
-            if (f.name().equals(fieldName)) {
-                return f;
-            }
-        }
-        //throw new NoSuchFieldException("Field '" + fieldName + "' not found in " + name());
-        return null;
-    }
-
-    public final List methods() throws ClassNotPreparedException {
-        List methods = (methodsCache != null)? (List) methodsCache.get() : null;
-        if (methods == null) {
-            checkPrepared();
-            if (saKlass instanceof ArrayKlass) {
-                methods = new ArrayList(0);
-            } else {
-                List saMethods;
-                // Get a list of the SA Method types
-                saMethods = ((InstanceKlass)saKlass).getImmediateMethods();
-
-                // Create a list of our MethodImpl types
-                int len = saMethods.size();
-                methods = new ArrayList(len);
-                for (int ii = 0; ii < len; ii++) {
-                    methods.add(MethodImpl.createMethodImpl(vm, this, (sun.jvm.hotspot.oops.Method)saMethods.get(ii)));
-                }
-            }
-            methods = Collections.unmodifiableList(methods);
-            methodsCache = new SoftReference(methods);
-        }
-        return methods;
-    }
-
-    abstract List getAllMethods();
-    public final List allMethods() throws ClassNotPreparedException {
-        List allMethods = (allMethodsCache != null)? (List) allMethodsCache.get() : null;
-        if (allMethods == null) {
-            checkPrepared();
-            allMethods = Collections.unmodifiableList(getAllMethods());
-            allMethodsCache = new SoftReference(allMethods);
-        }
-        return allMethods;
-    }
-
-    /*
-     * Utility method used by subclasses to build lists of visible
-     * methods.
-     */
-    void addToMethodMap(Map methodMap, List methodList) {
-        Iterator iter = methodList.iterator();
-        while (iter.hasNext()) {
-            Method method = (Method)iter.next();
-            methodMap.put(method.name().concat(method.signature()), method);
-        }
-    }
-
-    abstract void addVisibleMethods(Map<String, Method> methodMap, Set<InterfaceType> seenInterfaces);
-
-    public final List visibleMethods() throws ClassNotPreparedException {
-        checkPrepared();
-        /*
-         * Build a collection of all visible methods. The hash
-         * map allows us to do this efficiently by keying on the
-         * concatenation of name and signature.
-         */
-        //System.out.println("jj: RTI: Calling addVisibleMethods for:" + this);
-        Map<String, Method> map = new HashMap<String, Method>();
-        addVisibleMethods(map, new HashSet<InterfaceType>());
-
-        /*
-         * ... but the hash map destroys order. Methods should be
-         * returned in a sensible order, as they are in allMethods().
-         * So, start over with allMethods() and use the hash map
-         * to filter that ordered collection.
-         */
-        //System.out.println("jj: RTI: Calling allMethods for:" + this);
-
-        List<Method> list = new ArrayList<Method>(allMethods());
-        //System.out.println("jj: allMethods = " + jjstr(list));
-        //System.out.println("jj: map = " + map.toString());
-        //System.out.println("jj: map = " + jjstr(map.values()));
-        list.retainAll(map.values());
-        //System.out.println("jj: map = " + jjstr(list));
-        //System.exit(0);
-        return list;
-    }
-
-    static Object prev;
-
-    static public String jjstr(Collection cc) {
-        StringBuffer buf = new StringBuffer();
-        buf.append("[");
-        Iterator i = cc.iterator();
-        boolean hasNext = i.hasNext();
-        while (hasNext) {
-            Object o = i.next();
-            if (prev == null) {
-                prev = o;
-            } else {
-                System.out.println("prev == curr?" + prev.equals(o));
-                System.out.println("prev == curr?" + (prev == o));
-            }
-            buf.append( o + "@" + o.hashCode());
-            //buf.append( ((Object)o).toString());
-            hasNext = i.hasNext();
-            if (hasNext)
-                buf.append(", ");
-        }
-
-        buf.append("]");
-        return buf.toString();
-    }
-
-    public final List methodsByName(String name) throws ClassNotPreparedException {
-        // visibleMethods calls checkPrepared
-        List methods = visibleMethods();
-        ArrayList retList = new ArrayList(methods.size());
-        Iterator iter = methods.iterator();
-        while (iter.hasNext()) {
-            Method candidate = (Method)iter.next();
-            if (candidate.name().equals(name)) {
-                retList.add(candidate);
-            }
-        }
-        retList.trimToSize();
-        return retList;
-    }
-
-    public final List methodsByName(String name, String signature) throws ClassNotPreparedException {
-        // visibleMethods calls checkPrepared
-        List methods = visibleMethods();
-        ArrayList retList = new ArrayList(methods.size());
-        Iterator iter = methods.iterator();
-        while (iter.hasNext()) {
-            Method candidate = (Method)iter.next();
-            if (candidate.name().equals(name) &&
-                candidate.signature().equals(signature)) {
-                retList.add(candidate);
-            }
-        }
-        retList.trimToSize();
-        return retList;
-    }
-
-
-    List getInterfaces() {
-        List myInterfaces;
-        if (saKlass instanceof ArrayKlass) {
-            // Actually, JLS says arrays implement Cloneable and Serializable
-            // But, JVMDI-JDI just returns 0 interfaces for arrays. We follow
-            // the same for consistency.
-            myInterfaces = new ArrayList(0);
-        } else {
-            // Get a list of the sa InstanceKlass types
-            List saInterfaces = ((InstanceKlass)saKlass).getDirectImplementedInterfaces();
-
-            // Create a list of our InterfaceTypes
-            int len = saInterfaces.size();
-            myInterfaces = new ArrayList(len);
-            for (int ii = 0; ii < len; ii++) {
-                myInterfaces.add(new InterfaceTypeImpl(vm, (InstanceKlass)saInterfaces.get(ii)));
-            }
-        }
-        return myInterfaces;
-    }
-
-    public final List nestedTypes() {
-        List nestedTypes = (nestedTypesCache != null)? (List) nestedTypesCache.get() : null;
-        if (nestedTypes == null) {
-            if (saKlass instanceof ArrayKlass) {
-                nestedTypes = new ArrayList(0);
-            } else {
-                ClassLoaderReference cl = classLoader();
-                List classes = null;
-                if (cl != null) {
-                   classes = cl.visibleClasses();
-                } else {
-                   classes = vm.bootstrapClasses();
-                }
-                nestedTypes = new ArrayList();
-                Iterator iter = classes.iterator();
-                while (iter.hasNext()) {
-                    ReferenceTypeImpl refType = (ReferenceTypeImpl)iter.next();
-                    Symbol candidateName = refType.ref().getName();
-                    if (((InstanceKlass)saKlass).isInnerOrLocalClassName(candidateName)) {
-                        nestedTypes.add(refType);
-                    }
-                }
-            }
-            nestedTypes = Collections.unmodifiableList(nestedTypes);
-            nestedTypesCache = new SoftReference(nestedTypes);
-        }
-        return nestedTypes;
-    }
-
-    public Value getValue(Field sig) {
-        List list = new ArrayList(1);
-        list.add(sig);
-        Map map = getValues(list);
-        return(Value)map.get(sig);
-    }
-
-    /**
-     * Returns a map of field values
-     */
-    public Map getValues(List theFields) {
-        //validateMirrors();
-        int size = theFields.size();
-        Map map = new HashMap(size);
-        for (int ii=0; ii<size; ii++) {
-            FieldImpl fieldImpl = (FieldImpl)theFields.get(ii);
-
-            validateFieldAccess(fieldImpl);
-            // Do more validation specific to ReferenceType field getting
-            if (!fieldImpl.isStatic()) {
-                throw new IllegalArgumentException(
-                     "Attempt to use non-static field with ReferenceType: " +
-                     fieldImpl.name());
-            }
-            map.put(fieldImpl, fieldImpl.getValue());
-        }
-        return map;
-    }
-
-    void validateFieldAccess(Field field) {
-       /*
-        * Field must be in this object's class, a superclass, or
-        * implemented interface
-        */
-        ReferenceTypeImpl declType = (ReferenceTypeImpl)field.declaringType();
-        if (!declType.isAssignableFrom(this)) {
-            throw new IllegalArgumentException("Invalid field");
-        }
-    }
-
-    public ClassObjectReference classObject() {
-        return vm.classObjectMirror(ref().getJavaMirror());
-    }
-
-    SDE.Stratum stratum(String stratumID) {
-        SDE sde = sourceDebugExtensionInfo();
-        if (!sde.isValid()) {
-            sde = NO_SDE_INFO_MARK;
-        }
-        return sde.stratum(stratumID);
-    }
-
-    public String sourceName() throws AbsentInformationException {
-        return (String)(sourceNames(vm.getDefaultStratum()).get(0));
-    }
-
-    public List sourceNames(String stratumID)
-                                throws AbsentInformationException {
-        SDE.Stratum stratum = stratum(stratumID);
-        if (stratum.isJava()) {
-            List result = new ArrayList(1);
-            result.add(baseSourceName());
-            return result;
-        }
-        return stratum.sourceNames(this);
-    }
-
-    public List sourcePaths(String stratumID)
-                                throws AbsentInformationException {
-        SDE.Stratum stratum = stratum(stratumID);
-        if (stratum.isJava()) {
-            List result = new ArrayList(1);
-            result.add(baseSourceDir() + baseSourceName());
-            return result;
-        }
-        return stratum.sourcePaths(this);
-    }
-
-    String baseSourceName() throws AbsentInformationException {
-      if (saKlass instanceof ArrayKlass) {
-            throw new AbsentInformationException();
-      }
-      Symbol sym = ((InstanceKlass)saKlass).getSourceFileName();
-      if (sym != null) {
-          return sym.asString();
-      } else {
-          throw new AbsentInformationException();
-      }
-    }
-
-    String baseSourcePath() throws AbsentInformationException {
-        return baseSourceDir() + baseSourceName();
-    }
-
-    String baseSourceDir() {
-        String typeName = name();
-        StringBuffer sb = new StringBuffer(typeName.length() + 10);
-        int index = 0;
-        int nextIndex;
-
-        while ((nextIndex = typeName.indexOf('.', index)) > 0) {
-            sb.append(typeName.substring(index, nextIndex));
-            sb.append(java.io.File.separatorChar);
-            index = nextIndex + 1;
-        }
-        return sb.toString();
-    }
-
-    public String sourceDebugExtension()
-                           throws AbsentInformationException {
-        if (!vm.canGetSourceDebugExtension()) {
-            throw new UnsupportedOperationException();
-        }
-        SDE sde = sourceDebugExtensionInfo();
-        if (sde == NO_SDE_INFO_MARK) {
-            throw new AbsentInformationException();
-        }
-        return sde.sourceDebugExtension;
-    }
-
-    private SDE sourceDebugExtensionInfo() {
-        if (!vm.canGetSourceDebugExtension()) {
-            return NO_SDE_INFO_MARK;
-        }
-        SDE sde = null;
-        sde = (sdeRef == null) ?  null : (SDE)sdeRef.get();
-        if (sde == null) {
-           String extension = null;
-           if (saKlass instanceof InstanceKlass) {
-              extension = ((InstanceKlass)saKlass).getSourceDebugExtension();
-           }
-           if (extension == null) {
-              sde = NO_SDE_INFO_MARK;
-           } else {
-              sde = new SDE(extension);
-           }
-           sdeRef = new SoftReference(sde);
-        }
-        return sde;
-    }
-
-    public List availableStrata() {
-        SDE sde = sourceDebugExtensionInfo();
-        if (sde.isValid()) {
-            return sde.availableStrata();
-        } else {
-            List strata = new ArrayList();
-            strata.add(SDE.BASE_STRATUM_NAME);
-            return strata;
-        }
-    }
-
-    /**
-     * Always returns non-null stratumID
-     */
-    public String defaultStratum() {
-        SDE sdei = sourceDebugExtensionInfo();
-        if (sdei.isValid()) {
-            return sdei.defaultStratumId;
-        } else {
-            return SDE.BASE_STRATUM_NAME;
-        }
-    }
-
-    public final int modifiers() {
-        if (modifiers == -1) {
-            modifiers = getModifiers();
-        }
-        return modifiers;
-    }
-
-    // new method since 1.6.
-    // Real body will be supplied later.
-    public List instances(long maxInstances) {
-        if (!vm.canGetInstanceInfo()) {
-            throw new UnsupportedOperationException(
-                      "target does not support getting instances");
-        }
-
-        if (maxInstances < 0) {
-            throw new IllegalArgumentException("maxInstances is less than zero: "
-                                              + maxInstances);
-        }
-
-        final List objects = new ArrayList(0);
-        if (isAbstract() || (this instanceof InterfaceType)) {
-            return objects;
-        }
-
-        final Klass givenKls = this.ref();
-        final long max = maxInstances;
-        vm.saObjectHeap().iterate(new DefaultHeapVisitor() {
-                private long instCount=0;
-                public boolean doObj(Oop oop) {
-                    if (givenKls.equals(oop.getKlass())) {
-                        objects.add(vm.objectMirror(oop));
-                                                instCount++;
-                    }
-                    if (max > 0 && instCount >= max) {
-                        return true;
-                                        }
-                                        return false;
-                }
-            });
-        return objects;
-    }
-
-    int getModifiers() {
-        return (int) saKlass.getClassModifiers();
-    }
-
-    public List allLineLocations()
-                            throws AbsentInformationException {
-        return allLineLocations(vm.getDefaultStratum(), null);
-    }
-
-    public List allLineLocations(String stratumID, String sourceName)
-                            throws AbsentInformationException {
-        checkPrepared();
-        boolean someAbsent = false; // A method that should have info, didn't
-        SDE.Stratum stratum = stratum(stratumID);
-        List list = new ArrayList();  // location list
-
-        for (Iterator iter = methods().iterator(); iter.hasNext(); ) {
-            MethodImpl method = (MethodImpl)iter.next();
-            try {
-                list.addAll(
-                   method.allLineLocations(stratum.id(), sourceName));
-            } catch(AbsentInformationException exc) {
-                someAbsent = true;
-            }
-        }
-
-        // If we retrieved no line info, and at least one of the methods
-        // should have had some (as determined by an
-        // AbsentInformationException being thrown) then we rethrow
-        // the AbsentInformationException.
-        if (someAbsent && list.size() == 0) {
-            throw new AbsentInformationException();
-        }
-        return list;
-    }
-
-    public List locationsOfLine(int lineNumber)
-                           throws AbsentInformationException {
-        return locationsOfLine(vm.getDefaultStratum(),
-                               null,
-                               lineNumber);
-    }
-
-    public List locationsOfLine(String stratumID,
-                                String sourceName,
-                                int lineNumber)
-                           throws AbsentInformationException {
-        checkPrepared();
-        // A method that should have info, didn't
-        boolean someAbsent = false;
-        // A method that should have info, did
-        boolean somePresent = false;
-        List methods = methods();
-        SDE.Stratum stratum = stratum(stratumID);
-
-        List list = new ArrayList();
-
-        Iterator iter = methods.iterator();
-        while(iter.hasNext()) {
-            MethodImpl method = (MethodImpl)iter.next();
-            // eliminate native and abstract to eliminate
-            // false positives
-            if (!method.isAbstract() &&
-                !method.isNative()) {
-                try {
-                    list.addAll(
-                       method.locationsOfLine(stratum.id(),
-                                              sourceName,
-                                              lineNumber));
-                    somePresent = true;
-                } catch(AbsentInformationException exc) {
-                    someAbsent = true;
-                }
-            }
-        }
-        if (someAbsent && !somePresent) {
-            throw new AbsentInformationException();
-        }
-        return list;
-    }
-
-    Klass ref() {
-        return saKlass;
-    }
-
-
-    /*
-     * Return true if an instance of this type
-     * can be assigned to a variable of the given type
-     */
-    abstract boolean isAssignableTo(ReferenceType type);
-
-    boolean isAssignableFrom(ReferenceType type) {
-        return ((ReferenceTypeImpl)type).isAssignableTo(this);
-    }
-
-    boolean isAssignableFrom(ObjectReference object) {
-        return object == null ||
-            isAssignableFrom(object.referenceType());
-    }
-
-    int indexOf(Method method) {
-        // Make sure they're all here - the obsolete method
-        // won't be found and so will have index -1
-        return methods().indexOf(method);
-    }
-
-    int indexOf(Field field) {
-        // Make sure they're all here
-        return fields().indexOf(field);
-    }
-
-    private static boolean isPrimitiveArray(String signature) {
-        int i = signature.lastIndexOf('[');
-        /*
-         * TO DO: Centralize JNI signature knowledge.
-         *
-         * Ref:
-         *  jdk1.4/doc/guide/jpda/jdi/com/sun/jdi/doc-files/signature.html
-         */
-        boolean isPA;
-        if (i < 0) {
-            isPA = false;
-        } else {
-            char c = signature.charAt(i + 1);
-            isPA = (c != 'L');
-        }
-        return isPA;
-    }
-
-    Type findType(String signature) throws ClassNotLoadedException {
-        Type type;
-        if (signature.length() == 1) {
-            /* OTI FIX: Must be a primitive type or the void type */
-            char sig = signature.charAt(0);
-            if (sig == 'V') {
-                type = vm.theVoidType();
-            } else {
-                type = vm.primitiveTypeMirror(sig);
-            }
-        } else {
-            // Must be a reference type.
-            ClassLoaderReferenceImpl loader =
-                       (ClassLoaderReferenceImpl)classLoader();
-            if ((loader == null) ||
-                (isPrimitiveArray(signature)) //Work around 4450091
-                ) {
-                // Caller wants type of boot class field
-                type = vm.findBootType(signature);
-            } else {
-                // Caller wants type of non-boot class field
-                type = loader.findType(signature);
-            }
-        }
-        return type;
-    }
-
-    String loaderString() {
-        if (classLoader() != null) {
-            return "loaded by " + classLoader().toString();
-        } else {
-            return "loaded by bootstrap loader";
-        }
-    }
-
-    long uniqueID() {
-        return vm.getAddressValue(ref().getJavaMirror());
-    }
-
-    // new method since 1.6
-    public int majorVersion() {
-        if (!vm.canGetClassFileVersion()) {
-            throw new UnsupportedOperationException("Cannot get class file version");
-        }
-        return (int)((InstanceKlass)saKlass).majorVersion();
-    }
-
-    // new method since 1.6
-    public int minorVersion() {
-        if (!vm.canGetClassFileVersion()) {
-            throw new UnsupportedOperationException("Cannot get class file version");
-        }
-        return (int)((InstanceKlass)saKlass).minorVersion();
-    }
-
-    // new method since 1.6
-    public int constantPoolCount() {
-        if (!vm.canGetConstantPool()) {
-            throw new UnsupportedOperationException("Cannot get constant pool");
-        }
-        if (saKlass instanceof ArrayKlass) {
-            return 0;
-        } else {
-            return (int)((InstanceKlass)saKlass).getConstants().getLength();
-        }
-    }
-
-    // new method since 1.6
-    public byte[] constantPool() {
-        if (!vm.canGetConstantPool()) {
-            throw new UnsupportedOperationException("Cannot get constant pool");
-        }
-        if (this instanceof ArrayType || this instanceof PrimitiveType) {
-                        byte bytes[] = new byte[0];
-            return bytes;
-        } else {
-            ByteArrayOutputStream bs = new ByteArrayOutputStream();
-            try {
-                ((InstanceKlass)saKlass).getConstants().writeBytes(bs);
-            } catch (IOException ex) {
-                                ex.printStackTrace();
-                                byte bytes[] = new byte[0];
-                                return bytes;
-            }
-            return bs.toByteArray();
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SACoreAttachingConnector.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.connect.*;
-import com.sun.jdi.Bootstrap;
-import com.sun.jdi.VirtualMachine;
-import com.sun.jdi.VirtualMachineManager;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
-import java.util.*;
-
-public class SACoreAttachingConnector extends ConnectorImpl implements AttachingConnector {
-
-    static final String ARG_COREFILE = "core";
-    static final String ARG_JAVA_EXECUTABLE = "javaExecutable";
-    private Transport transport;
-
-    public SACoreAttachingConnector(com.sun.tools.jdi.VirtualMachineManagerService ignored) {
-        this();
-    }
-
-    public SACoreAttachingConnector() {
-        super();
-        //fixme jjh  Must create resources for these strings
-        addStringArgument(
-                ARG_JAVA_EXECUTABLE,
-                "Java Executable",              //getString("sa.javaExecutable.label"),
-                "Pathname of Java Executable",  //getString("sa.javaExecutable.description");
-                "",
-                true);
-
-        addStringArgument(
-                ARG_COREFILE,
-                "Corefile",                                    // getString("sa.CoreFile.label"),
-                "Pathname of a corefile from a Java Process",  //getString("sa.CoreFile.description"),
-                "core",
-                false);
-
-        transport = new Transport() {
-                   public String name() {
-                       return "filesystem";
-                   }
-               };
-    }
-
-    // security check to see whether the caller can perform attach
-    private void checkCoreAttach(String corefile) {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            try {
-                // whether the caller can link against SA native library?
-                checkNativeLink(sm, System.getProperty("os.name"));
-                // check whether the caller can read the core file?
-                sm.checkRead(corefile);
-            } catch (SecurityException se) {
-                throw new SecurityException("permission denied to attach to " + corefile);
-            }
-        }
-    }
-
-    private VirtualMachine createVirtualMachine(Class vmImplClass,
-                                                String javaExec, String corefile)
-        throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        java.lang.reflect.Method connectByCoreMethod = vmImplClass.getMethod(
-                                 "createVirtualMachineForCorefile",
-                                  new Class[] {
-                                      VirtualMachineManager.class,
-                                      String.class, String.class,
-                                      Integer.TYPE
-                                  });
-        return (VirtualMachine) connectByCoreMethod.invoke(null,
-                                  new Object[] {
-                                      Bootstrap.virtualMachineManager(),
-                                      javaExec,
-                                      corefile,
-                                      new Integer(0)
-                                  });
-    }
-
-    public VirtualMachine attach(Map arguments) throws IOException,
-                                      IllegalConnectorArgumentsException {
-        String javaExec = argument(ARG_JAVA_EXECUTABLE, arguments).value();
-        if (javaExec == null || javaExec.equals("")) {
-            throw new IllegalConnectorArgumentsException("javaExec should be non-null and non-empty",
-                                                         ARG_JAVA_EXECUTABLE);
-        }
-        String corefile = argument(ARG_COREFILE, arguments).value();
-        if (corefile == null || corefile.equals("")) {
-            throw new IllegalConnectorArgumentsException("corefile should be non-null and non-empty",
-                                                         ARG_COREFILE);
-        }
-
-        checkCoreAttach(corefile);
-
-        VirtualMachine myVM = null;
-        try {
-            try {
-                Class vmImplClass = loadVirtualMachineImplClass();
-                myVM = createVirtualMachine(vmImplClass, javaExec, corefile);
-            } catch (InvocationTargetException ite) {
-                Class vmImplClass = handleVMVersionMismatch(ite);
-                if (vmImplClass != null) {
-                    return createVirtualMachine(vmImplClass, javaExec, corefile);
-                } else {
-                    throw ite;
-                }
-            }
-        } catch (Exception ee) {
-            if (DEBUG) {
-                System.out.println("VirtualMachineImpl() got an exception:");
-                ee.printStackTrace();
-                System.out.println("coreFile = " + corefile + ", javaExec = " + javaExec);
-            }
-            throw (IOException) new IOException().initCause(ee);
-        }
-        setVMDisposeObserver(myVM);
-        return myVM;
-    }
-
-    public String name() {
-        return "sun.jvm.hotspot.jdi.SACoreAttachingConnector";
-    }
-
-    public String description() {
-        return getString("This connector allows you to attach to a core file using the Serviceability Agent");
-    }
-
-    public Transport transport() {
-        return transport;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SADebugServer.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2003, 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 sun.jvm.hotspot.jdi;
-
-public final class SADebugServer {
-   // do not allow instance creation
-   private SADebugServer() {}
-
-   private static void usage() {
-      java.io.PrintStream out = System.out;
-      out.println("Usage: jsadebugd [options] <pid> [server-id]");
-      out.println("\t\t(to connect to a live java process)");
-      out.println("   or  jsadebugd [options] <executable> <core> [server-id]");
-      out.println("\t\t(to connect to a core file produced by <executable>)");
-      out.println("\t\tserver-id is an optional unique id for this debug server, needed ");
-      out.println("\t\tif multiple debug servers are run on the same machine");
-      out.println("where options include:");
-      out.println("   -h | -help\tto print this help message");
-      System.exit(1);
-  }
-
-   public static void main(String[] args) {
-      if ((args.length < 1) || (args.length > 3)) {
-         usage();
-      }
-
-      // Attempt to handle "-h" or "-help"
-      if (args[0].startsWith("-")) {
-         usage();
-      }
-
-      // By default SA agent classes prefer Windows process debugger
-      // to windbg debugger. SA expects special properties to be set
-      // to choose other debuggers. We will set those here before
-      // attaching to SA agent.
-
-       System.setProperty("sun.jvm.hotspot.debugger.useWindbgDebugger", "true");
-
-      // delegate to the actual SA debug server.
-      sun.jvm.hotspot.DebugServer.main(args);
-   }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SADebugServerAttachingConnector.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.connect.*;
-import com.sun.jdi.Bootstrap;
-import com.sun.jdi.VirtualMachine;
-import com.sun.jdi.VirtualMachineManager;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
-import java.util.*;
-
-public class SADebugServerAttachingConnector extends ConnectorImpl implements AttachingConnector {
-
-    static final String ARG_DEBUG_SERVER_NAME = "debugServerName";
-    private Transport transport;
-
-    public SADebugServerAttachingConnector(com.sun.tools.jdi.VirtualMachineManagerService ignored) {
-        this();
-    }
-
-    public SADebugServerAttachingConnector() {
-         // fixme jjh  create resources for the these strings,
-        addStringArgument(
-                ARG_DEBUG_SERVER_NAME,
-                "Debug Server",                      //getString("sa.debugServer.label"),
-                "Name of a remote SA Debug Server",  //getString("sa.debugServer.description");
-                "",
-                true);
-        transport = new Transport() {
-                   public String name() {
-                       return "RMI";
-                   }
-                 };
-    }
-
-    private VirtualMachine createVirtualMachine(Class vmImplClass,
-                                                String debugServerName)
-        throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        java.lang.reflect.Method connectByServerMethod =
-                            vmImplClass.getMethod(
-                                   "createVirtualMachineForServer",
-                                   new Class[] {
-                                       VirtualMachineManager.class,
-                                       String.class,
-                                       Integer.TYPE
-                                   });
-        return (VirtualMachine) connectByServerMethod.invoke(null,
-                                   new Object[] {
-                                       Bootstrap.virtualMachineManager(),
-                                       debugServerName,
-                                       new Integer(0)
-                                   });
-    }
-
-    public VirtualMachine attach(Map arguments) throws IOException,
-                                      IllegalConnectorArgumentsException {
-        String debugServerName = argument(ARG_DEBUG_SERVER_NAME, arguments).value();
-        if (debugServerName == null || debugServerName.equals("")) {
-            throw new IllegalConnectorArgumentsException("debugServerName should be non-null and non-empty",
-                                                         ARG_DEBUG_SERVER_NAME);
-        }
-        VirtualMachine myVM;
-        try {
-            try {
-                Class vmImplClass = loadVirtualMachineImplClass();
-                myVM = createVirtualMachine(vmImplClass, debugServerName);
-            } catch (InvocationTargetException ite) {
-                Class vmImplClass = handleVMVersionMismatch(ite);
-                if (vmImplClass != null) {
-                    return createVirtualMachine(vmImplClass, debugServerName);
-                } else {
-                    throw ite;
-                }
-            }
-        } catch (Exception ee) {
-            if (DEBUG) {
-                System.out.println("VirtualMachineImpl() got an exception:");
-                ee.printStackTrace();
-                System.out.println("debug server name = " + debugServerName);
-            }
-            throw (IOException) new IOException().initCause(ee);
-        }
-        setVMDisposeObserver(myVM);
-        return myVM;
-    }
-
-    public String name() {
-        return "sun.jvm.hotspot.jdi.SADebugServerAttachingConnector";
-    }
-
-    public String description() {
-        return getString("This connector allows you to attach to a Java Process via a debug server with the Serviceability Agent");
-    }
-
-    public Transport transport() {
-        return transport;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2003, 2008, 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 sun.jvm.hotspot.jdi;
-
-import java.io.*;
-import java.net.*;
-
-/*
- * This class loader is used for two different reasons:
- *
- * 1) To support multiple simultaneous debuggees.
- *
- * SA's architecture does not allow us to use multiple simultaneous
- * debuggees. This is because of lots of static fields caching
- * vmStruct fields and singleton assumption in classes such as
- * 'sun.jvm.hotspot.runtime.VM'. Hence, we use instances of this
- * class loader to create a separate namespace for each debuggee VM.
- *
- * 2) To support cross VM version debugging.
- *
- * SA has very close dependency on VM data structures. Due to this, a
- * version of SA can only support debuggees running a same dot-dot release and
- * update releases only. For eg. this version of SA supports only 1.4.2 and
- * 1.4.2_xx releases only. But, users may want to debug debuggees running
- * a different version of VM. To support this, we use an instance of this
- * class loader to load classes from corresponding sa-jdi.jar.
- *
- * Note that JDI classes would still be loaded from the debugger's tools.jar
- * and not from debuggee's tools.jar. This means that if JDI interface evolved
- * b/w debuggee and debugger VM versions, user may still get problems. This is
- * the case when debugger runs on 1.5.0 and debuggee runs on 1.4.2. Because JDI
- * evolved b/w these versions (generics, enum, varargs etc.), 1.4.2 sa-jdi.jar
- * won't implement 1.5.0 JDI properly and user would get verifier errors. This
- * class loader solution is suited for different dot-dot release where JDI will
- * not evolve but VM data structures might change and SA implementation might
- * have to change. For example, a debuggee running 1.5.1 VM can be debugged
- * with debugger running on 1.5.0 VM. Here, JDI is same but VM data structures
- * could still change.
- */
-
-class SAJDIClassLoader extends URLClassLoader {
-    private static final boolean DEBUG;
-    static {
-        DEBUG = System.getProperty("sun.jvm.hotspot.jdi.SAJDIClassLoader.DEBUG") != null;
-    }
-
-    private ClassLoader parent;
-    private boolean classPathSet;
-
-    SAJDIClassLoader(ClassLoader parent) {
-        super(new URL[0], parent);
-        this.parent = parent;
-    }
-
-    SAJDIClassLoader(ClassLoader parent, String classPath) {
-        this(parent);
-        this.classPathSet = true;
-        try {
-            addURL(new File(classPath).toURI().toURL());
-        } catch(MalformedURLException mue) {
-            throw new RuntimeException(mue);
-        }
-    }
-
-    public synchronized Class loadClass(String name)
-        throws ClassNotFoundException {
-        // First, check if the class has already been loaded
-        Class c = findLoadedClass(name);
-        if (c == null) {
-            /* If we are loading any class in 'sun.jvm.hotspot.'  or any of the
-             * sub-packages (except for 'debugger' sub-pkg. please refer below),
-             * we load it by 'this' loader. Or else, we forward the request to
-             * 'parent' loader, system loader etc. (rest of the code follows
-             * the patten in java.lang.ClassLoader.loadClass).
-             *
-             * 'sun.jvm.hotspot.debugger.' and sub-package classes are
-             * also loaded by parent loader. This is done for two reasons:
-             *
-             * 1. to avoid code bloat by too many classes.
-             * 2. to avoid loading same native library multiple times
-             *    from multiple class loaders (which results in getting a
-             *    UnsatisifiedLinkageError from System.loadLibrary).
-             */
-
-            if (name.startsWith("sun.jvm.hotspot.") &&
-                !name.startsWith("sun.jvm.hotspot.debugger.")) {
-                return findClass(name);
-            }
-            if (parent != null) {
-                c = parent.loadClass(name);
-            } else {
-                c = findSystemClass(name);
-            }
-        }
-        return c;
-    }
-
-    protected Class findClass(String name) throws ClassNotFoundException {
-        if (DEBUG) {
-            System.out.println("SA/JDI loader: about to load " + name);
-        }
-        if (classPathSet) {
-            return super.findClass(name);
-        } else {
-            byte[] b = null;
-            try {
-                InputStream in = getResourceAsStream(name.replace('.', '/') + ".class");
-                // Read until end of stream is reached
-                b = new byte[1024];
-                int total = 0;
-                int len = 0;
-                while ((len = in.read(b, total, b.length - total)) != -1) {
-                    total += len;
-                    if (total >= b.length) {
-                        byte[] tmp = new byte[total * 2];
-                        System.arraycopy(b, 0, tmp, 0, total);
-                        b = tmp;
-                    }
-                }
-                // Trim array to correct size, if necessary
-                if (total != b.length) {
-                    byte[] tmp = new byte[total];
-                    System.arraycopy(b, 0, tmp, 0, total);
-                    b = tmp;
-                }
-            } catch (Exception exp) {
-                throw (ClassNotFoundException) new ClassNotFoundException().initCause(exp);
-            }
-            return defineClass(name, b, 0, b.length);
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SAPIDAttachingConnector.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.connect.*;
-import com.sun.jdi.Bootstrap;
-import com.sun.jdi.VirtualMachine;
-import com.sun.jdi.VirtualMachineManager;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
-import java.util.*;
-
-public class SAPIDAttachingConnector extends ConnectorImpl implements AttachingConnector {
-    static final String ARG_PID = "pid";
-    private Transport transport;
-
-    public SAPIDAttachingConnector(com.sun.tools.jdi.VirtualMachineManagerService ignored) {
-         this();
-    }
-
-    public SAPIDAttachingConnector() {
-         super();
-         // fixme jjh:  create resources for the these strings,
-        addStringArgument(
-                ARG_PID,
-                "PID",                     //getString("sa.pid.label"),
-                "PID of a Java process",   //getString("sa.pid.description");
-                "",
-                true);
-        transport = new Transport() {
-                   public String name() {
-                       return "local process";
-                       }
-                };
-    }
-
-    // security check to see whether the caller can perform attach
-    private void checkProcessAttach(int pid) {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            String os = System.getProperty("os.name");
-            try {
-                // Whether the caller can perform link against SA native library?
-                checkNativeLink(sm, os);
-                if (os.equals("SunOS") || os.equals("Linux")) {
-                    // Whether the caller can read /proc/<pid> file?
-                    sm.checkRead("/proc/" + pid);
-                }
-            } catch (SecurityException se) {
-                throw new SecurityException("permission denied to attach to " + pid);
-            }
-        }
-    }
-
-    private VirtualMachine createVirtualMachine(Class virtualMachineImplClass, int pid)
-        throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        java.lang.reflect.Method createByPIDMethod
-                  = virtualMachineImplClass.getMethod("createVirtualMachineForPID",
-                     new Class[] {
-                         VirtualMachineManager.class,
-                         Integer.TYPE, Integer.TYPE
-                     });
-        return (VirtualMachine) createByPIDMethod.invoke(null,
-                     new Object[] {
-                         Bootstrap.virtualMachineManager(),
-                         new Integer(pid),
-                         new Integer(0)
-                     });
-    }
-
-    public VirtualMachine attach(Map arguments) throws IOException,
-                                      IllegalConnectorArgumentsException {
-        int pid = 0;
-        try {
-            pid = Integer.parseInt(argument(ARG_PID, arguments).value());
-        } catch (NumberFormatException nfe) {
-            throw (IllegalConnectorArgumentsException) new IllegalConnectorArgumentsException
-                                                  (nfe.getMessage(), ARG_PID).initCause(nfe);
-        }
-
-        checkProcessAttach(pid);
-
-        VirtualMachine myVM = null;
-        try {
-            try {
-                Class vmImplClass = loadVirtualMachineImplClass();
-                myVM = createVirtualMachine(vmImplClass, pid);
-            } catch (InvocationTargetException ite) {
-                Class vmImplClass = handleVMVersionMismatch(ite);
-                if (vmImplClass != null) {
-                    return createVirtualMachine(vmImplClass, pid);
-                } else {
-                    throw ite;
-                }
-            }
-        } catch (Exception ee) {
-            if (DEBUG) {
-                System.out.println("VirtualMachineImpl() got an exception:");
-                ee.printStackTrace();
-                System.out.println("pid = " + pid);
-            }
-            throw (IOException) new IOException().initCause(ee);
-        }
-        setVMDisposeObserver(myVM);
-        return myVM;
-    }
-
-    public String name() {
-        return "sun.jvm.hotspot.jdi.SAPIDAttachingConnector";
-    }
-
-    public String description() {
-        return getString("This connector allows you to attach to a Java process using the Serviceability Agent");
-    }
-
-    public Transport transport() {
-        return transport;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/SDE.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,685 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-import java.util.*;
-import java.io.File;
-
-class SDE {
-    private static final int INIT_SIZE_FILE = 3;
-    private static final int INIT_SIZE_LINE = 100;
-    private static final int INIT_SIZE_STRATUM = 3;
-
-    static final String BASE_STRATUM_NAME = "Java";
-
-    /* for C capatibility */
-    static final String NullString = null;
-
-    private class FileTableRecord {
-        int fileId;
-        String sourceName;
-        String sourcePath; // do not read - use accessor
-        boolean isConverted = false;
-
-        /**
-         * Return the sourcePath, computing it if not set.
-         * If set, convert '/' in the sourcePath to the
-         * local file separator.
-         */
-        String getSourcePath(ReferenceTypeImpl refType) {
-            if (!isConverted) {
-                if (sourcePath == null) {
-                    sourcePath = refType.baseSourceDir() + sourceName;
-                } else {
-                    StringBuffer buf = new StringBuffer();
-                    for (int i = 0; i < sourcePath.length(); ++i) {
-                        char ch = sourcePath.charAt(i);
-                        if (ch == '/') {
-                            buf.append(File.separatorChar);
-                        } else {
-                            buf.append(ch);
-                        }
-                    }
-                    sourcePath = buf.toString();
-                }
-                isConverted = true;
-            }
-            return sourcePath;
-        }
-    }
-
-    private class LineTableRecord {
-        int jplsStart;
-        int jplsEnd;
-        int jplsLineInc;
-        int njplsStart;
-        int njplsEnd;
-        int fileId;
-    }
-
-    private class StratumTableRecord {
-        String id;
-        int fileIndex;
-        int lineIndex;
-    }
-
-    class Stratum {
-        private final int sti; /* stratum index */
-
-        private Stratum(int sti) {
-            this.sti = sti;
-        }
-
-        String id() {
-            return stratumTable[sti].id;
-        }
-
-        boolean isJava() {
-            return sti == baseStratumIndex;
-        }
-
-        /**
-         * Return all the sourceNames for this stratum.
-         * Look from our starting fileIndex upto the starting
-         * fileIndex of next stratum - can do this since there
-         * is always a terminator stratum.
-         * Default sourceName (the first one) must be first.
-         */
-        List sourceNames(ReferenceTypeImpl refType) {
-            int i;
-            int fileIndexStart = stratumTable[sti].fileIndex;
-            /* one past end */
-            int fileIndexEnd = stratumTable[sti+1].fileIndex;
-            List result = new ArrayList(fileIndexEnd - fileIndexStart);
-            for (i = fileIndexStart; i < fileIndexEnd; ++i) {
-                result.add(fileTable[i].sourceName);
-            }
-            return result;
-        }
-
-        /**
-         * Return all the sourcePaths for this stratum.
-         * Look from our starting fileIndex upto the starting
-         * fileIndex of next stratum - can do this since there
-         * is always a terminator stratum.
-         * Default sourcePath (the first one) must be first.
-         */
-        List sourcePaths(ReferenceTypeImpl refType) {
-            int i;
-            int fileIndexStart = stratumTable[sti].fileIndex;
-            /* one past end */
-            int fileIndexEnd = stratumTable[sti+1].fileIndex;
-            List result = new ArrayList(fileIndexEnd - fileIndexStart);
-            for (i = fileIndexStart; i < fileIndexEnd; ++i) {
-                result.add(fileTable[i].getSourcePath(refType));
-            }
-            return result;
-        }
-
-        LineStratum lineStratum(ReferenceTypeImpl refType,
-                                int jplsLine) {
-            int lti = stiLineTableIndex(sti, jplsLine);
-            if (lti < 0) {
-                return null;
-            } else {
-                return new LineStratum(sti, lti, refType,
-                                       jplsLine);
-            }
-        }
-    }
-
-    class LineStratum {
-        private final int sti; /* stratum index */
-        private final int lti; /* line table index */
-        private final ReferenceTypeImpl refType;
-        private final int jplsLine;
-        private String sourceName = null;
-        private String sourcePath = null;
-
-        private LineStratum(int sti, int lti,
-                            ReferenceTypeImpl refType,
-                            int jplsLine) {
-            this.sti = sti;
-            this.lti = lti;
-            this.refType = refType;
-            this.jplsLine = jplsLine;
-        }
-
-        public boolean equals(Object obj) {
-            if ((obj != null) && (obj instanceof LineStratum)) {
-                LineStratum other = (LineStratum)obj;
-                return (lti == other.lti) &&
-                       (sti == other.sti) &&
-                       (lineNumber() == other.lineNumber()) &&
-                       (refType.equals(other.refType));
-            } else {
-                return false;
-            }
-        }
-
-        int lineNumber() {
-            return stiLineNumber(sti, lti, jplsLine);
-        }
-
-        /**
-         * Fetch the source name and source path for
-         * this line, converting or constructing
-         * the source path if needed.
-         */
-        void getSourceInfo() {
-            if (sourceName != null) {
-                // already done
-                return;
-            }
-            int fti = stiFileTableIndex(sti, lti);
-            if (fti == -1) {
-                throw new InternalError(
-              "Bad SourceDebugExtension, no matching source id " +
-              lineTable[lti].fileId + " jplsLine: " + jplsLine);
-            }
-            FileTableRecord ftr = fileTable[fti];
-            sourceName = ftr.sourceName;
-            sourcePath = ftr.getSourcePath(refType);
-        }
-
-        String sourceName() {
-            getSourceInfo();
-            return sourceName;
-        }
-
-        String sourcePath() {
-            getSourceInfo();
-            return sourcePath;
-        }
-    }
-
-    private FileTableRecord[] fileTable = null;
-    private LineTableRecord[] lineTable = null;
-    private StratumTableRecord[] stratumTable = null;
-
-    private int fileIndex = 0;
-    private int lineIndex = 0;
-    private int stratumIndex = 0;
-    private int currentFileId = 0;
-
-    private int defaultStratumIndex = -1;
-    private int baseStratumIndex = -2; /* so as not to match -1 above */
-    private int sdePos = 0;
-
-    final String sourceDebugExtension;
-    String jplsFilename = null;
-    String defaultStratumId = null;
-    boolean isValid = false;
-
-    SDE(String sourceDebugExtension) {
-        this.sourceDebugExtension = sourceDebugExtension;
-        decode();
-    }
-
-    SDE() {
-        this.sourceDebugExtension = null;
-        createProxyForAbsentSDE();
-    }
-
-    char sdePeek() {
-        if (sdePos >= sourceDebugExtension.length()) {
-            syntax();
-        }
-        return sourceDebugExtension.charAt(sdePos);
-    }
-
-    char sdeRead() {
-        if (sdePos >= sourceDebugExtension.length()) {
-            syntax();
-        }
-        return sourceDebugExtension.charAt(sdePos++);
-    }
-
-    void sdeAdvance() {
-        sdePos++;
-    }
-
-    void syntax() {
-        throw new InternalError("bad SourceDebugExtension syntax - position " +
-                                sdePos);
-    }
-
-    void syntax(String msg) {
-        throw new InternalError("bad SourceDebugExtension syntax: " + msg);
-    }
-
-    void assureLineTableSize() {
-        int len = lineTable == null? 0 : lineTable.length;
-        if (lineIndex >= len) {
-            int i;
-            int newLen = len == 0? INIT_SIZE_LINE : len * 2;
-            LineTableRecord[] newTable = new LineTableRecord[newLen];
-            for (i = 0; i < len; ++i) {
-                newTable[i] = lineTable[i];
-            }
-            for (; i < newLen; ++i) {
-                newTable[i] = new LineTableRecord();
-            }
-            lineTable = newTable;
-        }
-    }
-
-    void assureFileTableSize() {
-        int len = fileTable == null? 0 : fileTable.length;
-        if (fileIndex >= len) {
-            int i;
-            int newLen = len == 0? INIT_SIZE_FILE : len * 2;
-            FileTableRecord[] newTable = new FileTableRecord[newLen];
-            for (i = 0; i < len; ++i) {
-                newTable[i] = fileTable[i];
-            }
-            for (; i < newLen; ++i) {
-                newTable[i] = new FileTableRecord();
-            }
-            fileTable = newTable;
-        }
-    }
-
-    void assureStratumTableSize() {
-        int len = stratumTable == null? 0 : stratumTable.length;
-        if (stratumIndex >= len) {
-            int i;
-            int newLen = len == 0? INIT_SIZE_STRATUM : len * 2;
-            StratumTableRecord[] newTable = new StratumTableRecord[newLen];
-            for (i = 0; i < len; ++i) {
-                newTable[i] = stratumTable[i];
-            }
-            for (; i < newLen; ++i) {
-                newTable[i] = new StratumTableRecord();
-            }
-            stratumTable = newTable;
-        }
-    }
-
-    String readLine() {
-        StringBuffer sb = new StringBuffer();
-        char ch;
-
-        ignoreWhite();
-        while (((ch = sdeRead()) != '\n') && (ch != '\r')) {
-            sb.append((char)ch);
-        }
-        // check for CR LF
-        if ((ch == '\r') && (sdePeek() == '\n')) {
-            sdeRead();
-        }
-        ignoreWhite(); // leading white
-        return sb.toString();
-    }
-
-    private int defaultStratumTableIndex() {
-        if ((defaultStratumIndex == -1) && (defaultStratumId != null)) {
-            defaultStratumIndex =
-                stratumTableIndex(defaultStratumId);
-        }
-        return defaultStratumIndex;
-    }
-
-    int stratumTableIndex(String stratumId) {
-        int i;
-
-        if (stratumId == null) {
-            return defaultStratumTableIndex();
-        }
-        for (i = 0; i < (stratumIndex-1); ++i) {
-            if (stratumTable[i].id.equals(stratumId)) {
-                return i;
-            }
-        }
-        return defaultStratumTableIndex();
-    }
-
-    Stratum stratum(String stratumID) {
-        int sti = stratumTableIndex(stratumID);
-        return new Stratum(sti);
-    }
-
-    List availableStrata() {
-        List strata = new ArrayList();
-
-        for (int i = 0; i < (stratumIndex-1); ++i) {
-            StratumTableRecord rec = stratumTable[i];
-            strata.add(rec.id);
-        }
-        return strata;
-    }
-
-/*****************************
- * below functions/methods are written to compile under either Java or C
- *
- * Needed support functions:
- *   sdePeek()
- *   sdeRead()
- *   sdeAdvance()
- *   readLine()
- *   assureLineTableSize()
- *   assureFileTableSize()
- *   assureStratumTableSize()
- *   syntax()
- *
- *   stratumTableIndex(String)
- *
- * Needed support variables:
- *   lineTable
- *   lineIndex
- *   fileTable
- *   fileIndex
- *   currentFileId
- *
- * Needed types:
- *   String
- *
- * Needed constants:
- *   NullString
- */
-
-    void ignoreWhite() {
-        char ch;
-
-        while (((ch = sdePeek()) == ' ') || (ch == '\t')) {
-            sdeAdvance();
-        }
-    }
-
-    void ignoreLine() {
-        char ch;
-
-        while (((ch = sdeRead()) != '\n') && (ch != '\r')) {
-        }
-        /* check for CR LF */
-        if ((ch == '\r') && (sdePeek() == '\n')) {
-            sdeAdvance();
-        }
-        ignoreWhite(); /* leading white */
-    }
-
-    int readNumber() {
-        int value = 0;
-        char ch;
-
-        ignoreWhite();
-        while (((ch = sdePeek()) >= '0') && (ch <= '9')) {
-            sdeAdvance();
-            value = (value * 10) + ch - '0';
-        }
-        ignoreWhite();
-        return value;
-    }
-
-    void storeFile(int fileId, String sourceName, String sourcePath) {
-        assureFileTableSize();
-        fileTable[fileIndex].fileId = fileId;
-        fileTable[fileIndex].sourceName = sourceName;
-        fileTable[fileIndex].sourcePath = sourcePath;
-        ++fileIndex;
-    }
-
-    void fileLine() {
-        int hasAbsolute = 0; /* acts as boolean */
-        int fileId;
-        String sourceName;
-        String sourcePath = null;
-
-        /* is there an absolute filename? */
-        if (sdePeek() == '+') {
-            sdeAdvance();
-            hasAbsolute = 1;
-        }
-        fileId = readNumber();
-        sourceName = readLine();
-        if (hasAbsolute == 1) {
-            sourcePath = readLine();
-        }
-
-        storeFile(fileId, sourceName, sourcePath);
-    }
-
-    void storeLine(int jplsStart, int jplsEnd, int jplsLineInc,
-                  int njplsStart, int njplsEnd, int fileId) {
-        assureLineTableSize();
-        lineTable[lineIndex].jplsStart = jplsStart;
-        lineTable[lineIndex].jplsEnd = jplsEnd;
-        lineTable[lineIndex].jplsLineInc = jplsLineInc;
-        lineTable[lineIndex].njplsStart = njplsStart;
-        lineTable[lineIndex].njplsEnd = njplsEnd;
-        lineTable[lineIndex].fileId = fileId;
-        ++lineIndex;
-    }
-
-    /**
-     * Parse line translation info.  Syntax is
-     *     <NJ-start-line> [ # <file-id> ] [ , <line-count> ] :
-     *                 <J-start-line> [ , <line-increment> ] CR
-     */
-    void lineLine() {
-        int lineCount = 1;
-        int lineIncrement = 1;
-        int njplsStart;
-        int jplsStart;
-
-        njplsStart = readNumber();
-
-        /* is there a fileID? */
-        if (sdePeek() == '#') {
-            sdeAdvance();
-            currentFileId = readNumber();
-        }
-
-        /* is there a line count? */
-        if (sdePeek() == ',') {
-            sdeAdvance();
-            lineCount = readNumber();
-        }
-
-        if (sdeRead() != ':') {
-            syntax();
-        }
-        jplsStart = readNumber();
-        if (sdePeek() == ',') {
-            sdeAdvance();
-            lineIncrement = readNumber();
-        }
-        ignoreLine(); /* flush the rest */
-
-        storeLine(jplsStart,
-                  jplsStart + (lineCount * lineIncrement) -1,
-                  lineIncrement,
-                  njplsStart,
-                  njplsStart + lineCount -1,
-                  currentFileId);
-    }
-
-    /**
-     * Until the next stratum section, everything after this
-     * is in stratumId - so, store the current indicies.
-     */
-    void storeStratum(String stratumId) {
-        /* remove redundant strata */
-        if (stratumIndex > 0) {
-            if ((stratumTable[stratumIndex-1].fileIndex
-                                            == fileIndex) &&
-                (stratumTable[stratumIndex-1].lineIndex
-                                            == lineIndex)) {
-                /* nothing changed overwrite it */
-                --stratumIndex;
-            }
-        }
-        /* store the results */
-        assureStratumTableSize();
-        stratumTable[stratumIndex].id = stratumId;
-        stratumTable[stratumIndex].fileIndex = fileIndex;
-        stratumTable[stratumIndex].lineIndex = lineIndex;
-        ++stratumIndex;
-        currentFileId = 0;
-    }
-
-    /**
-     * The beginning of a stratum's info
-     */
-    void stratumSection() {
-        storeStratum(readLine());
-    }
-
-    void fileSection() {
-        ignoreLine();
-        while (sdePeek() != '*') {
-            fileLine();
-        }
-    }
-
-    void lineSection() {
-        ignoreLine();
-        while (sdePeek() != '*') {
-            lineLine();
-        }
-    }
-
-    /**
-     * Ignore a section we don't know about.
-     */
-    void ignoreSection() {
-        ignoreLine();
-        while (sdePeek() != '*') {
-            ignoreLine();
-        }
-    }
-
-    /**
-     * A base "Java" stratum is always available, though
-     * it is not in the SourceDebugExtension.
-     * Create the base stratum.
-     */
-    void createJavaStratum() {
-        baseStratumIndex = stratumIndex;
-        storeStratum(BASE_STRATUM_NAME);
-        storeFile(1, jplsFilename, NullString);
-        /* JPL line numbers cannot exceed 65535 */
-        storeLine(1, 65536, 1, 1, 65536, 1);
-        storeStratum("Aux"); /* in case they don't declare */
-    }
-
-    /**
-     * Decode a SourceDebugExtension which is in SourceMap format.
-     * This is the entry point into the recursive descent parser.
-     */
-    void decode() {
-        /* check for "SMAP" - allow EOF if not ours */
-        if ((sourceDebugExtension.length() < 4) ||
-            (sdeRead() != 'S') ||
-            (sdeRead() != 'M') ||
-            (sdeRead() != 'A') ||
-            (sdeRead() != 'P')) {
-            return; /* not our info */
-        }
-        ignoreLine(); /* flush the rest */
-        jplsFilename = readLine();
-        defaultStratumId = readLine();
-        createJavaStratum();
-        while (true) {
-            if (sdeRead() != '*') {
-                syntax();
-            }
-            switch (sdeRead()) {
-                case 'S':
-                    stratumSection();
-                    break;
-                case 'F':
-                    fileSection();
-                    break;
-                case 'L':
-                    lineSection();
-                    break;
-                case 'E':
-                    /* set end points */
-                    storeStratum("*terminator*");
-                    isValid = true;
-                    return;
-                default:
-                    ignoreSection();
-            }
-        }
-    }
-
-    void createProxyForAbsentSDE() {
-        jplsFilename = null;
-        defaultStratumId = BASE_STRATUM_NAME;
-        defaultStratumIndex = stratumIndex;
-        createJavaStratum();
-        storeStratum("*terminator*");
-    }
-
-    /***************** query functions ***********************/
-
-    private int stiLineTableIndex(int sti, int jplsLine) {
-        int i;
-        int lineIndexStart;
-        int lineIndexEnd;
-
-        lineIndexStart = stratumTable[sti].lineIndex;
-        /* one past end */
-        lineIndexEnd = stratumTable[sti+1].lineIndex;
-        for (i = lineIndexStart; i < lineIndexEnd; ++i) {
-            if ((jplsLine >= lineTable[i].jplsStart) &&
-                            (jplsLine <= lineTable[i].jplsEnd)) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    private int stiLineNumber(int sti, int lti, int jplsLine) {
-        return lineTable[lti].njplsStart +
-                (((jplsLine - lineTable[lti].jplsStart) /
-                                   lineTable[lti].jplsLineInc));
-    }
-
-    private int fileTableIndex(int sti, int fileId) {
-        int i;
-        int fileIndexStart = stratumTable[sti].fileIndex;
-        /* one past end */
-        int fileIndexEnd = stratumTable[sti+1].fileIndex;
-        for (i = fileIndexStart; i < fileIndexEnd; ++i) {
-            if (fileTable[i].fileId == fileId) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    private int stiFileTableIndex(int sti, int lti) {
-        return fileTableIndex(sti, lineTable[lti].fileId);
-    }
-
-    boolean isValid() {
-        return isValid;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ShortTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class ShortTypeImpl extends PrimitiveTypeImpl implements ShortType {
-    ShortTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-
-    public String signature() {
-        return "S";
-    }
-
-    PrimitiveValue convert(PrimitiveValue value) throws InvalidTypeException {
-        return vm.mirrorOf(((PrimitiveValueImpl)value).checkedShortValue());
-    }
-
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ShortValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2002, 2011, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class ShortValueImpl extends PrimitiveValueImpl
-                            implements ShortValue {
-    private short value;
-
-    ShortValueImpl(VirtualMachine aVm,short aValue) {
-        super(aVm);
-
-        value = aValue;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof ShortValue)) {
-            return (value == ((ShortValue)obj).value()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        /*
-         * TO DO: Better hash code
-         */
-        return intValue();
-    }
-
-    public int compareTo(ShortValue shortVal) {
-        return value() - shortVal.value();
-    }
-
-    public Type type() {
-        return vm.theShortType();
-    }
-
-    public short value() {
-        return value;
-    }
-
-    public boolean booleanValue() {
-        return(value == 0)?false:true;
-    }
-
-    public byte byteValue() {
-        return(byte)value;
-    }
-
-    public char charValue() {
-        return(char)value;
-    }
-
-    public short shortValue() {
-        return(short)value;
-    }
-
-    public int intValue() {
-        return(int)value;
-    }
-
-    public long longValue() {
-        return(long)value;
-    }
-
-    public float floatValue() {
-        return(float)value;
-    }
-
-    public double doubleValue() {
-        return(double)value;
-    }
-
-    byte checkedByteValue() throws InvalidTypeException {
-        if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to byte");
-        } else {
-            return super.checkedByteValue();
-        }
-    }
-
-    char checkedCharValue() throws InvalidTypeException {
-        if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
-            throw new InvalidTypeException("Can't convert " + value + " to char");
-        } else {
-            return super.checkedCharValue();
-        }
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StackFrameImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,314 +0,0 @@
-/*
- * Copyright (c) 2002, 2005, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.ObjectHeap;
-import sun.jvm.hotspot.debugger.OopHandle;
-import sun.jvm.hotspot.oops.Array;
-import sun.jvm.hotspot.oops.ObjArray;
-import sun.jvm.hotspot.oops.TypeArray;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.runtime.BasicType;
-import sun.jvm.hotspot.runtime.JavaVFrame;
-import sun.jvm.hotspot.runtime.StackValue;
-import sun.jvm.hotspot.runtime.StackValueCollection;
-import sun.jvm.hotspot.utilities.Assert;
-import java.util.List;
-import java.util.Map;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Collections;
-
-public class StackFrameImpl extends MirrorImpl
-                            implements StackFrame
-{
-    /* Once false, frame should not be used.
-     * access synchronized on (vm.state())
-     */
-    private boolean isValid = true;
-
-    private final ThreadReferenceImpl thread;
-    private final JavaVFrame saFrame;
-    private final Location location;
-    private Map visibleVariables =  null;
-    private ObjectReference thisObject = null;
-
-    StackFrameImpl(VirtualMachine vm, ThreadReferenceImpl thread,
-                   JavaVFrame jvf) {
-        super(vm);
-        this.thread = thread;
-        this.saFrame = jvf;
-
-        sun.jvm.hotspot.oops.Method SAMethod = jvf.getMethod();
-
-        ReferenceType rt = ((VirtualMachineImpl)vm).referenceType(SAMethod.getMethodHolder());
-
-        this.location = new LocationImpl(vm, rt, SAMethod, (long)jvf.getBCI());
-    }
-
-    private void validateStackFrame() {
-        if (!isValid) {
-            throw new InvalidStackFrameException("Thread has been resumed");
-        }
-    }
-
-    JavaVFrame getJavaVFrame() {
-        return saFrame;
-    }
-
-    /**
-     * Return the frame location.
-     * Need not be synchronized since it cannot be provably stale.
-     */
-    public Location location() {
-        validateStackFrame();
-        return location;
-    }
-
-    /**
-     * Return the thread holding the frame.
-     * Need not be synchronized since it cannot be provably stale.
-     */
-    public ThreadReference thread() {
-        validateStackFrame();
-        return thread;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof StackFrameImpl)) {
-            StackFrameImpl other = (StackFrameImpl)obj;
-            return (saFrame.equals(other.saFrame));
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        return saFrame.hashCode();
-    }
-
-    public ObjectReference thisObject() {
-        validateStackFrame();
-        MethodImpl currentMethod = (MethodImpl)location.method();
-        if (currentMethod.isStatic() || currentMethod.isNative()) {
-            return null;
-        }
-        if (thisObject == null) {
-            StackValueCollection values = saFrame.getLocals();
-            if (Assert.ASSERTS_ENABLED) {
-                Assert.that(values.size() > 0, "this is missing");
-            }
-            // 'this' at index 0.
-            if (values.get(0).getType() == BasicType.getTConflict()) {
-              return null;
-            }
-            OopHandle handle = values.oopHandleAt(0);
-            ObjectHeap heap = vm.saObjectHeap();
-            thisObject = vm.objectMirror(heap.newOop(handle));
-        }
-        return thisObject;
-    }
-
-    /**
-     * Build the visible variable map.
-     * Need not be synchronized since it cannot be provably stale.
-     */
-    private void createVisibleVariables() throws AbsentInformationException {
-        if (visibleVariables == null) {
-            List allVariables = location.method().variables();
-            Map map = new HashMap(allVariables.size());
-
-            Iterator iter = allVariables.iterator();
-            while (iter.hasNext()) {
-                LocalVariableImpl variable = (LocalVariableImpl)iter.next();
-                String name = variable.name();
-                if (variable.isVisible(this)) {
-                    LocalVariable existing = (LocalVariable)map.get(name);
-                    if ((existing == null) ||
-                        variable.hides(existing)) {
-                        map.put(name, variable);
-                    }
-                }
-            }
-            visibleVariables = map;
-        }
-    }
-
-    /**
-     * Return the list of visible variable in the frame.
-     * Need not be synchronized since it cannot be provably stale.
-     */
-    public List visibleVariables() throws AbsentInformationException {
-        validateStackFrame();
-        createVisibleVariables();
-        List mapAsList = new ArrayList(visibleVariables.values());
-        Collections.sort(mapAsList);
-        return mapAsList;
-    }
-
-    /**
-     * Return a particular variable in the frame.
-     * Need not be synchronized since it cannot be provably stale.
-     */
-    public LocalVariable visibleVariableByName(String name) throws AbsentInformationException  {
-        validateStackFrame();
-        createVisibleVariables();
-        return (LocalVariable)visibleVariables.get(name);
-    }
-
-    public Value getValue(LocalVariable variable) {
-        List list = new ArrayList(1);
-        list.add(variable);
-        Map map = getValues(list);
-        return (Value)map.get(variable);
-    }
-
-    public Map getValues(List variables) {
-        validateStackFrame();
-        StackValueCollection values = saFrame.getLocals();
-
-        int count = variables.size();
-        Map map = new HashMap(count);
-        for (int ii=0; ii<count; ++ii) {
-            LocalVariableImpl variable = (LocalVariableImpl)variables.get(ii);
-            if (!variable.isVisible(this)) {
-                throw new IllegalArgumentException(variable.name() +
-                                 " is not valid at this frame location");
-            }
-            ValueImpl valueImpl;
-            int ss = variable.slot();
-            char c = variable.signature().charAt(0);
-            BasicType variableType = BasicType.charToBasicType(c);
-            valueImpl = getSlotValue(values, variableType, ss);
-            map.put(variable, valueImpl);
-        }
-        return map;
-    }
-
-    public List getArgumentValues() {
-        validateStackFrame();
-        StackValueCollection values = saFrame.getLocals();
-        MethodImpl mmm = (MethodImpl)location.method();
-        if (mmm.isNative())
-            return null;
-        List argSigs = mmm.argumentSignatures();
-        int count = argSigs.size();
-        List res = new ArrayList(0);
-
-        int slot = mmm.isStatic()? 0 : 1;
-        for (int ii = 0; ii < count; ++slot, ++ii) {
-            char sigChar = ((String)argSigs.get(ii)).charAt(0);
-            BasicType variableType = BasicType.charToBasicType(sigChar);
-            res.add(getSlotValue(values, variableType, slot));
-            if (sigChar == 'J' || sigChar == 'D') {
-                slot++;
-            }
-        }
-        return res;
-    }
-
-    private ValueImpl getSlotValue(StackValueCollection values,
-                       BasicType variableType, int ss) {
-        ValueImpl valueImpl = null;
-        OopHandle handle = null;
-        ObjectHeap heap = vm.saObjectHeap();
-        if (values.get(ss).getType() == BasicType.getTConflict()) {
-          // Dead locals, so just represent them as a zero of the appropriate type
-          if (variableType == BasicType.T_BOOLEAN) {
-            valueImpl = (BooleanValueImpl) vm.mirrorOf(false);
-          } else if (variableType == BasicType.T_CHAR) {
-            valueImpl = (CharValueImpl) vm.mirrorOf((char)0);
-          } else if (variableType == BasicType.T_FLOAT) {
-            valueImpl = (FloatValueImpl) vm.mirrorOf((float)0);
-          } else if (variableType == BasicType.T_DOUBLE) {
-            valueImpl = (DoubleValueImpl) vm.mirrorOf((double)0);
-          } else if (variableType == BasicType.T_BYTE) {
-            valueImpl = (ByteValueImpl) vm.mirrorOf((byte)0);
-          } else if (variableType == BasicType.T_SHORT) {
-            valueImpl = (ShortValueImpl) vm.mirrorOf((short)0);
-          } else if (variableType == BasicType.T_INT) {
-            valueImpl = (IntegerValueImpl) vm.mirrorOf((int)0);
-          } else if (variableType == BasicType.T_LONG) {
-            valueImpl = (LongValueImpl) vm.mirrorOf((long)0);
-          } else if (variableType == BasicType.T_OBJECT) {
-            // we may have an [Ljava/lang/Object; - i.e., Object[] with the
-            // elements themselves may be arrays because every array is an Object.
-            handle = null;
-            valueImpl = (ObjectReferenceImpl) vm.objectMirror(heap.newOop(handle));
-          } else if (variableType == BasicType.T_ARRAY) {
-            handle = null;
-            valueImpl = vm.arrayMirror((Array)heap.newOop(handle));
-          } else if (variableType == BasicType.T_VOID) {
-            valueImpl = new VoidValueImpl(vm);
-          } else {
-            throw new RuntimeException("Should not read here");
-          }
-        } else {
-          if (variableType == BasicType.T_BOOLEAN) {
-            valueImpl = (BooleanValueImpl) vm.mirrorOf(values.booleanAt(ss));
-          } else if (variableType == BasicType.T_CHAR) {
-            valueImpl = (CharValueImpl) vm.mirrorOf(values.charAt(ss));
-          } else if (variableType == BasicType.T_FLOAT) {
-            valueImpl = (FloatValueImpl) vm.mirrorOf(values.floatAt(ss));
-          } else if (variableType == BasicType.T_DOUBLE) {
-            valueImpl = (DoubleValueImpl) vm.mirrorOf(values.doubleAt(ss));
-          } else if (variableType == BasicType.T_BYTE) {
-            valueImpl = (ByteValueImpl) vm.mirrorOf(values.byteAt(ss));
-          } else if (variableType == BasicType.T_SHORT) {
-            valueImpl = (ShortValueImpl) vm.mirrorOf(values.shortAt(ss));
-          } else if (variableType == BasicType.T_INT) {
-            valueImpl = (IntegerValueImpl) vm.mirrorOf(values.intAt(ss));
-          } else if (variableType == BasicType.T_LONG) {
-            valueImpl = (LongValueImpl) vm.mirrorOf(values.longAt(ss));
-          } else if (variableType == BasicType.T_OBJECT) {
-            // we may have an [Ljava/lang/Object; - i.e., Object[] with the
-            // elements themselves may be arrays because every array is an Object.
-            handle = values.oopHandleAt(ss);
-            valueImpl = (ObjectReferenceImpl) vm.objectMirror(heap.newOop(handle));
-          } else if (variableType == BasicType.T_ARRAY) {
-            handle = values.oopHandleAt(ss);
-            valueImpl = vm.arrayMirror((Array)heap.newOop(handle));
-          } else if (variableType == BasicType.T_VOID) {
-            valueImpl = new VoidValueImpl(vm);
-          } else {
-            throw new RuntimeException("Should not read here");
-          }
-        }
-
-        return valueImpl;
-    }
-
-    public void setValue(LocalVariable variableIntf, Value valueIntf)
-        throws InvalidTypeException, ClassNotLoadedException {
-
-        vm.throwNotReadOnlyException("StackFrame.setValue()");
-    }
-
-    public String toString() {
-        return location.toString() + " in thread " + thread.toString();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StratumLineInfo.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-class StratumLineInfo implements LineInfo {
-    private final String stratumID;
-    private final int lineNumber;
-    private final String sourceName;
-    private final String sourcePath;
-
-    StratumLineInfo(String stratumID, int lineNumber,
-                    String sourceName, String sourcePath) {
-        this.stratumID = stratumID;
-        this.lineNumber = lineNumber;
-        this.sourceName = sourceName;
-        this.sourcePath = sourcePath;
-    }
-
-    public String liStratum() {
-        return stratumID;
-    }
-
-    public int liLineNumber() {
-        return lineNumber;
-    }
-
-    public String liSourceName()
-                            throws AbsentInformationException {
-        if (sourceName == null) {
-            throw new AbsentInformationException();
-        }
-        return sourceName;
-    }
-
-    public String liSourcePath()
-                            throws AbsentInformationException {
-        if (sourcePath == null) {
-            throw new AbsentInformationException();
-        }
-        return sourcePath;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/StringReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.OopUtilities;
-
-public class StringReferenceImpl extends ObjectReferenceImpl
-    implements StringReference
-{
-    private String value;
-
-    StringReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Instance oRef) {
-        super(aVm,oRef);
-        value = OopUtilities.stringOopToString(oRef);
-    }
-
-    public String value() {
-        return value;
-    }
-
-    public String toString() {
-        return "\"" + value() + "\"";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ThreadGroupReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.OopUtilities;
-import sun.jvm.hotspot.runtime.JavaThread;
-import com.sun.jdi.*;
-import java.util.*;
-
-public class ThreadGroupReferenceImpl extends ObjectReferenceImpl
-    implements ThreadGroupReference
-{
-    ThreadGroupReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.oops.Oop oRef) {
-        super(aVm, oRef);
-    }
-
-    protected String description() {
-        return "ThreadGroupReference " + uniqueID();
-    }
-
-    public String name() {
-        return OopUtilities.threadGroupOopGetName(ref());
-    }
-
-    public ThreadGroupReference parent() {
-        return (ThreadGroupReferenceImpl)vm.threadGroupMirror(
-               (Instance)OopUtilities.threadGroupOopGetParent(ref()));
-    }
-
-    public void suspend() {
-        vm.throwNotReadOnlyException("ThreadGroupReference.suspend()");
-    }
-
-    public void resume() {
-        vm.throwNotReadOnlyException("ThreadGroupReference.resume()");
-    }
-
-    public List threads() {
-        // Each element of this array is the Oop for a thread;
-        // NOTE it is not the JavaThread that we need to create
-        // a ThreadReferenceImpl.
-        Oop[] myThreads = OopUtilities.threadGroupOopGetThreads(ref());
-
-        ArrayList myList = new ArrayList(myThreads.length);
-        for (int ii = 0; ii < myThreads.length; ii++) {
-            JavaThread jt = OopUtilities.threadOopGetJavaThread(myThreads[ii]);
-            if (jt != null) {
-                ThreadReferenceImpl xx = (ThreadReferenceImpl)vm.threadMirror(jt);
-                myList.add(xx);
-            }
-        }
-        return myList;
-    }
-
-    public List threadGroups() {
-        Oop[] myGroups = OopUtilities.threadGroupOopGetGroups(ref());
-        ArrayList myList = new ArrayList(myGroups.length);
-        for (int ii = 0; ii < myGroups.length; ii++) {
-            ThreadGroupReferenceImpl xx = (ThreadGroupReferenceImpl)vm.threadGroupMirror(
-                                          (Instance)myGroups[ii]);
-            myList.add(xx);
-
-        }
-        return myList;
-    }
-
-    public String toString() {
-        return "instance of " + referenceType().name() +
-               "(name='" + name() + "', " + "id=" + uniqueID() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ThreadReferenceImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-/*
- * Copyright (c) 2002, 2009, 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 sun.jvm.hotspot.jdi;
-
-import sun.jvm.hotspot.debugger.OopHandle;
-import sun.jvm.hotspot.runtime.VMObject;
-import sun.jvm.hotspot.runtime.JavaThread;
-import sun.jvm.hotspot.runtime.OSThread;
-//import sun.jvm.hotspot.runtime.StackFrameStream;
-import sun.jvm.hotspot.runtime.JavaVFrame;
-import sun.jvm.hotspot.runtime.JavaThreadState;
-import sun.jvm.hotspot.runtime.MonitorInfo;
-import sun.jvm.hotspot.runtime.ObjectMonitor;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.ObjectHeap;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.OopUtilities;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.utilities.Assert;
-import com.sun.jdi.*;
-import java.util.*;
-
-public class ThreadReferenceImpl extends ObjectReferenceImpl
-             implements ThreadReference, /* imports */ JVMTIThreadState {
-
-    private JavaThread myJavaThread;
-    private ArrayList frames;    // StackFrames
-    private List ownedMonitors; // List<ObjectReferenceImpl>
-    private List ownedMonitorsInfo; // List<MonitorInfo>
-    private ObjectReferenceImpl currentContendingMonitor;
-
-    ThreadReferenceImpl(VirtualMachine aVm, sun.jvm.hotspot.runtime.JavaThread aRef) {
-        // We are given a JavaThread and save it in our myJavaThread field.
-        // But, our parent class is an ObjectReferenceImpl so we need an Oop
-        // for it.  JavaThread is a wrapper around a Thread Oop so we get
-        // that Oop and give it to our super.
-        // We can get it back again by calling ref().
-        super(aVm, (Instance)aRef.getThreadObj());
-        myJavaThread = aRef;
-    }
-
-    ThreadReferenceImpl(VirtualMachine vm, Instance oRef) {
-        // Instance must be of type java.lang.Thread
-        super(vm, oRef);
-
-        // JavaThread retrieved from java.lang.Thread instance may be null.
-        // This is the case for threads not-started and for zombies. Wherever
-        // appropriate, check for null instead of resulting in NullPointerException.
-        myJavaThread = OopUtilities.threadOopGetJavaThread(oRef);
-    }
-
-    // return value may be null. refer to the comment in constructor.
-    JavaThread getJavaThread() {
-        return myJavaThread;
-    }
-
-    protected String description() {
-        return "ThreadReference " + uniqueID();
-    }
-
-    /**
-     * Note that we only cache the name string while suspended because
-     * it can change via Thread.setName arbitrarily
-     */
-    public String name() {
-        return OopUtilities.threadOopGetName(ref());
-    }
-
-    public void suspend() {
-        vm.throwNotReadOnlyException("ThreadReference.suspend()");
-    }
-
-    public void resume() {
-        vm.throwNotReadOnlyException("ThreadReference.resume()");
-    }
-
-    public int suspendCount() {
-        // all threads are "suspended" when we attach to process or core.
-        // we interpret this as one suspend.
-        return 1;
-    }
-
-    public void stop(ObjectReference throwable) throws InvalidTypeException {
-        vm.throwNotReadOnlyException("ThreadReference.stop()");
-    }
-
-    public void interrupt() {
-        vm.throwNotReadOnlyException("ThreadReference.interrupt()");
-    }
-
-    // refer to jvmtiEnv::GetThreadState
-    private int jvmtiGetThreadState() {
-        // get most state bits
-        int state = OopUtilities.threadOopGetThreadStatus(ref());
-        // add more state bits
-        if (myJavaThread != null) {
-            JavaThreadState jts = myJavaThread.getThreadState();
-            if (myJavaThread.isBeingExtSuspended()) {
-                state |= JVMTI_THREAD_STATE_SUSPENDED;
-            }
-            if (jts == JavaThreadState.IN_NATIVE) {
-                state |= JVMTI_THREAD_STATE_IN_NATIVE;
-            }
-            OSThread osThread = myJavaThread.getOSThread();
-            if (osThread != null && osThread.interrupted()) {
-                state |= JVMTI_THREAD_STATE_INTERRUPTED;
-            }
-        }
-        return state;
-    }
-
-    public int status() {
-        int state = jvmtiGetThreadState();
-        int status = THREAD_STATUS_UNKNOWN;
-        // refer to map2jdwpThreadStatus in util.c (back-end)
-        if (! ((state & JVMTI_THREAD_STATE_ALIVE) != 0) ) {
-            if ((state & JVMTI_THREAD_STATE_TERMINATED) != 0) {
-                status = THREAD_STATUS_ZOMBIE;
-            } else {
-                status = THREAD_STATUS_NOT_STARTED;
-            }
-        } else {
-            if ((state & JVMTI_THREAD_STATE_SLEEPING) != 0) {
-                status = THREAD_STATUS_SLEEPING;
-            } else if ((state & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
-                status = THREAD_STATUS_MONITOR;
-            } else if ((state & JVMTI_THREAD_STATE_WAITING) != 0) {
-                status = THREAD_STATUS_WAIT;
-            } else if ((state & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
-                status = THREAD_STATUS_RUNNING;
-            }
-        }
-        return status;
-    }
-
-    public boolean isSuspended() { //fixme jjh
-        // If we want to support doing this for a VM which was being
-        // debugged, then we need to fix this.
-        // In the meantime, we will say all threads are suspended,
-        // otherwise, some things won't work, like the jdb 'up' cmd.
-        return true;
-    }
-
-    public boolean isAtBreakpoint() { //fixme jjh
-        // If we want to support doing this for a VM which was being
-        // debugged, then we need to fix this.
-        return false;
-    }
-
-    public ThreadGroupReference threadGroup() {
-        return (ThreadGroupReferenceImpl)vm.threadGroupMirror(
-               (Instance)OopUtilities.threadOopGetThreadGroup(ref()));
-    }
-
-    public int frameCount() throws IncompatibleThreadStateException  { //fixme jjh
-        privateFrames(0, -1);
-        return frames.size();
-    }
-
-    public List frames() throws IncompatibleThreadStateException  {
-        return privateFrames(0, -1);
-    }
-
-    public StackFrame frame(int index) throws IncompatibleThreadStateException  {
-        List list = privateFrames(index, 1);
-        return (StackFrame)list.get(0);
-    }
-
-    public List frames(int start, int length)
-                              throws IncompatibleThreadStateException  {
-        if (length < 0) {
-            throw new IndexOutOfBoundsException(
-                "length must be greater than or equal to zero");
-        }
-        return privateFrames(start, length);
-    }
-
-    /**
-     * Private version of frames() allows "-1" to specify all
-     * remaining frames.
-     */
-
-    private List privateFrames(int start, int length)
-                              throws IncompatibleThreadStateException  {
-        if (myJavaThread == null) {
-            // for zombies and yet-to-be-started threads we need to throw exception
-            throw new IncompatibleThreadStateException();
-        }
-        if (frames == null) {
-            frames = new ArrayList(10);
-            JavaVFrame myvf = myJavaThread.getLastJavaVFrameDbg();
-            while (myvf != null) {
-                StackFrame myFrame = new StackFrameImpl(vm, this, myvf);
-                //fixme jjh null should be a Location
-                frames.add(myFrame);
-                myvf = (JavaVFrame)myvf.javaSender();
-            }
-        }
-
-        List retVal;
-        if (frames.size() == 0) {
-            retVal = new ArrayList(0);
-        } else {
-            int toIndex = start + length;
-            if (length == -1) {
-                toIndex = frames.size();
-            }
-            retVal = frames.subList(start, toIndex);
-        }
-        return Collections.unmodifiableList(retVal);
-    }
-
-    // refer to JvmtiEnvBase::get_owned_monitors
-    public List ownedMonitors()  throws IncompatibleThreadStateException {
-        if (vm.canGetOwnedMonitorInfo() == false) {
-            throw new UnsupportedOperationException();
-        }
-
-        if (myJavaThread == null) {
-           throw new IncompatibleThreadStateException();
-        }
-
-        if (ownedMonitors != null) {
-            return ownedMonitors;
-        }
-
-        ownedMonitorsWithStackDepth();
-
-        for (Iterator omi = ownedMonitorsInfo.iterator(); omi.hasNext(); ) {
-            //FIXME : Change the MonitorInfoImpl cast to com.sun.jdi.MonitorInfo
-            //        when hotspot start building with jdk1.6.
-            ownedMonitors.add(((MonitorInfoImpl)omi.next()).monitor());
-        }
-
-        return ownedMonitors;
-    }
-
-    // new method since 1.6.
-    // Real body will be supplied later.
-    public List ownedMonitorsAndFrames() throws IncompatibleThreadStateException {
-        if (!vm.canGetMonitorFrameInfo()) {
-            throw new UnsupportedOperationException(
-                "target does not support getting Monitor Frame Info");
-        }
-
-        if (myJavaThread == null) {
-           throw new IncompatibleThreadStateException();
-        }
-
-        if (ownedMonitorsInfo != null) {
-            return ownedMonitorsInfo;
-        }
-
-        ownedMonitorsWithStackDepth();
-        return ownedMonitorsInfo;
-    }
-
-    private void ownedMonitorsWithStackDepth() {
-
-        ownedMonitorsInfo = new ArrayList();
-        List lockedObjects = new ArrayList(); // List<OopHandle>
-        List stackDepth = new ArrayList(); // List<int>
-        ObjectMonitor waitingMonitor = myJavaThread.getCurrentWaitingMonitor();
-        ObjectMonitor pendingMonitor = myJavaThread.getCurrentPendingMonitor();
-        OopHandle waitingObj = null;
-        if (waitingMonitor != null) {
-            // save object of current wait() call (if any) for later comparison
-            waitingObj = waitingMonitor.object();
-        }
-        OopHandle pendingObj = null;
-        if (pendingMonitor != null) {
-            // save object of current enter() call (if any) for later comparison
-            pendingObj = pendingMonitor.object();
-        }
-
-        JavaVFrame frame = myJavaThread.getLastJavaVFrameDbg();
-        int depth=0;
-        while (frame != null) {
-            List frameMonitors = frame.getMonitors();  // List<MonitorInfo>
-            for (Iterator miItr = frameMonitors.iterator(); miItr.hasNext(); ) {
-                sun.jvm.hotspot.runtime.MonitorInfo mi = (sun.jvm.hotspot.runtime.MonitorInfo) miItr.next();
-                if (mi.eliminated() && frame.isCompiledFrame()) {
-                  continue; // skip eliminated monitor
-                }
-                OopHandle obj = mi.owner();
-                if (obj == null) {
-                    // this monitor doesn't have an owning object so skip it
-                    continue;
-                }
-
-                if (obj.equals(waitingObj)) {
-                    // the thread is waiting on this monitor so it isn't really owned
-                    continue;
-                }
-
-                if (obj.equals(pendingObj)) {
-                    // the thread is pending on this monitor so it isn't really owned
-                    continue;
-                }
-
-                boolean found = false;
-                for (Iterator loItr = lockedObjects.iterator(); loItr.hasNext(); ) {
-                    // check for recursive locks
-                    if (obj.equals(loItr.next())) {
-                        found = true;
-                        break;
-                    }
-                }
-                if (found) {
-                    // already have this object so don't include it
-                    continue;
-                }
-                // add the owning object to our list
-                lockedObjects.add(obj);
-                stackDepth.add(new Integer(depth));
-            }
-            frame = (JavaVFrame) frame.javaSender();
-            depth++;
-        }
-
-        // now convert List<OopHandle> to List<ObjectReference>
-        ObjectHeap heap = vm.saObjectHeap();
-        Iterator stk = stackDepth.iterator();
-        for (Iterator loItr = lockedObjects.iterator(); loItr.hasNext(); ) {
-            Oop obj = heap.newOop((OopHandle)loItr.next());
-            ownedMonitorsInfo.add(new MonitorInfoImpl(vm, vm.objectMirror(obj), this,
-                                                              ((Integer)stk.next()).intValue()));
-        }
-    }
-
-    // refer to JvmtiEnvBase::get_current_contended_monitor
-    public ObjectReference currentContendedMonitor()
-                              throws IncompatibleThreadStateException  {
-        if (vm.canGetCurrentContendedMonitor() == false) {
-            throw new UnsupportedOperationException();
-        }
-
-        if (myJavaThread == null) {
-           throw new IncompatibleThreadStateException();
-        }
-        ObjectMonitor mon = myJavaThread.getCurrentWaitingMonitor();
-        if (mon == null) {
-           // thread is not doing an Object.wait() call
-           mon = myJavaThread.getCurrentPendingMonitor();
-           if (mon != null) {
-               OopHandle handle = mon.object();
-               // If obj == NULL, then ObjectMonitor is raw which doesn't count
-               // as contended for this API
-               return vm.objectMirror(vm.saObjectHeap().newOop(handle));
-           } else {
-               // no contended ObjectMonitor
-               return null;
-           }
-        } else {
-           // thread is doing an Object.wait() call
-           OopHandle handle = mon.object();
-           if (Assert.ASSERTS_ENABLED) {
-               Assert.that(handle != null, "Object.wait() should have an object");
-           }
-           Oop obj = vm.saObjectHeap().newOop(handle);
-           return vm.objectMirror(obj);
-        }
-    }
-
-
-    public void popFrames(StackFrame frame) throws IncompatibleThreadStateException {
-        vm.throwNotReadOnlyException("ThreadReference.popFrames()");
-    }
-
-    public void forceEarlyReturn(Value returnValue) throws IncompatibleThreadStateException {
-        vm.throwNotReadOnlyException("ThreadReference.forceEarlyReturn()");
-    }
-
-    public String toString() {
-        return "instance of " + referenceType().name() +
-               "(name='" + name() + "', " + "id=" + uniqueID() + ")";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/TypeComponentImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.InstanceKlass;
-
-import java.util.List;
-
-/**
- * There is no SA class that corresponds to this.  Therefore,
- * all the methods in this class which involve the SA mirror class
- * have to be implemented in the subclasses.
- */
-abstract public class TypeComponentImpl extends MirrorImpl
-    implements TypeComponent {
-
-    protected final ReferenceTypeImpl declaringType;
-    protected String signature;
-
-    TypeComponentImpl(VirtualMachine vm, ReferenceTypeImpl declaringType) {
-        super(vm);
-        this.declaringType = declaringType;
-    }
-
-    public ReferenceType declaringType() {
-        return declaringType;
-    }
-
-    public String signature() {
-        return signature;
-    }
-
-    abstract public String name();
-    abstract public int modifiers();
-    abstract public boolean isPackagePrivate();
-    abstract public boolean isPrivate();
-    abstract public boolean isProtected();
-    abstract public boolean isPublic();
-    abstract public boolean isStatic();
-    abstract public boolean isFinal();
-    abstract public int hashCode();
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/TypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public abstract class TypeImpl extends MirrorImpl implements Type
-{
-    private String typeName;
-
-    TypeImpl(VirtualMachine aVm) {
-        super(aVm);
-    }
-
-    public abstract String signature();
-
-    public String name() {
-        if (typeName == null) {
-            JNITypeParser parser = new JNITypeParser(signature());
-            typeName = parser.typeName();
-        }
-        return typeName;
-    }
-
-    public boolean equals(Object obj) {
-        if ((obj != null) && (obj instanceof Type)) {
-            Type other = (Type)obj;
-            return signature().equals(other.signature()) &&
-                   super.equals(obj);
-        } else {
-            return false;
-        }
-    }
-
-    public int hashCode() {
-        return signature().hashCode();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VMModifiers.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import sun.jvm.hotspot.runtime.ClassConstants;
-import com.sun.jdi.*;
-
-public interface VMModifiers extends ClassConstants {
-    int PUBLIC       = (int) JVM_ACC_PUBLIC;       /* visible to everyone */
-    int PRIVATE      = (int) JVM_ACC_PRIVATE;      /* visible only to the defining class */
-    int PROTECTED    = (int) JVM_ACC_PROTECTED;    /* visible to subclasses */
-    int STATIC       = (int) JVM_ACC_STATIC;       /* instance variable is static */
-    int FINAL        = (int) JVM_ACC_FINAL;        /* no further subclassing, overriding */
-    int SYNCHRONIZED = (int) JVM_ACC_SYNCHRONIZED; /* wrap method call in monitor lock */
-    int VOLATILE     = (int) JVM_ACC_VOLATILE;     /* can cache in registers */
-    int BRIDGE       = (int) JVM_ACC_BRIDGE;       /* bridge method generated by compiler */
-    int TRANSIENT    = (int) JVM_ACC_TRANSIENT;    /* not persistant */
-    int VARARGS      = (int) JVM_ACC_VARARGS;      /* method declared with variable number of args */
-    int IS_ENUM_CONSTANT = (int) JVM_ACC_ENUM;     /* field is declared as element of enum */
-    int NATIVE       = (int) JVM_ACC_NATIVE;       /* implemented in C */
-    int INTERFACE    = (int) JVM_ACC_INTERFACE;    /* class is an interface */
-    int ABSTRACT     = (int) JVM_ACC_ABSTRACT;     /* no definition provided */
-    int SYNTHETIC    = (int) JVM_ACC_SYNTHETIC;    /* not in source code */
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ValueContainer.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-/*
- * This interface allows us to pass fields, variables, and
- * array components through the same interfaces. This currently allows
- * more common code for type checking. In the future we could use it for
- * more.
- */
-interface ValueContainer {
-    Type type() throws ClassNotLoadedException;
-    Type findType(String signature) throws ClassNotLoadedException;
-    String typeName();
-    String signature();
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/ValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-abstract class ValueImpl extends MirrorImpl implements Value {
-    ValueImpl(VirtualMachine aVm) {
-        super(aVm);
-    }
-
-    // type() is in the subclasses
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1224 +0,0 @@
-/*
- * Copyright (c) 2002, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-import com.sun.jdi.event.EventQueue;
-import com.sun.jdi.request.EventRequestManager;
-
-import sun.jvm.hotspot.HotSpotAgent;
-import sun.jvm.hotspot.types.TypeDataBase;
-import sun.jvm.hotspot.oops.Klass;
-import sun.jvm.hotspot.oops.InstanceKlass;
-import sun.jvm.hotspot.oops.ArrayKlass;
-import sun.jvm.hotspot.oops.ObjArrayKlass;
-import sun.jvm.hotspot.oops.TypeArrayKlass;
-import sun.jvm.hotspot.oops.Oop;
-import sun.jvm.hotspot.oops.Instance;
-import sun.jvm.hotspot.oops.Array;
-import sun.jvm.hotspot.oops.ObjArray;
-import sun.jvm.hotspot.oops.TypeArray;
-import sun.jvm.hotspot.oops.Symbol;
-import sun.jvm.hotspot.oops.ObjectHeap;
-import sun.jvm.hotspot.oops.DefaultHeapVisitor;
-import sun.jvm.hotspot.oops.JVMDIClassStatus;
-import sun.jvm.hotspot.runtime.VM;
-import sun.jvm.hotspot.runtime.JavaThread;
-import sun.jvm.hotspot.memory.SystemDictionary;
-import sun.jvm.hotspot.memory.SymbolTable;
-import sun.jvm.hotspot.memory.Universe;
-import sun.jvm.hotspot.utilities.Assert;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Observer;
-import java.util.StringTokenizer;
-import java.lang.ref.SoftReference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.Reference;
-
-public class VirtualMachineImpl extends MirrorImpl implements PathSearchingVirtualMachine {
-
-    private HotSpotAgent     saAgent = new HotSpotAgent();
-    private VM               saVM;
-    private Universe         saUniverse;
-    private SystemDictionary saSystemDictionary;
-    private SymbolTable      saSymbolTable;
-    private ObjectHeap       saObjectHeap;
-
-    VM saVM() {
-        return saVM;
-    }
-
-    SystemDictionary saSystemDictionary() {
-        return saSystemDictionary;
-    }
-
-    SymbolTable saSymbolTable() {
-        return saSymbolTable;
-    }
-
-    Universe saUniverse() {
-        return saUniverse;
-    }
-
-    ObjectHeap saObjectHeap() {
-        return saObjectHeap;
-    }
-
-    com.sun.jdi.VirtualMachineManager vmmgr;
-
-    private final ThreadGroup             threadGroupForJDI;
-
-    // Per-vm singletons for primitive types and for void.
-    // singleton-ness protected by "synchronized(this)".
-    private BooleanType theBooleanType;
-    private ByteType    theByteType;
-    private CharType    theCharType;
-    private ShortType   theShortType;
-    private IntegerType theIntegerType;
-    private LongType    theLongType;
-    private FloatType   theFloatType;
-    private DoubleType  theDoubleType;
-
-    private VoidType    theVoidType;
-
-    private VoidValue voidVal;
-    private Map       typesByID;             // Map<Klass, ReferenceTypeImpl>
-    private List      typesBySignature;      // List<ReferenceTypeImpl> - used in signature search
-    private boolean   retrievedAllTypes = false;
-    private List      bootstrapClasses;      // all bootstrap classes
-    private ArrayList allThreads;
-    private ArrayList topLevelGroups;
-    final   int       sequenceNumber;
-
-    // ObjectReference cache
-    // "objectsByID" protected by "synchronized(this)".
-    private final Map            objectsByID = new HashMap();
-    private final ReferenceQueue referenceQueue = new ReferenceQueue();
-
-    // names of some well-known classes to jdi
-    private Symbol javaLangString;
-    private Symbol javaLangThread;
-    private Symbol javaLangThreadGroup;
-    private Symbol javaLangClass;
-    private Symbol javaLangClassLoader;
-
-    // used in ReferenceTypeImpl.isThrowableBacktraceField
-    private Symbol javaLangThrowable;
-
-    // names of classes used in array assignment check
-    // refer to ArrayTypeImpl.isAssignableTo
-    private Symbol javaLangObject;
-    private Symbol javaLangCloneable;
-    private Symbol javaIoSerializable;
-
-    // symbol used in ClassTypeImpl.isEnum check
-    private Symbol javaLangEnum;
-
-    Symbol javaLangObject() {
-        return javaLangObject;
-    }
-
-    Symbol javaLangCloneable() {
-        return javaLangCloneable;
-    }
-
-    Symbol javaIoSerializable() {
-        return javaIoSerializable;
-    }
-
-    Symbol javaLangEnum() {
-        return javaLangEnum;
-    }
-
-    Symbol javaLangThrowable() {
-        return javaLangThrowable;
-    }
-
-    // name of the current default stratum
-    private String defaultStratum;
-
-    // initialize known class name symbols
-    private void initClassNameSymbols() {
-        SymbolTable st = saSymbolTable();
-        javaLangString = st.probe("java/lang/String");
-        javaLangThread = st.probe("java/lang/Thread");
-        javaLangThreadGroup = st.probe("java/lang/ThreadGroup");
-        javaLangClass = st.probe("java/lang/Class");
-        javaLangClassLoader = st.probe("java/lang/ClassLoader");
-        javaLangThrowable = st.probe("java/lang/Throwable");
-        javaLangObject = st.probe("java/lang/Object");
-        javaLangCloneable = st.probe("java/lang/Cloneable");
-        javaIoSerializable = st.probe("java/io/Serializable");
-        javaLangEnum = st.probe("java/lang/Enum");
-    }
-
-    private void init() {
-        saVM = VM.getVM();
-        saUniverse = saVM.getUniverse();
-        saSystemDictionary = saVM.getSystemDictionary();
-        saSymbolTable = saVM.getSymbolTable();
-        saObjectHeap = saVM.getObjectHeap();
-        initClassNameSymbols();
-    }
-
-    static public VirtualMachineImpl createVirtualMachineForCorefile(VirtualMachineManager mgr,
-                                                                     String javaExecutableName,
-                                                                     String coreFileName,
-                                                                     int sequenceNumber)
-        throws Exception {
-        if (Assert.ASSERTS_ENABLED) {
-            Assert.that(coreFileName != null, "SA VirtualMachineImpl: core filename = null is not yet implemented");
-        }
-        if (Assert.ASSERTS_ENABLED) {
-            Assert.that(javaExecutableName != null, "SA VirtualMachineImpl: java executable = null is not yet implemented");
-        }
-
-        VirtualMachineImpl myvm = new VirtualMachineImpl(mgr, sequenceNumber);
-        try {
-            myvm.saAgent.attach(javaExecutableName, coreFileName);
-            myvm.init();
-        } catch (Exception ee) {
-            myvm.saAgent.detach();
-            throw ee;
-        }
-        return myvm;
-    }
-
-    static public VirtualMachineImpl createVirtualMachineForPID(VirtualMachineManager mgr,
-                                                                int pid,
-                                                                int sequenceNumber)
-        throws Exception {
-
-        VirtualMachineImpl myvm = new VirtualMachineImpl(mgr, sequenceNumber);
-        try {
-            myvm.saAgent.attach(pid);
-            myvm.init();
-        } catch (Exception ee) {
-            myvm.saAgent.detach();
-            throw ee;
-        }
-        return myvm;
-    }
-
-    static public VirtualMachineImpl createVirtualMachineForServer(VirtualMachineManager mgr,
-                                                                String server,
-                                                                int sequenceNumber)
-        throws Exception {
-        if (Assert.ASSERTS_ENABLED) {
-            Assert.that(server != null, "SA VirtualMachineImpl: DebugServer = null is not yet implemented");
-        }
-
-        VirtualMachineImpl myvm = new VirtualMachineImpl(mgr, sequenceNumber);
-        try {
-            myvm.saAgent.attach(server);
-            myvm.init();
-        } catch (Exception ee) {
-            myvm.saAgent.detach();
-            throw ee;
-        }
-        return myvm;
-    }
-
-
-    VirtualMachineImpl(VirtualMachineManager mgr, int sequenceNumber)
-        throws Exception {
-        super(null);  // Can't use super(this)
-        vm = this;
-
-        this.sequenceNumber = sequenceNumber;
-        this.vmmgr = mgr;
-
-        /* Create ThreadGroup to be used by all threads servicing
-         * this VM.
-         */
-        threadGroupForJDI = new ThreadGroup("JDI [" +
-                                            this.hashCode() + "]");
-
-        ((com.sun.tools.jdi.VirtualMachineManagerImpl)mgr).addVirtualMachine(this);
-
-        // By default SA agent classes prefer Windows process debugger
-        // to windbg debugger. SA expects special properties to be set
-        // to choose other debuggers. We will set those here before
-        // attaching to SA agent.
-
-        System.setProperty("sun.jvm.hotspot.debugger.useWindbgDebugger", "true");
-    }
-
-    // we reflectively use newly spec'ed class because our ALT_BOOTDIR
-    // is 1.4.2 and not 1.5.
-    private static Class vmCannotBeModifiedExceptionClass = null;
-    void throwNotReadOnlyException(String operation) {
-        RuntimeException re = null;
-        if (vmCannotBeModifiedExceptionClass == null) {
-            try {
-                vmCannotBeModifiedExceptionClass = Class.forName("com.sun.jdi.VMCannotBeModifiedException");
-            } catch (ClassNotFoundException cnfe) {
-                vmCannotBeModifiedExceptionClass = UnsupportedOperationException.class;
-            }
-        }
-        try {
-            re = (RuntimeException) vmCannotBeModifiedExceptionClass.newInstance();
-        } catch (Exception exp) {
-            re = new RuntimeException(exp.getMessage());
-        }
-        throw re;
-    }
-
-    public boolean equals(Object obj) {
-        // Oh boy; big recursion troubles if we don't have this!
-        // See MirrorImpl.equals
-        return this == obj;
-    }
-
-    public int hashCode() {
-        // big recursion if we don't have this. See MirrorImpl.hashCode
-        return System.identityHashCode(this);
-    }
-
-    public List classesByName(String className) {
-        String signature = JNITypeParser.typeNameToSignature(className);
-        List list;
-        if (!retrievedAllTypes) {
-            retrieveAllClasses();
-        }
-        list = findReferenceTypes(signature);
-        return Collections.unmodifiableList(list);
-    }
-
-    public List allClasses() {
-        if (!retrievedAllTypes) {
-            retrieveAllClasses();
-        }
-        ArrayList a;
-        synchronized (this) {
-            a = new ArrayList(typesBySignature);
-        }
-        return Collections.unmodifiableList(a);
-    }
-
-    // classes loaded by bootstrap loader
-    List bootstrapClasses() {
-        if (bootstrapClasses == null) {
-            bootstrapClasses = new ArrayList();
-            List all = allClasses();
-            for (Iterator itr = all.iterator(); itr.hasNext();) {
-               ReferenceType type = (ReferenceType) itr.next();
-               if (type.classLoader() == null) {
-                   bootstrapClasses.add(type);
-               }
-            }
-        }
-        return bootstrapClasses;
-    }
-
-    private synchronized List findReferenceTypes(String signature) {
-        if (typesByID == null) {
-            return new ArrayList(0);
-        }
-
-        // we haven't sorted types by signatures. But we can take
-        // advantage of comparing symbols instead of name. In the worst
-        // case, we will be comparing N addresses rather than N strings
-        // where N being total no. of classes in allClasses() list.
-
-        // The signature could be Lx/y/z; or [....
-        // If it is Lx/y/z; the internal type name is x/y/x
-        // for array klasses internal type name is same as
-        // signature
-        String typeName = null;
-        if (signature.charAt(0) == 'L') {
-            typeName = signature.substring(1, signature.length() - 1);
-        } else {
-            typeName = signature;
-        }
-
-        Symbol typeNameSym = saSymbolTable().probe(typeName);
-        // if there is no symbol in VM, then we wouldn't have that type
-        if (typeNameSym == null) {
-            return new ArrayList(0);
-        }
-
-        Iterator iter = typesBySignature.iterator();
-        List list = new ArrayList();
-        while (iter.hasNext()) {
-            // We have cached type name as symbol in reference type
-            ReferenceTypeImpl type = (ReferenceTypeImpl)iter.next();
-            if (typeNameSym.equals(type.typeNameAsSymbol())) {
-                list.add(type);
-            }
-        }
-        return list;
-    }
-
-    private void retrieveAllClasses() {
-        final List saKlasses = new ArrayList();
-        SystemDictionary.ClassVisitor visitor = new SystemDictionary.ClassVisitor() {
-                public void visit(Klass k) {
-                    for (Klass l = k; l != null; l = l.arrayKlassOrNull()) {
-                        // for non-array classes filter out un-prepared classes
-                        // refer to 'allClasses' in share/back/VirtualMachineImpl.c
-                        if (l instanceof ArrayKlass) {
-                           saKlasses.add(l);
-                        } else {
-                           int status = l.getClassStatus();
-                           if ((status & JVMDIClassStatus.PREPARED) != 0) {
-                               saKlasses.add(l);
-                           }
-                        }
-                    }
-                }
-        };
-
-        // refer to jvmtiGetLoadedClasses.cpp - getLoadedClasses in VM code.
-
-        // classes from SystemDictionary
-        saSystemDictionary.classesDo(visitor);
-
-        // From SystemDictionary we do not get primitive single
-        // dimensional array classes. add primitive single dimensional array
-        // klasses from Universe.
-        saVM.getUniverse().basicTypeClassesDo(visitor);
-
-        // Hold lock during processing to improve performance
-        // and to have safe check/set of retrievedAllTypes
-        synchronized (this) {
-            if (!retrievedAllTypes) {
-                // Number of classes
-                int count = saKlasses.size();
-                for (int ii = 0; ii < count; ii++) {
-                    Klass kk = (Klass)saKlasses.get(ii);
-                    ReferenceTypeImpl type = referenceType(kk);
-                }
-                retrievedAllTypes = true;
-            }
-        }
-    }
-
-    ReferenceTypeImpl referenceType(Klass kk) {
-        ReferenceTypeImpl retType = null;
-        synchronized (this) {
-            if (typesByID != null) {
-                retType = (ReferenceTypeImpl)typesByID.get(kk);
-            }
-            if (retType == null) {
-                retType = addReferenceType(kk);
-            }
-        }
-        return retType;
-    }
-
-    private void initReferenceTypes() {
-        typesByID = new HashMap();
-        typesBySignature = new ArrayList();
-    }
-
-    private synchronized ReferenceTypeImpl addReferenceType(Klass kk) {
-        if (typesByID == null) {
-            initReferenceTypes();
-        }
-        ReferenceTypeImpl newRefType = null;
-        if (kk instanceof ObjArrayKlass || kk instanceof TypeArrayKlass) {
-            newRefType = new ArrayTypeImpl(this, (ArrayKlass)kk);
-        } else if (kk instanceof InstanceKlass) {
-            if (kk.isInterface()) {
-                newRefType = new InterfaceTypeImpl(this, (InstanceKlass)kk);
-            } else {
-                newRefType = new ClassTypeImpl(this, (InstanceKlass)kk);
-            }
-        } else {
-            throw new RuntimeException("should not reach here:" + kk);
-        }
-
-        typesByID.put(kk, newRefType);
-        typesBySignature.add(newRefType);
-        return newRefType;
-    }
-
-    ThreadGroup threadGroupForJDI() {
-        return threadGroupForJDI;
-    }
-
-    public void redefineClasses(Map classToBytes) {
-        throwNotReadOnlyException("VirtualMachineImpl.redefineClasses()");
-    }
-
-    private List getAllThreads() {
-        if (allThreads == null) {
-            allThreads = new ArrayList(10);  // Might be enough, might not be
-            for (sun.jvm.hotspot.runtime.JavaThread thread =
-                     saVM.getThreads().first(); thread != null;
-                     thread = thread.next()) {
-                // refer to JvmtiEnv::GetAllThreads in jvmtiEnv.cpp.
-                // filter out the hidden-from-external-view threads.
-                if (thread.isHiddenFromExternalView() == false) {
-                    ThreadReferenceImpl myThread = threadMirror(thread);
-                    allThreads.add(myThread);
-                }
-            }
-        }
-        return allThreads;
-    }
-
-    public List allThreads() { //fixme jjh
-        return Collections.unmodifiableList(getAllThreads());
-    }
-
-    public void suspend() {
-        throwNotReadOnlyException("VirtualMachineImpl.suspend()");
-    }
-
-    public void resume() {
-        throwNotReadOnlyException("VirtualMachineImpl.resume()");
-    }
-
-    public List topLevelThreadGroups() { //fixme jjh
-        // The doc for ThreadGroup says that The top-level thread group
-        // is the only thread group whose parent is null.  This means there is
-        // only one top level thread group.  There will be a thread in this
-        // group so we will just find a thread whose threadgroup has no parent
-        // and that will be it.
-
-        if (topLevelGroups == null) {
-            topLevelGroups = new ArrayList(1);
-            Iterator myIt = getAllThreads().iterator();
-            while (myIt.hasNext()) {
-                ThreadReferenceImpl myThread = (ThreadReferenceImpl)myIt.next();
-                ThreadGroupReference myGroup = myThread.threadGroup();
-                ThreadGroupReference myParent = myGroup.parent();
-                if (myGroup.parent() == null) {
-                    topLevelGroups.add(myGroup);
-                    break;
-                }
-            }
-        }
-        return  Collections.unmodifiableList(topLevelGroups);
-    }
-
-    public EventQueue eventQueue() {
-        throwNotReadOnlyException("VirtualMachine.eventQueue()");
-        return null;
-    }
-
-    public EventRequestManager eventRequestManager() {
-        throwNotReadOnlyException("VirtualMachineImpl.eventRequestManager()");
-        return null;
-    }
-
-    public BooleanValue mirrorOf(boolean value) {
-        return new BooleanValueImpl(this,value);
-    }
-
-    public ByteValue mirrorOf(byte value) {
-        return new ByteValueImpl(this,value);
-    }
-
-    public CharValue mirrorOf(char value) {
-        return new CharValueImpl(this,value);
-    }
-
-    public ShortValue mirrorOf(short value) {
-        return new ShortValueImpl(this,value);
-    }
-
-    public IntegerValue mirrorOf(int value) {
-        return new IntegerValueImpl(this,value);
-    }
-
-    public LongValue mirrorOf(long value) {
-        return new LongValueImpl(this,value);
-    }
-
-    public FloatValue mirrorOf(float value) {
-        return new FloatValueImpl(this,value);
-    }
-
-    public DoubleValue mirrorOf(double value) {
-        return new DoubleValueImpl(this,value);
-    }
-
-    public StringReference mirrorOf(String value) {
-        throwNotReadOnlyException("VirtualMachinestop.mirrorOf(String)");
-        return null;
-    }
-
-    public VoidValue mirrorOfVoid() {
-        if (voidVal == null) {
-            voidVal = new VoidValueImpl(this);
-        }
-        return voidVal;
-    }
-
-
-    public Process process() {
-        throwNotReadOnlyException("VirtualMachine.process");
-        return null;
-    }
-
-    // dispose observer for Class re-use. refer to ConnectorImpl.
-    private Observer disposeObserver;
-
-    // ConnectorImpl loaded by a different class loader can not access it.
-    // i.e., runtime package of <ConnectorImpl, L1> is not the same that of
-    // <VirtualMachineImpl, L2> when L1 != L2. So, package private method
-    // can be called reflectively after using setAccessible(true).
-
-    void setDisposeObserver(Observer observer) {
-       disposeObserver = observer;
-    }
-
-    private void notifyDispose() {
-        if (Assert.ASSERTS_ENABLED) {
-            Assert.that(disposeObserver != null, "null VM.dispose observer");
-        }
-        disposeObserver.update(null, null);
-    }
-
-    public void dispose() {
-        saAgent.detach();
-        notifyDispose();
-    }
-
-    public void exit(int exitCode) {
-        throwNotReadOnlyException("VirtualMachine.exit(int)");
-    }
-
-    public boolean canBeModified() {
-        return false;
-    }
-
-    public boolean canWatchFieldModification() {
-        return false;
-    }
-
-    public boolean canWatchFieldAccess() {
-        return false;
-    }
-
-    public boolean canGetBytecodes() {
-        return true;
-    }
-
-    public boolean canGetSyntheticAttribute() {
-        return true;
-    }
-
-    // FIXME: For now, all monitor capabilities are disabled
-    public boolean canGetOwnedMonitorInfo() {
-        return false;
-    }
-
-    public boolean canGetCurrentContendedMonitor() {
-        return false;
-    }
-
-    public boolean canGetMonitorInfo() {
-        return false;
-    }
-
-    // because this SA works only with 1.5 and update releases
-    // this should always succeed unlike JVMDI/JDI.
-    public boolean canGet1_5LanguageFeatures() {
-        return true;
-    }
-
-    public boolean canUseInstanceFilters() {
-        return false;
-    }
-
-    public boolean canRedefineClasses() {
-        return false;
-    }
-
-    public boolean canAddMethod() {
-        return false;
-    }
-
-    public boolean canUnrestrictedlyRedefineClasses() {
-        return false;
-    }
-
-    public boolean canPopFrames() {
-        return false;
-    }
-
-    public boolean canGetSourceDebugExtension() {
-        // We can use InstanceKlass.getSourceDebugExtension only if
-        // ClassFileParser parsed the info. But, ClassFileParser parses
-        // SourceDebugExtension attribute only if corresponding JVMDI/TI
-        // capability is set to true. Currently, vmStructs does not expose
-        // JVMDI/TI capabilities and hence we conservatively assume false.
-        return false;
-    }
-
-    public boolean canRequestVMDeathEvent() {
-        return false;
-    }
-
-    // new method since 1.6
-    public boolean canForceEarlyReturn() {
-        return false;
-    }
-
-    // new method since 1.6
-    public boolean canGetConstantPool() {
-        return true;
-    }
-
-    // new method since 1.6
-    public boolean canGetClassFileVersion() {
-        return true;
-    }
-
-    // new method since 1.6.
-    public boolean canGetMethodReturnValues() {
-        return false;
-    }
-
-    // new method since 1.6
-    // Real body will be supplied later.
-    public boolean canGetInstanceInfo() {
-        return true;
-    }
-
-    // new method since 1.6
-    public boolean canUseSourceNameFilters() {
-        return false;
-    }
-
-    // new method since 1.6.
-    public boolean canRequestMonitorEvents() {
-        return false;
-    }
-
-    // new method since 1.6.
-    public boolean canGetMonitorFrameInfo() {
-        return true;
-    }
-
-    // new method since 1.6
-    // Real body will be supplied later.
-    public long[] instanceCounts(List classes) {
-        if (!canGetInstanceInfo()) {
-            throw new UnsupportedOperationException(
-                      "target does not support getting instances");
-        }
-
-        final long[] retValue = new long[classes.size()] ;
-
-        final Klass [] klassArray = new Klass[classes.size()];
-
-        boolean allAbstractClasses = true;
-        for (int i=0; i < classes.size(); i++) {
-            ReferenceTypeImpl rti = (ReferenceTypeImpl)classes.get(i);
-            klassArray[i] = rti.ref();
-            retValue[i]=0;
-            if (!(rti.isAbstract() || ((ReferenceType)rti instanceof InterfaceType))) {
-                allAbstractClasses = false;
-            }
-        }
-
-        if (allAbstractClasses) {
-            return retValue;
-        }
-        final int size = classes.size();
-        saObjectHeap.iterate(new DefaultHeapVisitor() {
-                public boolean doObj(Oop oop) {
-                    for (int i=0; i < size; i++) {
-                        if (klassArray[i].equals(oop.getKlass())) {
-                            retValue[i]++;
-                            break;
-                        }
-                    }
-                                        return false;
-                }
-            });
-
-        return retValue;
-    }
-
-    private List getPath (String pathName) {
-        String cp = saVM.getSystemProperty(pathName);
-        String pathSep = saVM.getSystemProperty("path.separator");
-        ArrayList al = new ArrayList();
-        StringTokenizer st = new StringTokenizer(cp, pathSep);
-        while (st.hasMoreTokens()) {
-            al.add(st.nextToken());
-        }
-        al.trimToSize();
-        return al;
-    }
-
-    public List classPath() {
-        return getPath("java.class.path");
-    }
-
-    public List<String> bootClassPath() {
-        return Collections.emptyList();
-    }
-
-    public String baseDirectory() {
-        return saVM.getSystemProperty("user.dir");
-    }
-
-    public void setDefaultStratum(String stratum) {
-        defaultStratum = stratum;
-    }
-
-    public String getDefaultStratum() {
-        return defaultStratum;
-    }
-
-    public String description() {
-        return java.text.MessageFormat.format(java.util.ResourceBundle.
-                                              getBundle("com.sun.tools.jdi.resources.jdi").getString("version_format"),
-                                              "" + vmmgr.majorInterfaceVersion(),
-                                              "" + vmmgr.minorInterfaceVersion(),
-                                              name());
-    }
-
-    public String version() {
-        return saVM.getSystemProperty("java.version");
-    }
-
-    public String name() {
-        StringBuffer sb = new StringBuffer();
-        sb.append("JVM version ");
-        sb.append(version());
-        sb.append(" (");
-        sb.append(saVM.getSystemProperty("java.vm.name"));
-        sb.append(", ");
-        sb.append(saVM.getSystemProperty("java.vm.info"));
-        sb.append(")");
-        return sb.toString();
-    }
-
-    // from interface Mirror
-    public VirtualMachine virtualMachine() {
-        return this;
-    }
-
-    public String toString() {
-        return name();
-    }
-
-    public void setDebugTraceMode(int traceFlags) {
-        // spec. says output is implementation dependent
-        // and trace mode may be ignored. we ignore it :-)
-    }
-
-    // heap walking API
-
-    // capability check
-    public boolean canWalkHeap() {
-        return true;
-    }
-
-    // return a list of all objects in heap
-    public List/*<ObjectReference>*/ allObjects() {
-        final List objects = new ArrayList(0);
-        saObjectHeap.iterate(
-            new DefaultHeapVisitor() {
-                public boolean doObj(Oop oop) {
-                    objects.add(objectMirror(oop));
-                                        return false;
-                }
-            });
-        return objects;
-    }
-
-    // equivalent to objectsByType(type, true)
-    public List/*<ObjectReference>*/ objectsByType(ReferenceType type) {
-        return objectsByType(type, true);
-    }
-
-    // returns objects of type exactly equal to given type
-    private List/*<ObjectReference>*/ objectsByExactType(ReferenceType type) {
-        final List objects = new ArrayList(0);
-        final Klass givenKls = ((ReferenceTypeImpl)type).ref();
-        saObjectHeap.iterate(new DefaultHeapVisitor() {
-                public boolean doObj(Oop oop) {
-                    if (givenKls.equals(oop.getKlass())) {
-                        objects.add(objectMirror(oop));
-                    }
-                        return false;
-                }
-            });
-        return objects;
-    }
-
-    // returns objects of given type as well as it's subtypes
-    private List/*<ObjectReference>*/ objectsBySubType(ReferenceType type) {
-        final List objects = new ArrayList(0);
-        final ReferenceType givenType = type;
-        saObjectHeap.iterate(new DefaultHeapVisitor() {
-                public boolean doObj(Oop oop) {
-                    ReferenceTypeImpl curType = (ReferenceTypeImpl) referenceType(oop.getKlass());
-                    if (curType.isAssignableTo(givenType)) {
-                        objects.add(objectMirror(oop));
-                    }
-                        return false;
-                }
-            });
-        return objects;
-    }
-
-    // includeSubtypes - do you want to include subclass/subtype instances of given
-    // ReferenceType or do we want objects of exact type only?
-    public List/*<ObjectReference>*/ objectsByType(ReferenceType type, boolean includeSubtypes) {
-        Klass kls = ((ReferenceTypeImpl)type).ref();
-        if (kls instanceof InstanceKlass) {
-            InstanceKlass ik = (InstanceKlass) kls;
-            // if the Klass is final or if there are no subklasses loaded yet
-            if (ik.getAccessFlagsObj().isFinal() || ik.getSubklassKlass() == null) {
-                includeSubtypes = false;
-            }
-        } else {
-            // no subtypes for primitive array types
-            ArrayTypeImpl arrayType = (ArrayTypeImpl) type;
-            try {
-                Type componentType = arrayType.componentType();
-                if (componentType instanceof PrimitiveType) {
-                    includeSubtypes = false;
-                }
-            } catch (ClassNotLoadedException cnle) {
-                // ignore. component type not yet loaded
-            }
-        }
-
-        if (includeSubtypes) {
-            return objectsBySubType(type);
-        } else {
-            return objectsByExactType(type);
-        }
-    }
-
-    Type findBootType(String signature) throws ClassNotLoadedException {
-        List types = allClasses();
-        Iterator iter = types.iterator();
-        while (iter.hasNext()) {
-            ReferenceType type = (ReferenceType)iter.next();
-            if ((type.classLoader() == null) &&
-                (type.signature().equals(signature))) {
-                return type;
-            }
-        }
-        JNITypeParser parser = new JNITypeParser(signature);
-        throw new ClassNotLoadedException(parser.typeName(),
-                                         "Type " + parser.typeName() + " not loaded");
-    }
-
-    BooleanType theBooleanType() {
-        if (theBooleanType == null) {
-            synchronized(this) {
-                if (theBooleanType == null) {
-                    theBooleanType = new BooleanTypeImpl(this);
-                }
-            }
-        }
-        return theBooleanType;
-    }
-
-    ByteType theByteType() {
-        if (theByteType == null) {
-            synchronized(this) {
-                if (theByteType == null) {
-                    theByteType = new ByteTypeImpl(this);
-                }
-            }
-        }
-        return theByteType;
-    }
-
-    CharType theCharType() {
-        if (theCharType == null) {
-            synchronized(this) {
-                if (theCharType == null) {
-                    theCharType = new CharTypeImpl(this);
-                }
-            }
-        }
-        return theCharType;
-    }
-
-    ShortType theShortType() {
-        if (theShortType == null) {
-            synchronized(this) {
-                if (theShortType == null) {
-                    theShortType = new ShortTypeImpl(this);
-                }
-            }
-        }
-        return theShortType;
-    }
-
-    IntegerType theIntegerType() {
-        if (theIntegerType == null) {
-            synchronized(this) {
-                if (theIntegerType == null) {
-                    theIntegerType = new IntegerTypeImpl(this);
-                }
-            }
-        }
-        return theIntegerType;
-    }
-
-    LongType theLongType() {
-        if (theLongType == null) {
-            synchronized(this) {
-                if (theLongType == null) {
-                    theLongType = new LongTypeImpl(this);
-                }
-            }
-        }
-        return theLongType;
-    }
-
-    FloatType theFloatType() {
-        if (theFloatType == null) {
-            synchronized(this) {
-                if (theFloatType == null) {
-                    theFloatType = new FloatTypeImpl(this);
-                }
-            }
-        }
-        return theFloatType;
-    }
-
-    DoubleType theDoubleType() {
-        if (theDoubleType == null) {
-            synchronized(this) {
-                if (theDoubleType == null) {
-                    theDoubleType = new DoubleTypeImpl(this);
-                }
-            }
-        }
-        return theDoubleType;
-    }
-
-    VoidType theVoidType() {
-        if (theVoidType == null) {
-            synchronized(this) {
-                if (theVoidType == null) {
-                    theVoidType = new VoidTypeImpl(this);
-                }
-            }
-        }
-        return theVoidType;
-    }
-
-    PrimitiveType primitiveTypeMirror(char tag) {
-        switch (tag) {
-        case 'Z':
-                return theBooleanType();
-        case 'B':
-                return theByteType();
-        case 'C':
-                return theCharType();
-        case 'S':
-                return theShortType();
-        case 'I':
-                return theIntegerType();
-        case 'J':
-                return theLongType();
-        case 'F':
-                return theFloatType();
-        case 'D':
-                return theDoubleType();
-        default:
-                throw new IllegalArgumentException("Unrecognized primitive tag " + tag);
-        }
-    }
-
-    private void processQueue() {
-        Reference ref;
-        while ((ref = referenceQueue.poll()) != null) {
-            SoftObjectReference softRef = (SoftObjectReference)ref;
-            removeObjectMirror(softRef);
-        }
-    }
-
-    // Address value is used as uniqueID by ObjectReferenceImpl
-    long getAddressValue(Oop obj) {
-        return vm.saVM.getDebugger().getAddressValue(obj.getHandle());
-    }
-
-    synchronized ObjectReferenceImpl objectMirror(Oop key) {
-
-        // Handle any queue elements that are not strongly reachable
-        processQueue();
-
-        if (key == null) {
-            return null;
-        }
-        ObjectReferenceImpl object = null;
-
-        /*
-         * Attempt to retrieve an existing object object reference
-         */
-        SoftObjectReference ref = (SoftObjectReference)objectsByID.get(key);
-        if (ref != null) {
-            object = ref.object();
-        }
-
-        /*
-         * If the object wasn't in the table, or it's soft reference was
-         * cleared, create a new instance.
-         */
-        if (object == null) {
-            if (key instanceof Instance) {
-                // look for well-known classes
-                Symbol className = key.getKlass().getName();
-                if (Assert.ASSERTS_ENABLED) {
-                    Assert.that(className != null, "Null class name");
-                }
-                Instance inst = (Instance) key;
-                if (className.equals(javaLangString)) {
-                    object = new StringReferenceImpl(this, inst);
-                } else if (className.equals(javaLangThread)) {
-                    object = new ThreadReferenceImpl(this, inst);
-                } else if (className.equals(javaLangThreadGroup)) {
-                    object = new ThreadGroupReferenceImpl(this, inst);
-                } else if (className.equals(javaLangClass)) {
-                    object = new ClassObjectReferenceImpl(this, inst);
-                } else if (className.equals(javaLangClassLoader)) {
-                    object = new ClassLoaderReferenceImpl(this, inst);
-                } else {
-                    // not a well-known class. But the base class may be
-                    // one of the known classes.
-                    Klass kls = key.getKlass().getSuper();
-                    while (kls != null) {
-                       className = kls.getName();
-                       // java.lang.Class and java.lang.String are final classes
-                       if (className.equals(javaLangThread)) {
-                          object = new ThreadReferenceImpl(this, inst);
-                          break;
-                       } else if(className.equals(javaLangThreadGroup)) {
-                          object = new ThreadGroupReferenceImpl(this, inst);
-                          break;
-                       } else if (className.equals(javaLangClassLoader)) {
-                          object = new ClassLoaderReferenceImpl(this, inst);
-                          break;
-                       }
-                       kls = kls.getSuper();
-                    }
-
-                    if (object == null) {
-                       // create generic object reference
-                       object = new ObjectReferenceImpl(this, inst);
-                    }
-                }
-            } else if (key instanceof TypeArray) {
-                object = new ArrayReferenceImpl(this, (Array) key);
-            } else if (key instanceof ObjArray) {
-                object = new ArrayReferenceImpl(this, (Array) key);
-            } else {
-                throw new RuntimeException("unexpected object type " + key);
-            }
-            ref = new SoftObjectReference(key, object, referenceQueue);
-
-            /*
-             * If there was no previous entry in the table, we add one here
-             * If the previous entry was cleared, we replace it here.
-             */
-            objectsByID.put(key, ref);
-        } else {
-            ref.incrementCount();
-        }
-
-        return object;
-    }
-
-    synchronized void removeObjectMirror(SoftObjectReference ref) {
-        /*
-         * This will remove the soft reference if it has not been
-         * replaced in the cache.
-         */
-        objectsByID.remove(ref.key());
-    }
-
-    StringReferenceImpl stringMirror(Instance id) {
-        return (StringReferenceImpl) objectMirror(id);
-    }
-
-    ArrayReferenceImpl arrayMirror(Array id) {
-       return (ArrayReferenceImpl) objectMirror(id);
-    }
-
-    ThreadReferenceImpl threadMirror(Instance id) {
-        return (ThreadReferenceImpl) objectMirror(id);
-    }
-
-    ThreadReferenceImpl threadMirror(JavaThread jt) {
-        return (ThreadReferenceImpl) objectMirror(jt.getThreadObj());
-    }
-
-    ThreadGroupReferenceImpl threadGroupMirror(Instance id) {
-        return (ThreadGroupReferenceImpl) objectMirror(id);
-    }
-
-    ClassLoaderReferenceImpl classLoaderMirror(Instance id) {
-        return (ClassLoaderReferenceImpl) objectMirror(id);
-    }
-
-    ClassObjectReferenceImpl classObjectMirror(Instance id) {
-        return (ClassObjectReferenceImpl) objectMirror(id);
-    }
-
-    // Use of soft refs and caching stuff here has to be re-examined.
-    //  It might not make sense for JDI - SA.
-    static private class SoftObjectReference extends SoftReference {
-       int count;
-       Object key;
-
-       SoftObjectReference(Object key, ObjectReferenceImpl mirror,
-                           ReferenceQueue queue) {
-           super(mirror, queue);
-           this.count = 1;
-           this.key = key;
-       }
-
-       int count() {
-           return count;
-       }
-
-       void incrementCount() {
-           count++;
-       }
-
-       Object key() {
-           return key;
-       }
-
-       ObjectReferenceImpl object() {
-           return (ObjectReferenceImpl)get();
-       }
-   }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VoidTypeImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class VoidTypeImpl extends TypeImpl implements VoidType {
-    VoidTypeImpl(VirtualMachine vm) {
-        super(vm);
-    }
-
-    public String signature() {
-        return "V";
-    }
-
-    public String toString() {
-        return name();
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/jdi/VoidValueImpl.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, 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 sun.jvm.hotspot.jdi;
-
-import com.sun.jdi.*;
-
-public class VoidValueImpl extends ValueImpl implements VoidValue {
-
-    VoidValueImpl(VirtualMachine aVm) {
-        super(aVm);
-    }
-
-    public boolean equals(Object obj) {
-        return (obj != null) && (obj instanceof VoidValue) && super.equals(obj);
-    }
-
-    public int hashCode() {
-        return type().hashCode();
-    }
-
-    public Type type() {
-        return vm.theVoidType();
-    }
-
-    ValueImpl prepareForAssignmentTo(ValueContainer destination)
-                    throws InvalidTypeException {
-
-        throw new InvalidTypeException();
-    }
-
-    public String toString() {
-        return "<void value>";
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Fri Jul 29 16:50:45 2016 -0700
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Mon Aug 01 10:51:22 2016 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, 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
@@ -31,11 +31,10 @@
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.TypeDataBase;
 import sun.jvm.hotspot.utilities.*;
-import sun.jvm.hotspot.jdi.JVMTIThreadState;
 
 /** A utility class encapsulating useful oop operations */
 
-public class OopUtilities implements /* imports */ JVMTIThreadState {
+public class OopUtilities {
 
   // FIXME: access should be synchronized and cleared when VM is
   // resumed
@@ -78,6 +77,8 @@
   // java.util.concurrent.locks.AbstractOwnableSynchronizer fields
   private static OopField absOwnSyncOwnerThreadField;
 
+  private static final int JVMTI_THREAD_STATE_ALIVE = 0x0001;
+
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java	Fri Jul 29 16:50:45 2016 -0700
+++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java	Mon Aug 01 10:51:22 2016 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, 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
@@ -33,7 +33,6 @@
 import sun.jvm.hotspot.types.Type;
 import sun.jvm.hotspot.types.TypeDataBase;
 import sun.jvm.hotspot.utilities.*;
-import sun.jvm.hotspot.jdi.JVMTIThreadState;
 
 /** A utility class encapsulating useful oop operations */
 
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/README.jjh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-
-This dir contains a test for the JDI-SA implementation.
-
-sagtest.java, sagtarg.java are a normal JDI regression test
-that uses TargetAdapter.java, TargetListener.java,  TestScaffold.java,
-and VMConnection.java.
-
-This test starts the debuggee, sagtarg.java, which just does a wait.
-The test then calls sagdoit.java which calls all the JDJI interface
-functions.  Well, it doesn't call them all yet, but that is the plan.
-At least all that are interesting to the JDI-SA client. The result of
-each call is sent to stdout
-
-The script runjpda.sh runs this test.  It then runs the targ part of
-the test and calls gcore on it to get a core dump into file sagcore.
-Do
-        runjpda.sh >& kk
-
-to run this.  
-
-        NOTE that this produces 1000s of lines of output
-        so be sure to redirect to a file.
-
-File sagclient.java is a test program that uses the JDI-SA
-client to connect to a core file or pid and then calls sagdoit
-which calls the JDI methods.
-
-The script runsa.sh can be used to run sagclient on sagcore:
-        runsa.sh sagcore >& kk1
-
-You can then look at the differences between the runjpda.sh 
-and the runsa.sh run to see if there are bugs.  Note that the
-order of things might be different.
-
-
------------------------------------------
-
-runjdb.sh contains a script that will run jdb on a core file
-using the JDI-sa binding.
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/SASanityChecker.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2003, 2005, 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.
- *
- */
-
-import sun.jvm.hotspot.tools.*;
-import sun.jvm.hotspot.runtime.*;
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-
-/**
-This is a sanity checking tool for Serviceability Agent. To use this class,
-refer to sasanity.sh script in the current directory.
-*/
-
-public class SASanityChecker extends Tool {
-  private static final String saJarName;
-  private static final Map c2types;
-
-  static {
-     saJarName = System.getProperty("SASanityChecker.SAJarName", "sa-jdi.jar");
-     c2types = new HashMap();
-     Object value = new Object();
-     c2types.put("sun.jvm.hotspot.code.ExceptionBlob", value);
-     c2types.put("sun.jvm.hotspot.code.DeoptimizationBlob", value);
-     c2types.put("sun.jvm.hotspot.code.UncommonTrapBlob", value);
-
-  }
-
-  public void run() {
-     String classPath = System.getProperty("java.class.path");
-     StringTokenizer st = new StringTokenizer(classPath, File.pathSeparator);
-     String saJarPath = null;
-     while (st.hasMoreTokens()) {
-        saJarPath = st.nextToken();
-        if (saJarPath.endsWith(saJarName)) {
-           break;
-        }
-     }
-
-     if (saJarPath == null) {
-        throw new RuntimeException(saJarName + " is not the CLASSPATH");
-     }
-
-     String cpuDot = "." + VM.getVM().getCPU() + ".";
-     String platformDot = "." + VM.getVM().getOS() + "_" + VM.getVM().getCPU() + ".";
-     boolean isClient = VM.getVM().isClientCompiler();
-
-     try {
-        FileInputStream fis = new FileInputStream(saJarPath);
-        JarInputStream jis = new JarInputStream(fis);
-        JarEntry je = null;
-        while ( (je = jis.getNextJarEntry()) != null) {
-           String entryName = je.getName();
-           int dotClassIndex = entryName.indexOf(".class");
-           if (dotClassIndex == -1) {
-              // skip non-.class stuff
-              continue;
-           }
-
-           entryName = entryName.substring(0, dotClassIndex).replace('/', '.');
-
-           // skip debugger, asm classes, type classes and jdi binding classes
-           if (entryName.startsWith("sun.jvm.hotspot.debugger.") ||
-               entryName.startsWith("sun.jvm.hotspot.asm.") ||
-               entryName.startsWith("sun.jvm.hotspot.type.") ||
-               entryName.startsWith("sun.jvm.hotspot.jdi.") ) {
-              continue;
-           }
-
-           String runtimePkgPrefix = "sun.jvm.hotspot.runtime.";
-           int runtimeIndex = entryName.indexOf(runtimePkgPrefix);
-           if (runtimeIndex != -1) {
-              // look for further dot. if there, it has to be sub-package.
-              // in runtime sub-packages include only current platform classes.
-              if (entryName.substring(runtimePkgPrefix.length() + 1, entryName.length()).indexOf('.') != -1) {
-                 if (entryName.indexOf(cpuDot) == -1 &&
-                     entryName.indexOf(platformDot) == -1) {
-                    continue;
-                 }
-              }
-           }
-
-           if (isClient) {
-              if (c2types.get(entryName) != null) {
-                 continue;
-              }
-           } else {
-              if (entryName.equals("sun.jvm.hotspot.c1.Runtime1")) {
-                 continue;
-              }
-           }
-
-           System.out.println("checking " + entryName + " ..");
-           // force init of the class to uncover any vmStructs mismatch
-           Class.forName(entryName);
-        }
-     } catch (Exception exp) {
-        System.out.println();
-        System.out.println("FAILED");
-        System.out.println();
-        throw new RuntimeException(exp.getMessage());
-     }
-     System.out.println();
-     System.out.println("PASSED");
-     System.out.println();
-  }
-
-  public static void main(String[] args) {
-     SASanityChecker checker = new SASanityChecker();
-     checker.start(args);
-     checker.stop();
-  }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/TEST.ROOT	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 2002, 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.
-#  
-#
-
-# This file identifies the root of the test-suite hierarchy.
-# It also contains test-suite configuration information.
-# DO NOT EDIT without first contacting jdk-regtest@eng.
-
-# The list of keywords supported in this test suite
-keys=2d dnd i18n
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/TargetAdapter.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- *
- */
-
-import com.sun.jdi.event.*;
-
-/**
- * Base TargetListener implementation
- */
-public class TargetAdapter implements TargetListener {
-    boolean shouldRemoveListener = false;
-
-    public void removeThisListener() {
-        shouldRemoveListener = true;
-    }
-
-    public boolean shouldRemoveListener() {
-        return shouldRemoveListener;
-    }
-
-    public void eventSetReceived(EventSet set) {}
-    public void eventSetComplete(EventSet set) {}
-    public void eventReceived(Event event) {}
-    public void breakpointReached(BreakpointEvent event) {}
-    public void exceptionThrown(ExceptionEvent event) {}
-    public void stepCompleted(StepEvent event) {}
-    public void classPrepared(ClassPrepareEvent event) {}
-    public void classUnloaded(ClassUnloadEvent event) {}
-    public void methodEntered(MethodEntryEvent event) {}
-    public void methodExited(MethodExitEvent event) {}
-    public void fieldAccessed(AccessWatchpointEvent event) {}
-    public void fieldModified(ModificationWatchpointEvent event) {}
-    public void threadStarted(ThreadStartEvent event) {}
-    public void threadDied(ThreadDeathEvent event) {}
-    public void vmStarted(VMStartEvent event) {}
-    public void vmDied(VMDeathEvent event) {}
-    public void vmDisconnected(VMDisconnectEvent event) {}
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/TargetListener.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- *
- */
-
-import com.sun.jdi.event.*;
-
-/**
- * Event listener framework
- */
-public interface TargetListener {
-    boolean shouldRemoveListener();
-
-    void eventSetReceived(EventSet set);
-    void eventSetComplete(EventSet set);
-    void eventReceived(Event event);
-    void breakpointReached(BreakpointEvent event);
-    void exceptionThrown(ExceptionEvent event);
-    void stepCompleted(StepEvent event);
-    void classPrepared(ClassPrepareEvent event);
-    void classUnloaded(ClassUnloadEvent event);
-    void methodEntered(MethodEntryEvent event);
-    void methodExited(MethodExitEvent event);
-    void fieldAccessed(AccessWatchpointEvent event);
-    void fieldModified(ModificationWatchpointEvent event);
-    void threadStarted(ThreadStartEvent event);
-    void threadDied(ThreadDeathEvent event);
-    void vmStarted(VMStartEvent event);
-    void vmDied(VMDeathEvent event);
-    void vmDisconnected(VMDisconnectEvent event);
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/TestScaffold.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,758 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- *
- */
-
-import com.sun.jdi.*;
-import com.sun.jdi.request.*;
-import com.sun.jdi.event.*;
-import java.util.*;
-import java.io.*;
-
-/**
- * Framework used by all JDI regression tests
- */
-abstract public class TestScaffold extends TargetAdapter {
-    private boolean shouldTrace = false;
-    private VMConnection connection;
-    private VirtualMachine vm;
-    private EventRequestManager requestManager;
-    private List listeners = Collections.synchronizedList(new LinkedList());
-
-    /**
-     * We create a VMDeathRequest, SUSPEND_ALL, to sync the BE and FE.
-     */
-    //private VMDeathRequest ourVMDeathRequest = null;
-    Object ourVMDeathRequest = null;
-
-    /**
-     * We create an ExceptionRequest, SUSPEND_NONE so that we can
-     * catch it and output a msg if an exception occurs in the
-     * debuggee.
-     */
-    private ExceptionRequest ourExceptionRequest = null;
-
-    /**
-     * If we do catch an uncaught exception, we set this true
-     * so the testcase can find out if it wants to.
-     */
-    private boolean exceptionCaught = false;
-    ThreadReference vmStartThread = null;
-    boolean vmDied = false;
-    boolean vmDisconnected = false;
-    final String[] args;
-    protected boolean testFailed = false;
-
-    static private class ArgInfo {
-        String targetVMArgs = "";
-        String targetAppCommandLine = "";
-        String connectorSpec = "com.sun.jdi.CommandLineLaunch:";
-        int traceFlags = 0;
-    }
-
-    /**
-     * An easy way to sleep for awhile
-     */
-    public void mySleep(int millis) {
-        try {
-            Thread.sleep(millis);
-        } catch (InterruptedException ee) {
-        }
-    }
-
-    boolean getExceptionCaught() {
-        return exceptionCaught;
-    }
-
-    void setExceptionCaught(boolean value) {
-        exceptionCaught = value;
-    }
-
-    /**
-     * Return true if eventSet contains the VMDeathEvent for the request in
-     * the ourVMDeathRequest ivar.
-     */
-    private boolean containsOurVMDeathRequest(EventSet eventSet) {
-        if (ourVMDeathRequest != null) {
-            Iterator myIter = eventSet.iterator();
-            while (myIter.hasNext()) {
-                Event myEvent = (Event)myIter.next();
-                if (!(myEvent instanceof VMDeathEvent)) {
-                    // We assume that an EventSet contains only VMDeathEvents
-                    // or no VMDeathEvents.
-                    break;
-                }
-                if (ourVMDeathRequest.equals(myEvent.request())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /************************************************************************
-     * The following methods override those in our base class, TargetAdapter.
-     *************************************************************************/
-
-    /**
-     * Events handled directly by scaffold always resume (well, almost always)
-     */
-    public void eventSetComplete(EventSet set) {
-        // The listener in connect(..) resumes after receiving our
-        // special VMDeathEvent.  We can't also do the resume
-        // here or we will probably get a VMDisconnectedException
-        if (!containsOurVMDeathRequest(set)) {
-            traceln("TS: set.resume() called");
-            set.resume();
-        }
-    }
-
-    /**
-     * This method sets up default requests.
-     * Testcases can override this to change default behavior.
-     */
-    protected void createDefaultEventRequests() {
-        createDefaultVMDeathRequest();
-        createDefaultExceptionRequest();
-    }
-
-    /**
-     * We want the BE to stop when it issues a VMDeathEvent in order to
-     * give the FE time to complete handling events that occured before
-     * the VMDeath.  When we get the VMDeathEvent for this request in
-     * the listener in connect(), we will do a resume.
-     * If a testcase wants to do something special with VMDeathEvent's,
-     * then it should override this method with an empty method or
-     * whatever in order to suppress the automatic resume.  The testcase
-     * will then be responsible for the handling of VMDeathEvents.  It
-     * has to be sure that it does a resume if it gets a VMDeathEvent
-     * with SUSPEND_ALL, and it has to be sure that it doesn't do a
-     * resume after getting a VMDeath with SUSPEND_NONE (the automatically
-     * generated VMDeathEvent.)
-     */
-    protected void createDefaultVMDeathRequest() {
-//         ourVMDeathRequest = requestManager.createVMDeathRequest();
-//         ourVMDeathRequest.setSuspendPolicy(EventRequest.SUSPEND_ALL);
-//         ourVMDeathRequest.enable();
-    }
-
-    /**
-     * This will allow us to print a warning if a debuggee gets an
-     * unexpected exception.  The unexpected exception will be handled in
-     * the exceptionThrown method in the listener created in the connect()
-     * method.
-     * If a testcase does not want an uncaught exception to cause a
-     * msg, it must override this method.
-     */
-    protected void createDefaultExceptionRequest() {
-        ourExceptionRequest = requestManager.createExceptionRequest(null,
-                                                                false, true);
-
-        // We can't afford to make this be other than SUSPEND_NONE.  Otherwise,
-        // it would have to be resumed.  If our connect() listener resumes it,
-        // what about the case where the EventSet contains other events with
-        // SUSPEND_ALL and there are other listeners who expect the BE to still
-        // be suspended when their handlers get called?
-        ourExceptionRequest.setSuspendPolicy(EventRequest.SUSPEND_NONE);
-        ourExceptionRequest.enable();
-    }
-
-    private class EventHandler implements Runnable {
-        EventHandler() {
-            Thread thread = new Thread(this);
-            thread.setDaemon(true);
-            thread.start();
-        }
-
-        private void notifyEvent(TargetListener listener, Event event) {
-            if (event instanceof BreakpointEvent) {
-                listener.breakpointReached((BreakpointEvent)event);
-            } else if (event instanceof ExceptionEvent) {
-                listener.exceptionThrown((ExceptionEvent)event);
-            } else if (event instanceof StepEvent) {
-                listener.stepCompleted((StepEvent)event);
-            } else if (event instanceof ClassPrepareEvent) {
-                listener.classPrepared((ClassPrepareEvent)event);
-            } else if (event instanceof ClassUnloadEvent) {
-                listener.classUnloaded((ClassUnloadEvent)event);
-            } else if (event instanceof MethodEntryEvent) {
-                listener.methodEntered((MethodEntryEvent)event);
-            } else if (event instanceof MethodExitEvent) {
-                listener.methodExited((MethodExitEvent)event);
-            } else if (event instanceof AccessWatchpointEvent) {
-                listener.fieldAccessed((AccessWatchpointEvent)event);
-            } else if (event instanceof ModificationWatchpointEvent) {
-                listener.fieldModified((ModificationWatchpointEvent)event);
-            } else if (event instanceof ThreadStartEvent) {
-                listener.threadStarted((ThreadStartEvent)event);
-            } else if (event instanceof ThreadDeathEvent) {
-                listener.threadDied((ThreadDeathEvent)event);
-            } else if (event instanceof VMStartEvent) {
-                listener.vmStarted((VMStartEvent)event);
-            } else if (event instanceof VMDeathEvent) {
-                listener.vmDied((VMDeathEvent)event);
-            } else if (event instanceof VMDisconnectEvent) {
-                listener.vmDisconnected((VMDisconnectEvent)event);
-            } else {
-                throw new InternalError("Unknown event type: " + event.getClass());
-            }
-        }
-
-        private void traceSuspendPolicy(int policy) {
-            if (shouldTrace) {
-                switch (policy) {
-                case EventRequest.SUSPEND_NONE:
-                    traceln("TS: eventHandler: suspend = SUSPEND_NONE");
-                    break;
-                case EventRequest.SUSPEND_ALL:
-                    traceln("TS: eventHandler: suspend = SUSPEND_ALL");
-                    break;
-                case EventRequest.SUSPEND_EVENT_THREAD:
-                    traceln("TS: eventHandler: suspend = SUSPEND_EVENT_THREAD");
-                    break;
-                }
-            }
-        }
-
-        public void run() {
-            boolean connected = true;
-            do {
-                try {
-                    EventSet set = vm.eventQueue().remove();
-                    traceSuspendPolicy(set.suspendPolicy());
-                    synchronized (listeners) {
-                        ListIterator iter = listeners.listIterator();
-                        while (iter.hasNext()) {
-                            TargetListener listener = (TargetListener)iter.next();
-                            traceln("TS: eventHandler: listener = " + listener);
-                            listener.eventSetReceived(set);
-                            if (listener.shouldRemoveListener()) {
-                                iter.remove();
-                            } else {
-                                Iterator jter = set.iterator();
-                                while (jter.hasNext()) {
-                                    Event event = (Event)jter.next();
-                                    traceln("TS: eventHandler:    event = " + event.getClass());
-
-                                    if (event instanceof VMDisconnectEvent) {
-                                        connected = false;
-                                    }
-                                    listener.eventReceived(event);
-                                    if (listener.shouldRemoveListener()) {
-                                        iter.remove();
-                                        break;
-                                    }
-                                    notifyEvent(listener, event);
-                                    if (listener.shouldRemoveListener()) {
-                                        iter.remove();
-                                        break;
-                                    }
-                                }
-                                traceln("TS: eventHandler:   end of events loop");
-                                if (!listener.shouldRemoveListener()) {
-                                    traceln("TS: eventHandler:   calling ESC");
-                                    listener.eventSetComplete(set);
-                                    if (listener.shouldRemoveListener()) {
-                                        iter.remove();
-                                    }
-                                }
-                            }
-                            traceln("TS: eventHandler: end of listeners loop");
-                        }
-                    }
-                } catch (InterruptedException e) {
-                    traceln("TS: eventHandler: InterruptedException");
-                } catch (Exception e) {
-                    failure("FAILED: Exception occured in eventHandler: " + e);
-                    e.printStackTrace();
-                    connected = false;
-                    synchronized(TestScaffold.this) {
-                        // This will make the waiters such as waitForVMDisconnect
-                        // exit their wait loops.
-                        vmDisconnected = true;
-                        TestScaffold.this.notifyAll();
-                    }
-                }
-                traceln("TS: eventHandler: End of outerloop");
-            } while (connected);
-            traceln("TS: eventHandler: finished");
-        }
-    }
-
-    /**
-     * Constructor
-     */
-    public TestScaffold(String[] args) {
-        this.args = args;
-    }
-
-    public void enableScaffoldTrace() {
-        this.shouldTrace = true;
-    }
-
-    public void disableScaffoldTrace() {
-        this.shouldTrace = false;
-    }
-
-
-    protected void startUp(String targetName) {
-        List argList = new ArrayList(Arrays.asList(args));
-        argList.add(targetName);
-        println("run args: " + argList);
-        connect((String[]) argList.toArray(args));
-        waitForVMStart();
-    }
-
-    protected BreakpointEvent startToMain(String targetName) {
-        startUp(targetName);
-        traceln("TS: back from startUp");
-        BreakpointEvent bpr = resumeTo(targetName, "main", "([Ljava/lang/String;)V");
-        waitForInput();
-        return bpr;
-    }
-
-    protected void waitForInput() {
-        if (System.getProperty("jpda.wait") != null) {
-            try {
-                System.err.println("Press <enter> to continue");
-                System.in.read();
-                System.err.println("running...");
-
-            } catch(Exception e) {
-            }
-        }
-    }
-
-    /*
-     * Test cases should implement tests in runTests and should
-     * initiate testing by calling run().
-     */
-    abstract protected void runTests() throws Exception;
-
-    final public void startTests() throws Exception {
-        try {
-            runTests();
-        } finally {
-            shutdown();
-        }
-    }
-
-    protected void println(String str) {
-        System.err.println(str);
-    }
-
-    protected void print(String str) {
-        System.err.print(str);
-    }
-
-    protected void traceln(String str) {
-        if (shouldTrace) {
-            println(str);
-        }
-    }
-
-    protected void failure(String str) {
-        println(str);
-        testFailed = true;
-    }
-
-    private ArgInfo parseArgs(String args[]) {
-        ArgInfo argInfo = new ArgInfo();
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-connect")) {
-                i++;
-                argInfo.connectorSpec = args[i];
-            } else if (args[i].equals("-trace")) {
-                i++;
-                argInfo.traceFlags = Integer.decode(args[i]).intValue();
-            } else if (args[i].startsWith("-J")) {
-                argInfo.targetVMArgs += (args[i].substring(2) + ' ');
-
-                /*
-                 * classpath can span two arguments so we need to handle
-                 * it specially.
-                 */
-                if (args[i].equals("-J-classpath")) {
-                    i++;
-                    argInfo.targetVMArgs += (args[i] + ' ');
-                }
-            } else {
-                argInfo.targetAppCommandLine += (args[i] + ' ');
-            }
-        }
-        return argInfo;
-    }
-
-    /**
-     * This is called to connect to a debuggee VM.  It starts the VM and
-     * installs a listener to catch VMStartEvent, our default events, and
-     * VMDisconnectedEvent.  When these events appear, that is remembered
-     * and waiters are notified.
-     * This is normally called in the main thread of the test case.
-     * It starts up an EventHandler thread that gets events coming in
-     * from the debuggee and distributes them to listeners.  That thread
-     * keeps running until a VMDisconnectedEvent occurs or some exception
-     * occurs during its processing.
-     *
-     * The 'listenUntilVMDisconnect' method adds 'this' as a listener.
-     * This means that 'this's vmDied method will get called.  This has a
-     * default impl in TargetAdapter.java which can be overridden in the
-     * testcase.
-     *
-     * waitForRequestedEvent also adds an adaptor listener that listens
-     * for the particular event it is supposed to wait for (and it also
-     * catches VMDisconnectEvents.)  This listener is removed once
-     * its eventReceived method is called.
-     * waitForRequestedEvent is called by most of the methods to do bkpts,
-     * etc.
-     */
-    public void connect(String args[]) {
-        ArgInfo argInfo = parseArgs(args);
-
-        argInfo.targetVMArgs += VMConnection.getDebuggeeVMOptions();
-        connection = new VMConnection(argInfo.connectorSpec,
-                                      argInfo.traceFlags);
-
-        addListener(new TargetAdapter() {
-                public void eventSetComplete(EventSet set) {
-                    if (TestScaffold.this.containsOurVMDeathRequest(set)) {
-                        traceln("TS: connect: set.resume() called");
-                        set.resume();
-
-                        // Note that we want to do the above resume before
-                        // waking up any sleepers.
-                        synchronized(TestScaffold.this) {
-                            TestScaffold.this.notifyAll();
-                        }
-                    }
-                }
-
-                public void vmStarted(VMStartEvent event) {
-                    synchronized(TestScaffold.this) {
-                        vmStartThread = event.thread();
-                        TestScaffold.this.notifyAll();
-                    }
-                }
-                /**
-                 * By default, we catch uncaught exceptions and print a msg.
-                 * The testcase must override the createDefaultExceptionRequest
-                 * method if it doesn't want this behavior.
-                 */
-                public void exceptionThrown(ExceptionEvent event) {
-                    if (TestScaffold.this.ourExceptionRequest != null &&
-                        TestScaffold.this.ourExceptionRequest.equals(
-                                                        event.request())) {
-                        println("Note: Unexpected Debuggee Exception: " +
-                                event.exception().referenceType().name() +
-                                " at line " + event.location().lineNumber());
-                        TestScaffold.this.exceptionCaught = true;
-                    }
-                }
-
-                public void vmDied(VMDeathEvent event) {
-                    vmDied = true;
-                    traceln("TS: vmDied called");
-                }
-
-                public void vmDisconnected(VMDisconnectEvent event) {
-                    synchronized(TestScaffold.this) {
-                        vmDisconnected = true;
-                        TestScaffold.this.notifyAll();
-                    }
-                }
-            });
-        if (connection.connector().name().equals("com.sun.jdi.CommandLineLaunch")) {
-            if (argInfo.targetVMArgs.length() > 0) {
-                if (connection.connectorArg("options").length() > 0) {
-                    throw new IllegalArgumentException("VM options in two places");
-                }
-                connection.setConnectorArg("options", argInfo.targetVMArgs);
-            }
-            if (argInfo.targetAppCommandLine.length() > 0) {
-                if (connection.connectorArg("main").length() > 0) {
-                    throw new IllegalArgumentException("Command line in two places");
-                }
-                connection.setConnectorArg("main", argInfo.targetAppCommandLine);
-            }
-        }
-
-        vm = connection.open();
-        requestManager = vm.eventRequestManager();
-        createDefaultEventRequests();
-        new EventHandler();
-    }
-
-
-    public VirtualMachine vm() {
-        return vm;
-    }
-
-    public EventRequestManager eventRequestManager() {
-        return requestManager;
-    }
-
-    public void addListener(TargetListener listener) {
-        traceln("TS: Adding listener " + listener);
-        listeners.add(listener);
-    }
-
-    public void removeListener(TargetListener listener) {
-        traceln("TS: Removing listener " + listener);
-        listeners.remove(listener);
-    }
-
-
-    protected void listenUntilVMDisconnect() {
-        try {
-            addListener (this);
-        } catch (Exception ex){
-            ex.printStackTrace();
-            testFailed = true;
-        } finally {
-            // Allow application to complete and shut down
-            resumeToVMDisconnect();
-        }
-    }
-
-    public synchronized ThreadReference waitForVMStart() {
-        while ((vmStartThread == null) && !vmDisconnected) {
-            try {
-                wait();
-            } catch (InterruptedException e) {
-            }
-        }
-
-        if (vmStartThread == null) {
-            throw new VMDisconnectedException();
-        }
-
-        return vmStartThread;
-    }
-
-    public synchronized void waitForVMDisconnect() {
-        traceln("TS: waitForVMDisconnect");
-        while (!vmDisconnected) {
-            try {
-                wait();
-            } catch (InterruptedException e) {
-            }
-        }
-        traceln("TS: waitForVMDisconnect: done");
-    }
-
-    public Event waitForRequestedEvent(final EventRequest request) {
-        class EventNotification {
-            Event event;
-            boolean disconnected = false;
-        }
-        final EventNotification en = new EventNotification();
-
-        TargetAdapter adapter = new TargetAdapter() {
-            public void eventReceived(Event event) {
-                if (request.equals(event.request())) {
-                    traceln("TS:Listener2: got requested event");
-                    synchronized (en) {
-                        en.event = event;
-                        en.notifyAll();
-                    }
-                    removeThisListener();
-                } else if (event instanceof VMDisconnectEvent) {
-                    traceln("TS:Listener2: got VMDisconnectEvent");
-                    synchronized (en) {
-                        en.disconnected = true;
-                        en.notifyAll();
-                    }
-                    removeThisListener();
-                }
-            }
-        };
-
-        addListener(adapter);
-
-        try {
-            synchronized (en) {
-                traceln("TS: waitForRequestedEvent: vm.resume called");
-                vm.resume();
-
-                while (!en.disconnected && (en.event == null)) {
-                    en.wait();
-                }
-            }
-        } catch (InterruptedException e) {
-            return null;
-        }
-
-        if (en.disconnected) {
-            throw new RuntimeException("VM Disconnected before requested event occurred");
-        }
-        return en.event;
-    }
-
-    private StepEvent doStep(ThreadReference thread, int gran, int depth) {
-        final StepRequest sr =
-                  requestManager.createStepRequest(thread, gran, depth);
-
-        sr.addClassExclusionFilter("java.*");
-        sr.addClassExclusionFilter("sun.*");
-        sr.addClassExclusionFilter("com.sun.*");
-        sr.addCountFilter(1);
-        sr.enable();
-        StepEvent retEvent = (StepEvent)waitForRequestedEvent(sr);
-        requestManager.deleteEventRequest(sr);
-        return retEvent;
-    }
-
-    public StepEvent stepIntoInstruction(ThreadReference thread) {
-        return doStep(thread, StepRequest.STEP_MIN, StepRequest.STEP_INTO);
-    }
-
-    public StepEvent stepIntoLine(ThreadReference thread) {
-        return doStep(thread, StepRequest.STEP_LINE, StepRequest.STEP_INTO);
-    }
-
-    public StepEvent stepOverInstruction(ThreadReference thread) {
-        return doStep(thread, StepRequest.STEP_MIN, StepRequest.STEP_OVER);
-    }
-
-    public StepEvent stepOverLine(ThreadReference thread) {
-        return doStep(thread, StepRequest.STEP_LINE, StepRequest.STEP_OVER);
-    }
-
-    public StepEvent stepOut(ThreadReference thread) {
-        return doStep(thread, StepRequest.STEP_LINE, StepRequest.STEP_OUT);
-    }
-
-    public BreakpointEvent resumeTo(Location loc) {
-        final BreakpointRequest request =
-            requestManager.createBreakpointRequest(loc);
-        request.addCountFilter(1);
-        request.enable();
-        return (BreakpointEvent)waitForRequestedEvent(request);
-    }
-
-    public ReferenceType findReferenceType(String name) {
-        List rts = vm.classesByName(name);
-        Iterator iter = rts.iterator();
-        while (iter.hasNext()) {
-            ReferenceType rt = (ReferenceType)iter.next();
-            if (rt.name().equals(name)) {
-                return rt;
-            }
-        }
-        return null;
-    }
-
-    public Method findMethod(ReferenceType rt, String name, String signature) {
-        List methods = rt.methods();
-        Iterator iter = methods.iterator();
-        while (iter.hasNext()) {
-            Method method = (Method)iter.next();
-            if (method.name().equals(name) &&
-                method.signature().equals(signature)) {
-                return method;
-            }
-        }
-        return null;
-    }
-
-    public Location findLocation(ReferenceType rt, int lineNumber)
-                         throws AbsentInformationException {
-        List locs = rt.locationsOfLine(lineNumber);
-        if (locs.size() == 0) {
-            throw new IllegalArgumentException("Bad line number");
-        } else if (locs.size() > 1) {
-            throw new IllegalArgumentException("Line number has multiple locations");
-        }
-
-        return (Location)locs.get(0);
-    }
-
-    public BreakpointEvent resumeTo(String clsName, String methodName,
-                                         String methodSignature) {
-        ReferenceType rt = findReferenceType(clsName);
-        if (rt == null) {
-            rt = resumeToPrepareOf(clsName).referenceType();
-        }
-
-        Method method = findMethod(rt, methodName, methodSignature);
-        if (method == null) {
-            throw new IllegalArgumentException("Bad method name/signature");
-        }
-
-        return resumeTo(method.location());
-    }
-
-    public BreakpointEvent resumeTo(String clsName, int lineNumber) throws AbsentInformationException {
-        ReferenceType rt = findReferenceType(clsName);
-        if (rt == null) {
-            rt = resumeToPrepareOf(clsName).referenceType();
-        }
-
-        return resumeTo(findLocation(rt, lineNumber));
-    }
-
-    public ClassPrepareEvent resumeToPrepareOf(String className) {
-        final ClassPrepareRequest request =
-            requestManager.createClassPrepareRequest();
-        request.addClassFilter(className);
-        request.addCountFilter(1);
-        request.enable();
-        return (ClassPrepareEvent)waitForRequestedEvent(request);
-    }
-
-    public void resumeToVMDisconnect() {
-        try {
-            traceln("TS: resumeToVMDisconnect: vm.resume called");
-            vm.resume();
-        } catch (VMDisconnectedException e) {
-            // clean up below
-        }
-        waitForVMDisconnect();
-    }
-
-    public void shutdown() {
-        shutdown(null);
-    }
-
-    public void shutdown(String message) {
-        traceln("TS: shutdown: vmDied= " + vmDied +
-                 ", vmDisconnected= " + vmDisconnected +
-                 ", connection = " + connection);
-
-        if ((connection != null)) {
-            try {
-                connection.disposeVM();
-             } catch (VMDisconnectedException e) {
-                // Shutting down after the VM has gone away. This is
-                // not an error, and we just ignore it.
-            }
-        } else {
-            traceln("TS: shutdown: disposeVM not called");
-        }
-        if (message != null) {
-            println(message);
-        }
-
-        vmDied = true;
-        vmDisconnected = true;
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/VMConnection.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,378 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- *
- */
-
-import com.sun.jdi.*;
-import com.sun.jdi.connect.*;
-import com.sun.jdi.request.EventRequestManager;
-
-import java.util.*;
-import java.io.*;
-
-
-/**
- * Manages a VM conection for the JDI test framework.
- */
-class VMConnection {
-    private VirtualMachine vm;
-    private Process process = null;
-    private int outputCompleteCount = 0;
-
-    private final Connector connector;
-    private final Map connectorArgs;
-    private final int traceFlags;
-
-    /**
-     * Return a String containing VM Options to pass to the debugee
-     * or an empty string if there are none.
-     * These are read from the first non-comment line
-     * in file test/com/sun/jdi/@debuggeeVMOptions.
-     */
-    static public String getDebuggeeVMOptions() {
-
-        // When we run under jtreg, test.src contains the pathname of
-        // the test/com/sun/jdi dir.
-        BufferedReader reader;
-        final String filename = "@debuggeeVMOptions";
-        String srcDir = System.getProperty("test.src");
-
-        if (srcDir == null) {
-          srcDir = System.getProperty("user.dir");
-        }
-        srcDir = srcDir + File.separator;
-
-        File myDir = new File(srcDir);
-
-        File myFile = new File(myDir, filename);
-        if (!myFile.canRead()) {
-            try {
-                // We have some subdirs of test/com/sun/jdi so in case we
-                // are in one of them, look in our parent dir for the file.
-                myFile = new File(myDir.getCanonicalFile().getParent(),
-                                  filename);
-                if (!myFile.canRead()) {
-                    return "";
-                }
-            } catch (IOException ee) {
-                System.out.println("-- Error 1 trying to access file " +
-                                   myFile.getPath() + ": " + ee);
-                return "";
-            }
-        }
-        String wholePath = myFile.getPath();
-        try {
-            reader = new BufferedReader(new FileReader(myFile));
-        } catch (FileNotFoundException ee) {
-            System.out.println("-- Error 2 trying to access file " +
-                               wholePath + ": " + ee);
-            return "";
-        }
-
-        String line;
-        String retVal = "";
-        while (true) {
-            try {
-                line = reader.readLine();
-            } catch (IOException ee) {
-                System.out.println("-- Error reading options from file " +
-                                   wholePath + ": " + ee);
-                break;
-            }
-            if (line == null) {
-                System.out.println("-- No debuggee VM options found in file " +
-                                   wholePath);
-                break;
-            }
-            line = line.trim();
-            if (line.length() != 0 && !line.startsWith("#")) {
-                System.out.println("-- Added debuggeeVM options from file " +
-                                   wholePath + ": " + line);
-                retVal = line;
-                break;
-            }
-            // Else, read he next line.
-        }
-        try {
-            reader.close();
-        } catch (IOException ee) {
-        }
-        return retVal;
-    }
-
-    private Connector findConnector(String name) {
-        List connectors = Bootstrap.virtualMachineManager().allConnectors();
-        Iterator iter = connectors.iterator();
-        while (iter.hasNext()) {
-            Connector connector = (Connector)iter.next();
-            if (connector.name().equals(name)) {
-                return connector;
-            }
-        }
-        return null;
-    }
-
-    private Map parseConnectorArgs(Connector connector, String argString) {
-        StringTokenizer tokenizer = new StringTokenizer(argString, ",");
-        Map arguments = connector.defaultArguments();
-
-        while (tokenizer.hasMoreTokens()) {
-            String token = tokenizer.nextToken();
-            int index = token.indexOf('=');
-            if (index == -1) {
-                throw new IllegalArgumentException("Illegal connector argument: " +
-                                                   token);
-            }
-            String name = token.substring(0, index);
-            String value = token.substring(index + 1);
-            Connector.Argument argument = (Connector.Argument)arguments.get(name);
-            if (argument == null) {
-                throw new IllegalArgumentException("Argument " + name +
-                                               "is not defined for connector: " +
-                                               connector.name());
-            }
-            argument.setValue(value);
-        }
-        return arguments;
-    }
-
-    VMConnection(String connectSpec, int traceFlags) {
-        String nameString;
-        String argString;
-        int index = connectSpec.indexOf(':');
-        if (index == -1) {
-            nameString = connectSpec;
-            argString = "";
-        } else {
-            nameString = connectSpec.substring(0, index);
-            argString = connectSpec.substring(index + 1);
-        }
-
-        connector = findConnector(nameString);
-        if (connector == null) {
-            throw new IllegalArgumentException("No connector named: " +
-                                               nameString);
-        }
-
-        connectorArgs = parseConnectorArgs(connector, argString);
-        this.traceFlags = traceFlags;
-    }
-
-    synchronized VirtualMachine open() {
-        if (connector instanceof LaunchingConnector) {
-            vm = launchTarget();
-        } else if (connector instanceof AttachingConnector) {
-            vm = attachTarget();
-        } else if (connector instanceof ListeningConnector) {
-            vm = listenTarget();
-        } else {
-            throw new InternalError("Invalid connect type");
-        }
-        vm.setDebugTraceMode(traceFlags);
-        System.out.println("JVM version:" + vm.version());
-        System.out.println("JDI version: " + Bootstrap.virtualMachineManager().majorInterfaceVersion() +
-                           "." + Bootstrap.virtualMachineManager().minorInterfaceVersion());
-        System.out.println("JVM description: " + vm.description());
-
-        return vm;
-    }
-
-    boolean setConnectorArg(String name, String value) {
-        /*
-         * Too late if the connection already made
-         */
-        if (vm != null) {
-            return false;
-        }
-
-        Connector.Argument argument = (Connector.Argument)connectorArgs.get(name);
-        if (argument == null) {
-            return false;
-        }
-        argument.setValue(value);
-        return true;
-    }
-
-    String connectorArg(String name) {
-        Connector.Argument argument = (Connector.Argument)connectorArgs.get(name);
-        if (argument == null) {
-            return "";
-        }
-        return argument.value();
-    }
-
-    public synchronized VirtualMachine vm() {
-        if (vm == null) {
-            throw new InternalError("VM not connected");
-        } else {
-            return vm;
-        }
-    }
-
-    boolean isOpen() {
-        return (vm != null);
-    }
-
-    boolean isLaunch() {
-        return (connector instanceof LaunchingConnector);
-    }
-
-    Connector connector() {
-        return connector;
-    }
-
-    boolean isListen() {
-        return (connector instanceof ListeningConnector);
-    }
-
-    boolean isAttach() {
-        return (connector instanceof AttachingConnector);
-    }
-
-    private synchronized void notifyOutputComplete() {
-        outputCompleteCount++;
-        notifyAll();
-    }
-
-    private synchronized void waitOutputComplete() {
-        // Wait for stderr and stdout
-        if (process != null) {
-            while (outputCompleteCount < 2) {
-                try {wait();} catch (InterruptedException e) {}
-            }
-        }
-    }
-
-    public void disposeVM() {
-        try {
-            if (vm != null) {
-                vm.dispose();
-                vm = null;
-            }
-        } finally {
-            if (process != null) {
-                process.destroy();
-                process = null;
-            }
-            waitOutputComplete();
-        }
-    }
-
-    private void dumpStream(InputStream stream) throws IOException {
-        PrintStream outStream = System.out;
-        BufferedReader in =
-            new BufferedReader(new InputStreamReader(stream));
-        String line;
-        while ((line = in.readLine()) != null) {
-            outStream.println(line);
-        }
-    }
-
-    /**
-     *  Create a Thread that will retrieve and display any output.
-     *  Needs to be high priority, else debugger may exit before
-     *  it can be displayed.
-     */
-    private void displayRemoteOutput(final InputStream stream) {
-        Thread thr = new Thread("output reader") {
-            public void run() {
-                try {
-                    dumpStream(stream);
-                } catch (IOException ex) {
-                    System.err.println("IOException reading output of child java interpreter:"
-                                       + ex.getMessage());
-                } finally {
-                    notifyOutputComplete();
-                }
-            }
-        };
-        thr.setPriority(Thread.MAX_PRIORITY-1);
-        thr.start();
-    }
-
-    private void dumpFailedLaunchInfo(Process process) {
-        try {
-            dumpStream(process.getErrorStream());
-            dumpStream(process.getInputStream());
-        } catch (IOException e) {
-            System.err.println("Unable to display process output: " +
-                               e.getMessage());
-        }
-    }
-
-    /* launch child target vm */
-    private VirtualMachine launchTarget() {
-        LaunchingConnector launcher = (LaunchingConnector)connector;
-        try {
-            VirtualMachine vm = launcher.launch(connectorArgs);
-            process = vm.process();
-            displayRemoteOutput(process.getErrorStream());
-            displayRemoteOutput(process.getInputStream());
-            return vm;
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-            System.err.println("\n Unable to launch target VM.");
-        } catch (IllegalConnectorArgumentsException icae) {
-            icae.printStackTrace();
-            System.err.println("\n Internal debugger error.");
-        } catch (VMStartException vmse) {
-            System.err.println(vmse.getMessage() + "\n");
-            dumpFailedLaunchInfo(vmse.process());
-            System.err.println("\n Target VM failed to initialize.");
-        }
-        return null; // Shuts up the compiler
-    }
-
-    /* attach to running target vm */
-    private VirtualMachine attachTarget() {
-        AttachingConnector attacher = (AttachingConnector)connector;
-        try {
-            return attacher.attach(connectorArgs);
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-            System.err.println("\n Unable to attach to target VM.");
-        } catch (IllegalConnectorArgumentsException icae) {
-            icae.printStackTrace();
-            System.err.println("\n Internal debugger error.");
-        }
-        return null; // Shuts up the compiler
-    }
-
-    /* listen for connection from target vm */
-    private VirtualMachine listenTarget() {
-        ListeningConnector listener = (ListeningConnector)connector;
-        try {
-            String retAddress = listener.startListening(connectorArgs);
-            System.out.println("Listening at address: " + retAddress);
-            vm = listener.accept(connectorArgs);
-            listener.stopListening(connectorArgs);
-            return vm;
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-            System.err.println("\n Unable to attach to target VM.");
-        } catch (IllegalConnectorArgumentsException icae) {
-            icae.printStackTrace();
-            System.err.println("\n Internal debugger error.");
-        }
-        return null; // Shuts up the compiler
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/jstack.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2003, 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.
-#  
-#
-
-$JAVA_HOME/bin/java -showversion ${OPTIONS} -classpath $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.StackTrace $*
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/jstack64.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2003, 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.
-#  
-#
-
-$JAVA_HOME/bin/java -d64 -showversion ${OPTIONS} -classpath $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.StackTrace $*
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/multivm.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2003, 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.
- *
- */
-
-import com.sun.jdi.*;
-import com.sun.jdi.connect.*;
-
-import java.util.Map;
-import java.util.List;
-import java.util.Iterator;
-import java.io.IOException;
-
-/* This class is used to test multi VM connectivity feature of
- * SA/JDI. Accepts two PIDs as arguments. Connects to first VM
- *, Connects to second VM and disposes them in that order.
- */
-
-public class multivm {
-    static AttachingConnector myPIDConn;
-    static VirtualMachine vm1;
-    static VirtualMachine vm2;
-    static VirtualMachineManager vmmgr;
-
-    public static void println(String msg) {
-        System.out.println(msg);
-    }
-
-    private static void usage() {
-        System.err.println("Usage: java multivm <pid1> <pid2>");
-        System.exit(1);
-    }
-
-    public static void main(String args[]) {
-        vmmgr = Bootstrap.virtualMachineManager();
-        List attachingConnectors = vmmgr.attachingConnectors();
-        if (attachingConnectors.isEmpty()) {
-            System.err.println( "ERROR: No attaching connectors");
-            return;
-        }
-        Iterator myIt = attachingConnectors.iterator();
-        while (myIt.hasNext()) {
-            AttachingConnector tmpCon = (AttachingConnector)myIt.next();
-            if (tmpCon.name().equals(
-                "sun.jvm.hotspot.jdi.SAPIDAttachingConnector")) {
-                myPIDConn = tmpCon;
-                break;
-            }
-        }
-
-        int pid1 = 0, pid2 = 0;
-        String pidText = null;
-        switch (args.length) {
-        case (2):
-            try {
-                pidText = args[0];
-                pid1 = Integer.parseInt(pidText);
-                System.out.println( "pid1: " + pid1);
-                vm1 = attachPID(pid1);
-                pidText = args[1];
-                pid2 = Integer.parseInt(pidText);
-                System.out.println( "pid2: " + pid2);
-                vm2 = attachPID(pid2);
-            } catch (NumberFormatException e) {
-                println(e.getMessage());
-                usage();
-            }
-            break;
-        default:
-            usage();
-        }
-
-        if (vm1 != null) {
-            System.out.println("vm1: attached ok!");
-            System.out.println(vm1.version());
-            sagdoit mine = new sagdoit(vm1);
-            mine.doAll();
-        }
-
-        if (vm2 != null) {
-            System.out.println("vm2: attached ok!");
-            System.out.println(vm2.version());
-            sagdoit mine = new sagdoit(vm2);
-            mine.doAll();
-        }
-
-        if (vm1 != null) {
-            vm1.dispose();
-        }
-
-        if (vm2 != null) {
-            vm2.dispose();
-        }
-    }
-
-   private static VirtualMachine attachPID(int pid) {
-        Map connArgs = myPIDConn.defaultArguments();
-        System.out.println("connArgs = " + connArgs);
-        VirtualMachine vm;
-        Connector.StringArgument connArg = (Connector.StringArgument)connArgs.get("pid");
-        connArg.setValue(Integer.toString(pid));
-
-        try {
-            vm = myPIDConn.attach(connArgs);
-        } catch (IOException ee) {
-            System.err.println("ERROR: myPIDConn.attach got IO Exception:" + ee);
-            vm = null;
-        } catch (IllegalConnectorArgumentsException ee) {
-            System.err.println("ERROR: myPIDConn.attach got illegal args exception:" + ee);
-            vm = null;
-        }
-        return vm;
-   }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/multivm.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#!/bin/ksh
-#
-# Copyright (c) 2003, 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.
-#  
-#
-
-doUsage()
-{
-    cat <<EOF
-    Run multivm.class using Serviceability Agent to talk to 2 pids
-    simultaneousely. i.e, before detaching one attach another.
-    Usage:  multivm.sh <jdk-pathname> <pid1> <pid2>
-
-EOF
-}
-
-if [ $# = 4 ] ; then
-    doUsage
-    exit 1
-fi
-
-jdk=$1
-javacp="$jdk/lib/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
-
-mkdir -p workdir
-if [ sagdoit.java -nt ./workdir/sagdoit.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp sagdoit.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-if [ multivm.java -nt ./workdir/multivm.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp multivm.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-
-$jdk/bin/java -Dsun.jvm.hotspot.jdi.ConnectorImpl.DEBUG -Dsun.jvm.hotspot.jdi.SAJDIClassLoader.DEBUG -Djava.class.path=$javacp multivm $2 $3
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/runjdb.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2002, 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.
-#  
-#
-
-#  jdb is a .c file that seems to discard the setting of CLASSPATH.
-# So, we have to run jdb by calling java directly :-(
-
-# License file for development version of dbx
-LM_LICENSE_FILE=7588@extend.eng:/usr/dist/local/config/sparcworks/license.dat:7588@setlicense
-export LM_LICENSE_FILE
-
-doUsage()
-{
-   cat <<EOF
-Usage:  runjdb.sh corefile -jdk jdk-pathname -sa sa-pathname
-    sa-pathname is the path of a JDI-SA build dir.
-EOF
-}
-
-jdk=
-javaArgs=
-args=
-sa=
-while [ $# != 0 ] ; do
-    case $1 in
-      -vv)
-        set -x
-        ;;
-     -jdk)
-        jdk=$2
-        shift
-        ;;
-     -sa)
-        sa=$2
-        shift
-        ;;
-     -help | help)
-        doUsage
-        exit
-        ;;
-     -*)
-        javaArgs="$javaArgs $1"
-        ;;
-     *)
-        if [ ! -z "$args" ] ; then
-            echo "Error: Only one core file or pid can be specified"
-            exit 1
-        fi
-        echo "$1" | grep -s '^[0-9]*$' > /dev/null
-        if [ $? = 0 ] ; then
-            # it is a pid
-            args="$args $1"
-            echo "Error: A pid is not yet allowed"
-            exit 1
-        else
-            # It is a core.        
-            # We have to pass the name of the program that produced the
-            # core, and the core file itself.
-            args="$1"
-        fi
-        ;;
-   esac
-   shift
-done
-
-if [ -z "$jdk" ] ; then
-    echo "Error:  -jdk jdk-pathname is required"
-    exit 1
-fi
-if [ -z "$sa" ] ; then
-    echo "Error:  -sa sa-pathname is required"
-    exit 1
-fi
-
-if [ -z "$args" ] ; then
-    echo "Error:  a core file or pid must be specified"
-    exit 1
-fi
-
-set -x
-$jdk/bin/jdb -J-Xbootclasspath/a:$sa  -connect \
-  sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=$args,javaExecutable=$jdk/bin/java
-
-
-#$jdk/bin/java -Xbootclasspath/a:$mmm/ws/merlin-sa/build/agent \
-#  com.sun.tools.example.debug.tty.TTY -connect \
-#  sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=sagcore,javaExecutable=$jdk/bin/java
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/runjpda.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-#!/bin/ksh
-#
-# Copyright (c) 2002, 2004, 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.
-#  
-#
-
-# This script runs the test program, sagtest.java, with the regular
-# JPDA jdi.
-# It then starts up the debuggee part of the test, sagtarg.java,
-# and calls gcore to create file sagcore for use in running
-# the SA JDI client.
-
-set -x
-# jdk is a jdk with the vm from the sa workspace
-while [ $# != 0 ] ; do
-    case $1 in
-      -vv)
-        set -x
-        ;;
-      -gui)
-        theClass=sun.jvm.hotspot.HSDB
-        ;;
-     -jdk)
-        jdk=$2
-        shift
-        ;;
-     -jdbx)
-        do=jdbx
-        ;;
-     -jdb)
-        do=jdb
-        ;;
-     -help | help)
-        doUsage
-        exit
-        ;;
-     -dontkill)
-        dontkill=true
-        ;;
-     -d64)
-        d64=-d64
-        ;;
-     -*)
-        javaArgs="$javaArgs $1"
-        ;;
-     *)
-        echo "$1" | grep -s '^[0-9]*$' > /dev/null
-        if [ $? = 0 ] ; then
-            # it is a pid
-            args="$args $1"
-        else
-            # It is a core.        
-            # We have to pass the name of the program that produced the
-            # core, and the core file itself.
-            args="$jdk/bin/java $1"
-        fi
-        ;;
-   esac
-   shift
-done
-
-# First, run the sagtest.java with the regular JPDA jdi
-workdir=./workdir
-mkdir -p $workdir
-CLASSPATH=$jdk/classes:$jdk/lib/tools.jar:$workdir
-export CLASSPATH
-
-$jdk/bin/javac -g  -source 1.5 -classpath $jdk/classes:$jdk/lib/tools.jar:$workdir -J-Xms40m -d $workdir \
-    TestScaffold.java \
-    VMConnection.java \
-    TargetListener.java \
-    TargetAdapter.java \
-    sagdoit.java \
-    sagtarg.java \
-    sagtest.java
-
-if [ $? != 0 ] ; then
-    exit 1
-fi
-
-$jdk/bin/java $javaArgs -Dtest.classes=$workdir sagtest
-
-# Now run create a core file for use in running sa-jdi
-
-if [ ! core.satest -nt sagtarg.class ] ; then
-    tmp=/tmp/sagsetup
-    rm -f $tmp
-    $jdk/bin/java $d64 sagtarg > $tmp &
-    pid=$!
-    while [ ! -s $tmp ] ; do
-        # Kludge alert!
-        sleep 2
-    done
-    #rm -f $tmp
-
-    # force core dump of the debuggee
-    OS=`uname`
-    if [ "$OS" = "Linux" ]; then
-        # Linux does not have gcore command. Instead, we use 'gdb's
-        # gcore command. Note that only some versions of gdb support
-        # gdb command.
-        echo "gcore" > gdbscript
-        gdb -batch -p $pid -x gdbscript
-        rm -f gdbscript
-    else
-        gcore  $* $pid
-    fi
-    mv core.$pid sagcore
-
-    if [ "$dontkill" != "true" ]; then
-       kill -9 $pid
-    fi
-fi
-
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/runsa.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-#!/bin/ksh
-#
-# Copyright (c) 2002, 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.
-#  
-#
-
-
-# This jdk must be hopper or better; it must have the 
-# SA connectors in VirtualMachineManagerImpl.
-jdk=/java/re/jdk/1.4.1/promoted/latest/binaries/solaris-sparc
-#jdk=/net/mmm/export/mmm/jdk1.4fcs.sa
-
-doUsage()
-{
-    cat <<EOF
-    Run sagclient.class using Serviceability Agent to talk to a corefile/pid/debugserver.
-    Usage:  runsa.sh [-jdk <jdk-pathname>] [-jdb] [ -jdbx ] [ -d64 ] [ -remote ] [ pid | corefile | debugserver ]
-
-    -jdk means to use that jdk.  Default is 1.4.1/latest.
-    -jdbx means to run it under jdbx
-    -jdb means to connect using jdb instead of the sagclient program.
-    -remote debugserver means you want to connect to a remote debug server
-
-    The corefile must have been produced by the same java as is running SA.
-
-EOF
-}
-
-if [ $# = 0 ] ; then
-    doUsage
-    exit 1
-fi
-
-# License file for development version of dbx
-#LM_LICENSE_FILE=7588@extend.eng:/usr/dist/local/config/sparcworks/license.dat:7588@setlicense
-#export LM_LICENSE_FILE
-
-do=
-args=
-theClass=sagclient
-javaArgs=
-
-while [ $# != 0 ] ; do
-    case $1 in
-      -vv)
-        set -x
-        ;;
-     -jdk)
-        jdk=$2
-        shift
-        ;;
-     -jdbx)
-        do=jdbx
-        ;;
-     -jdb)
-        do=jdb
-        ;;
-     -help | help)
-        doUsage
-        exit
-        ;;
-     -d64) 
-        d64=-d64
-        ;;
-     -remote)
-        shift 
-        args="$1"
-        do=remote
-        ;;
-     -*)
-        javaArgs="$javaArgs $1"
-        ;;
-     *)
-        echo "$1" | grep -s '^[0-9]*$' > /dev/null
-        if [ $? = 0 ] ; then
-            # it is a pid
-            args="$args $1"
-        else
-            # It is a core.        
-            # We have to pass the name of the program that produced the
-            # core, and the core file itself.
-            args="$jdk/bin/java $1"
-        fi
-        ;;
-   esac
-   shift
-done
-
-if [ -z "$jdk" ] ; then
-    error "--Error: runsa.sh:  Must specify -jdk <jdk-pathname>."
-    error "         Do runsa.sh -help for more info"
-    exit 1
-fi
-
-set -x
-
-# If jjh makes this, then the classes are in .../build/agent.
-# if someone else does, they are in  .
-classesDir=../../../../../../build/agent
-if [ ! -r $classesDir ] ; then
-    classesDir=.
-    if [ ! -r $classesDir ] ; then
-        echo "-- Error: runsa.sh can't find the SA classes"
-        exit 1
-    fi
-fi
-#javacp="/net/mmm/export/mmm/ws/sabaseline/build/solaris/solaris_sparc_compiler1/generated/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
-
-javacp="$jdk/lib/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
-
-
-extraArgs="-showversion $javaArgs"
-#extraArgs="-DdbxSvcAgentDSOPathName=/net/mmm/export/mmm/ws/m/b2/sa/src/os/solaris/agent/64bit/libsvc_agent_dbx.so $extraArgs"
-#extraArgs="-DdbxSvcAgentDSOPathName=/net/jano.eng/export/disk05/hotspot/sa/solaris/sparcv9/lib/libsvc_agent_dbx.so $extraArgs"
-
-mkdir -p workdir
-if [ sagclient.java -nt ./workdir/sagclient.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp sagclient.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-if [ sagdoit.java -nt ./workdir/sagdoit.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp sagdoit.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-
-if [ "$do" = jdbx ] ; then
-    set -x
-    dbx=/net/sparcworks.eng/export/set/sparcworks2/dbx_70_nightly/dev/buildbin/Derived-sparc-S2-opt/bin/dbx
-
-    # Have to do this export for jdbx to work.  -cp and -classpath don't work.
-    CLASSPATH=$javacp
-    export CLASSPATH
-    #extraArgs="-Djava.class.path=$mhs/../sa/build/agent sun.jvm.hotspot.HSDB $*"
-    jvm_invocation="$jdk/bin/java -Xdebug \
-               -Dsun.boot.class.path=$jdk/classes \
-               $extraArgs"
-    #export jvm_invocation
-    
-    JAVASRCPATH=$mhs/../sa/src/share/vm/agent
-    export JAVASRCPATH
-
-    #operand is pathname of .class file, eg ./jj.class.
-    echo run $args
-    clss=`echo $theClass | sed -e 's@\.@/@'`
-    if [ -r ./workdir/$clss.class ] ; then
-        # kludge for running sagclient
-        $dbx  ./workdir/$clss.class
-    else
-        # kludge for running HSDB
-        $dbx  $mhs/../sa/build/agent/$clss.class
-    fi
-elif [ "$do" = jdb ] ; then
-    # This hasn't been tested.
-    $jdk/bin/jdb -J-Xbootclasspath/a:$classesDir -connect sun.jvm.hotspot.jdi.SACoreAttachingConnector:core=sagcore
-elif [ "$do" = remote ] ; then
-    $jdk/bin/java $d64 -Djava.class.path=$javacp $extraArgs $theClass $args
-else
-    $jdk/bin/java $d64 -Djava.class.path=$javacp $extraArgs $theClass $args
-
-fi
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/sagclient.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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.
- *
- */
-
-import com.sun.jdi.*;
-import com.sun.jdi.connect.*;
-
-import java.util.Map;
-import java.util.List;
-import java.util.Iterator;
-import java.io.IOException;
-
-public class sagclient {
-    static AttachingConnector myCoreConn;
-    static AttachingConnector myPIDConn;
-    static AttachingConnector myDbgSvrConn;
-    static VirtualMachine vm;
-    static VirtualMachineManager vmmgr;
-
-    public static void println(String msg) {
-        System.out.println("jj: " + msg);
-    }
-
-
-    public static void main(String args[]) {
-        vmmgr = Bootstrap.virtualMachineManager();
-        List attachingConnectors = vmmgr.attachingConnectors();
-        if (attachingConnectors.isEmpty()) {
-            System.err.println( "ERROR: No attaching connectors");
-            return;
-        }
-        Iterator myIt = attachingConnectors.iterator();
-        while (myIt.hasNext()) {
-            AttachingConnector tmpCon = (AttachingConnector)myIt.next();
-            if (tmpCon.name().equals(
-                "sun.jvm.hotspot.jdi.SACoreAttachingConnector")) {
-                myCoreConn = tmpCon;
-            } else if (tmpCon.name().equals(
-                "sun.jvm.hotspot.jdi.SAPIDAttachingConnector")) {
-                myPIDConn = tmpCon;
-            } else if (tmpCon.name().equals(
-                "sun.jvm.hotspot.jdi.SADebugServerAttachingConnector")) {
-                myDbgSvrConn = tmpCon;
-            }
-        }
-        String execPath = null;
-        String pidText = null;
-        String coreFilename = null;
-        String debugServer = null;
-        int pid = 0;
-        switch (args.length) {
-        case (0):
-            break;
-        case (1):
-            // If all numbers, it is a PID to attach to
-            // Else, it is a pathname to a .../bin/java for a core file.
-            try {
-                pidText = args[0];
-                pid = Integer.parseInt(pidText);
-                System.out.println( "pid: " + pid);
-                vm = attachPID(pid);
-            } catch (NumberFormatException e) {
-                System.out.println("trying remote server ..");
-                debugServer = args[0];
-                System.out.println( "remote server: " + debugServer);
-                vm = attachDebugServer(debugServer);
-            }
-            break;
-
-        case (2):
-            execPath = args[0];
-            coreFilename = args[1];
-            System.out.println( "jdk: " + execPath);
-            System.out.println( "core: " + coreFilename);
-            vm = attachCore(coreFilename, execPath);
-            break;
-        }
-
-
-        if (vm != null) {
-            System.out.println("sagclient: attached ok!");
-            sagdoit mine = new sagdoit(vm);
-            mine.doAll();
-            vm.dispose();
-        }
-    }
-
-    private static VirtualMachine attachCore(String coreFilename, String execPath) {
-        Map connArgs = myCoreConn.defaultArguments();
-        System.out.println("connArgs = " + connArgs);
-        VirtualMachine vm;
-        Connector.StringArgument connArg = (Connector.StringArgument)connArgs.get("core");
-        connArg.setValue(coreFilename);
-
-        connArg =  (Connector.StringArgument)connArgs.get("javaExecutable");
-        connArg.setValue(execPath);
-        try {
-            vm = myCoreConn.attach(connArgs);
-        } catch (IOException ee) {
-            System.err.println("ERROR: myCoreConn.attach got IO Exception:" + ee);
-            vm = null;
-        } catch (IllegalConnectorArgumentsException ee) {
-            System.err.println("ERROR: myCoreConn.attach got illegal args exception:" + ee);
-            vm = null;
-        }
-        return vm;
-   }
-
-   private static VirtualMachine attachPID(int pid) {
-        Map connArgs = myPIDConn.defaultArguments();
-        System.out.println("connArgs = " + connArgs);
-        VirtualMachine vm;
-        Connector.StringArgument connArg = (Connector.StringArgument)connArgs.get("pid");
-        connArg.setValue(Integer.toString(pid));
-
-        try {
-            vm = myPIDConn.attach(connArgs);
-        } catch (IOException ee) {
-            System.err.println("ERROR: myPIDConn.attach got IO Exception:" + ee);
-            vm = null;
-        } catch (IllegalConnectorArgumentsException ee) {
-            System.err.println("ERROR: myPIDConn.attach got illegal args exception:" + ee);
-            vm = null;
-        }
-        return vm;
-   }
-
-
-   private static VirtualMachine attachDebugServer(String debugServer) {
-        Map connArgs = myDbgSvrConn.defaultArguments();
-        System.out.println("connArgs = " + connArgs);
-        VirtualMachine vm;
-        Connector.StringArgument connArg = (Connector.StringArgument)connArgs.get("debugServerName");
-        connArg.setValue(debugServer);
-
-        try {
-            vm = myDbgSvrConn.attach(connArgs);
-        } catch (IOException ee) {
-            System.err.println("ERROR: myDbgSvrConn.attach got IO Exception:" + ee);
-            vm = null;
-        } catch (IllegalConnectorArgumentsException ee) {
-            System.err.println("ERROR: myDbgSvrConn.attach got illegal args exception:" + ee);
-            vm = null;
-        }
-        return vm;
-   }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/sagdoit.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,329 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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.
- *
- */
-
-import com.sun.jdi.*;
-import java.util.*;
-
-
-// This just contains a bunch of methods that call various JDI methods.
-// It is called from the sagtest.java jtreg test to get this info for the standard
-// JDI and from the sagclient.java test to get this info for the SA JDI.
-
-class comparator implements Comparator {
-
-    public int compare(Object o1, Object o2) {
-        ReferenceType rt1 = (ReferenceType)o1;
-        ReferenceType rt2 = (ReferenceType)o2;
-        return rt1.signature().compareTo(rt2.signature());
-    }
-
-    public boolean equals(Object oo) {
-        return false;
-    }
-}
-
-public class sagdoit {
-
-    VirtualMachine myVm;
-    int margin = 0;
-    static String blanks = "                                                        ";
-    static int nblanks = blanks.length();
-
-    sagdoit(VirtualMachine vm) {
-        super();
-        myVm = vm;
-    }
-
-    void indent(int count) {
-        margin += count;
-    }
-
-    void pp(String msg) {
-        System.out.println(blanks.substring(nblanks - margin) + msg);
-    }
-
-    public void doAll() {
-        doThreadGroups();
-        //System.out.println("NOTE: dumping of class info is disabled in sagdoit.java");
-        //System.out.println("      just to keep the output small while working on objects");
-        doClasses();  //fixme jj: uncomment this to see all class info
-
-    }
-    public void doThreadGroups() {
-        doThreadGroupList(myVm.topLevelThreadGroups());
-    }
-
-    private void doThreadGroupList(List groups) {
-        // sort; need a comparator
-        if (groups == null) {
-            return;
-        }
-
-        Iterator myIter = groups.iterator();
-        while(myIter.hasNext()) {
-            ThreadGroupReference aGroup = (ThreadGroupReference)myIter.next();
-            doOneThreadGroup(aGroup);
-        }
-
-    }
-
-    public void doOneThreadGroup(ThreadGroupReference xx) {
-        pp("threadGroup:" + xx.name());
-        indent(4);
-        pp("parent()       = " + xx.parent());
-        pp("threads:");
-        indent(4);
-        doThreadList(xx.threads());
-        indent(-4);
-        pp("threadGroups:");
-        indent(4);
-        doThreadGroupList(xx.threadGroups());
-        indent(-4);
-        indent(-4);
-    }
-
-    public void doThreads() {
-        doThreadList(myVm.allThreads());
-    }
-
-    public void doThreadList(List threads) {
-        if (threads == null) {
-            return;
-        }
-        Iterator myIter = threads.iterator();
-        while(myIter.hasNext()) {
-            ThreadReference aThread = (ThreadReference)myIter.next();
-            doOneThread(aThread);
-        }
-    }
-
-    public void doOneThread(ThreadReference xx) {
-        pp("Thread: " + xx.name());
-        indent(4);
-        pp("suspendCount()      = " + xx.suspendCount());
-
-        //void stop(ObjectReference throwable) throws InvalidTypeException;
-        //void interrupt();
-        pp("status()            = " + xx.status());
-        pp("isSuspended()       = " + xx.isSuspended());
-        pp("isAtBreakpoint()    = " + xx.isAtBreakpoint());
-
-        pp("threadGroup()       = " + xx.threadGroup());
-        indent(-4);
-
-        indent(4);
-        try {
-            List allFrames = xx.frames();
-            for (int ii = 0; ii < xx.frameCount(); ii++) {
-                StackFrame oneFrame = xx.frame(ii);
-                pp("frame(" + ii + ") = " + oneFrame);
-                doOneFrame(oneFrame);
-            }
-            //List frames(int start, int length) throws IncompatibleThreadStateException;
-            // unsupported List allMonitors = xx.ownedMonitors();
-            // unsupported pp("currentContendedMonitor() = " + xx.currentContendedMonitor());
-        } catch (IncompatibleThreadStateException ee) {
-            pp("GOT IncompatibleThreadStateException: " + ee);
-        }
-        indent(-4);
-    }
-
-    public void doOneFrame(StackFrame frame) {
-
-        List localVars = null;
-        try {
-            localVars = frame.visibleVariables();
-        } catch (AbsentInformationException ee) {
-            // we compile with -g so this shouldn't happen
-            return;
-        }
-        indent(4);
-        for (Iterator it = localVars.iterator(); it.hasNext();) {
-            LocalVariable lv = (LocalVariable) it.next();
-            pp("lv name = " + lv.name() +
-               ", type =  " + lv.typeName() +
-               ", sig =   " + lv.signature() +
-               ", gsig =  " + lv.genericSignature() +
-               ", isVis = " + lv.isVisible(frame) +
-               ", isArg = " + lv.isArgument());
-        }
-        indent(-4);
-    }
-
-    public void doClasses() {
-        List myClasses = myVm.allClasses();
-        myClasses = new ArrayList(myClasses);
-        Collections.sort(myClasses, new comparator());
-        for (int ii = 0; ii < myClasses.size(); ii++) {
-            // Spec says each is a ReferenceType
-            //System.out.println("class " + (ii + 1) + " is " + myClasses.get(ii));
-            ReferenceType aClass = (ReferenceType)myClasses.get(ii);
-            System.out.println("class " + (ii + 1) + " is " + aClass.signature());
-            doOneClass(aClass);
-            // Uncomment this to just do a few classes.
-            //if ( ii > 4) break;
-        }
-    }
-
-    public void doOneClass(ReferenceType xx) {
-        indent(5);
-        // inherited from Mirror
-        pp("toString()       = " + xx.toString());
-        pp("virtualMachine() = " + xx.virtualMachine());
-
-        // inherited from Type
-        pp("name()           = " + xx.name());
-        pp("signature()      = " + xx.signature());
-
-        // ReferenceType fields
-        doReferenceTypeFields(xx);
-
-
-
-
-
-        String className = xx.getClass().getName();
-        pp("subclass           = " + className);
-
-         Class referenceType = null;
-         Class arrayType = null;
-         Class classType = null;
-         Class interfaceType = null;
-
-         try {
-             referenceType = Class.forName("com.sun.jdi.ReferenceType");
-             arrayType = Class.forName("com.sun.jdi.ArrayType");
-             interfaceType = Class.forName("com.sun.jdi.InterfaceType");
-             classType = Class.forName("com.sun.jdi.ClassType");
-         } catch (ClassNotFoundException ee) {
-         }
-
-
-         if (referenceType.isInstance(xx)) {
-             pp("ReferenceType fields");
-             ReferenceType rr = (ReferenceType)xx;
-
-             if (arrayType.isInstance(xx)) {
-                 pp("ArrayType fields");
-             }
-
-             if (classType.isInstance(xx)) {
-                 pp("ClassType fields");
-             }
-
-             if (interfaceType.isInstance(xx)) {
-                 pp("InterfaceType fields");
-             }
-         }
-        indent(-5);
-
-    }
-
-
-  public void doReferenceTypeFields(ReferenceType xx) {
-    Object zz;
-      pp("classLoader() = " + xx.classLoader());
-      try {zz =xx.sourceName();} catch(AbsentInformationException ee) { zz = ee;} pp("sourceName() = " + zz);
-      try {zz =xx.sourceNames("stratum");} catch(AbsentInformationException ee) { zz = ee;} pp("sourceNames() = " + zz);
-      try {zz =xx.sourcePaths("stratum");} catch(AbsentInformationException ee) { zz = ee;} pp("sourcePaths() = " + zz);
-      //try {zz =xx.sourceDebugExtension();} catch(AbsentInformationException ee) { zz = ee;} pp("sourceDebugExtension() = " + zz);
-      //fixme: jj; should sourceDebugExtension throw UnsupportedOperationException?
-      try {zz =xx.sourceDebugExtension();} catch(Exception ee) { zz = ee;} pp("sourceDebugExtension() = " + zz);
-      // If xx is an array, this can cause a ClassNotLoadedException on the
-      // component type.  Is that a JDI bug?
-      pp("isStatic() = " + xx.isStatic());
-      pp("isAbstract() = " + xx.isAbstract());
-      pp("isFinal() = " + xx.isFinal());
-      pp("isPrepared() = " + xx.isPrepared());
-      pp("isVerified() = " + xx.isVerified());
-      pp("isInitialized() = " + xx.isInitialized());
-      pp("failedToInitialize() = " + xx.failedToInitialize());
-      pp("fields() = " + xx.fields());
-      pp("visibleFields() = " + xx.visibleFields());
-      pp("allFields() = " + xx.allFields());
-      pp("fieldByName(String fieldName) = " + xx.fieldByName("fieldName"));
-      pp("methods() = " + xx.methods());
-
-
-       List meths = xx.methods();
-       Iterator iter = meths.iterator();
-       while (iter.hasNext()) {
-           Method mm = (Method)iter.next();
-           pp("  name/sig:" + mm.name() + "/" + mm.signature());
-       }
-
-      pp(" visibleMethods() = " + xx.visibleMethods());
-
-      //if (1 == 1) return;
-
-      pp("allMethods() = " + xx.allMethods());
-
-
-      pp("methodsByName(String name) = " + xx.methodsByName("name"));
-      pp("methodsByName(String name, String signature) = " + xx.methodsByName("name", "signature"));
-      pp("nestedTypes() = " + xx.nestedTypes());
-      //pp("getValue(Field field) = " + xx.getValue("field"));
-      pp("getValue(Field field) = " + "fixme: jjh");
-      //pp("getValues(List fields) = " + xx.getValues(new List[] = {"fields"}));
-      pp("getValues(List fields) = " + "fixme: jjh");
-      pp("classObject() = " + xx.classObject());
-      //x      pp("allLineLocations() = " + xx.allLineLocations());
-      //x      pp("allLineLocations(String stratum, String sourceName) = " + xx.allLineLocations("stratum", "sourceName"));
-      //x      pp("locationsOfLine(int lineNumber) = " + xx.locationsOfLine(89));
-      //x      pp("locationsOfLine(String stratum, String sourceName, int lineNumber) = " + xx.locationsOfLine("stratum", "sourceName", 89));
-      pp("availableStrata() = " + xx.availableStrata());
-      pp("defaultStratum() = " + xx.defaultStratum());
-      pp("equals(Object obj) = " + xx.equals(xx));
-      pp("hashCode() = " + xx.hashCode());
-  }
-
-}
-
-//         try {
-//             ReferenceType rr = (ReferenceType)xx;
-//             pp("ReferenceType fields");
-
-//             try {
-//                 ArrayType ff = (ArrayType)xx;
-//                 pp("ArrayType fields");
-
-//             } catch(ClassCastException ee) {
-//             }
-
-//             try {
-//                 ClassType ff = (ClassType)xx;
-//                 pp("ClassType fields");
-
-//             } catch(ClassCastException ee) {
-//             }
-
-//             try {
-//                 InterfaceType ff = (InterfaceType)xx;
-//                 pp("InterfaceType fields");
-
-//             } catch(ClassCastException ee) {
-//             }
-
-//         } catch(ClassCastException ee) {
-//         }
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/sagtarg.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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.
- *
- */
-
-// This is the target debuggee for sagtest.java.
-// It just waits which lets the test call all the JDI
-// methods on it.
-
-import java.util.List;
-
-interface MyInterface {
-    public void myMethod();
-}
-
-
-abstract class MySuper implements MyInterface {
-}
-
-class sagtarg extends MySuper {
-    public static void main(String[] args){
-        String stringVar = "localVar1";
-        int    intVar = 89;
-        List<String> genVar = null;
-        System.out.println("Howdy!");
-        String myStr = "";
-        synchronized(myStr) {
-            try {
-                myStr.wait();
-            } catch (InterruptedException ee) {
-            }
-        }
-        System.out.println("Goodbye from sagtarg!");
-    }
-
-    public void myMethod() {
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/sagtest.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, 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.
- *
- */
-
-/**
- *  @test *  @bug 0000000
- *  @summary This is just an exercise of various JDI elements for use in
- *           testing the SA/JDI client
- *
- *  @author jjh
- *
- *  @run build TestScaffold VMConnection TargetListener TargetAdapter sagdoit
- *  @run compile -g -source 1.5 sagtarg.java
- *  @run main sagtest
- */
-import com.sun.jdi.*;
-import com.sun.jdi.event.*;
-import com.sun.jdi.request.*;
-
-import java.util.*;
-
-    /********** target program **********/
-
-// The target program is sagtarg.java
-
-    /********** test program **********/
-
-public class sagtest extends TestScaffold {
-    ReferenceType targetClass;
-    ThreadReference mainThread;
-
-    sagtest (String args[]) {
-        super(args);
-    }
-
-    public static void main(String[] args)      throws Exception {
-        new sagtest(args).startTests();
-    }
-
-    /********** event handlers **********/
-
-
-    /********** test core **********/
-
-    protected void runTests() throws Exception {
-        /*
-         * Get to the top of main()
-         * to determine targetClass and mainThread
-         */
-        BreakpointEvent bpe = startToMain("sagtarg");
-        targetClass = bpe.location().declaringType();
-        mainThread = bpe.thread();
-        EventRequestManager erm = vm().eventRequestManager();
-        stepOverLine(mainThread);  //stop on 18
-        stepOverLine(mainThread);  //stop on 19
-        stepOverLine(mainThread);  //stop on 20
-        stepOverLine(mainThread);  //stop on 21
-        stepOverLine(mainThread);  //stop on 22
-
-        sagdoit mine = new sagdoit(vm());
-        mine.doAll();
-
-        if (!testFailed) {
-            println("sagtest: passed");
-        } else {
-            throw new Exception("sagtest: failed");
-        }
-    }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/sasanity.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#!/bin/ksh
-#
-# Copyright (c) 2003, 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.
-#  
-#
-
-# This script is used to run sanity check on vmStructs.
-# Each SA class is checked against a given VM. "PASSED" is 
-# printed if vmStructs are consistent. Else, "FAILED" is
-# printed and an exception stack trace follows.
-
-usage() {
-    echo "usage: ./sasanity.sh <jdk>"
-    echo "<jdk> is the 1.5 j2se directory against which you want to run sanity check"
-    exit 1   
-}
-
-if [ "$1" == "" ]; then
-    usage
-fi
-
-if [ "$1" == "-help" ]; then
-    usage
-fi
-
-jdk=$1
-shift
-OS=`uname`
-
-javacp=$jdk/lib/sa-jdi.jar:./workdir
-
-mkdir -p workdir
-if [ SASanityChecker.java -nt ./workdir/SASanityChecker.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp SASanityChecker.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-
-if [ sagtarg.java -nt ./workdir/sagtarg.class ]; then
-    $jdk/bin/javac -g  -classpath -d $workdir sagtarg.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-
-tmp=/tmp/sagsetup
-rm -f $tmp
-$jdk/bin/java $* sagtarg > $tmp &
-pid=$!
-while [ ! -s $tmp ] ; do
-  # Kludge alert!
-  sleep 2
-done
-
-$jdk/bin/java -showversion ${OPTIONS} -classpath $javacp $* SASanityChecker $pid
-kill -9 $pid
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/serialvm.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2003, 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.
- *
- */
-
-import com.sun.jdi.*;
-import com.sun.jdi.connect.*;
-
-import java.util.Map;
-import java.util.List;
-import java.util.Iterator;
-import java.io.IOException;
-
-
-/* This class is used to test multi VM connectivity feature of
- * SA/JDI. Accepts two PIDs as arguments. Connects to first VM
- *, disposes it, connects to second VM, disposes second VM.
- */
-
-
-public class serialvm {
-    static AttachingConnector myPIDConn;
-    static VirtualMachine vm1;
-    static VirtualMachine vm2;
-    static VirtualMachineManager vmmgr;
-
-    public static void println(String msg) {
-        System.out.println(msg);
-    }
-
-    private static void usage() {
-        System.err.println("Usage: java serialvm <pid1> <pid2>");
-        System.exit(1);
-    }
-
-    public static void main(String args[]) {
-        vmmgr = Bootstrap.virtualMachineManager();
-        List attachingConnectors = vmmgr.attachingConnectors();
-        if (attachingConnectors.isEmpty()) {
-            System.err.println( "ERROR: No attaching connectors");
-            return;
-        }
-        Iterator myIt = attachingConnectors.iterator();
-        while (myIt.hasNext()) {
-            AttachingConnector tmpCon = (AttachingConnector)myIt.next();
-            if (tmpCon.name().equals(
-                "sun.jvm.hotspot.jdi.SAPIDAttachingConnector")) {
-                myPIDConn = tmpCon;
-                break;
-            }
-        }
-
-        int pid1 = 0, pid2 = 0;
-        String pidText = null;
-        switch (args.length) {
-        case (2):
-            try {
-                pidText = args[0];
-                pid1 = Integer.parseInt(pidText);
-                System.out.println( "pid1: " + pid1);
-                pidText = args[1];
-                pid2 = Integer.parseInt(pidText);
-                System.out.println( "pid2: " + pid2);
-            } catch (NumberFormatException e) {
-                println(e.getMessage());
-                usage();
-            }
-            break;
-        default:
-            usage();
-        }
-
-        // attach, dispose, attach2, dispose2 pattern
-        // as opposed to attach1, attach2, dispose1, dispose2
-        vm1 = attachPID(pid1);
-        if (vm1 != null) {
-            System.out.println("vm1: attached ok!");
-            System.out.println(vm1.version());
-            sagdoit mine = new sagdoit(vm1);
-            mine.doAll();
-        }
-        if (vm1 != null) {
-            vm1.dispose();
-        }
-
-        vm2 = attachPID(pid2);
-        if (vm2 != null) {
-            System.out.println("vm2: attached ok!");
-            System.out.println(vm2.version());
-            sagdoit mine = new sagdoit(vm2);
-            mine.doAll();
-        }
-
-
-        if (vm2 != null) {
-            vm2.dispose();
-        }
-    }
-
-   private static VirtualMachine attachPID(int pid) {
-        Map connArgs = myPIDConn.defaultArguments();
-        System.out.println("connArgs = " + connArgs);
-        VirtualMachine vm;
-        Connector.StringArgument connArg = (Connector.StringArgument)connArgs.get("pid");
-        connArg.setValue(Integer.toString(pid));
-
-        try {
-            vm = myPIDConn.attach(connArgs);
-        } catch (IOException ee) {
-            System.err.println("ERROR: myPIDConn.attach got IO Exception:" + ee);
-            vm = null;
-        } catch (IllegalConnectorArgumentsException ee) {
-            System.err.println("ERROR: myPIDConn.attach got illegal args exception:" + ee);
-            vm = null;
-        }
-        return vm;
-   }
-}
--- a/hotspot/src/jdk.hotspot.agent/test/jdi/serialvm.sh	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#!/bin/ksh
-#
-# Copyright (c) 2003, 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.
-#  
-#
-
-doUsage()
-{
-    cat <<EOF
-    Run serialvm.class using Serviceability Agent to talk to 2 pids one
-    after another in serial fashion.
-    Usage:  serialvm.sh <jdk-pathname> <pid1> <pid2>
-
-EOF
-}
-
-if [ $# = 4 ] ; then
-    doUsage
-    exit 1
-fi
-
-jdk=$1
-javacp="$jdk/lib/sa-jdi.jar:$classesDir:$jdk/lib/tools.jar:$jdk/classes:./workdir"
-
-mkdir -p workdir
-if [ sagdoit.java -nt ./workdir/sagdoit.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp sagdoit.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-if [ serialvm.java -nt ./workdir/serialvm.class ] ; then
-    $jdk/bin/javac -d ./workdir -classpath $javacp serialvm.java
-    if [ $? != 0 ] ; then
-        exit 1
-    fi
-fi
-
-$jdk/bin/java -Dsun.jvm.hotspot.jdi.ConnectorImpl.DEBUG -Dsun.jvm.hotspot.jdi.SAJDIClassLoader.DEBUG -Djava.class.path=$javacp serialvm $2 $3
--- a/hotspot/test/serviceability/sa/TestClassLoaderStats.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2015, 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.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import jdk.test.lib.Platform;
-import jdk.test.lib.ProcessTools;
-import jdk.test.lib.OutputAnalyzer;
-import jdk.test.lib.Utils;
-import jdk.test.lib.apps.LingeredApp;
-
-/*
- * @test
- * @summary Started failing on 2016.06.24 due to 8160376 on MacOS X so
- * quarantine it on that platform:
- * @requires os.family != "mac"
- * @modules java.base/jdk.internal.misc
- * @library /test/lib/share/classes
- * @library /testlibrary
- * @build jdk.test.lib.*
- * @build jdk.test.lib.apps.*
- * @run main TestClassLoaderStats
- */
-public class TestClassLoaderStats {
-
-    public static void main(String[] args) throws Exception {
-        if (!Platform.shouldSAAttach()) {
-            System.out.println("SA attach not expected to work - test skipped.");
-            return;
-        }
-
-        LingeredApp app = null;
-        try {
-            List<String> vmArgs = new ArrayList<String>();
-            vmArgs.add("-XX:+UsePerfData");
-            vmArgs.addAll(Utils.getVmOptions());
-            app = LingeredApp.startApp(vmArgs);
-
-            System.out.println("Attaching sun.jvm.hotspot.tools.ClassLoaderStats to " + app.getPid());
-            ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder(
-                    "-XX:+UsePerfData",
-                    "sun.jvm.hotspot.tools.ClassLoaderStats",
-                    Long.toString(app.getPid()));
-            OutputAnalyzer output = ProcessTools.executeProcess(processBuilder);
-            System.out.println(output.getOutput());
-
-            output.shouldHaveExitValue(0);
-            output.shouldContain("Debugger attached successfully.");
-            // The class loader stats header needs to be presented in the output:
-            output.shouldMatch("class_loader\\W+classes\\W+bytes\\W+parent_loader\\W+alive?\\W+type");
-            output.stderrShouldNotMatch("[E|e]xception");
-            output.stderrShouldNotMatch("[E|e]rror");
-        } finally {
-            LingeredApp.stopApp(app);
-        }
-    }
-
-}
--- a/hotspot/test/serviceability/sa/TestStackTrace.java	Fri Jul 29 16:50:45 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2015, 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.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import jdk.test.lib.OutputAnalyzer;
-import jdk.test.lib.Platform;
-import jdk.test.lib.ProcessTools;
-import jdk.test.lib.Utils;
-import jdk.test.lib.apps.LingeredApp;
-
-/*
- * @test
- * @summary Started failing on 2016.06.24 due to 8160376 on MacOS X so
- * quarantine it on that platform:
- * @requires os.family != "mac"
- * @modules java.base/jdk.internal.misc
- * @library /test/lib/share/classes
- * @library /testlibrary
- * @build jdk.test.lib.*
- * @build jdk.test.lib.apps.*
- * @run main TestStackTrace
- */
-public class TestStackTrace {
-
-    public static void main(String[] args) throws Exception {
-        if (!Platform.shouldSAAttach()) {
-            System.out.println("SA attach not expected to work - test skipped.");
-            return;
-        }
-
-        LingeredApp app = null;
-        try {
-            List<String> vmArgs = new ArrayList<String>();
-            vmArgs.add("-XX:+UsePerfData");
-            vmArgs.addAll(Utils.getVmOptions());
-            app = LingeredApp.startApp(vmArgs);
-
-            System.out.println("Attaching sun.jvm.hotspot.tools.StackTrace to " + app.getPid());
-            ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder(
-                    "-XX:+UsePerfData",
-                    "sun.jvm.hotspot.tools.StackTrace",
-                    Long.toString(app.getPid()));
-            OutputAnalyzer output = ProcessTools.executeProcess(processBuilder);
-            System.out.println(output.getOutput());
-
-            output.shouldHaveExitValue(0);
-            output.shouldContain("Debugger attached successfully.");
-            output.stderrShouldNotMatch("[E|e]xception");
-            output.stderrShouldNotMatch("[E|e]rror");
-        } finally {
-            LingeredApp.stopApp(app);
-        }
-     }
-
-}