PatchSet 4475 
Date: 2004/02/29 18:42:44
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Moved handling of uninitialized types into own module

2004-02-29  Dalibor Topic <[EMAIL PROTECTED]>

        * kaffe/kaffevm/verify-uninit.c,
        kaffe/kaffevm/verify-uninit.h:
        New files.

        * kaffe/kaffevm/Makefile.am:
        (libkaffevm_la_SOURCES): Added verify-uninit.c.
        (noinst_HEADERS): Added verify-uninit.h.

        * kaffe/kaffevm/Makefile.in:
        Regenerated.

        * kaffe/kaffevm/verify.c,
        * kaffe/kaffevm/verify.h:
        (checkUninit, pushUninit, popUninit, freeUninits):
        Moved to kaffe/kaffevm/verify-uninit.c.
        (sameType): Export symbol.

Members: 
        ChangeLog:1.2055->1.2056 
        kaffe/kaffevm/Makefile.am:1.50->1.51 
        kaffe/kaffevm/Makefile.in:1.133->1.134 
        kaffe/kaffevm/verify-uninit.c:INITIAL->1.1 
        kaffe/kaffevm/verify-uninit.h:INITIAL->1.1 
        kaffe/kaffevm/verify.c:1.67->1.68 
        kaffe/kaffevm/verify.h:1.7->1.8 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2055 kaffe/ChangeLog:1.2056
--- kaffe/ChangeLog:1.2055      Sun Feb 29 16:02:59 2004
+++ kaffe/ChangeLog     Sun Feb 29 18:42:44 2004
@@ -1,5 +1,24 @@
 2004-02-29  Dalibor Topic <[EMAIL PROTECTED]>
 
+        * kaffe/kaffevm/verify-uninit.c,
+        kaffe/kaffevm/verify-uninit.h:
+       New files.
+
+        * kaffe/kaffevm/Makefile.am:
+        (libkaffevm_la_SOURCES): Added verify-uninit.c.
+        (noinst_HEADERS): Added verify-uninit.h.
+
+        * kaffe/kaffevm/Makefile.in:
+       Regenerated.
+
+        * kaffe/kaffevm/verify.c,
+        * kaffe/kaffevm/verify.h:
+       (checkUninit, pushUninit, popUninit, freeUninits):
+       Moved to kaffe/kaffevm/verify-uninit.c.
+       (sameType): Export symbol.
+
+2004-02-29  Dalibor Topic <[EMAIL PROTECTED]>
+
        * kaffe/kaffevm/verify.c:
        Use gc_free instead of KFREE.
 
Index: kaffe/kaffe/kaffevm/Makefile.am
diff -u kaffe/kaffe/kaffevm/Makefile.am:1.50 kaffe/kaffe/kaffevm/Makefile.am:1.51
--- kaffe/kaffe/kaffevm/Makefile.am:1.50        Sat Feb 28 18:44:27 2004
+++ kaffe/kaffe/kaffevm/Makefile.am     Sun Feb 29 18:42:46 2004
@@ -93,7 +93,8 @@
        gcFuncs.c \
        gcRefs.c \
        verify.c \
-       verify-debug.c
+       verify-debug.c \
+       verify-uninit.c
 
 noinst_HEADERS = \
        access.h \
@@ -136,7 +137,8 @@
        threadData.h \
        utf8const.h \
        verify.h \
-       verify-debug.h
+       verify-debug.h \
+       verify-uninit.h
 
 gc-mem.c: stamp-h01
        @if test ! -f $@; then rm -f stamp-h01; $(MAKE) stamp-h01; \
Index: kaffe/kaffe/kaffevm/Makefile.in
diff -u kaffe/kaffe/kaffevm/Makefile.in:1.133 kaffe/kaffe/kaffevm/Makefile.in:1.134
--- kaffe/kaffe/kaffevm/Makefile.in:1.133       Sat Feb 28 18:44:27 2004
+++ kaffe/kaffe/kaffevm/Makefile.in     Sun Feb 29 18:42:46 2004
@@ -80,7 +80,7 @@
        locks.lo lookup.lo object.lo readClass.lo sha-1.lo soft.lo \
        stackTrace.lo stats.lo string.lo stringParsing.lo support.lo \
        thread.lo utf8const.lo gcFuncs.lo gcRefs.lo verify.lo \
