diff src/data.c @ 207:e45d5e7c476e r20-4b2

Import from CVS: tag r20-4b2
author cvs
date Mon, 13 Aug 2007 10:03:52 +0200
parents 3d6bfa290dbd
children 41ff10fd062f
line wrap: on
line diff
--- a/src/data.c	Mon Aug 13 10:02:48 2007 +0200
+++ b/src/data.c	Mon Aug 13 10:03:52 2007 +0200
@@ -87,7 +87,7 @@
 {
   if (((CHARP (obj1) && INTP (obj2)) || (CHARP (obj2) && INTP (obj1)))
       && (debug_issue_ebola_notices >= 2
-	  || XREALINT (obj1) == XREALINT (obj2)))
+	  || XCHAR_OR_INT (obj1) == XCHAR_OR_INT (obj2)))
     {
       stderr_out("Comparison between integer and character is constant nil (");
       Fprinc (obj1, Qexternal_debugging_output);
@@ -166,8 +166,12 @@
 make_int (EMACS_INT num)
 {
   Lisp_Object val;
+#ifdef USE_MINIMAL_TAGBITS
+  XSETINT(val, num);
+#else
   /* Don't use XSETINT here -- it's defined in terms of make_int ().  */
   XSETOBJ (val, Lisp_Type_Int, num);
+#endif
   return val;
 }
 #endif /* ! defined (make_int) */
@@ -191,13 +195,19 @@
 
 /* characters do not need to sign extend so there's no need for special
    futzing like with ints. */
+#ifndef make_char
 Lisp_Object
 make_char (Emchar num)
 {
   Lisp_Object val;
+#ifdef USE_MINIMAL_TAGBITS
+  XSETCHAR (val, num);
+#else
   XSETOBJ (val, Lisp_Type_Char, num);
+#endif
   return val;
 }
+#endif /* ! make_char */
 
 /* Data type predicates */
 
@@ -1641,7 +1651,8 @@
 
   {
     int C_count = XINT (count);
-    EMACS_UINT C_value = (EMACS_UINT) XUINT (value);
+    /* EMACS_UINT C_value = (EMACS_UINT) XUINT (value);*/
+    EMACS_UINT C_value = (EMACS_UINT) XINT (value);
     XSETINT (val, C_count > 0 ? C_value << C_count : C_value >> -C_count);
   }
   return val;