guile-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

guile/guile-core NEWS RELEASE libguile/ChangeLo...


From: Dirk Herrmann
Subject: guile/guile-core NEWS RELEASE libguile/ChangeLo...
Date: Thu, 23 Nov 2000 07:26:25 -0800

CVSROOT:        /cvs
Module name:    guile
Changes by:     Dirk Herrmann <address@hidden>  00/11/23 07:26:24

Modified files:
        guile-core     : NEWS RELEASE 
        guile-core/libguile: ChangeLog symbols.h unif.c unif.h 

Log message:
        * Deprecated SCM_LENGTH_MAX.

CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/NEWS.diff?r1=1.219&r2=1.220
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/RELEASE.diff?r1=1.78&r2=1.79
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/ChangeLog.diff?r1=1.1174&r2=1.1175
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/symbols.h.diff?r1=1.43&r2=1.44
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/unif.c.diff?r1=1.94&r2=1.95
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/unif.h.diff?r1=1.31&r2=1.32

Patches:
Index: guile/guile-core/NEWS
diff -u guile/guile-core/NEWS:1.219 guile/guile-core/NEWS:1.220
--- guile/guile-core/NEWS:1.219 Thu Nov 23 05:54:48 2000
+++ guile/guile-core/NEWS       Thu Nov 23 07:26:24 2000
@@ -237,6 +237,10 @@
 may change.  Further, scm_gc_heap_lock is not set throughout gc, thus the use
 of this variable is (and has been) not fully safe anyway.
 
+** New macros:  SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH
+
+Use these instead of SCM_LENGTH_MAX.
+
 ** New macros:  SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH, 
 SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH,
 SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
@@ -276,7 +280,7 @@
 SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH,
 SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR,
 SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS,
-SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS
+SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
@@ -294,6 +298,7 @@
 Use SCM_STRING_UCHARS instead of SCM_ROUCHARS.
 Use a type specific setter macro instead of SCM_SETLENGTH.
 Use a type specific setter macro instead of SCM_SETCHARS.
+Use a type specific length macro instead of SCM_LENGTH_MAX.
 
 ** Removed function:  scm_struct_init
 
Index: guile/guile-core/RELEASE
diff -u guile/guile-core/RELEASE:1.78 guile/guile-core/RELEASE:1.79
--- guile/guile-core/RELEASE:1.78       Thu Nov 23 05:54:48 2000
+++ guile/guile-core/RELEASE    Thu Nov 23 07:26:24 2000
@@ -50,7 +50,7 @@
   SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH,
   SCM_LENGTH, SCM_HUGE_LENGTH, SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET,
   SCM_COERCE_SUBSTR, SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING,
-  SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS
+  SCM_ROCHARS, SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX
 - remove scm_vector_set_length_x
 - remove function scm_call_catching_errors
   (replaced by catch functions from throw.[ch])
Index: guile/guile-core/libguile/ChangeLog
diff -u guile/guile-core/libguile/ChangeLog:1.1174 
guile/guile-core/libguile/ChangeLog:1.1175
--- guile/guile-core/libguile/ChangeLog:1.1174  Thu Nov 23 05:54:48 2000
+++ guile/guile-core/libguile/ChangeLog Thu Nov 23 07:26:24 2000
@@ -1,4 +1,19 @@
-2000-11-22  Dirk Herrmann  <address@hidden>
+2000-11-23  Dirk Herrmann  <address@hidden>
+
+       * symbols.h (SCM_LENGTH_MAX):  Deprecated.
+
+       * unif.c (scm_make_uve):  Use SCM_BITVECTOR_MAX_LENGTH and
+       SCM_UVECTOR_MAX_LENGTH instead of SCM_LENGTH_MAX.  Postpone length
+       checks for strings and vectors to their constructors.  Eliminate
+       redundant SCM_IMP test.
+
+       (scm_dimensions_to_uniform_array):  Postpone length checks to
+       scm_make_uve.
+
+       * unif.h (SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH):
+       Added.
+
+2000-11-23  Dirk Herrmann  <address@hidden>
 
        * gh_data.c (makvect), numbers.c (scm_mkbig, scm_adjbig),
        strings.c (scm_makstr, scm_take_str), symbols.c
Index: guile/guile-core/libguile/symbols.h
diff -u guile/guile-core/libguile/symbols.h:1.43 
guile/guile-core/libguile/symbols.h:1.44
--- guile/guile-core/libguile/symbols.h:1.43    Thu Nov 23 05:54:49 2000
+++ guile/guile-core/libguile/symbols.h Thu Nov 23 07:26:24 2000
@@ -63,8 +63,6 @@
 #define SCM_SYMBOL_LENGTH(x)  (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
 #define SCM_SET_SYMBOL_LENGTH(s, l) (SCM_SET_CELL_WORD_0 ((s), ((l) << 8) + 
scm_tc7_symbol))
 
-#define SCM_LENGTH_MAX         (0xffffffL)
-
 #define SCM_PROP_SLOTS(X)           (SCM_CELL_WORD_3 (X))
 #define SCM_SET_PROP_SLOTS(X, v)    (SCM_SET_CELL_WORD_3 ((X), (v)))
 #define SCM_SYMBOL_FUNC(X)         (SCM_CAR (SCM_CELL_WORD_3 (X)))
