X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/f6f4feb0a2222efcb297e634603621126542e63f..475772ea57c97d0fa0f9ed9303db137d9798ddd3:/libguile/snarf.h diff --git a/libguile/snarf.h b/libguile/snarf.h index 3931570f4..d0b683308 100644 --- a/libguile/snarf.h +++ b/libguile/snarf.h @@ -4,7 +4,7 @@ #define SCM_SNARF_H /* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - * 2004, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. + * 2004, 2006, 2009, 2010, 2011, 2013, 2014 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -87,7 +87,7 @@ DOCSTRING ^^ } #define SCM_DEFINE_GSUBR(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ SCM_SNARF_HERE(\ -static const char s_ ## FNAME [] = PRIMNAME; \ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ SCM FNAME ARGLIST\ )\ SCM_SNARF_INIT(\ @@ -96,52 +96,13 @@ scm_c_define_gsubr (s_ ## FNAME, REQ, OPT, VAR, \ )\ SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) -#ifdef SCM_SUPPORT_STATIC_ALLOCATION - -/* Static subr allocation. */ -/* FIXME: how to verify that req + opt + rest < 11, all are positive, etc? */ -#define SCM_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ -SCM_SYMBOL (scm_i_paste (FNAME, __name), PRIMNAME); \ -SCM_SNARF_HERE( \ - static const char scm_i_paste (s_, FNAME) [] = PRIMNAME; \ - SCM_API SCM FNAME ARGLIST; \ - SCM_IMMUTABLE_POINTER (scm_i_paste (FNAME, __subr_foreign), \ - (scm_t_bits) &FNAME); /* the subr */ \ - SCM_STATIC_SUBR_OBJVECT (scm_i_paste (FNAME, __raw_objtable), \ - /* FIXME: directly be the foreign */ \ - SCM_BOOL_F); \ - /* FIXME: be immutable. grr */ \ - SCM_STATIC_PROGRAM (scm_i_paste (FNAME, __subr), \ - SCM_BOOL_F, \ - SCM_PACK (&scm_i_paste (FNAME, __raw_objtable)), \ - SCM_BOOL_F); \ - SCM FNAME ARGLIST \ -) \ -SCM_SNARF_INIT( \ - /* Initialize the foreign. */ \ - scm_i_paste (FNAME, __raw_objtable)[1] = scm_i_paste (FNAME, __subr_foreign); \ - /* Initialize the procedure name (an interned symbol). */ \ - scm_i_paste (FNAME, __raw_objtable)[2] = scm_i_paste (FNAME, __name); \ - /* Initialize the objcode trampoline. */ \ - SCM_SET_CELL_OBJECT (scm_i_paste (FNAME, __subr), 1, \ - scm_subr_objcode_trampoline (REQ, OPT, VAR)); \ - \ - /* Define the subr. */ \ - scm_define (scm_i_paste (FNAME, __name), scm_i_paste (FNAME, __subr)); \ -) \ -SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) - -#else /* !SCM_SUPPORT_STATIC_ALLOCATION */ - /* Always use the generic subr case. */ #define SCM_DEFINE SCM_DEFINE_GSUBR -#endif /* !SCM_SUPPORT_STATIC_ALLOCATION */ - #define SCM_PRIMITIVE_GENERIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ SCM_SNARF_HERE(\ -static const char s_ ## FNAME [] = PRIMNAME; \ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ static SCM g_ ## FNAME; \ SCM FNAME ARGLIST\ )\ @@ -155,7 +116,7 @@ SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) #define SCM_DEFINE_PUBLIC(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \ SCM_SNARF_HERE(\ -static const char s_ ## FNAME [] = PRIMNAME; \ +SCM_UNUSED static const char s_ ## FNAME [] = PRIMNAME; \ SCM FNAME ARGLIST\ )\ SCM_SNARF_INIT(\ @@ -166,12 +127,12 @@ scm_c_export (s_ ## FNAME, NULL); \ SCM_SNARF_DOCS(primitive, FNAME, PRIMNAME, ARGLIST, REQ, OPT, VAR, DOCSTRING) #define SCM_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ -SCM_SNARF_HERE(static const char RANAME[]=STR) \ +SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN)) #define SCM_REGISTER_PROC(RANAME, STR, REQ, OPT, VAR, CFN) \ -SCM_SNARF_HERE(static const char RANAME[]=STR) \ +SCM_SNARF_HERE(SCM_UNUSED static const char RANAME[]=STR) \ SCM_SNARF_INIT(scm_c_define_gsubr (RANAME, REQ, OPT, VAR, \ (SCM_FUNC_CAST_ARBITRARY_ARGS) CFN);) \ SCM_SNARF_DOCS(register, CFN, STR, (), REQ, OPT, VAR, \ @@ -179,7 +140,7 @@ SCM_SNARF_DOCS(register, CFN, STR, (), REQ, OPT, VAR, \ #define SCM_GPROC(RANAME, STR, REQ, OPT, VAR, CFN, GF) \ SCM_SNARF_HERE(\ -static const char RANAME[]=STR;\ +SCM_UNUSED static const char RANAME[]=STR;\ static SCM GF \ )SCM_SNARF_INIT(\ GF = SCM_PACK (0); /* Dirk:FIXME:: Can we safely use #f instead of 0? */ \ @@ -364,27 +325,6 @@ SCM_SNARF_INIT(scm_set_smob_apply((tag), (c_name), (req), (opt), (rest));) #define SCM_IMMUTABLE_POINTER(c_name, ptr) \ SCM_IMMUTABLE_CELL (c_name, scm_tc7_pointer, ptr) -/* for primitive-generics, add a foreign to the end */ -#define SCM_STATIC_SUBR_OBJVECT(c_name, foreign) \ - static SCM_ALIGNED (8) SCM c_name[3] = \ - { \ - SCM_PACK (scm_tc7_vector | (2 << 8)), \ - foreign, \ - SCM_BOOL_F /* the name */ \ - } - -#define SCM_STATIC_PROGRAM(c_name, objcode, objtable, freevars) \ - static SCM_ALIGNED (8) SCM_UNUSED SCM \ - scm_i_paste (c_name, _raw_cell)[] = \ - { \ - SCM_PACK (scm_tc7_program | SCM_F_PROGRAM_IS_PRIMITIVE), \ - objcode, \ - objtable, \ - freevars \ - }; \ - static SCM_UNUSED const SCM c_name = \ - SCM_PACK (& scm_i_paste (c_name, _raw_cell)) - #endif /* SCM_SUPPORT_STATIC_ALLOCATION */