You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kato-commits@incubator.apache.org by sp...@apache.org on 2009/06/22 09:03:25 UTC

svn commit: r787172 - in /incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src: pyjvmti.c pyjvmti.h pyjvmti_convert.h

Author: spoole
Date: Mon Jun 22 09:03:25 2009
New Revision: 787172

URL: http://svn.apache.org/viewvc?rev=787172&view=rev
Log:
updated pyjvmti code to compile on windows

Modified:
    incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.c
    incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.h
    incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti_convert.h

Modified: incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.c
URL: http://svn.apache.org/viewvc/incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.c?rev=787172&r1=787171&r2=787172&view=diff
==============================================================================
--- incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.c (original)
+++ incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.c Mon Jun 22 09:03:25 2009
@@ -20,8 +20,7 @@
 * To help the python user get benefit from the jvmti functions, common jni functions are
 * also bridged
 *
-**/
-
+**/ 
 #include <Python.h>
 #include "jni.h"
 #include "jvmti.h"
@@ -40,11 +39,15 @@
 static PyObject *exception_callback = NULL;
 static jrawMonitorID lock=NULL;
 
+
+
+
 static void enterLock(jvmtiEnv *jvmti)
 
 {
 
      jvmtiError error;
+	 jint rc=0;
 
      error = (*jvmti)->RawMonitorEnter(jvmti, lock);
      if(error!=JNI_OK) {
@@ -55,7 +58,7 @@
      jvmtiptr=jvmti;
      oldjniptr=jniptr;
 
-     jint rc = (*vmptr)->GetEnv(vmptr, (void **)&jniptr, JNI_VERSION_1_6);
+     rc = (*vmptr)->GetEnv(vmptr, (void **)&jniptr, JNI_VERSION_1_6);
 
      		  	if (rc != JNI_OK) {
      		  		printf("unable to load jni environment");
@@ -83,15 +86,19 @@
 }
 static PyObject *  jvmti_getPhase(PyObject *self, PyObject *args) {
 
-	CHECK_VALID();
+	
 
 	jvmtiPhase phase;
+	jvmtiError err;
+	int result=0;
 
-	jvmtiError err=(*jvmtiptr)->GetPhase(jvmtiptr,&phase);
+	CHECK_VALID();
+	
+	err=(*jvmtiptr)->GetPhase(jvmtiptr,&phase);
 
 	CHECK_OK("get phase");
 
-	int result=phase;
+	result=phase;
 	return Py_BuildValue("i", result);
 
 
@@ -126,22 +133,23 @@
    jlocation locationj, jobject exceptionj, jmethodID catch_methodj,
    jlocation catch_locationj) {
 
-
-	if(exception_callback == NULL) return; // nothing to call
-
-	enterLock(jvmti_env);
-
-
 	PyObject *arglist=NULL;
 	PyObject *result=NULL;
 
-	int thread=JTHREAD2INT(threadj);
+    int thread=JTHREAD2INT(threadj);
 	int method=JMETHOD2INT(methodj);
 	long location=JLOCATION2LONG(locationj);
 	int exception=JOBJECT2INT(exceptionj);
 	int catch_method=JMETHOD2INT(catch_methodj);
 	long catch_location=JLOCATION2LONG(locationj);
 
+	if(exception_callback == NULL) return; // nothing to call
+
+	enterLock(jvmti_env);
+
+
+
+	
 	arglist = Py_BuildValue("(iiiiliil)",vmptr,jvmti_env,thread,method,location,exception,catch_method,catch_location);
 	result = PyObject_CallObject(exception_callback, arglist);
 	if(PyErr_Occurred()) {
@@ -181,172 +189,197 @@
 
 }
 
-#define getStringValue(FUNC,DESC)  \
-	CHECK_VALID(); \
-\
-			int objectID=0; \
-\
-			PyArg_ParseTuple(args, "i", &objectID);\
-\
-			jobject object=(jobject)objectID;\
-			char *result=NULL;\
-\
-			jvmtiError err=(*jvmtiptr)->FUNC(jvmtiptr,object,&result);\
-\
-			CHECK_OK(DESC);\
-			PyObject* string=Py_BuildValue("s", result); \
-			DEALLOC(result); \
+#define getStringValue(FUNC,DESC)					\
+													\
+			int objectID=0;							\
+			char *result=NULL;						\
+			jobject object;							\
+			PyObject* string=NULL;					\
+			jvmtiError err;							\
+													\
+			CHECK_VALID();							\
+													\
+			PyArg_ParseTuple(args, "i", &objectID);	\
+													\
+			object=(jobject)objectID;				\
+													\
+			err=(*jvmtiptr)->FUNC(jvmtiptr,object,&result);\
+													\
+			CHECK_OK(DESC);							\
+			string=Py_BuildValue("s", result);		\
+			DEALLOC(result);						\
 			return string;
 
 
-
-#define getFieldValue(FUNC,TYPE,PTYPE,DESC)  \
-	CHECK_VALID();\
-\
-			int objectID=0; \
-			int fieldID=0; \
-\
+#define getFieldValue(FUNC,TYPE,PTYPE,DESC)			\
+													\
+													\
+			int objectID=0;							\
+			int fieldID=0;							\
+			jobject object=0;						\
+			jfieldID field=0;						\
+			TYPE result=0;							\
+													\
+			CHECK_VALID();							\
+													\
 			PyArg_ParseTuple(args, "ii",&fieldID,&objectID);\
-			jobject object=(jobject)objectID;\
-			jfieldID field=(jfieldID)fieldID;\
-			\
-			TYPE result=0;\
+			object=(jobject)objectID;				\
+			field=(jfieldID)fieldID;				\
+													\
 			result=(*jniptr)->FUNC(jniptr,object,field);\
-   		 return Py_BuildValue(PTYPE, result);
+   													\
+			return Py_BuildValue(PTYPE, result);
 
 
-#define getValue(FUNC,SRCTYPE,TYPE,PTYPE,DESC)  \
-	CHECK_VALID();\
-\
-			int objectID=0; \
-\
-			PyArg_ParseTuple(args, "i", &objectID);\
-\
-			SRCTYPE object=(SRCTYPE)objectID;\
-			TYPE result=0;\
-\
-			jvmtiError err=(*jvmtiptr)->FUNC(jvmtiptr,object,&result);\
-\
-			CHECK_OK(DESC);\
-\
-   		 return Py_BuildValue(PTYPE, result);
-
-#define getStaticValue(FUNC,TYPE,PTYPE)  \
-	CHECK_VALID();         \
-                           \
-			int clazzID=0; \
-			int fieldID=0; \
+
+#define getValue(FUNC,SRCTYPE,TYPE,PTYPE,DESC)		\
+													\
+			int objectID=0;							\
+			SRCTYPE object;							\
+			TYPE result=0;							\
+			jvmtiError err;							\
+			CHECK_VALID();							\
+													\
+			PyArg_ParseTuple(args, "i", &objectID);	\
+													\
+			object=(SRCTYPE)objectID;				\
+													\
+			err=(*jvmtiptr)->FUNC(jvmtiptr,object,&result);\
+													\
+			CHECK_OK(DESC);							\
+													\
+   			return Py_BuildValue(PTYPE, result);
+
+
+#define getStaticValue(FUNC,TYPE,PTYPE)				\
+													\
+			int clazzID=0;							\
+			int fieldID=0;							\
+			jclass clazz;							\
+			jfieldID field;							\
+			TYPE result;							\
+			PyObject *pyresult=NULL;				\
+													\
+			CHECK_VALID();							\
+													\
 			PyArg_ParseTuple(args, "ii", &clazzID,&fieldID);\
                                                             \
-            TRACE("clazzid=%d ",clazzID); \
-            TRACE("fieldID=%d\n",fieldID); \
-			jclass clazz=clazzID;\
-			jfieldID field=fieldID;\
-			                       \
-			TYPE result=(*jniptr)->FUNC(jniptr,clazz,field);\
+            clazz=INT2JCLASS(clazzID);						\
+			field=INT2JFIELD(fieldID);						\
+										                    \
+			result=(*jniptr)->FUNC(jniptr,clazz,field);		\
                                                             \
-            PyObject *pyresult=Py_BuildValue(PTYPE, result); \
-            TRACE_EXIT(); \
+            pyresult=Py_BuildValue(PTYPE, result);			\
+            TRACE_EXIT();									\
             return pyresult;
 
 
-#define getList(FUNC,TYPE,DESC)  \
-	CHECK_VALID(); \
-		\
-			int ID=0; \
-	\
-			PyArg_ParseTuple(args, "i", &ID); \
-\
-			jobject object=(jobject)ID; \
-			jint countj=0;\
-			TYPE *entries=NULL; \
-\
-			jvmtiError err=(*jvmtiptr)->FUNC(jvmtiptr,object,&countj,&entries);\
-\
-			CHECK_OK(DESC);\
-\
-			int count=countj;\
-			PyObject* list= PyList_New(count);\
-\
-			 int i=0;\
-			 		for(i=0;i<count;i++) {\
-			 			TYPE entryid=entries[i];\
-			 			PyObject *value= Py_BuildValue("i",entryid);\
-			 			PyList_SetItem(list,i,value);\
-			 		}\
-\
-			 		DEALLOC(entries);\
-\
-			 		return list;\
-
+#define getList(FUNC,TYPE,DESC)						\
+													\
+			int ID=0;								\
+			jint countj=0;							\
+			TYPE *entries=NULL;						\
+			jobject object;							\
+			jvmtiError err;							\
+			int count=0;							\
+			int i=0;								\
+			PyObject* list=NULL;					\
+													\
+			CHECK_VALID();							\
+													\
+			PyArg_ParseTuple(args, "i", &ID);		\
+													\
+			object=(jobject)ID;						\
+													\
+			err=(*jvmtiptr)->FUNC(jvmtiptr,object,&countj,&entries);\
+													\
+			CHECK_OK(DESC);							\
+			count=countj;							\
+			list= PyList_New(count);				\
+			for(i=0;i<count;i++) {					\
+			TYPE entryid;							\
+				PyObject *value=NULL;				\
+				entryid=entries[i];					\
+		 		value=Py_BuildValue("i",entryid);	\
+		 		PyList_SetItem(list,i,value);		\
+		 	}										\
+													\
+			DEALLOC(entries);						\
+													\
+			 return list;
 
 
-#define getArray(FUNC,JNITYPE,CTYPE,PYTYPE) \
-	CHECK_VALID();  \
-\
-		int arrayid=0;\
-		int offset=0; \
-		int length=0; \
+#define getArray(FUNC,JNITYPE,CTYPE,PYTYPE)			\
+													\
+		int arrayid=0;								\
+		int offset=0;								\
+		int length=0;								\
+		jsize sizej;								\
+		int i=0,size=0;	 							\
+		PyObject* list=NULL;						\
+		jint offsetj;								\
+		JNITYPE##Array array;						\
+		JNITYPE *result=NULL;						\
+		CHECK_VALID();								\
+													\
 		PyArg_ParseTuple(args, "i|ii", &arrayid,&offset,&length);\
-		if(length>0) { \
-			getArrayRegion(FUNC,JNITYPE,CTYPE,PYTYPE)\
-        }\
-        else {\
-       	getFullArray(FUNC,JNITYPE,CTYPE,PYTYPE)  \
-        } \
-		return NULL;
-
-#define getFullArray(FUNC,JNITYPE,CTYPE,PYTYPE) \
-\
-		    JNITYPE##Array array=(JNITYPE##Array)arrayid;\
-			jsize sizej=(*jniptr)->GetArrayLength(jniptr,array);\
-			int size=sizej;\
-			PyObject* list= PyList_New(size);\
-			if(size>0) {\
-			JNITYPE *result=(*jniptr)->Get##FUNC##ArrayElements(jniptr,array,0);\
-			if(result==NULL) ERROR(-100);\
-			  int i=0; \
-			  for (i=0; i<size; i++) { \
-				  CTYPE entry=result[i]; \
-			      PyList_SetItem(list,i,Py_BuildValue(PYTYPE,entry));\
-			  }\
-			} \
-			return list;
-
-
-#define getArrayRegion(FUNC,JNITYPE,CTYPE,PYTYPE) \
-\
-		    JNITYPE##Array array=(JNITYPE##Array)arrayid;\
-			int size=length;\
-			jint sizej=size; \
-			jint offsetj=offset;\
-			PyObject* list= PyList_New(size);\
-			if(size==0) return list; \
-			JNITYPE *result=(JNITYPE *)malloc( sizeof(JNITYPE) * size); \
-		    if(result==NULL) ERROR(-101); \
+															\
+		if(length>0) {										\
+		    array=(JNITYPE##Array)arrayid;					\
+			size=length;									\
+			sizej=size;										\
+			offsetj=offset;									\
+			list= PyList_New(size);							\
+			if(size==0) return list;						\
+			result=(JNITYPE *)malloc( sizeof(JNITYPE) * size); \
+		    if(result==NULL) ERROR(-101);					\
 		    (*jniptr)->Get##FUNC##ArrayRegion(jniptr,array, offsetj, sizej, result); \
-			  int i=0; \
-			  for (i=0; i<size; i++) { \
-				  CTYPE entry=result[i]; \
+																\
+			  for (i=0; i<size; i++) {							\
+				  CTYPE entry=result[i];						\
 			      PyList_SetItem(list,i,Py_BuildValue(PYTYPE,entry));\
-			  }\
-			 free(result);\
-			return list;
+			  }													\
+			 free(result);										\
+			return list;									\
+															\
+        }													\
+        else {												\
+       		array=(JNITYPE##Array)arrayid;					\
+			sizej=(*jniptr)->GetArrayLength(jniptr,array);	\
+			size=sizej;										\
+			list= PyList_New(size);							\
+			if(size>0) {									\
+			result=(*jniptr)->Get##FUNC##ArrayElements(jniptr,array,0);\
+			if(result==NULL) ERROR(-100);					\
+															\
+			  for (i=0; i<size; i++) {						\
+				  CTYPE entry=result[i];					\
+			      PyList_SetItem(list,i,Py_BuildValue(PYTYPE,entry));\
+			  }												\
+			}												\
+			return list;									\
+        }													\
+		return NULL;
+
 
 
 static char * getErrorMessage(jvmtiError err,char *usrmsg) {
 
 		char *msg=NULL;
+		jvmtiError e;
+		int length=0;
+		char *result=NULL;
+
 		if(jvmtiptr==NULL) {
 				msg="UNABLE TO RESOLVE";
 		}
 		else {
-		jvmtiError e=(*jvmtiptr)->GetErrorName(jvmtiptr,err,&msg);
-		if(e!=JNI_OK) msg="unknown message";
+			e=(*jvmtiptr)->GetErrorName(jvmtiptr,err,&msg);
+			if(e!=JNI_OK) msg="unknown message";
 		}
 
-		int length=strlen(msg)+50+strlen(usrmsg);
-		char *result=malloc(length);
+		length=strlen(msg)+50+strlen(usrmsg);
+		result=malloc(length);
 
 		sprintf(result,"failed %s (%i) %s",usrmsg,err,msg);
 
@@ -354,77 +387,83 @@
 }
 
 static PyObject *  jvmti_getStaticBooleanField(PyObject *self, PyObject *args) {
-		TRACE_ENTER();
+		
 		getStaticValue(GetStaticBooleanField,jboolean,"i")
-		TRACE_EXIT();
+		
 }
 static PyObject *  jvmti_getStaticByteField(PyObject *self, PyObject *args) {
-		TRACE_ENTER();
+		
 		getStaticValue(GetStaticByteField,jbyte,"h")
-		TRACE_EXIT();
+		
 }
 static PyObject *  jvmti_getStaticCharField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticCharField,jchar,"c")
 }
 static PyObject *  jvmti_getStaticShortField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticShortField,jshort,"h")
 }
 static PyObject *  jvmti_getStaticIntField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticIntField,jshort,"i")
 }
 static PyObject *  jvmti_getStaticLongField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticLongField,jlong,"l")
 }
 static PyObject *  jvmti_getStaticFloatField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticFloatField,jfloat,"f")
 }
 static PyObject *  jvmti_getStaticDoubleField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticDoubleField,jdouble,"f")
 }
 static PyObject *  jvmti_getStaticObjectField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 		getStaticValue(GetStaticObjectField,jobject,"i")
