Fix MANIFEST_CLOSURE_COUNT and FIRST_MANIFEST_CLOSURE_ENTRY.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Tue, 16 Nov 1993 02:25:15 +0000 (02:25 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Tue, 16 Nov 1993 02:25:15 +0000 (02:25 +0000)
The default versions only work when
sizeof (unsigned long) = 2 * sizeof (format_word)

v7/src/microcode/cmpintmd/c.h

index bf51fae6603abb1f9a0d1c7e5059e62a0cbd5b54..502b0fe8aeaca700c0ada27310cd739ae5f1eda5 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: c.h,v 1.4 1993/10/30 03:01:38 gjr Exp $
+$Id: c.h,v 1.5 1993/11/16 02:25:15 gjr Exp $
 
 Copyright (c) 1992-1993 Massachusetts Institute of Technology
 
@@ -74,6 +74,16 @@ extern int pc_zero_bits;
 {                                                                      \
   ((SCHEME_OBJECT *) (location))[1] = ((SCHEME_OBJECT) (input));       \
 } while (0)
+
+#define MANIFEST_CLOSURE_COUNT(scan)                                   \
+(((COMPILED_ENTRY_OFFSET_WORD (((SCHEME_OBJECT *) (scan)) + 1)) == 0)  \
+ ? (COMPILED_ENTRY_FORMAT_WORD (((SCHEME_OBJECT *) (scan)) + 1))       \
+ : 1)
+
+#define FIRST_MANIFEST_CLOSURE_ENTRY(scan)                             \
+(((COMPILED_ENTRY_OFFSET_WORD (((SCHEME_OBJECT *) (scan)) + 1)) == 0)  \
+ ? (((SCHEME_OBJECT *) (scan)) + 2)                                    \
+ : (((SCHEME_OBJECT *) (scan)) + 1))
 \f
 /* Trampolines are implemented as tiny compiled code blocks that
    invoke the constant C procedure indexed by the number 0.