-       verify-debug.lo
+       verify-debug.lo verify-uninit.lo
 am__objects_1 = gc-mem.lo md.lo
 nodist_libkaffevm_la_OBJECTS = $(am__objects_1)
 libkaffevm_la_OBJECTS = $(am_libkaffevm_la_OBJECTS) \
@@ -110,6 +110,7 @@
 @AMDEP_TRUE@   ./$(DEPDIR)/support.Plo ./$(DEPDIR)/thread.Plo \
 @AMDEP_TRUE@   ./$(DEPDIR)/utf8const.Plo \
 @AMDEP_TRUE@   ./$(DEPDIR)/verify-debug.Plo \
[EMAIL PROTECTED]@      ./$(DEPDIR)/verify-uninit.Plo \
 @AMDEP_TRUE@   ./$(DEPDIR)/verify.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -435,7 +436,8 @@
        gcFuncs.c \
        gcRefs.c \
        verify.c \
-       verify-debug.c
+       verify-debug.c \
+       verify-uninit.c
 
 noinst_HEADERS = \
        access.h \
@@ -478,7 +480,8 @@
        threadData.h \
        utf8const.h \
        verify.h \
-       verify-debug.h
+       verify-debug.h \
+       verify-uninit.h
 
 CLEANFILES = so_locations
 DISTCLEANFILES = gc-mem.c md.c stamp-h01 stamp-h02
@@ -588,6 +591,7 @@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
[EMAIL PROTECTED]@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 
 .c.o:
