incubator-kato-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From monte...@apache.org
Subject svn commit: r807673 [2/2] - in /incubator/kato/trunk/org.apache.kato/kato.cjvmti: ./ .settings/ META-INF/ META-INF/services/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/kato/ src/main/java/org/apa...
Date Tue, 25 Aug 2009 15:41:25 GMT
Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/process/ImageImpl.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/process/ImageImpl.java?rev=807673&view=auto
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/process/ImageImpl.java (added)
+++ incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/process/ImageImpl.java Tue Aug 25 15:41:23 2009
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package org.apache.kato.jvmti.process;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+
+import javax.tools.diagnostics.image.CorruptDataException;
+import javax.tools.diagnostics.image.DataUnavailable;
+import javax.tools.diagnostics.image.Image;
+import javax.tools.diagnostics.image.ImageAddressSpace;
+import javax.tools.diagnostics.image.ImageModule;
+import javax.tools.diagnostics.image.ImagePointer;
+import javax.tools.diagnostics.image.ImageProcess;
+import javax.tools.diagnostics.image.ImageThread;
+import javax.tools.diagnostics.runtime.ManagedRuntime;
+
+import org.apache.kato.jvmti.javaruntime.JavaRuntimeImpl;
+import org.apache.kato.jvmti.javaruntime.model.SimpleImagePointer;
+import org.apache.kato.jvmti.process.ImageImpl.ImageAddressSpaceImpl.ImageProcessImpl;
+import org.apache.kato.jvmti.reader.CJVMTIBinReader;
+
+public class ImageImpl implements Image {
+
+	public final class ImageAddressSpaceImpl implements ImageAddressSpace {
+		public final class ImageProcessImpl implements ImageProcess {
+			private List<ManagedRuntime> runtimes = null;
+
+			@Override
+			public String getCommandLine() throws DataUnavailable,
+					CorruptDataException {
+				return "<none>";
+			}
+
+			@Override
+			public ImageThread getCurrentThread() throws CorruptDataException {
+				// TODO Auto-generated method stub
+				return null;
+			}
+
+			@Override
+			public Properties getEnvironment() throws DataUnavailable,
+					CorruptDataException {
+
+				return new Properties();
+			}
+
+			@Override
+			public ImageModule getExecutable() throws DataUnavailable,
+					CorruptDataException {
+				throw new DataUnavailable("no env");
+			}
+
+			@Override
+			public String getID() throws DataUnavailable, CorruptDataException {
+				throw new DataUnavailable("no env");
+			}
+
+			@Override
+			public List getLibraries() throws DataUnavailable,
+					CorruptDataException {
+				throw new DataUnavailable("no env");
+			}
+
+			@Override
+			public int getPointerSize() {
+				// TODO Auto-generated method stub
+				return 0;
+			}
+
+			@Override
+			public List getRuntimes() {
+				if (runtimes == null) {
+					runtimes = new LinkedList<ManagedRuntime>();
+					// BinReader br=new BinReader(file);
+					try {
+						CJVMTIBinReader br = null;
+						br = new CJVMTIBinReader(file);
+						runtimes.add(new JavaRuntimeImpl(br.getModel()));
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+
+				}
+				return runtimes;
+			}
+
+			@Override
+			public String getSignalName() throws DataUnavailable,
+					CorruptDataException {
+				throw new DataUnavailable("no env");
+			}
+
+			@Override
+			public int getSignalNumber() throws DataUnavailable,
+					CorruptDataException {
+				throw new DataUnavailable("no env");
+			}
+
+			@Override
+			public List getThreads() {
+				// TODO Auto-generated method stub
+				return null;
+			}
+		}
+
+		private List<ImageProcess> processes = null;
+
+		@Override
+		public ImageProcess getCurrentProcess() {
+			fill();
+			return processes.get(0);
+		}
+
+		private void fill() {
+			if (processes == null) {
+				processes = new LinkedList<ImageProcess>();
+				processes.add(new ImageProcessImpl());
+			}
+
+		}
+
+		@Override
+		public List getImageSections() {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+		@Override
+		public ImagePointer getPointer(long arg0) {
+			// TODO Auto-generated method stub
+			return new SimpleImagePointer(arg0);
+		}
+
+		@Override
+		public List getProcesses() {
+			fill();
+			return processes;
+		}
+	}
+
+	private List<ImageAddressSpace> spaces = null;
+	private File file = null;
+
+	public ImageImpl(File base) {
+		this.file = base;
+	}
+
+	@Override
+	public List getAddressSpaces() {
+		if (spaces == null) {
+			spaces = new LinkedList<ImageAddressSpace>();
+			spaces.add(new ImageAddressSpaceImpl());
+		}
+		return spaces;
+
+	}
+
+	@Override
+	public long getCreationTime() throws DataUnavailable {
+		return 0;
+	}
+
+	@Override
+	public String getHostName() throws DataUnavailable, CorruptDataException {
+		return "host";
+	}
+
+	@Override
+	public Iterator getIPAddresses() throws DataUnavailable {
+		throw new DataUnavailable();
+	}
+
+	@Override
+	public long getInstalledMemory() throws DataUnavailable {
+		return 0;
+	}
+
+	@Override
+	public int getProcessorCount() throws DataUnavailable {
+		return 1;
+	}
+
+	@Override
+	public String getProcessorSubType() throws DataUnavailable,
+			CorruptDataException {
+		return "sub";
+	}
+
+	@Override
+	public String getProcessorType() throws DataUnavailable,
+			CorruptDataException {
+		return "proc";
+	}
+
+	@Override
+	public String getSystemSubType() throws DataUnavailable,
+			CorruptDataException {
+		return "syssub";
+	}
+
+	@Override
+	public String getSystemType() throws DataUnavailable, CorruptDataException {
+		return "sys";
+	}
+
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/process/ImageImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CJVMTIBinReader.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CJVMTIBinReader.java?rev=807673&view=auto
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CJVMTIBinReader.java (added)
+++ incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CJVMTIBinReader.java Tue Aug 25 15:41:23 2009
@@ -0,0 +1,1009 @@
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package org.apache.kato.jvmti.reader;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.ByteOrder;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.imageio.stream.FileImageInputStream;
+import javax.tools.diagnostics.image.CorruptDataException;
+import javax.tools.diagnostics.image.DataUnavailable;
+import javax.tools.diagnostics.runtime.java.JavaStackFrame;
+import javax.tools.diagnostics.runtime.java.JavaThread;
+import javax.tools.diagnostics.runtime.java.JavaVariable;
+
+import org.apache.kato.jvmti.javaruntime.model.JClass;
+import org.apache.kato.jvmti.javaruntime.model.JClassLoader;
+import org.apache.kato.jvmti.javaruntime.model.JField;
+import org.apache.kato.jvmti.javaruntime.model.JLocalVariable;
+import org.apache.kato.jvmti.javaruntime.model.JLocalVariableTableEntry;
+import org.apache.kato.jvmti.javaruntime.model.JLocation;
+import org.apache.kato.jvmti.javaruntime.model.JMethod;
+import org.apache.kato.jvmti.javaruntime.model.JMonitor;
+import org.apache.kato.jvmti.javaruntime.model.JObject;
+import org.apache.kato.jvmti.javaruntime.model.JStackFrame;
+import org.apache.kato.jvmti.javaruntime.model.JThread;
+import org.apache.kato.jvmti.javaruntime.model.Model;
+
+
+
+public class CJVMTIBinReader {
+
+	private static final byte CJVMTI_BYTE = 0x1c;
+	private static final byte CJVMTI_CHAR = 0x01;
+	private static final byte CJVMTI_DOUBLE = 0x02;
+	private static final byte CJVMTI_FLOAT = 0x03;
+	private static final byte CJVMTI_INT = 0x04;
+	private static final byte CJVMTI_LONG = 0x05;
+	private static final byte CJVMTI_OBJECT = 0x06;
+	private static final byte CJVMTI_SHORT = 0x07;
+	private static final byte CJVMTI_BOOLEAN = 0x08;
+	private static final byte CJVMTI_OBJECTARRAY = 0x09;
+	private static final byte CJVMTI_BYTE_ARRAY = 0x0a;
+	private static final byte CJVMTI_CHAR_ARRAY = 0x0b;
+	private static final byte CJVMTI_DOUBLE_ARRAY = 0x0c;
+	private static final byte CJVMTI_FLOAT_ARRAY = 0x0d;
+	private static final byte CJVMTI_INT_ARRAY = 0x0e;
+	private static final byte CJVMTI_LONG_ARRAY = 0x0f;
+	private static final byte CJVMTI_OBJECT_ARRAY = 0x10;
+	private static final byte CJVMTI_SHORT_ARRAY = 0x11;
+	private static final byte CJVMTI_BOOLEAN_ARRAY = 0x12;
+	private static final byte CJVMTI_METHOD = 0x13;
+	private static final byte CJVMTI_THREAD_GROUP = 0x14;
+	private static final byte CJVMTI_THREAD = 0x15;
+	private static final byte CJVMTI_FRAME = 0x16;
+	private static final byte CJVMTI_FIELD_MODIFIERS = 0x17;
+	private static final byte CJVMTI_MONITORS = 0x18;
+	private static final byte CJVMTI_CLASSLOADERS = 0x19;
+	private static final byte CJVMTI_LOCAL_NATIVECALL = 0x1a;
+	private static final byte CJVMTI_CLASS = 0x1b;
+	private static final byte CJVMTI_NULL_OBJECT = 0x00;
+	private static final byte CJVMTI_CLASS_INSTANCE_FIELDS = 0x1d;
+	private static final byte CJVMTI_CLASS_STATIC_FIELDS = 0x1e;
+	private static final byte CJVMTI_CLASS_FIELDS = 0x1f;
+	private static final long CJVMTI_NULL_OBJECT_ARRAY = 0x00;
+
+	private static final byte CJVMTI_LOCAL_VARIABLE = 0x20;
+	private static final byte CJVMTI_JVMTI_ERROR = 0x21;
+	private static final byte CJVMTI_SUPERCLASS_FIELDS = 0x23;
+	private static final byte CJVMTI_CLASS_INTERFACES = 0x24;
+	private long selfGeneratedIDs;
+	private int selfGeneratedMonitorIDs = 1;
+	FileImageInputStream in = null;
+	FileImageInputStream variablesIn = null;
+	Model model = new Model();
+	static Logger log = CLogger.logr;
+
+	JClassLoader readerJCL;// Class loader for reader generated classes
+	JClassLoader bootJCL;// Class loader for boot class loader (return nulls in
+	
+	// jvmti
+	JClass intArray;// "[int"
+	//
+	JClass floatArray; // "[float"
+	//
+	JClass shortArray; // "[short"
+	//
+	JClass longArray; // "[long"
+	//
+	JClass byteArray; // "[byte"
+	//
+	JClass booleanArray; // "[boolean"
+	//
+	JClass doubleArray; // "[double"
+	//
+	JClass charArray; // "[char"
+	JObject nullObject;
+	HashMap<JObject, JClass> objectArrayClasses;
+
+	@SuppressWarnings("unchecked")
+	public static void main(String[] args) {
+		
+		File f = new File("c:\\cjvmti.cdmp");
+		log.setLevel(Level.ALL);
+		ConsoleHandler handle = new ConsoleHandler();
+		handle.setLevel(Level.FINER);
+		log.addHandler(handle);
+		
+		log.log(Level.FINEST,f.toString());
+		CJVMTIBinReader cjvm = null;
+		try {
+			cjvm = new CJVMTIBinReader(f);
+		} catch (IOException e) {
+			e.printStackTrace();
+			System.exit(0);
+		}
+		log.log(Level.FINER,"");
+		log.log(Level.FINER,"");
+		log.log(Level.FINER,"");
+		List<JavaThread> jthreads = cjvm.getModel().getThreads();
+
+		for (JavaThread t : jthreads) {
+			try {
+				log.log(Level.FINEST,t.getName());
+				for (JavaStackFrame jsf : t.getStackFrames()) {
+					for (JavaVariable jv : jsf.getVariables()) {
+
+						try {
+							log.log(Level.FINEST,"" + jv.getName() + " "
+									+ jv.getSignature() + " ");
+						} catch (DataUnavailable e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+						log.log(Level.FINEST,"" + jv.getValue());
+					}
+				}
+			} catch (CorruptDataException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+	
+
+//		try {
+//			JavaClass jclC = cjvm.getModel().getObjectAtAddress(376679)
+//					.getJavaClass();
+//			JavaObject obj = cjvm.getModel().getObjectAtAddress(376679);
+//			log.log(Level.FINEST," num Fields " + ((JObject) obj).getNumFields());
+//			log.log(Level.FINEST," " + jclC.getID().getAddress());
+//			while (jclC != null) {
+//				for (JavaField field : jclC.getDeclaredFields()) {
+//					if (field.getSignature().equals("Ljava/lang/String;")) {
+//						log.log(Level.FINEST,"Found string");
+//						log.log(Level.FINEST,field.getSignature() + " field "
+//								+ field.getName() + " " + jclC.getName());
+//
+//						try {
+//							log.log(Level.FINEST,"HEre" + field.getString(obj));
+//						} catch (MemoryAccessException e) {
+//							// TODO Auto-generated catch block
+//							e.printStackTrace();
+//						}
+//					}
+//				}
+//				jclC = jclC.getSuperclass();
+//			}
+//		} catch (CorruptDataException e) {
+//			// TODO Auto-generated catch block
+//			e.printStackTrace();
+//		}
+//		log.log(Level.FINEST," "+cjvm.getModel().getObjectAtAddress(380215));
+		log.log(Level.INFO,"Finished test read");
+	}
+
+	public CJVMTIBinReader(File base) throws IOException {
+		RandomAccessFile raf = new RandomAccessFile(base, "r");
+		in = new FileImageInputStream(raf);
+		RandomAccessFile dumpF = raf;
+
+		// Currently split file setout, open variable file
+
+		RandomAccessFile raf2 = new RandomAccessFile(new File(base.getParent()
+				+ "\\cjvmtiV.cdmp"), "r");
+		variablesIn = new FileImageInputStream(raf2);
+		selfGeneratedIDs = variablesIn.length() + 1;
+		if (dumpF.readInt() == 1) {
+			in.setByteOrder(ByteOrder.BIG_ENDIAN);
+			variablesIn.setByteOrder(ByteOrder.BIG_ENDIAN);
+		} else {
+			in.setByteOrder(ByteOrder.LITTLE_ENDIAN);
+			variablesIn.setByteOrder(ByteOrder.LITTLE_ENDIAN);
+		}
+
+		variablesIn.read();
+		dumpF.seek(0);
+
+		// check Endian setting
+		if (in.readInt() != 1) {
+			System.err
+					.println("Incorrect format for reader/failed to set endian");
+			throw new IOException();
+		}
+
+		StringBuilder sb = new StringBuilder();
+
+		for (int i = 0; i < 12; i++) {
+			sb.append((char) in.readByte());
+		}
+
+		if (!sb.toString().equals("CJVMTI V0.01")) {
+			System.err.println("Incorrect format for reader");
+			throw new IOException();
+		}
+		log.log(Level.INFO,"CJVMTI Format V0.01");
+		log.log(Level.INFO,"Starting reading in..");
+
+		Long time = in.readLong();
+
+
+		Date creationDate = new Date((time * 1000));
+		log.log(Level.INFO,"Date of creation: " + creationDate.toString());
+
+		JMonitor.model = model;
+		generateClassLoaderForReader();
+		generatePrimitiveArrayClasses();
+		// check id
+
+		while (true) {
+			byte recordGroup = 0;
+
+			try {
+				recordGroup = (byte) in.readUnsignedByte();
+				log.log(Level.FINEST,"RG: " + recordGroup);
+			} catch (EOFException ee) {
+				log.log(Level.FINEST,"Finished");
+				break;
+			}
+			switch (recordGroup) {
+			case CJVMTI_THREAD:
+				nreadThread(in.getStreamPosition() - 1);
+				break;
+			default:
+				error("record group " + recordGroup + " is not understood");
+			}
+		}
+		log.log(Level.INFO,"CJVMTI bin reader complete" );
+	}
+
+	private JLocalVariableTableEntry nlocalVarTable(JClass c)
+			throws IOException {
+		// log.log(Level.FINEST,"Get local var table");
+		String name = readCString(variablesIn);
+		String sig = readCString(variablesIn);
+		String genSig = readCString(variablesIn);
+		int length = variablesIn.readInt();
+		int slot = variablesIn.readInt();
+		long start_location = variablesIn.readLong();
+
+		JLocalVariableTableEntry jlvt = new JLocalVariableTableEntry();
+		jlvt.setName(name);
+		jlvt.sig = sig;
+		jlvt.gensig = genSig;
+		jlvt.length = length;
+		jlvt.slot = slot;
+		jlvt.start = (int) start_location;
+		return jlvt;
+	}
+
+	private void nmethodDetails(JClass c) throws IOException {
+		if (variablesIn.readByte() != CJVMTI_METHOD)
+			throw new IOException();
+		long methodID = variablesIn.readLong();
+		String mName = readCString(variablesIn);
+		String mSig = readCString(variablesIn);
+		String mGenSig = readCString(variablesIn);
+		int modifiers = variablesIn.readInt();
+		int count = variablesIn.readInt();
+		JMethod jm = model.getMethod(methodID);
+		jm.name = mName;
+		jm.signature = mSig;
+		if (mGenSig.equals(" ")) {
+			jm.genericsignature = null;
+		}
+		jm.genericsignature = mGenSig;
+		jm.mods = modifiers;
+		for (int i = 0; i < count; i++) {
+			jm.addLocalVariableTableEntry(nlocalVarTable(c));
+		}
+		int lntLength = variablesIn.readInt();
+		for (int i = 0; i < lntLength; i++) {
+			int lNum = variablesIn.readInt();
+			long bytePos = variablesIn.readLong();
+			jm.addLineNumberEntry(lNum, bytePos);
+		}
+		c.addMethod(jm);
+	}
+
+	private int nstaticFieldDetails(JClass c) throws IOException {
+		int fieldCount = variablesIn.readInt();
+		for (int i = 0; i < fieldCount; i++) {
+			int modifiers = variablesIn.readInt();
+			long fieldID = variablesIn.readLong();
+			String name = readCString(variablesIn);
+			String sig = readCString(variablesIn);
+			String genSig = readCString(variablesIn);
+			JField fl = c.getField(fieldID);
+			fl.name = name;
+			fl.genericsignature = genSig;
+			fl.signature = sig;
+			fl.staticField = true;
+			fl.modifiers = modifiers;
+			fl.index = i; // used to fill in fields
+		}
+		return fieldCount;
+	}
+
+	private void instanceFieldDetails(JClass c) throws IOException {
+		int fieldCount = variablesIn.readInt();
+		for (int i = 0; i < fieldCount; i++) {
+			int modifiers = variablesIn.readInt();
+			long fieldID = variablesIn.readLong();
+			String name = readCString(variablesIn);
+			String sig = readCString(variablesIn);
+			String genSig = readCString(variablesIn);
+			JField fl = c.getField(fieldID);
+			fl.name = name;
+			fl.genericsignature = genSig;
+			fl.signature = sig;
+			fl.staticField = false;
+			fl.modifiers = modifiers;
+			fl.index = i; // used to fill in fields
+			// log.log(Level.FINEST,"Field " + fl.index);
+		}
+	}
+
+	private JClass nreadClass(long ref) throws IOException {
+		variablesIn.seek(ref);
+		if (ref == 0) {
+		}
+		if (variablesIn.readByte() == CJVMTI_CLASS) {
+			return nreadClass();
+		} else {
+			log.log(Level.FINEST,"IO EX" + Long.toHexString(ref));
+			throw new IOException();
+		}
+	}
+
+	private JClass nreadClass() throws IOException {
+		long id = variablesIn.getStreamPosition();
+		id--;
+		JClass c = model.getClass(id);
+		if (c.classSig != null)
+			return c;
+		int modifiers = variablesIn.readInt();
+		c.modifiers = (short) modifiers;
+		log.log(Level.FINEST,"mods " + modifiers + " " + c.modifiers);
+		String name = readCString(variablesIn);
+		String sourceFile = readCString(variablesIn);
+		String genSig = readCString(variablesIn);
+
+		// TODO move this to C implementation
+		if (sourceFile.equals("NoSource")) {
+			sourceFile = null;
+		}
+		c.classSig = name;
+		c.classid = id;
+		c.sourceFile = sourceFile;
+		long currentFileLoc = variablesIn.getStreamPosition();
+		variablesIn.seek(currentFileLoc);
+		if (variablesIn.readByte() == CJVMTI_METHOD) {
+			int num = variablesIn.readInt();
+			for (int i = 0; i < num; i++) {
+				nmethodDetails(c);
+			}
+		} else {
+			throw new IOException();
+		}
+
+		if (variablesIn.readByte() == CJVMTI_CLASS_INSTANCE_FIELDS) {
+			instanceFieldDetails(c);
+		} else {
+			throw new IOException();
+		}
+
+		int numStaticFields = 0;
+		if (variablesIn.readByte() == CJVMTI_CLASS_STATIC_FIELDS) {
+			numStaticFields = nstaticFieldDetails(c);
+		} else {
+			throw new IOException();
+		}
+
+		long supC = 0;
+		if (variablesIn.readByte() == CJVMTI_SUPERCLASS_FIELDS) {
+			supC = variablesIn.readLong();
+		} else {
+			throw new IOException();
+		}
+
+		long interfaceClasses[];
+		if (variablesIn.readByte() == CJVMTI_CLASS_INTERFACES) {
+			int numInterfaces = variablesIn.readInt();
+			interfaceClasses = new long[numInterfaces];
+			for (int i = 0; i < interfaceClasses.length; i++) {
+				interfaceClasses[i] = variablesIn.readLong();
+			}
+		} else {
+			throw new IOException();
+		}
+
+		if (!(variablesIn.readByte() == CJVMTI_CLASS_STATIC_FIELDS)) {
+			throw new IOException();
+		}
+
+		long refs[] = new long[numStaticFields];
+		for (int i = 0; i < numStaticFields; i++) {
+			refs[i] = variablesIn.readLong();
+		}
+
+		long classLoaderRef = 0;
+		if (variablesIn.readByte() == CJVMTI_CLASSLOADERS) {
+			classLoaderRef = variablesIn.readLong();
+		} else {
+			throw new IOException();
+		}
+		c.superClassID = supC;
+		c.locIn = 1;
+		if (supC != CJVMTI_NULL_OBJECT) {
+			c.superclass = nreadClass(supC);
+		}
+		c.locIn = 2;
+		// Use index to fill into \the correct slot
+		for (JField fl : (List<JField>) c.getDeclaredFields()) {
+			if (fl.staticField) {
+				fl.staticValue = nreadReference(refs[fl.index]);
+			}
+		}
+		log.log(Level.FINEST,"num interf: " + interfaceClasses.length + " "
+				+ c.classSig);
+		// Follow interface references
+		for (long interfaceRef : interfaceClasses) {
+			JClass interfaceC = nreadClass(interfaceRef);
+			c.addInterface(interfaceC);
+		}
+
+		// Follow class loader reference
+		if (classLoaderRef == 0) {
+			bootJCL.addClass(c);
+			c.classloader = bootJCL;
+			//c.classloader = null;
+		} else {
+			JClassLoader jcl = model.getLoader(classLoaderRef);
+			jcl.addClass(c);
+			if (jcl.obj == null) {
+				JObject classLoaderObj = nreadObject(classLoaderRef);
+				jcl.obj = classLoaderObj;
+			}
+			c.classloader = jcl;
+			try {
+				log.log(Level.FINEST,"Class loader : "
+						+ c.getClassLoader().getObject().getJavaClass()
+								.getName() + " for " + c.getName());
+			} catch (CorruptDataException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		c.locIn = 3;
+
+		if (c.classloader == null) {
+			//log.log(Level.FINEST,"No valid class loader");
+			//System.exit(0);
+		}
+
+		return c;
+	}
+
+	private JObject nreadObject(long position) throws IOException {
+		variablesIn.seek(position);
+		if (position == CJVMTI_NULL_OBJECT) {
+			return null;
+		}
+		if (variablesIn.readByte() == CJVMTI_OBJECT) {
+			return nreadObject();
+		} else {
+			throw new IOException();
+		}
+	}
+
+	private JObject nreadObject() throws IOException {
+		long objectID = variablesIn.getStreamPosition() - 1;
+		long classRef = variablesIn.readLong();
+		int numInstanceFields = variablesIn.readInt();
+		long offset = variablesIn.getStreamPosition();
+		// log.log(Level.FINEST,"objectID " + Long.toHexString(objectID));
+		JClass c = nreadClass(classRef);
+		log.log(Level.FINEST,"Obj id " + Long.toHexString(objectID));
+		JObject obj = model.getObject(classRef, objectID);
+		if (obj.visited)
+			return obj; // Prevent reference loop
+
+		obj.visited = true;
+		int instanceFieldCount = 0;
+
+		JClass superClass = c;
+		while (superClass != null) {
+			for (JField jf : (List<JField>) superClass.getDeclaredFields()) {
+				if (!jf.staticField)
+					instanceFieldCount++;
+			}
+			superClass = model.getClass(superClass.superClassID);
+		}
+		if (numInstanceFields != instanceFieldCount) {
+			log.log(Level.FINEST,"Non-matching " + numInstanceFields + " found "
+					+ instanceFieldCount);
+			System.exit(0);
+		}
+
+		long instanceRefs[] = new long[instanceFieldCount];
+		variablesIn.seek(offset);
+		int countUp = 0;
+		while (countUp < instanceFieldCount) {
+			instanceRefs[countUp] = variablesIn.readLong();
+			countUp++;
+		}
+		offset = variablesIn.getStreamPosition();
+		int fieldCount = 0;
+
+		int fieldOffset;
+		fieldOffset = 0;
+		superClass = c;
+		while (superClass != null) {
+			for (JField jf : (List<JField>) superClass.getDeclaredFields()) {
+				if (!jf.staticField) {
+					fieldCount++;
+
+					obj
+							.addValue(jf.getFieldID(),
+									nreadReference(instanceRefs[fieldOffset
+											+ jf.index]));
+
+				}
+			}
+			fieldOffset = fieldCount;
+			superClass = model.getClass(superClass.superClassID);
+		}
+
+		log.log(Level.FINEST," " + fieldCount + "  " + numInstanceFields + " "
+				+ instanceFieldCount + " " + c.classSig);
+		return obj;
+	}
+
+	private Object nreadReference(long position) throws IOException {
+		if (position == CJVMTI_NULL_OBJECT) {
+			return null;
+		}
+		try {
+			// log.log(Level.FINEST,"Read at "+Long.toHexString(position));
+			variablesIn.seek(position);
+			int length = 0;
+			JObject obj;
+			byte type = variablesIn.readByte();
+			switch (type) {
+			case CJVMTI_CLASS:
+				return nreadClass();
+			case CJVMTI_OBJECT:
+				return nreadObject();
+			case CJVMTI_BYTE:
+				return variablesIn.readByte();
+			case CJVMTI_CHAR:
+				return variablesIn.readChar();
+			case CJVMTI_DOUBLE:
+				return variablesIn.readDouble();
+			case CJVMTI_FLOAT:
+				return variablesIn.readFloat();
+			case CJVMTI_INT:
+				return variablesIn.readInt();
+			case CJVMTI_LONG:
+				return variablesIn.readLong();
+			case CJVMTI_SHORT:
+				return variablesIn.readShort();
+			case CJVMTI_BOOLEAN:
+				return variablesIn.readBoolean();
+			case CJVMTI_OBJECT_ARRAY:
+				long classType = variablesIn.readLong();
+				length = variablesIn.readInt();
+				long currentReadPos = variablesIn.getStreamPosition();
+				log.log(Level.FINEST,"pos " + classType);
+				JClass arrayClass = nreadClass(classType);
+				variablesIn.seek(currentReadPos);
+				JObject objA[] = new JObject[length];
+				currentReadPos = variablesIn.getStreamPosition();
+				for (int counter = 0; counter < length; counter++) {
+					long objReference = variablesIn.readLong();
+					if (objReference == CJVMTI_NULL_OBJECT_ARRAY) {
+						objA[counter] = (JObject) null;
+						continue;
+					}
+					log.log(Level.FINEST,"Reading " + counter + " at "
+							+ Long.toHexString(objReference));
+					currentReadPos = variablesIn.getStreamPosition();
+					objA[counter] = (JObject) nreadReference(objReference);
+					variablesIn.seek(currentReadPos);
+				}
+				obj = model
+						.getObject(arrayClass.getID().getAddress(), position);
+				obj.objArray = objA;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_BYTE_ARRAY:
+				length = variablesIn.readInt();
+				Byte ba[] = new Byte[length];
+				for (int counter = 0; counter < length; counter++) {
+					ba[counter] = variablesIn.readByte();
+				}
+				obj = model.getObject(byteArray.classid, position);
+				obj.objArray = ba;
+				obj.isArray = true;
+
+				return obj;
+			case CJVMTI_CHAR_ARRAY:
+				length = variablesIn.readInt();
+				Character ca[] = new Character[length];
+				for (int counter = 0; counter < length; counter++) {
+					ca[counter] = (char) variablesIn.readShort();
+				}
+				obj = model.getObject(charArray.classid, position);
+				obj.objArray = ca;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_DOUBLE_ARRAY:
+				length = variablesIn.readInt();
+				Double da[] = new Double[length];
+				for (int counter = 0; counter < length; counter++) {
+					da[counter] = variablesIn.readDouble();
+				}
+				obj = model.getObject(doubleArray.classid, position);
+				obj.objArray = da;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_FLOAT_ARRAY:
+				length = variablesIn.readInt();
+				Float fa[] = new Float[length];
+				for (int counter = 0; counter < length; counter++) {
+					fa[counter] = variablesIn.readFloat();
+				}
+				obj = model.getObject(floatArray.classid, position);
+				obj.objArray = fa;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_INT_ARRAY:
+				length = variablesIn.readInt();
+				Integer i[] = new Integer[length];
+				for (int counter = 0; counter < length; counter++) {
+					i[counter] = variablesIn.readInt();
+				}
+				obj = model.getObject(intArray.classid, position);
+				obj.objArray = i;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_LONG_ARRAY:
+				length = variablesIn.readInt();
+				Long la[] = new Long[length];
+				for (int counter = 0; counter < length; counter++) {
+					la[counter] = variablesIn.readLong();
+				}
+				obj = model.getObject(longArray.classid, position);
+				obj.objArray = la;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_SHORT_ARRAY:
+				length = variablesIn.readInt();
+				Short sa[] = new Short[length];
+				for (int counter = 0; counter < length; counter++) {
+					sa[counter] = variablesIn.readShort();
+				}
+				obj = model.getObject(shortArray.classid, position);
+				obj.objArray = sa;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_BOOLEAN_ARRAY:
+				length = variablesIn.readInt();
+				Boolean[] za = new Boolean[length];
+				for (int counter = 0; counter < length; counter++) {
+					za[counter] = variablesIn.readBoolean();
+				}
+				obj = model.getObject(booleanArray.classid, position);
+				obj.objArray = za;
+				obj.isArray = true;
+				return obj;
+			case CJVMTI_NULL_OBJECT:
+				return null;
+			}
+			try {
+				System.out
+						.println("Unknown case "
+								+ type
+								+ " "
+								+ Long.toHexString((variablesIn
+										.getStreamPosition() - 1)));
+				throw new Exception();
+			} catch (Exception e) {
+				e.printStackTrace();
+				System.exit(0);
+			}
+		} catch (Exception e) {
+			log.log(Level.FINEST,e.toString());
+			e.printStackTrace();
+			System.exit(0);
+		}
+		return null;
+	}
+
+	private void generateClassLoaderForReader() {
+
+		// generate system classloader
+		
+		
+		
+		selfGeneratedIDs++;
+		JClassLoader rootJCL = model.getLoader(selfGeneratedIDs);
+		JClass rootCLC = model.getClass(selfGeneratedIDs);
+		rootCLC.classSig = "Ljava/lang/SystemClassLoaderBASE;";
+		JObject rootObj = model.getObject(selfGeneratedIDs, selfGeneratedIDs);
+		rootJCL.obj = rootObj;
+		selfGeneratedIDs++;
+		
+		
+		selfGeneratedIDs++;
+		bootJCL = model.getLoader(selfGeneratedIDs);
+		JClass bootCLC = model.getClass(selfGeneratedIDs);
+		bootCLC.classSig = "Ljava/lang/CJVMTISystemClassLoader;";
+		JObject bootObj = model.getObject(selfGeneratedIDs, selfGeneratedIDs);
+		bootJCL.obj = bootObj;
+		//rootJCL.addClass(bootCLC);
+		bootCLC.classloader = null;
+		readerJCL = bootJCL;
+	}
+	
+
+
+	private JClass getArrayClass(JObject type) {
+		if (objectArrayClasses == null) {
+			objectArrayClasses = new HashMap<JObject, JClass>();
+		}
+		if (objectArrayClasses.get(type) != null) {
+			return objectArrayClasses.get(type);
+		} else {
+			selfGeneratedIDs++;
+			JClass c = model.getClass(selfGeneratedIDs);
+			try {
+				c.classSig = "[" + type.getJavaClass().getName();
+			} catch (CorruptDataException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				c.classSig = "LUnknownObjectArray;";
+			}
+			readerJCL.addClass(c);
+			objectArrayClasses.put(type, c);
+			return c;
+		}
+	}
+
+	private void generateNullObject() {
+		selfGeneratedIDs++;
+
+	}
+
+	private void generatePrimitiveArrayClasses() {
+		// "[int"
+		selfGeneratedIDs++;
+		intArray = model.getClass(selfGeneratedIDs);
+		intArray.classSig = "[I";
+		readerJCL.addClass(intArray);
+		//
+		// "[float"
+		selfGeneratedIDs++;
+		floatArray = model.getClass(selfGeneratedIDs);
+		floatArray.classSig = "[F";
+		readerJCL.addClass(floatArray);
+		//
+		// "[short"
+		selfGeneratedIDs++;
+		shortArray = model.getClass(selfGeneratedIDs);
+		shortArray.classSig = "[S";
+		readerJCL.addClass(shortArray);
+		//
+		// "[long"
+		selfGeneratedIDs++;
+		longArray = model.getClass(selfGeneratedIDs);
+		longArray.classSig = "[J";
+		readerJCL.addClass(longArray);
+		//
+		// "[byte"
+		selfGeneratedIDs++;
+		byteArray = model.getClass(selfGeneratedIDs);
+		byteArray.classSig = "[B";
+		readerJCL.addClass(byteArray);
+		//
+		// "[boolean"
+		selfGeneratedIDs++;
+		booleanArray = model.getClass(selfGeneratedIDs);
+		booleanArray.classSig = "[Z";
+		readerJCL.addClass(booleanArray);
+		//
+		// "[double"
+		selfGeneratedIDs++;
+		doubleArray = model.getClass(selfGeneratedIDs);
+		doubleArray.classSig = "[D";
+		readerJCL.addClass(doubleArray);
+		//
+		// "[char"
+		selfGeneratedIDs++;
+		charArray = model.getClass(selfGeneratedIDs);
+		charArray.classSig = "[C";
+		readerJCL.addClass(charArray);
+	}
+
+	private String readName() throws IOException {
+		int nameLength = in.readInt();
+		if (nameLength > 0) {
+			byte name[] = new byte[nameLength];
+			in.readFully(name);
+			return new String(name);
+		}
+		return null;
+	}
+
+	private String readCString(FileImageInputStream z) throws IOException {
+		StringBuilder sb = new StringBuilder();
+		char cur;
+		while ((cur = (char) z.readUnsignedByte()) != 0) {
+			sb.append(cur);
+		}
+		return sb.toString();
+	}
+
+	public JLocalVariable nreadLocalVars() throws IOException {
+		JLocalVariable jlv = new JLocalVariable();
+		String sig = readCString(in);
+		String name = readCString(in);
+		int length = in.readInt();
+		int slot = in.readInt();
+		long reference = in.readLong();
+		nreadReference(reference);
+		jlv.slot = slot;
+		jlv.setValue(nreadReference(reference));
+		return jlv;
+	}
+
+	private void nreadFrames(JThread t) throws IOException {
+		long startPos;
+		int frameCount = in.readInt();
+		if (frameCount == 0)
+			log.log(Level.FINEST,"No Frames");
+		for (int i = 0; i < frameCount; i++) {
+			startPos = in.getStreamPosition();
+			if (in.readByte() == CJVMTI_FRAME) {
+				log.log(Level.FINEST,"Reading frame" + i + " of " + frameCount);
+				long frameSize = in.readLong();
+				byte jvmtiErr = in.readByte();
+				if (jvmtiErr == CJVMTI_JVMTI_ERROR) {
+					log.log(Level.FINEST,"Data not available");
+					in.seek(startPos + frameSize + 1);
+					continue;
+				}
+				long methodID = in.readLong();
+				String methodName = readCString(in);
+				log.log(Level.FINEST,"Method name is: " + methodName);
+				long declaringClass = in.readLong();
+				Object o = (JClass) nreadReference(declaringClass); // Get class
+				// info for
+				// this
+				// frame
+				JClass clazz = null;
+				if (!(clazz instanceof JClass)) {
+					clazz = (JClass) o;
+				}
+				byte depth = in.readByte();
+				if (depth == CJVMTI_LOCAL_NATIVECALL) {
+					log.log(Level.FINEST,"Native call");
+					in.seek(startPos + frameSize + 1);
+					continue;
+				} else if (depth == CJVMTI_LOCAL_VARIABLE) {
+					log.log(Level.FINEST,"Local var");
+				} else if (depth == CJVMTI_JVMTI_ERROR) {
+					log.log(Level.FINEST,"Data unavailable");
+					in.seek(startPos + frameSize + 1);
+					continue;
+				}
+
+				long location = in.readLong();
+				log.log(Level.FINEST,"Location is " + location);
+				// now set up JStackFrame and location
+				JStackFrame jsf = new JStackFrame();
+				JLocation loc = new JLocation();
+				jsf.setLocation(loc);
+				loc.setAddress(location);
+				if (clazz != null) {
+					loc.filename = clazz.sourceFile;
+				}
+				loc.method = model.getMethod(methodID);
+				// loc.linenumber = loc.method.getLineNumber(location);
+				loc.linenumber = (int) location;
+				log.log(Level.FINEST," Line number " + loc.linenumber + " to "
+						+ location);
+				int varCount = in.readInt();
+				log.log(Level.FINEST,"vars: " + varCount);
+				for (int i2 = 0; i2 < varCount; i2++) {
+					jsf.addVariable(nreadLocalVars());
+				}
+
+				t.addStackFrame(jsf);
+				in.seek(startPos + frameSize + 1);
+			} else {
+				log.log(Level.FINEST,"Error " + in.getStreamPosition() + " "
+						+ in.readByte());
+			}
+		}
+
+	}
+
+	private void readMonitor(JThread t) throws IOException {
+		int ownedMonitorCount = in.readInt();
+		log.log(Level.FINEST,"Owned monitor count " + ownedMonitorCount);
+		if (ownedMonitorCount == 0)
+			return;
+
+		for (int i = 0; i < ownedMonitorCount; i++) {
+			long objID = in.readLong();
+			nreadReference(objID);
+			JMonitor monitor = model.getMonitor(objID);
+			monitor.setObject(monitor.id);
+			monitor.setOwner(t.id);
+		}
+	}
+
+	private void readContendedMonitor(JThread t) throws IOException {
+		long contendedObject = in.readLong();
+		log.log(Level.FINEST,"Contended object: "
+				+ Long.toHexString(contendedObject));
+		if (contendedObject != CJVMTI_NULL_OBJECT) {
+			JMonitor monitor = model.getMonitor(contendedObject);
+			nreadReference(contendedObject);
+			monitor.addWaiter(t.id);
+			monitor.setObject(contendedObject);
+		}
+	}
+
+	private void nreadThread(long id) throws IOException {
+		log.log(Level.FINEST,"Reading thread");
+		long size = in.readLong();
+		String threadname = readCString(in);
+		long objectRef = in.readLong();
+		nreadReference(objectRef);
+		JThread t = model.getThread(objectRef);
+		t.threadName = threadname;
+		log.log(Level.FINEST,t.threadName);
+		t.groupID = 0;
+		t.priority = (short) in.readInt();
+		t.daemon = (short) in.readByte();
+		readMonitor(t);
+		readContendedMonitor(t);
+
+		nreadFrames(t);
+		in.seek(id + size + 1);
+	}
+
+	private void error(String msg) throws IOException {
+		long offset = -1;
+		try {
+			offset = in.getStreamPosition();
+		} catch (IOException e) {
+
+		}
+		throw new IOException("at offset " + offset + ": " + msg);
+
+	}
+
+	class VariableValue {
+		String signature = null;
+	}
+
+	public Model getModel() {
+		return model;
+	}
+
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CJVMTIBinReader.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CLogger.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CLogger.java?rev=807673&view=auto
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CLogger.java (added)
+++ incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CLogger.java Tue Aug 25 15:41:23 2009
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package org.apache.kato.jvmti.reader;
+
+import java.util.logging.Logger;
+
+public class CLogger {
+	public static Logger logr = Logger.getLogger("CJVMTI");
+}

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/reader/CLogger.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/JavaRuntimeImpl.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/JavaRuntimeImpl.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/JavaRuntimeImpl.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClass.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClass.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClass.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClassLoader.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClassLoader.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JClassLoader.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JField.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JField.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JField.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JFieldValue.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JFieldValue.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JFieldValue.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariable.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariable.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariable.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariableTableEntry.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariableTableEntry.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocalVariableTableEntry.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocation.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocation.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JLocation.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMethod.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMethod.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMethod.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMonitor.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMonitor.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JMonitor.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JObject.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JObject.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JObject.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JStackFrame.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JStackFrame.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JStackFrame.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread$1.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread%241.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread$1.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JThread.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JValueHolder.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JValueHolder.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/JValueHolder.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/Model.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/Model.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/Model.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/ObjectMapList.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/ObjectMapList.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/ObjectMapList.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/SimpleImagePointer.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/SimpleImagePointer.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/javaruntime/model/SimpleImagePointer.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageFactoryImpl.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageFactoryImpl.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageFactoryImpl.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl$ImageAddressSpaceImpl$ImageProcessImpl.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl%24ImageAddressSpaceImpl%24ImageProcessImpl.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl$ImageAddressSpaceImpl$ImageProcessImpl.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl$ImageAddressSpaceImpl.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl%24ImageAddressSpaceImpl.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl$ImageAddressSpaceImpl.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/process/ImageImpl.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader$VariableValue.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader%24VariableValue.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader$VariableValue.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CJVMTIBinReader.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CLogger.class
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CLogger.class?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/classes/org/apache/kato/jvmti/reader/CLogger.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/kato.jvmti-0.0.1-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/kato.jvmti-0.0.1-SNAPSHOT.jar?rev=807673&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/kato.jvmti-0.0.1-SNAPSHOT.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/maven-archiver/pom.properties
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/maven-archiver/pom.properties?rev=807673&view=auto
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/maven-archiver/pom.properties (added)
+++ incubator/kato/trunk/org.apache.kato/kato.cjvmti/target/maven-archiver/pom.properties Tue Aug 25 15:41:23 2009
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Aug 25 16:05:43 BST 2009
+version=0.0.1-SNAPSHOT
+groupId=org.apache.kato
+artifactId=kato.jvmti



Mime
View raw message