-	TRACE_EXIT();
+	
 }
 
 static PyObject *  jvmti_getArrayLength(PyObject *self, PyObject *args) {
+	
+	int arrayid=0;
+	jarray array;
+	jsize result;
+
 	TRACE_ENTER();
 	CHECK_VALID();
 
-	int arrayid=0;
-
 	PyArg_ParseTuple(args, "i", &arrayid);
 	TRACE("arrayid=%d\n",arrayid);
 
-	jarray array=INT2JARRAY(arrayid);
+	array=INT2JARRAY(arrayid);
 
-	jsize result=(*jniptr)->GetArrayLength(jniptr,array);
+	result=(*jniptr)->GetArrayLength(jniptr,array);
 
     return Py_BuildValue("i", result);
 
 }
 
 static PyObject *  jvmti_getStringUTFChars(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 	int objid=0;
 	const char *utf;
 	jboolean iscopy;
+	jstring string;
+	PyObject *result=NULL;
+
+	TRACE_ENTER();
+	CHECK_VALID();
 
 	PyArg_ParseTuple(args, "i", &objid);
 
-	jstring string=(jstring)objid;
+	string=(jstring)objid;
 
 	utf=(*jniptr)->GetStringUTFChars(jniptr,string,&iscopy);
 
-	PyObject *result=Py_BuildValue("s",utf);
+	result=Py_BuildValue("s",utf);
 
 	if(iscopy==JNI_TRUE) {
 
@@ -437,18 +476,22 @@
 
 
 static PyObject *  jvmti_getObjectArrayElement(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 	int arrayid=0;
 	int index=0;
+	jarray array;
+	jsize  element;
+	jobject result;
+
+	TRACE_ENTER();
+	CHECK_VALID();
 
 	PyArg_ParseTuple(args, "ii", &arrayid,&index);
 
-	jarray array=(jarray)arrayid;
-	jsize  element=(jsize)index;
+	array=(jarray)arrayid;
+	element=(jsize)index;
 
-	jobject result=(*jniptr)->GetObjectArrayElement(jniptr,array, element);
+	result=(*jniptr)->GetObjectArrayElement(jniptr,array, element);
 
 
     return Py_BuildValue("i", result);
@@ -457,89 +500,91 @@
 
 
 static PyObject *  jvmti_getObjectField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetObjectField,jobject,"i","get obj field")
 }
 static PyObject *  jvmti_getBooleanField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetBooleanField,jboolean,"i","get boolean field")
 }
 static PyObject *  jvmti_getByteField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetByteField,jbyte,"i","get byte field")
 }
 
 static PyObject *  jvmti_getCharField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetCharField,jchar,"i","get char field")
 }
 
 static PyObject *  jvmti_getShortField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetShortField,jshort,"i","get short field")
 }
 
 static PyObject *  jvmti_getIntField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 
 	getFieldValue(GetIntField,jint,"i","get int field")
 }
 
 static PyObject *  jvmti_getLongField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetLongField,jlong,"l","get long field")
 
 }
 static PyObject *  jvmti_getFloatField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetFloatField,jfloat,"f","get float field")
 
 }
 static PyObject *  jvmti_getDoubleField(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getFieldValue(GetDoubleField,jlong,"f","get double field")
 
 }
 
 static PyObject *  jvmti_getIntArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Int,jint,int,"i")
 }
 static PyObject *  jvmti_getByteArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Byte,jbyte,int,"i")
 }
 static PyObject *  jvmti_getBooleanArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Boolean,jboolean,int,"i")
 }
 static PyObject *  jvmti_getCharArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Char,jchar,char,"c")
 }
 static PyObject *  jvmti_getShortArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Short,jshort,short,"h")
 }
 static PyObject *  jvmti_getLongArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Long,jlong,long,"l")
 }
 static PyObject *  jvmti_getFloatArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Float,jfloat,float,"f")
 }
 static PyObject *  jvmti_getDoubleArrayElements(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 	getArray(Double,jdouble,double,"d")
 }
 
 static PyObject *  jvmti_registerExceptionFilter(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
+	
 	PyObject *temp=NULL;
     PyObject *result = NULL;
 
+	TRACE_ENTER();
+	CHECK_VALID();
+	
     if (PyArg_ParseTuple(args, "O", &temp)) {
 			printf("\ntemp=%p\n",temp);
 	        if (!PyCallable_Check(temp)) {
@@ -562,12 +607,13 @@
 }
 
 static PyObject *  jvmti_iterateOverReachableObjects(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-	objectcounter=0;
+	int objectcounter=0;
     PyObject *temp=NULL;
     PyObject *result = NULL;
-
+	jvmtiError err;
+	TRACE_ENTER();
+	CHECK_VALID();
+	
     if (PyArg_ParseTuple(args, "O", &temp)) {
 			printf("\ntemp=%p\n",temp);
 	        if (!PyCallable_Check(temp)) {
@@ -585,41 +631,50 @@
         PyErr_SetString(PyExc_TypeError, "can get function");
         return NULL;
     }
-	jvmtiError err=(*jvmtiptr)->IterateOverReachableObjects(jvmtiptr,NULL,NULL,&object_ref_callback,NULL);
+	err=(*jvmtiptr)->IterateOverReachableObjects(jvmtiptr,NULL,NULL,&object_ref_callback,NULL);
 	CHECK_OK("iterate over reachable objects");
 
 	 return Py_BuildValue("i", objectcounter);
 
 }
 static PyObject *  jvmti_getStackTrace(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+	
 
 			int threadID=0;
 			int start_depth=0;
 			int max_frame_count=0;
+			jthread thread;
+			jint count;
+			jint jstart;
+			jint jmax;
+			jvmtiFrameInfo *info=NULL;
+			jvmtiError err;
+			PyObject* list=NULL;
+			int i=0;
+
+			TRACE_ENTER();
 
 			PyArg_ParseTuple(args, "iii", &threadID,&start_depth,&max_frame_count);
 
-			jthread thread=INT2JTHREAD(threadID);
-			jint count=0;
-			jint jstart=start_depth;
-			jint jmax=max_frame_count;
+			thread=INT2JTHREAD(threadID);
+			count=0;
+			jstart=start_depth;
+			jmax=max_frame_count;
 
 			if(max_frame_count<1) max_frame_count=1;
 
-			jvmtiFrameInfo *info=malloc(sizeof(jvmtiFrameInfo)*max_frame_count);
-
-
-	jvmtiError err=(*jvmtiptr)->GetStackTrace(jvmtiptr,thread,jstart,jmax,info,&count);
+			info=malloc(sizeof(jvmtiFrameInfo)*max_frame_count);
+			
+			err=(*jvmtiptr)->GetStackTrace(jvmtiptr,thread,jstart,jmax,info,&count);
 
 
 	CHECK_OK("get  stack trace");
 
 
 
-	PyObject* list= PyList_New(count);
+			list= PyList_New(count);
 
-			int i=0;
+			
 			for( i=0;i<count;i++) {
 				PyList_SetItem(list,i,Py_BuildValue("ii",info[i].method,info[i].location));
 			}
@@ -632,18 +687,21 @@
 
 
 static PyObject *  jvmti_deleteLocalRef(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 		// get required ref
 		int ref=0;
+		jobject refj;
+		PyObject *result=NULL;
+
+		TRACE_ENTER();
+		CHECK_VALID();
 
 		PyArg_ParseTuple(args, "i", &ref);
 
-		jobject refj=INT2JOBJECT(ref);
+		refj=INT2JOBJECT(ref);
 		(*jniptr)->DeleteLocalRef(jniptr,refj);
 
-		 PyObject *result= Py_BuildValue("i", ref);
+		 result= Py_BuildValue("i", ref);
 		 TRACE_EXIT();
 		 return result;
 
@@ -652,18 +710,21 @@
 
 }
 static PyObject *  jvmti_getFrameCount(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 		// get required thread...
 		int threadID=0;
+		jthread thread;
+		jint count=0;
+		jvmtiError err;
 
-		PyArg_ParseTuple(args, "i", &threadID);
+		TRACE_ENTER();
+		CHECK_VALID();
 
-		jthread thread=INT2JTHREAD(threadID);
-		jint count=0;
+		PyArg_ParseTuple(args, "i", &threadID);
 
-		jvmtiError err=(*jvmtiptr)->GetFrameCount(jvmtiptr,thread,&count);
+		thread=INT2JTHREAD(threadID);
+		
+		err=(*jvmtiptr)->GetFrameCount(jvmtiptr,thread,&count);
 
 		CHECK_OK("get  frame count");
 
@@ -676,19 +737,22 @@
  * Takes threadid and returns a python list of object ids
  */
 static PyObject *  jvmti_getCurrentContendedMonitor(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-
-			CHECK_VALID();
 
 			// get required thread...
 			int threadID=0;
+			jthread thread;
+			jobject monitor;
+			jvmtiError err;
+
+			TRACE_ENTER();
+			CHECK_VALID();
 
 			PyArg_ParseTuple(args, "i", &threadID);
 
-			jthread thread=INT2JTHREAD(threadID);
-			jobject monitor=0;
+			thread=INT2JTHREAD(threadID);
+			monitor=0;
 
-			jvmtiError err=(*jvmtiptr)->GetCurrentContendedMonitor(jvmtiptr,thread,&monitor);
+			err=(*jvmtiptr)->GetCurrentContendedMonitor(jvmtiptr,thread,&monitor);
 
 			CHECK_OK("get contended monitor");
 
@@ -700,25 +764,29 @@
  * Takes threadid and returns a python list of object ids
  */
 static PyObject *  jvmti_getOwnedMonitorInfo(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 		// get required thread...
 		int threadID=0;
-
-		PyArg_ParseTuple(args, "i", &threadID);
-
-		jthread thread=INT2JTHREAD(threadID);
+		jthread thread;
 		jint count=0;
 		jobject *monitors=NULL;
+		jvmtiError err;
+		PyObject* list=NULL;
+		int i=0;
+		
+		TRACE_ENTER();
+		CHECK_VALID();
 
-		jvmtiError err=(*jvmtiptr)->GetOwnedMonitorInfo(jvmtiptr,thread,&count,&monitors);
+		PyArg_ParseTuple(args, "i", &threadID);
+
+		thread=INT2JTHREAD(threadID);
+		
+		err=(*jvmtiptr)->GetOwnedMonitorInfo(jvmtiptr,thread,&count,&monitors);
 
 		CHECK_OK("get  owned monitor info");
 
-		PyObject* list= PyList_New(count);
+		list= PyList_New(count);
 
-			int i=0;
 			for( i=0;i<count;i++) {
 				PyList_SetItem(list,i,Py_BuildValue("i",monitors[i]));
 			}
@@ -730,44 +798,52 @@
 }
 
 static PyObject *  jvmti_getThreadGroupInfo(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
 
 		// get required threadgroup
 		int ID=0;
+		jvmtiThreadGroupInfo info;
+		jthreadGroup threadGroup;
+		jvmtiError err;
+		PyObject *result=NULL;
 
-		PyArg_ParseTuple(args, "i", &ID);
+		TRACE_ENTER();
+		CHECK_VALID();
 
-		jvmtiThreadGroupInfo info;
-		jthreadGroup threadGroup=(jthreadGroup)ID;
+		PyArg_ParseTuple(args, "i", &ID);
 
+		threadGroup=(jthreadGroup)ID;
 
-		jvmtiError err=(*jvmtiptr)->GetThreadGroupInfo(jvmtiptr,threadGroup,&info);
+		err=(*jvmtiptr)->GetThreadGroupInfo(jvmtiptr,threadGroup,&info);
 
 		CHECK_OK("get  threadGroup info");
 
-		PyObject *result=Py_BuildValue("isiiii", info.parent,info.name,info.max_priority,info.is_daemon);
+		result=Py_BuildValue("isiiii", info.parent,info.name,info.max_priority,info.is_daemon);
 
 		DEALLOC(info.name); // allocated by jvmti
 
 		return result;
 }
+
 static PyObject *  jvmti_getTopThreadGroups(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-	CHECK_VALID();
 
 
 
 		jint count=0;
 		jthreadGroup *groups=NULL;
+		jvmtiError err;
+		PyObject* list=NULL;
+		int i=0;
 
-		jvmtiError err=(*jvmtiptr)->GetTopThreadGroups(jvmtiptr,&count,&groups);
+		TRACE_ENTER();
+		CHECK_VALID();
+
+		err=(*jvmtiptr)->GetTopThreadGroups(jvmtiptr,&count,&groups);
 
 		CHECK_OK("get  Top Thread Groups");
 
-		PyObject* list= PyList_New(count);
+		list= PyList_New(count);
 
-			int i=0;
+		
 			for( i=0;i<count;i++) {
 				PyList_SetItem(list,i,Py_BuildValue("i",groups[i]));
 			}
@@ -784,13 +860,14 @@
  */
 
 static PyObject *  jvmti_getcapabilities(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
-
-	CHECK_VALID();
 
 		jvmtiCapabilities capabilities;
+		jvmtiError err;
+
+		TRACE_ENTER();
+		CHECK_VALID();
 
-		jvmtiError err=(*jvmtiptr)->GetPotentialCapabilities(jvmtiptr,
+		err=(*jvmtiptr)->GetPotentialCapabilities(jvmtiptr,
 	            &capabilities);
 
 		CHECK_OK("get capabilities");
@@ -802,21 +879,26 @@
 
  static PyObject *
 jvmti_getThread(PyObject *self, PyObject *args)
-{TRACE_ENTER();
-	CHECK_VALID();
-	// get required thread...
+{
+	
 	int threadID=0;
+	jvmtiThreadInfo info;
+	jthread thread;
+	jvmtiError err;
+	PyObject *result=NULL;
 
-	PyArg_ParseTuple(args, "i", &threadID);
+	TRACE_ENTER();
+	CHECK_VALID();
 
-	jvmtiThreadInfo info;
-	jthread thread=INT2JTHREAD(threadID);
+	PyArg_ParseTuple(args, "i", &threadID);
+	
+	thread=INT2JTHREAD(threadID);
 
-	jvmtiError err=(*jvmtiptr)->GetThreadInfo(jvmtiptr,thread,&info);
+	err=(*jvmtiptr)->GetThreadInfo(jvmtiptr,thread,&info);
 
 	CHECK_OK("get  thread info");
 
-	PyObject *result=Py_BuildValue("siiii", info.name,info.priority,info.is_daemon,info.thread_group,info.context_class_loader);
+	result=Py_BuildValue("siiii", info.name,info.priority,info.is_daemon,info.thread_group,info.context_class_loader);
 
 	DEALLOC(info.name); // allocated by jvmti
 
@@ -826,16 +908,21 @@
 
  static PyObject *
 jvmti_getCurrentThread(PyObject *self, PyObject *args)
-{TRACE_ENTER();
-	CHECK_VALID();
+{	
 	jthread threadj=0;
+	jvmtiError err;
+	int thread=0;
+	PyObject *result=NULL;
 
-	jvmtiError err=(*jvmtiptr)->GetCurrentThread(jvmtiptr,&threadj);
+	TRACE_ENTER();
+	CHECK_VALID();
+
+	err=(*jvmtiptr)->GetCurrentThread(jvmtiptr,&threadj);
 
 	CHECK_OK("get currentthread");
 
-	int thread=JTHREAD2INT(threadj);
-	PyObject *result=Py_BuildValue("i",thread);
+	thread=JTHREAD2INT(threadj);
+	result=Py_BuildValue("i",thread);
 
 	return result;
 }
@@ -846,21 +933,21 @@
  static PyObject *
  jvmti_getLoadedClasses(PyObject *self, PyObject *args)
  {
-	 TRACE_ENTER();
- 	CHECK_VALID();
-
+	
  	jint count=0;
  	jclass* classes=NULL;
+	jvmtiError err;
+	PyObject* list=NULL;
+	int i=0;
 
+	TRACE_ENTER();
+ 	CHECK_VALID();
 
- 	jvmtiError err=(*jvmtiptr)->GetLoadedClasses(jvmtiptr,&count,&classes);
+ 	err=(*jvmtiptr)->GetLoadedClasses(jvmtiptr,&count,&classes);
 
  	CHECK_OK("get all classes");
 
- 	PyObject* list= PyList_New(count);
-
- 		int i=0;
-
+ 	list= PyList_New(count);
 
  		for( i=0;i<count;i++) {
 			int class=JCLASS2INT(classes[i]);
@@ -877,22 +964,22 @@
  static PyObject *
 jvmti_getAllThreads(PyObject *self, PyObject *args)
 {
-	 TRACE_ENTER();
-	CHECK_VALID();
-
+	 
 
 	jint count=0;
 	jthread* threads=NULL;
+	jvmtiError err;
+	PyObject* list=NULL;
+	int i=0;
 
+	TRACE_ENTER();
+	CHECK_VALID();
 
-	jvmtiError err=(*jvmtiptr)->GetAllThreads(jvmtiptr,&count,&threads);
+	err=(*jvmtiptr)->GetAllThreads(jvmtiptr,&count,&threads);
 
 	CHECK_OK("get all threads");
 
-	PyObject* list= PyList_New(count);
-
-		int i=0;
-
+	list= PyList_New(count);
 
 		for( i=0;i<count;i++) {
 			PyList_SetItem(list,i,Py_BuildValue("i",threads[i]));
@@ -910,21 +997,26 @@
 static PyObject *
 jvmti_getsystemproperties(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-	CHECK_VALID();
 
 	jint countj=0;
 	char **ptr=NULL;
+	jvmtiError err;
+	int count=0;
+	int i=0;
+	PyObject *pDict=NULL;
 
-	jvmtiError err=(*jvmtiptr)->GetSystemProperties(jvmtiptr,&countj,&ptr);
+	TRACE_ENTER();
+	CHECK_VALID();
+
+	err=(*jvmtiptr)->GetSystemProperties(jvmtiptr,&countj,&ptr);
 
 	CHECK_OK("get system properties");
 
-	int count=count;
+	count=countj;
 
-	PyObject *pDict = PyDict_New(); // new reference
+	pDict = PyDict_New(); // new reference
 
-	int i=0;
+	
 	for( i=0;i<count;i++) {
 
 		char *name=ptr[i];
@@ -959,31 +1051,39 @@
 jvmti_getSuperClass(PyObject *self, PyObject *args)
 {
 
+	int classid=0;
+	jclass clazz;
+	jclass result;
+
 	TRACE_ENTER();
-CHECK_VALID();
+	CHECK_VALID();
 
-	int classid=0;
 	PyArg_ParseTuple(args, "i", &classid);
 
-	jclass clazz=INT2JCLASS(classid);
+	clazz=INT2JCLASS(classid);
 
-	jclass result=(*jniptr)->GetSuperclass(jniptr,clazz);
+	result=(*jniptr)->GetSuperclass(jniptr,clazz);
 
     return Py_BuildValue("i", result);
 }
+
 static PyObject *
 jvmti_getObjectClass(PyObject *self, PyObject *args)
 {
 
+	
+	int objid=0;
+	jobject objectj;
+	jclass result;
+
 	TRACE_ENTER();
-CHECK_VALID();
+	CHECK_VALID();
 
-	int objid=0;
 	PyArg_ParseTuple(args, "i", &objid);
 
-	jobject objectj=INT2JOBJECT(objid);
+	objectj=INT2JOBJECT(objid);
 
-	jclass result=(*jniptr)->GetObjectClass(jniptr,objectj);
+	result=(*jniptr)->GetObjectClass(jniptr,objectj);
 
     return Py_BuildValue("i", result);
 
@@ -993,12 +1093,14 @@
 jvmti_gettime(PyObject *self, PyObject *args)
 {
 
-	TRACE_ENTER();
-CHECK_VALID();
-
+	
 	jlong result=0;
+	jvmtiError err;
+
+	TRACE_ENTER();
+	CHECK_VALID();
 
-	jvmtiError err=(*jvmtiptr)->GetTime(jvmtiptr,&result);
+	err=(*jvmtiptr)->GetTime(jvmtiptr,&result);
 
 	CHECK_OK("GetTime");
 
@@ -1009,21 +1111,26 @@
 static PyObject *
 jvmti_getLocalValue(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
+	
 	int threadID=0;
 	int depth=0;
 	int slot=0;
-
-	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
-
-	jthread threadj=INT2JTHREAD(threadID);
-	jint    depthj=depth;
-	jint    slotj=slot;
+	jthread threadj;
+	jint    depthj;
+	jint    slotj;
 	jobject oresult;
 	jint 	iresult;
 	jlong 	lresult;
+	jvmtiError err;
 
-	jvmtiError err=(*jvmtiptr)->GetLocalObject(jvmtiptr,threadj,depthj,slotj,&oresult);
+	TRACE_ENTER();
+	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
+
+	threadj=INT2JTHREAD(threadID);
+	depthj=depth;
+	slotj=slot;
+	
+	err=(*jvmtiptr)->GetLocalObject(jvmtiptr,threadj,depthj,slotj,&oresult);
 	if(err==JNI_OK) 	return Py_BuildValue("i", oresult);
 
 	err=(*jvmtiptr)->GetLocalInt(jvmtiptr,threadj,depthj,slotj,&iresult);
@@ -1041,13 +1148,19 @@
 static PyObject *
 jvmti_getFrameLocation(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-
-CHECK_VALID();
-
+	
 	int threadID=0;
 	int depth=0;
 	int methodID=0;
+	jthread threadj;
+	jint    depthj;
+	jmethodID methodj=0;
+	jlocation result=0;
+	jvmtiError err;
+	PyObject *pyresult=NULL;
+
+	TRACE_ENTER();
+	CHECK_VALID();
 
 	PyArg_ParseTuple(args, "iii", &threadID,&depth);
 
@@ -1055,16 +1168,16 @@
 	TRACE("depth=%d ",depth);
 
 
-	jthread threadj=INT2JTHREAD(threadID);
-	jint    depthj=depth;
-	jmethodID methodj=0;
-	jlocation result=0;
+	threadj=INT2JTHREAD(threadID);
+	depthj=depth;
+	methodj=0;
+	result=0;
 
-	jvmtiError err=(*jvmtiptr)->GetFrameLocation(jvmtiptr,threadj,depthj,&methodj,&result);
+	err=(*jvmtiptr)->GetFrameLocation(jvmtiptr,threadj,depthj,&methodj,&result);
 
 	CHECK_OK("GetFrameLocation");
 
-	PyObject *pyresult=Py_BuildValue("ii", methodj,result);
+	pyresult=Py_BuildValue("ii", methodj,result);
 	TRACE_EXIT();
 	return pyresult;
 }
@@ -1075,13 +1188,19 @@
 static PyObject *
 jvmti_getLocalObject(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-
-CHECK_VALID();
-
+	
 	int threadID=0;
 	int depth=0;
 	int slot=0;
+	jthread threadj;
+	jint    depthj;
+	jint    slotj;
+	jobject result;
+	jvmtiError err;
+	PyObject *pyresult=NULL;
+
+	TRACE_ENTER();
+	CHECK_VALID();
 
 	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
 
@@ -1089,16 +1208,17 @@
 	TRACE("depth=%d ",depth);
 	TRACE("slot=%d\n",slot);
 
-	jthread threadj=INT2JTHREAD(threadID);
-	jint    depthj=depth;
-	jint    slotj=slot;
-	jobject result=0;
+	threadj=INT2JTHREAD(threadID);
+	depthj=depth;
+	slotj=slot;
+	result=0;
 
-	jvmtiError err=(*jvmtiptr)->GetLocalObject(jvmtiptr,threadj,depthj,slotj,&result);
+	err=(*jvmtiptr)->GetLocalObject(jvmtiptr,threadj,depthj,slotj,&result);
 
 	CHECK_OK("GetLocalObject");
 
-	PyObject *pyresult=Py_BuildValue("i", result);
+	pyresult=Py_BuildValue("i", result);
+
 	TRACE_EXIT();
 	return pyresult;
 }
@@ -1110,23 +1230,27 @@
 static PyObject *
 jvmti_getLocalInt(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-
-CHECK_VALID();
-
+	
 	int threadID=0;
 	int depth=0;
 	int slot=0;
+	jthread threadj;
+	jint    depthj;
+	jint    slotj;
+	jint result;
+	jvmtiError err;
 
-	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
+	TRACE_ENTER();
+	CHECK_VALID();
 
+	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
 
-	jthread threadj=INT2JTHREAD(threadID);
-	jint    depthj=depth;
-	jint    slotj=slot;
-	jint result;
 
-	jvmtiError err=(*jvmtiptr)->GetLocalInt(jvmtiptr,threadj,depthj,slotj,&result);
+	threadj=INT2JTHREAD(threadID);
+	depthj=depth;
+	slotj=slot;
+	
+	err=(*jvmtiptr)->GetLocalInt(jvmtiptr,threadj,depthj,slotj,&result);
 
 	CHECK_OK("GetLocalInt");
 
@@ -1140,22 +1264,27 @@
 jvmti_getLocalLong(PyObject *self, PyObject *args)
 {
 
-	TRACE_ENTER();
-CHECK_VALID();
-
+	
 	int threadID=0;
 	int depth=0;
 	int slot=0;
-
-	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
+	jthread threadj;
+	jint    depthj;
+	jint    slotj;
+	jlong result;
+	jvmtiError err;
+	
+	TRACE_ENTER();
+	CHECK_VALID();
 
 
-	jthread threadj=INT2JTHREAD(threadID);
-	jint    depthj=depth;
-	jint    slotj=slot;
-	jlong result;
+	PyArg_ParseTuple(args, "iii", &threadID,&depth,&slot);
 
-	jvmtiError err=(*jvmtiptr)->GetLocalLong(jvmtiptr,threadj,depthj,slotj,&result);
+	threadj=INT2JTHREAD(threadID);
+	depthj=depth;
+	slotj=slot;
+	
+	err=(*jvmtiptr)->GetLocalLong(jvmtiptr,threadj,depthj,slotj,&result);
 
 	CHECK_OK("GetLocalLong");
 
@@ -1168,23 +1297,26 @@
 static PyObject *
 jvmti_getBytecodes(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 			int methodID=0;
 			jint size=0;
+			jmethodID method;
 			unsigned char* bytes=NULL;
+			jvmtiError err;
+			PyObject *value=NULL;
+
+			TRACE_ENTER();
+			CHECK_VALID();
 
 			PyArg_ParseTuple(args, "i", &methodID);
 
-			jmethodID method=INT2JMETHOD(methodID);
+			method=INT2JMETHOD(methodID);
 
-			jvmtiError err=(*jvmtiptr)->GetBytecodes(jvmtiptr,method,&size,&bytes);
+			err=(*jvmtiptr)->GetBytecodes(jvmtiptr,method,&size,&bytes);
 
 			CHECK_OK("Getbytecodes");
-
-
-			PyObject *value= Py_BuildValue("s",bytes);
+			
+			value= Py_BuildValue("s",bytes);
 
 			DEALLOC(bytes);
 
@@ -1200,25 +1332,28 @@
 static PyObject *
 jvmti_getMethodName(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-
-
-	CHECK_VALID();
 
 		int methodID=0;
-
-		PyArg_ParseTuple(args, "i", &methodID);
-
-		jmethodID method=INT2JMETHOD(methodID);
 		char  *name=NULL;
 		char  *sig=NULL;
 		char  *generic=NULL;
+		jmethodID method;
+		jvmtiError err;
+		PyObject *value=NULL;
+
 
-		jvmtiError err=(*jvmtiptr)->GetMethodName(jvmtiptr,method,&name,&sig,&generic);
+		TRACE_ENTER();
+		CHECK_VALID();
+
+		PyArg_ParseTuple(args, "i", &methodID);
+
+		method=INT2JMETHOD(methodID);
+	
+		err=(*jvmtiptr)->GetMethodName(jvmtiptr,method,&name,&sig,&generic);
 
 		CHECK_OK("GetMethodName");
 
-		PyObject *value= Py_BuildValue("sss", name,sig,generic);
+		value= Py_BuildValue("sss", name,sig,generic);
 		DEALLOC(name);
 		DEALLOC(sig);
 		DEALLOC(generic);
@@ -1234,26 +1369,26 @@
 static PyObject *
 jvmti_getClassSignature(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-
-
-	CHECK_VALID();
 
 		int classID=0;
+		jclass class;
+		char  *sig=NULL;
+		char  *generic=NULL;
+		PyObject *value=NULL;
+		jvmtiError err;
 
-		PyArg_ParseTuple(args, "i", &classID);
-
-		jclass class=INT2JCLASS(classID);
+		TRACE_ENTER();
+		CHECK_VALID();
 
+		PyArg_ParseTuple(args, "i", &classID);
 
-		char  *sig=NULL;
-		char  *generic=NULL;
+		class=INT2JCLASS(classID);
 
-		jvmtiError err=(*jvmtiptr)->GetClassSignature(jvmtiptr,class,&sig,&generic);
+		err=(*jvmtiptr)->GetClassSignature(jvmtiptr,class,&sig,&generic);
 
 		CHECK_OK("GetClassSignature");
 
-		PyObject *value= Py_BuildValue("ss",sig,generic);
+		value= Py_BuildValue("ss",sig,generic);
 
 		DEALLOC(sig);
 		DEALLOC(generic);
@@ -1266,19 +1401,23 @@
 static PyObject *
 jvmti_getFieldModifiers(PyObject *self, PyObject *args)
 {
-	TRACE_ENTER();
-	CHECK_VALID();
 	int class=0;
     int field=0;
+	jint result=0;
+	jclass   classid;
+	jfieldID fieldid;
+	jvmtiError err;
 
+	TRACE_ENTER();
+	CHECK_VALID();
+	
 	PyArg_ParseTuple(args, "ii", &class,&field);
 
-	jclass   classid=INT2JCLASS(class);
-	jfieldID fieldid=(jfieldID)field;
+	classid=INT2JCLASS(class);
+	fieldid=(jfieldID)field;
 
-	jint result=0;
-
-	jvmtiError err=(*jvmtiptr)->GetFieldModifiers(jvmtiptr,classid,fieldid,&result);
+	
+	err=(*jvmtiptr)->GetFieldModifiers(jvmtiptr,classid,fieldid,&result);
 	CHECK_OK(DESC);
 
    	return Py_BuildValue("i", result);
@@ -1295,26 +1434,31 @@
 {
 
 
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 		int classID=0;
 		int fieldID=0;
-
-		PyArg_ParseTuple(args, "ii", &classID,&fieldID);
-
-		jclass   class=INT2JCLASS(classID);
-		jfieldID field=(jfieldID)fieldID;
-
 		char  *name=NULL;
 		char  *sig=NULL;
 		char  *generic=NULL;
+		jclass   class;
+		jfieldID field;
+		jvmtiError err;
+		PyObject *value=NULL;
 
-		jvmtiError err=(*jvmtiptr)->GetFieldName(jvmtiptr,class,field,&name,&sig,&generic);
+		TRACE_ENTER();
+		CHECK_VALID();
+
+		PyArg_ParseTuple(args, "ii", &classID,&fieldID);
+
+		class=INT2JCLASS(classID);
+		field=(jfieldID)fieldID;
+
+	
+		err=(*jvmtiptr)->GetFieldName(jvmtiptr,class,field,&name,&sig,&generic);
 
 		CHECK_OK("GetFieldName");
 
-		PyObject *value= Py_BuildValue("sss",name,sig,generic);
+		value= Py_BuildValue("sss",name,sig,generic);
 
 		DEALLOC(name);
 		DEALLOC(sig);
@@ -1332,19 +1476,23 @@
 {
 
 
-	TRACE_ENTER();
-	CHECK_VALID();
-
+	
 		int methodID=0;
-
-		PyArg_ParseTuple(args, "i", &methodID);
-
-		jmethodID method=INT2JMETHOD(methodID);
 		jint countj=0;
-
 		jvmtiLocalVariableEntry *entries=NULL;
+		jvmtiError err;
+		jmethodID method;
+		int count=countj;
+		int i=0;
+		PyObject* list= NULL;
+		TRACE_ENTER();
+		CHECK_VALID();
+
+		PyArg_ParseTuple(args, "i", &methodID);
 
-		jvmtiError err=(*jvmtiptr)->GetLocalVariableTable(jvmtiptr,method,&countj,&entries);
+		method=INT2JMETHOD(methodID);
+	
+		err=(*jvmtiptr)->GetLocalVariableTable(jvmtiptr,method,&countj,&entries);
 
 		/*
 		if(err==JVMTI_ERROR_NATIVE_METHOD) {
@@ -1357,10 +1505,8 @@
 		CHECK_OK("GetLocalVariableTable");
 
 		// turn table into python data...
-		int count=countj;
-		PyObject* list= PyList_New(count);
-
-		int i=0;
+		list= PyList_New(count);
+		
 		for(i=0;i<count;i++) {
 			jlocation startj=entries[i].start_location;
 			long start=startj;
@@ -1390,79 +1536,84 @@
  * Returns the size of the object
  */
 static PyObject *  jvmti_getObjectSize(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 		getValue(GetObjectSize,jobject,jlong,"i","Get Object Size")
 }
 static PyObject *  jvmti_getClassLoaderClasses(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getList(GetClassLoaderClasses,jclass,"Get ClassLoader classes")
 }
 static PyObject *  jvmti_getSourceFileName(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getStringValue(GetSourceFileName,"Get Source File Name")
 }
 static PyObject *  jvmti_getClassStatus(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getValue(GetClassStatus,jobject,jint,"i","Get Class Status")
 }
 static PyObject *  jvmti_getClassModifiers(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getValue(GetClassModifiers,jobject,jint,"i","Get Class Modifiers")
 }
 static PyObject *  jvmti_getClassMethods(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getList(GetClassMethods,jmethodID,"Get Class Methods")
 }
 static PyObject *  jvmti_getClassFields(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getList(GetClassFields,jfieldID,"Get Class Fields")
 }
 
 static PyObject *  jvmti_getClassLoader(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getValue(GetClassLoader,jobject,jclass,"i","Get Class Loader")
 }
 
 static PyObject *  jvmti_getMethodModifiers(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 		getValue(GetMethodModifiers,jmethodID,jint,"i","Get Method Modifiers")
 }
 
 static PyObject *  jvmti_getMaxLocals(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 		getValue(GetMaxLocals,jmethodID,jint,"i","Get Max Locals")
 }
 
 static PyObject *  jvmti_getArgumentsSize(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 		getValue(GetArgumentsSize,jmethodID,jint,"i","Get Arguments Size")
 }
 
 static PyObject *  jvmti_isMethodNative(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 		getValue(IsMethodNative,jmethodID,jboolean,"i","Is method native")
 }
 static PyObject *  jvmti_getImplementedInterfaces(PyObject *self, PyObject *args) {
-	TRACE_ENTER();
+
 	getList(GetImplementedInterfaces,jclass,"Get Implemented Interfaces")
 }
 
 static PyObject *  jvmti_iterateOverInstancesOfClass(PyObject *self, PyObject *args) {
 
-	TRACE_ENTER();
-	CHECK_VALID();
 			// get required class
 			int classID=0;
+			jclass classj;
+			PyObject* list=NULL;
+			jvmtiError err;
+			jvmtiHeapObjectCallback callback;
+
+			TRACE_ENTER();
+			CHECK_VALID();
 
 			PyArg_ParseTuple(args, "i", &classID);
 
-			jclass classj=INT2JCLASS(classID);
+			classj=INT2JCLASS(classID);
 
-			PyObject* list= PyList_New(100);
+			list= PyList_New(100);
 
-			jvmtiHeapObjectCallback callback=&myjvmtiHeapObjectCallback;
+			callback=&myjvmtiHeapObjectCallback;
 
-			jvmtiError err=(*jvmtiptr)->IterateOverInstancesOfClass(jvmtiptr,classj,
+			err=(*jvmtiptr)->IterateOverInstancesOfClass(jvmtiptr,classj,
 					JVMTI_HEAP_OBJECT_EITHER, callback,(void*)list);
 
 			CHECK_OK("iterate over instances of class");
@@ -1560,10 +1711,11 @@
 PyMODINIT_FUNC
 initjvmti(void)
 {
-	TRACE_ENTER();
+	
 
-    PyObject *m;
+    PyObject *m=NULL;
 
+	TRACE_ENTER();
     m = Py_InitModule("jvmti", JvmtiMethods);
       if (m == NULL)
           return;
@@ -1611,11 +1763,13 @@
 
 
 void runScript(char *script) {
-	TRACE_ENTER();
+	
+		FILE* fd=NULL;
+
 		printf("\nrunning script %s\n",script);
 
 		 // Python code in separate environments
-		 FILE* fd = fopen(script, "r");
+		 fd = fopen(script, "r");
 		 PyRun_SimpleFile(fd, script);
 
 		 fclose(fd);
@@ -1637,7 +1791,7 @@
 	startPython();
 }
 void startPython() {
-	TRACE_ENTER();
+	
 	char *names[]={scriptname,scriptname};
 
 		 exec_interactive_interpreter(1,names);
@@ -1647,10 +1801,12 @@
 static void JNICALL
 dataDumpRequest(jvmtiEnv *jvmti)
 {
-	TRACE_ENTER();
+	
+	jint rc;
+	
 	jvmtiptr=jvmti;
 
-	 jint rc = (*vmptr)->GetEnv(vmptr, (void **)&jniptr, JNI_VERSION_1_6);
+	 rc = (*vmptr)->GetEnv(vmptr, (void **)&jniptr, JNI_VERSION_1_6);
 
 		  	if (rc != JNI_OK) {
 		  		report("unable to load jni environment");
@@ -1666,6 +1822,11 @@
 JNIEXPORT jint JNICALL
 Agent_OnLoad(JavaVM *vm, char *options, void *reserved)
 {
+	jint rc;
+	jvmtiError  err;
+	jvmtiCapabilities caps;
+	jvmtiEventCallbacks callbacks;
+
 	TRACE_ENTER();
 	report(" jvmti is active");
 
@@ -1673,7 +1834,7 @@
 
 
 
-	 jint rc = (*vm)->GetEnv(vm, (void **)&jvmtiptr, JVMTI_VERSION);
+	 rc = (*vm)->GetEnv(vm, (void **)&jvmtiptr, JVMTI_VERSION);
 
 	  	if (rc != JNI_OK) {
 	  		report("unable to load jvm environment");
@@ -1692,14 +1853,12 @@
 
 		if(options!=NULL) runScript(options);
 
-	    jvmtiEventCallbacks callbacks;
-
 	    memset(&callbacks, 0, sizeof(callbacks));
 	    callbacks.DataDumpRequest = &dataDumpRequest;
 	    callbacks.Exception = &myjvmtiEventException;
 		callbacks.VMInit = &myVMInit;
 
-	    jvmtiError       err = (*jvmtiptr)->SetEventCallbacks(jvmtiptr, &callbacks, sizeof(callbacks));
+	    err = (*jvmtiptr)->SetEventCallbacks(jvmtiptr, &callbacks, sizeof(callbacks));
 
 	    err = (*jvmtiptr)->SetEventNotificationMode(jvmtiptr, JVMTI_ENABLE,
 	    		 JVMTI_EVENT_DATA_DUMP_REQUEST,
@@ -1719,7 +1878,7 @@
 
 	    // turn on required capabilities
 
-	     jvmtiCapabilities caps;
+	    
 	     memset(&caps, 0, sizeof(jvmtiCapabilities));
 
 	     caps.can_get_owned_monitor_info=1;

Modified: incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.h
URL: http://svn.apache.org/viewvc/incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.h?rev=787172&r1=787171&r2=787172&view=diff
==============================================================================
--- incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.h (original)
+++ incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti.h Mon Jun 22 09:03:25 2009
@@ -18,6 +18,9 @@
 
 #include "pyjvmti_convert.h"
 
+
+char * initlibpyjvmti=NULL;
+
 #define CHECK_VALID()   \
 	if(jvmtiptr==NULL) {  \
 			 PyErr_SetString(PYJVMTIError, "jvmti environment  pointer not present");  \

Modified: incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti_convert.h
URL: http://svn.apache.org/viewvc/incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti_convert.h?rev=787172&r1=787171&r2=787172&view=diff
==============================================================================
--- incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti_convert.h (original)
+++ incubator/kato/branches/experimental/maven_restructure/org.apache.kato.native/kato.native.pyjvmti/src/pyjvmti_convert.h Mon Jun 22 09:03:25 2009
@@ -33,6 +33,9 @@
 #define JCLASS2INT(t)   (int)t
 #define INT2JCLASS(i)   (jclass)i
 
+#define JFIELD2INT(t)   (int)t
+#define INT2JFIELD(i)   (jfieldID)i
+
 #define JARRAY2INT(t)   (int)t
 #define INT2JARRAY(i)   (jarray)i