===================================================================
Checking out kaffe/kaffe/kaffevm/verify-uninit.c
RCS:  /home/cvs/kaffe/kaffe/kaffe/kaffevm/verify-uninit.c,v
VERS: 1.1
***************
--- /dev/null   Sun Aug  4 19:57:58 2002
+++ kaffe/kaffe/kaffevm/verify-uninit.c Sun Feb 29 18:45:03 2004
@@ -0,0 +1,112 @@
+/*
+ * verify-uninit.c
+ *
+ * Copyright 2004
+ *   Kaffe.org contributors. See ChangeLog for details. All rights reserved.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file.
+ *
+ * Code for handing of uninitialized type in the verifier.
+ */
+
+#include "verify-uninit.h"
+
+/*
+ * checkUninit()
+ *     To be called when dealing with (get/put)field access.  Makes sure that 
get/putfield and
+ *     invoke* instructions have access to the instance fields of the object in 
question.
+ */
+bool
+checkUninit(Hjava_lang_Class* this, Type* type)
+{
+       if (type->tinfo & TINFO_UNINIT) {
+               if (type->tinfo & TINFO_UNINIT_SUPER) {
+                       UninitializedType* uninit = type->data.uninit;
+                       Type t;
+                       t.tinfo = TINFO_CLASS;
+                       t.data.class = this;
+                       
+                       if (!sameType(&uninit->type, &t)) {
+                               return false;
+                       }
+               }
+               else {
+                       return false;
+               }
+       }
+       
+       return true;
+}
+
+/*
+ * pushUninit()
+ *    Adds an unitialized type to the list of uninitialized types.
+ *
+ *    uninits is the front of the list to be added onto.
+ */
+UninitializedType*
+pushUninit(UninitializedType* uninits, const Type* type)
+{
+       UninitializedType* uninit = checkPtr(gc_malloc(sizeof(UninitializedType), 
GC_ALLOC_VERIFIER));
+       uninit->type = *type;
+       uninit->prev = NULL;
+       
+       if (!uninits) {
+               uninit->next = NULL;
+               return uninit;
+       }
+       
+       uninit->prev = NULL;
+       uninit->next = uninits;
+       uninits->prev = uninit;
+       return uninit;
+}
+
+/*
+ * popUninit()
+ *     Pops an uninitialized type off of the operand stack
+ */
+void
+popUninit(const Method* method, UninitializedType* uninit, BlockInfo* binfo)
+{
+       uint32 n;
+       
+       for (n = 0; n < method->localsz; n++) {
+               if (binfo->locals[n].tinfo & TINFO_UNINIT &&
+                   ((UninitializedType*)binfo->locals[n].data.class) == uninit) {
+                       binfo->locals[n] = uninit->type;
+               }
+       }
+       
+       for (n = 0; n < binfo->stacksz; n++) {
+               if (binfo->opstack[n].tinfo & TINFO_UNINIT &&
+                   ((UninitializedType*)binfo->opstack[n].data.class) == uninit) {
+                       binfo->opstack[n] = uninit->type;
+               }
+       }
+       
+       if (uninit->prev) {
+               uninit->prev->next = uninit->next;
+       }
+       if (uninit->next) {
+               uninit->next->prev = uninit->prev;
+       }
+       
+       gc_free(uninit);
+}
+
+/*
+ * freeUninits
+ *    frees a list of unitialized types
+ */
+void
+freeUninits(UninitializedType* uninits)
+{
+       UninitializedType* tmp;
+       while (uninits) {
+               tmp = uninits->next;
+               gc_free(uninits);
+               uninits = tmp;
+       }
+}
===================================================================
Checking out kaffe/kaffe/kaffevm/verify-uninit.h
RCS:  /home/cvs/kaffe/kaffe/kaffe/kaffevm/verify-uninit.h,v
VERS: 1.1
***************
--- /dev/null   Sun Aug  4 19:57:58 2002
+++ kaffe/kaffe/kaffevm/verify-uninit.h Sun Feb 29 18:45:04 2004
@@ -0,0 +1,41 @@
+/*
+ * verify-uninit.c
+ *
+ * Copyright 2004
+ *   Kaffe.org contributors. See ChangeLog for details. All rights reserved.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file.
+ *
+ * Interface to the code for handing of uninitialized type in the verifier.
+ */
+
+#include "verify.h"
+
+/*
+ * checkUninit()
+ *     To be called when dealing with (get/put)field access.  Makes sure that 
get/putfield and
+ *     invoke* instructions have access to the instance fields of the object in 
question.
+ */
+extern bool checkUninit(Hjava_lang_Class* this, Type* type);
+
+/*
+ * pushUninit()
+ *    Adds an unitialized type to the list of uninitialized types.
+ *
+ *    uninits is the front of the list to be added onto.
+ */
+extern UninitializedType* pushUninit(UninitializedType* uninits, const Type* type);
+
+/*
+ * popUninit()
+ *     Pops an uninitialized type off of the operand stack
+ */
+extern void popUninit(const Method* method, UninitializedType* uninit, BlockInfo* 
binfo);
+
+/*
+ * freeUninits
+ *    frees a list of unitialized types
+ */
+
+extern void freeUninits(UninitializedType* uninits);
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.67 kaffe/kaffe/kaffevm/verify.c:1.68
--- kaffe/kaffe/kaffevm/verify.c:1.67   Sun Feb 29 16:03:02 2004
+++ kaffe/kaffe/kaffevm/verify.c        Sun Feb 29 18:42:46 2004
@@ -36,6 +36,7 @@
 
 #include "verify.h"
 #include "verify-debug.h"
+#include "verify-uninit.h"
 
 /*
  * Returns whether the given class is "trusted" (i.e. does not require verification).
@@ -1026,12 +1027,6 @@
 static SigStack*          pushSig(SigStack* sigs, const char* sig);
 static void               freeSigStack(SigStack* sigs);
 
-static bool               checkUninit(Hjava_lang_Class* this, Type* type);
-static UninitializedType* pushUninit(UninitializedType* uninits, const Type* type);
-static void               popUninit(const Method*, UninitializedType*, BlockInfo*);
-static void               freeUninits(UninitializedType* uninits);
-
-
 static bool               verifyMethod(errorInfo* einfo, Method* method);
 static BlockInfo**        verifyMethod3a(errorInfo* einfo,
                                         Method* method,
@@ -1058,7 +1053,6 @@
 
 static bool               isReference(const Type* type);
 static bool               isArray(const Type* type);
-static bool               sameType(Type* t1, Type* t2);
 static bool               sameRefType(Type* t1, Type* t2);
 static void               resolveType(errorInfo* einfo, Hjava_lang_Class* this, Type 
*type);
 
@@ -4732,7 +4726,6 @@
  * sameType()
  *     returns whether two Types are effectively equivalent.
  */