@@ -119,6 +117,7 @@
 #define SCM_SLOPPY_SUBSTRP(x) (SCM_SUBSTRP (x))
 #define SCM_SUBSTR_STR(x) (SCM_CDDR (x))
 #define SCM_SUBSTR_OFFSET(x) (SCM_CADR (x))
+#define SCM_LENGTH_MAX (0xffffffL)
 #define SCM_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
 #define SCM_SETLENGTH(x, v, t) (SCM_SET_CELL_WORD_0 ((x), ((v) << 8) + (t)))
 #define SCM_ROSTRINGP(x) (SCM_NIMP(x) && ((SCM_TYP7S(x)==scm_tc7_string) \
Index: guile/guile-core/libguile/unif.c
diff -u guile/guile-core/libguile/unif.c:1.94 
guile/guile-core/libguile/unif.c:1.95
--- guile/guile-core/libguile/unif.c:1.94       Thu Nov 23 05:54:49 2000
+++ guile/guile-core/libguile/unif.c    Thu Nov 23 07:26:24 2000
@@ -158,13 +158,12 @@
   SCM v;
   long i, type;
 
-  SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_LENGTH_MAX);
-
   if (SCM_EQ_P (prot, SCM_BOOL_T))
     {
       SCM_NEWCELL (v);
       if (k > 0)
        {
+         SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_BITVECTOR_MAX_LENGTH);
          i = sizeof (long) * ((k + SCM_LONG_BIT - 1) / SCM_LONG_BIT);
          SCM_SET_BITVECTOR_BASE (v, (char *) scm_must_malloc (i, "vector"));
          SCM_SET_BITVECTOR_LENGTH (v, k);
@@ -180,7 +179,7 @@
     {
       i = sizeof (char) * k;
       type = scm_tc7_byvect;
-    }    
+    }
   else if (SCM_CHARP (prot))
     {
       i = sizeof (char) * k;
@@ -216,8 +215,7 @@
          return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
        }
     }
-  else
-  if (SCM_IMP (prot) || !SCM_INEXACTP (prot))
+  else if (!SCM_INEXACTP (prot))
     /* Huge non-unif vectors are NOT supported. */
     /* no special scm_vector */
     return scm_make_vector (SCM_MAKINUM (k), SCM_UNDEFINED);
@@ -237,6 +235,8 @@
       type = scm_tc7_dvect;
     }
 
+  SCM_ASSERT_RANGE (1, scm_long2num (k), k <= SCM_UVECTOR_MAX_LENGTH);
+
   SCM_NEWCELL (v);
   SCM_DEFER_INTS;
   SCM_SET_UVECTOR_BASE (v, (char *) scm_must_malloc (i ? i : 1, "vector"));
@@ -581,11 +581,7 @@
   SCM ra;
   if (SCM_INUMP (dims))
     {
-      SCM answer;
-
-      SCM_ASSERT_RANGE (1, dims, SCM_INUM (dims) <= SCM_LENGTH_MAX);
-
-      answer = scm_make_uve (SCM_INUM (dims), prot);
+      SCM answer = scm_make_uve (SCM_INUM (dims), prot);
       if (!SCM_UNBNDP (fill))
        scm_array_fill_x (answer, fill);
       else if (SCM_SYMBOLP (prot))
@@ -606,8 +602,6 @@
       SCM_ASSERT_RANGE (1, dims, s[k].lbnd <= s[k].ubnd);
       rlen = (s[k].ubnd - s[k].lbnd + 1) * s[k].inc;
     }
-
-  SCM_ASSERT_RANGE (1, dims, rlen <= SCM_LENGTH_MAX);
 
   SCM_ARRAY_V (ra) = scm_make_uve (rlen, prot);
 
Index: guile/guile-core/libguile/unif.h
diff -u guile/guile-core/libguile/unif.h:1.31 
guile/guile-core/libguile/unif.h:1.32
--- guile/guile-core/libguile/unif.h:1.31       Thu Nov 23 05:54:49 2000
+++ guile/guile-core/libguile/unif.h    Thu Nov 23 07:26:24 2000
@@ -88,12 +88,14 @@
 
 #define SCM_UVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
 #define SCM_SET_UVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
+#define SCM_UVECTOR_MAX_LENGTH (0xffffffL)
 #define SCM_UVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
 #define SCM_SET_UVECTOR_LENGTH(v, l, t) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) 
+ (t)))
 
 #define SCM_BITVECTOR_P(x) (!SCM_IMP (x) && (SCM_TYP7 (x) == scm_tc7_bvect))
 #define SCM_BITVECTOR_BASE(x) ((void *) (SCM_CELL_WORD_1 (x)))
 #define SCM_SET_BITVECTOR_BASE(v, b) (SCM_SET_CELL_WORD_1 ((v), (b)))
+#define SCM_BITVECTOR_MAX_LENGTH (0xffffffL)
 #define SCM_BITVECTOR_LENGTH(x) (((unsigned long) SCM_CELL_WORD_0 (x)) >> 8)
 #define SCM_SET_BITVECTOR_LENGTH(v, l) (SCM_SET_CELL_WORD_0 ((v), ((l) << 8) + 
scm_tc7_bvect))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]