comparison src/alloc.c @ 1936:82bbf90208d4

* alloc.c (make_pure_float): Align pureptr according to __alignof, if it's available, or sizeof (struct Lisp_Float) if it's not.
author Jim Blandy <jimb@redhat.com>
date Mon, 22 Feb 1993 16:21:17 +0000
parents d649f2179d67
children def7b9c64935
comparison
equal deleted inserted replaced
1935:047e196658fa 1936:82bbf90208d4
989 Lisp_Object 989 Lisp_Object
990 make_pure_float (num) 990 make_pure_float (num)
991 double num; 991 double num;
992 { 992 {
993 register Lisp_Object new; 993 register Lisp_Object new;
994 int alignment;
994 995
995 /* Make sure that pureptr is aligned on at least a sizeof (double) 996 /* Make sure that pureptr is aligned on at least a sizeof (double)
996 boundary. Some architectures (like the sparc) require this, and 997 boundary. Some architectures (like the sparc) require this, and
997 I suspect that floats are rare enough that it's no tragedy for 998 I suspect that floats are rare enough that it's no tragedy for
998 those that do. */ 999 those that do. */
999 pureptr = (pureptr + sizeof (num) - 1) & - sizeof (num); 1000 #ifdef __GNUC__
1001 #if __GNUC__ >= 2
1002 alignment = __alignof (struct Lisp_Float);
1003 #else
1004 alignment = sizeof (struct Lisp_Float);
1005 #endif
1006 #else
1007 alignment = sizeof (struct Lisp_Float);
1008 #endif
1009 pureptr = (pureptr + alignment - 1) & - alignment;
1000 1010
1001 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE) 1011 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE)
1002 error ("Pure Lisp storage exhausted"); 1012 error ("Pure Lisp storage exhausted");
1003 XSET (new, Lisp_Float, PUREBEG + pureptr); 1013 XSET (new, Lisp_Float, PUREBEG + pureptr);
1004 pureptr += sizeof (struct Lisp_Float); 1014 pureptr += sizeof (struct Lisp_Float);