PatchSet 7215 
Date: 2006/04/06 01:39:06
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
small cleanup of newArrayChecked

2006-04-06  Dalibor Topic  <[EMAIL PROTECTED]>

* kaffe/kaffevm/object.c (newArrayChecked): Added assert to check
that count is >= 0. Simplified a bit, and added casts to fix
compiler warnings.

* include/Arrays.h: Explicitely name structs in typedefs.

* kaffe/kaffevm/jit3/machine.h,
kaffe/kaffevm/jit/machine.h,
kaffe/kaffevm/intrp/machine.h: Include Arrays.h.

* kaffe/kaffevm/object.h (OBJECT_DTABLE_OFFSET)
(ARRAY_SIZE_OFFSET, ARRAY_DATA_OFFSET): Use offsetof instead of
wild casts.

Members: 
        ChangeLog:1.4721->1.4722 
        include/Arrays.h:1.6->1.7 
        kaffe/kaffevm/object.c:1.37->1.38 
        kaffe/kaffevm/object.h:1.8->1.9 
        kaffe/kaffevm/intrp/machine.h:1.13->1.14 
        kaffe/kaffevm/jit/machine.h:1.26->1.27 
        kaffe/kaffevm/jit3/machine.h:1.29->1.30 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4721 kaffe/ChangeLog:1.4722
--- kaffe/ChangeLog:1.4721      Wed Apr  5 23:00:14 2006
+++ kaffe/ChangeLog     Thu Apr  6 01:39:06 2006
@@ -1,3 +1,19 @@
+2006-04-06  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/object.c (newArrayChecked): Added assert to check
+       that count is >= 0. Simplified a bit, and added casts to fix
+       compiler warnings.
+
+       * include/Arrays.h: Explicitely name structs in typedefs.
+
+       * kaffe/kaffevm/jit3/machine.h, 
+       kaffe/kaffevm/jit/machine.h,
+       kaffe/kaffevm/intrp/machine.h: Include Arrays.h.
+
+       * kaffe/kaffevm/object.h (OBJECT_DTABLE_OFFSET) 
+       (ARRAY_SIZE_OFFSET, ARRAY_DATA_OFFSET): Use offsetof instead of
+       wild casts.
+
 2006-04-05  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * libraries/clib/zip/CRC32.c: Use zlib implementation. Added
Index: kaffe/include/Arrays.h
diff -u kaffe/include/Arrays.h:1.6 kaffe/include/Arrays.h:1.7
--- kaffe/include/Arrays.h:1.6  Sun Sep 25 02:46:52 2005
+++ kaffe/include/Arrays.h      Thu Apr  6 01:39:09 2006
@@ -15,16 +15,16 @@
 /*
  * Define various array types
  */
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jboolean body[1]; } data[1]; } HArrayOfBoolean;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jbyte body[1]; } data[1]; } HArrayOfByte;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jchar body[1]; } data[1]; } HArrayOfChar;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jdouble body[1]; } data[1]; } HArrayOfDouble;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jfloat body[1]; } data[1]; } HArrayOfFloat;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jint body[1]; } data[1]; } HArrayOfInt;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jshort body[1]; } data[1]; } HArrayOfShort;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
jlong body[1]; } data[1]; } HArrayOfLong;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
Hjava_lang_Object* body[1]; } data[1]; } HArrayOfArray;
-typedef struct { Hjava_lang_Object base; jsize length; union { double align; 
Hjava_lang_Object* body[1]; } data[1]; } HArrayOfObject;
+typedef struct HArrayOfBoolean { Hjava_lang_Object base; jsize length; union { 
double align; jboolean body[1]; } data[1]; } HArrayOfBoolean;
+typedef struct HArrayOfByte { Hjava_lang_Object base; jsize length; union { 
double align; jbyte body[1]; } data[1]; } HArrayOfByte;
+typedef struct HArrayOfChar { Hjava_lang_Object base; jsize length; union { 
double align; jchar body[1]; } data[1]; } HArrayOfChar;
+typedef struct HArrayOfDouble { Hjava_lang_Object base; jsize length; union { 
double align; jdouble body[1]; } data[1]; } HArrayOfDouble;
+typedef struct HArrayOfFloat { Hjava_lang_Object base; jsize length; union { 
double align; jfloat body[1]; } data[1]; } HArrayOfFloat;
+typedef struct HArrayOfInt { Hjava_lang_Object base; jsize length; union { 
double align; jint body[1]; } data[1]; } HArrayOfInt;
+typedef struct HArrayOfShort { Hjava_lang_Object base; jsize length; union { 
double align; jshort body[1]; } data[1]; } HArrayOfShort;
+typedef struct HArrayOfLong { Hjava_lang_Object base; jsize length; union { 
double align; jlong body[1]; } data[1]; } HArrayOfLong;
+typedef struct HArrayOfArray { Hjava_lang_Object base; jsize length; union { 
double align; Hjava_lang_Object* body[1]; } data[1]; } HArrayOfArray;
+typedef struct HArrayOfObject { Hjava_lang_Object base; jsize length; union { 
double align; Hjava_lang_Object* body[1]; } data[1]; } HArrayOfObject;
 
 /* Get length of arrays */
 #define        obj_length(_obj)        ((_obj)->length)
