From: Guillermo J. Rozas <edu/mit/csail/zurich/gjr> Date: Tue, 16 Nov 1993 02:25:15 +0000 (+0000) Subject: Fix MANIFEST_CLOSURE_COUNT and FIRST_MANIFEST_CLOSURE_ENTRY. X-Git-Tag: 20090517-FFI~7503 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=7c6327954133979278acc87befc6b7b42ae4c769;p=mit-scheme.git Fix MANIFEST_CLOSURE_COUNT and FIRST_MANIFEST_CLOSURE_ENTRY. The default versions only work when sizeof (unsigned long) = 2 * sizeof (format_word) --- diff --git a/v7/src/microcode/cmpintmd/c.h b/v7/src/microcode/cmpintmd/c.h index bf51fae66..502b0fe8a 100644 --- a/v7/src/microcode/cmpintmd/c.h +++ b/v7/src/microcode/cmpintmd/c.h @@ -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)) /* Trampolines are implemented as tiny compiled code blocks that invoke the constant C procedure indexed by the number 0.