-static
 bool
 sameType(Type* t1, Type* t2)
 {
@@ -5055,105 +5048,3 @@
 }
 
 
-/*
- * checkUninit()
- *     To be called when dealing with (get/put)field access.  Makes sure that 
get/putfield and
- *     invoke* instructions have access to the instance fields of the object in 
question.
- */
-static
-bool
-checkUninit(Hjava_lang_Class* this, Type* type)
-{
-       if (type->tinfo & TINFO_UNINIT) {
-               if (type->tinfo & TINFO_UNINIT_SUPER) {
-                       UninitializedType* uninit = type->data.uninit;
-                       Type t;
-                       t.tinfo = TINFO_CLASS;
-                       t.data.class = this;
-                       
-                       if (!sameType(&uninit->type, &t)) {
-                               return false;
-                       }
-               }
-               else {
-                       return false;
-               }
-       }
-       
-       return true;
-}
-
-/*
- * pushUninit()
- *    Adds an unitialized type to the list of uninitialized types.
- *
- *    uninits is the front of the list to be added onto.
- */
-static
-UninitializedType*
-pushUninit(UninitializedType* uninits, const Type* type)
-{
-       UninitializedType* uninit = checkPtr(gc_malloc(sizeof(UninitializedType), 
GC_ALLOC_VERIFIER));
-       uninit->type = *type;
-       uninit->prev = NULL;
-       
-       if (!uninits) {
-               uninit->next = NULL;
-               return uninit;
-       }
-       
-       uninit->prev = NULL;
-       uninit->next = uninits;
-       uninits->prev = uninit;
-       return uninit;
-}
-
-/*
- * popUninit()
- *     Pops an uninitialized type off of the operand stack
- */
-static
-void
-popUninit(const Method* method, UninitializedType* uninit, BlockInfo* binfo)
-{
-       uint32 n;
-       
-       for (n = 0; n < method->localsz; n++) {
-               if (binfo->locals[n].tinfo & TINFO_UNINIT &&
-                   ((UninitializedType*)binfo->locals[n].data.class) == uninit) {
-                       binfo->locals[n] = uninit->type;
-               }
-       }
-       
-       for (n = 0; n < binfo->stacksz; n++) {
-               if (binfo->opstack[n].tinfo & TINFO_UNINIT &&
-                   ((UninitializedType*)binfo->opstack[n].data.class) == uninit) {
-                       binfo->opstack[n] = uninit->type;
-               }
-       }
-       
-       if (uninit->prev) {
-               uninit->prev->next = uninit->next;
-       }
-       if (uninit->next) {
-               uninit->next->prev = uninit->prev;
-       }
-       
-       gc_free(uninit);
-}
-
-/*
- * freeUninits
- *    frees a list of unitialized types
- */
-static
-void
-freeUninits(UninitializedType* uninits)
-{
-       UninitializedType* tmp;
-       while (uninits) {
-               tmp = uninits->next;
-               gc_free(uninits);
-               uninits = tmp;
-       }
-}
Index: kaffe/kaffe/kaffevm/verify.h
diff -u kaffe/kaffe/kaffevm/verify.h:1.7 kaffe/kaffe/kaffevm/verify.h:1.8
--- kaffe/kaffe/kaffevm/verify.h:1.7    Sat Feb 28 18:44:28 2004
+++ kaffe/kaffe/kaffevm/verify.h        Sun Feb 29 18:42:46 2004
@@ -152,6 +152,7 @@
 
 
 void initVerifierPrimTypes(void);
+bool sameType(Type* t1, Type* t2);
 bool verify3(Hjava_lang_Class* class, errorInfo *einfo);
 
 /*

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to