Index: kaffe/kaffe/kaffevm/object.c
diff -u kaffe/kaffe/kaffevm/object.c:1.37 kaffe/kaffe/kaffevm/object.c:1.38
--- kaffe/kaffe/kaffevm/object.c:1.37   Sun Oct  2 14:20:08 2005
+++ kaffe/kaffe/kaffevm/object.c        Thu Apr  6 01:39:10 2006
@@ -15,6 +15,9 @@
 #define        ADBG(s)
 
 #include "config.h"
+
+#include <assert.h>
+
 #include "debug.h"
 #include "config-std.h"
 #include "config-mem.h"
@@ -137,12 +140,15 @@
        Hjava_lang_Class* class = NULL;
        Hjava_lang_Object* obj = NULL;
 
+       assert(count >= 0);
+
        if ((class = lookupArray(elclass, info)) != NULL) {
                size_t total_count;
+               const size_t MAX_MEM = KGC_MAX_MALLOC_TYPE - ARRAY_DATA_OFFSET;
 
                if (CLASS_IS_PRIMITIVE(elclass) || elclass == PtrClass) {
 
-                       if (((KGC_MAX_MALLOC_TYPE - ARRAY_DATA_OFFSET) / 
TYPE_SIZE(elclass)) < count)
+                       if ((MAX_MEM / TYPE_SIZE(elclass)) < (size_t) count)
                          {
                            postOutOfMemory(info);
                          }
@@ -155,7 +161,7 @@
                          }
                }
                else {
-                       if (((KGC_MAX_MALLOC_TYPE - ARRAY_DATA_OFFSET) / 
PTR_TYPE_SIZE) < count)
+                       if ((MAX_MEM / PTR_TYPE_SIZE) < (size_t) count)
                          {
                            postOutOfMemory(info);
                          }
Index: kaffe/kaffe/kaffevm/object.h
diff -u kaffe/kaffe/kaffevm/object.h:1.8 kaffe/kaffe/kaffevm/object.h:1.9
--- kaffe/kaffe/kaffevm/object.h:1.8    Sat May  7 16:20:10 2005
+++ kaffe/kaffe/kaffevm/object.h        Thu Apr  6 01:39:10 2006
@@ -30,11 +30,11 @@
 #define        OBJARRAY_DATA(ARRAY)    
((Hjava_lang_Object**)&(((HArrayOfObject*)(ARRAY))->data))
 
 /*
- * These bizzare casts provide various offset into the object structure.
+ * Offsets into the object structure.
  */
-#define        OBJECT_DTABLE_OFFSET    ((int)&(*(Hjava_lang_Object*)0).vtable)
-#define        ARRAY_SIZE_OFFSET       ((int)&ARRAY_SIZE(0))
-#define        ARRAY_DATA_OFFSET       ((int)ARRAY_DATA(0))
+#define        OBJECT_DTABLE_OFFSET    (offsetof(struct Hjava_lang_Object, 
vtable))
+#define        ARRAY_SIZE_OFFSET       (offsetof(struct HArrayOfObject, 
length))
+#define        ARRAY_DATA_OFFSET       (offsetof(struct HArrayOfObject, data))
 
 struct Hjava_lang_Class;
 struct _errorInfo;
Index: kaffe/kaffe/kaffevm/intrp/machine.h
diff -u kaffe/kaffe/kaffevm/intrp/machine.h:1.13 
kaffe/kaffe/kaffevm/intrp/machine.h:1.14
--- kaffe/kaffe/kaffevm/intrp/machine.h:1.13    Thu Mar 30 17:39:17 2006
+++ kaffe/kaffe/kaffevm/intrp/machine.h Thu Apr  6 01:39:10 2006
@@ -11,6 +11,7 @@
 #ifndef __machine_h
 #define        __machine_h
 
+#include "object.h"
 #include "threadData.h"
 
 #define current_class()                (meth->class)
Index: kaffe/kaffe/kaffevm/jit/machine.h
diff -u kaffe/kaffe/kaffevm/jit/machine.h:1.26 
kaffe/kaffe/kaffevm/jit/machine.h:1.27
--- kaffe/kaffe/kaffevm/jit/machine.h:1.26      Thu Mar 30 17:39:17 2006
+++ kaffe/kaffe/kaffevm/jit/machine.h   Thu Apr  6 01:39:10 2006
@@ -12,6 +12,7 @@
 
 #include "errors.h"
 #include "gtypes.h"
+#include "object.h"
 
 /* -------------------------------------------------------------------- */
 
Index: kaffe/kaffe/kaffevm/jit3/machine.h
diff -u kaffe/kaffe/kaffevm/jit3/machine.h:1.29 
kaffe/kaffe/kaffevm/jit3/machine.h:1.30
--- kaffe/kaffe/kaffevm/jit3/machine.h:1.29     Thu Mar 30 17:39:17 2006
+++ kaffe/kaffe/kaffevm/jit3/machine.h  Thu Apr  6 01:39:11 2006
@@ -14,6 +14,7 @@
 #define __machine_h
 
 #include "gtypes.h"
+#include "object.h"
 
 /* -------------------------------------------------------------------- */
 

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

Reply via email to