[uim-commit] r2165 - branches/r5rs/sigscheme

kzk at freedesktop.org kzk at freedesktop.org
Fri Nov 18 20:11:40 PST 2005


Author: kzk
Date: 2005-11-18 20:11:29 -0800 (Fri, 18 Nov 2005)
New Revision: 2165

Modified:
   branches/r5rs/sigscheme/sigschemetype-compact.h
Log:
* This is a workaround commit for working compaction.

* sigscheme/sigschemetype-compact.h
  - (SCM_FUNC_CFUNC, SCM_FUNC_SET_CFUNC): get and set function pointer
    directly. but desn't care GC bit.



Modified: branches/r5rs/sigscheme/sigschemetype-compact.h
===================================================================
--- branches/r5rs/sigscheme/sigschemetype-compact.h	2005-11-19 03:57:08 UTC (rev 2164)
+++ branches/r5rs/sigscheme/sigschemetype-compact.h	2005-11-19 04:11:29 UTC (rev 2165)
@@ -501,9 +501,11 @@
 #define SCM_VALUEPACKET_VALUES(a)        (SCM_CAR_GET_VALUE_AS_OBJ(a))
 #define SCM_VALUEPACKET_SET_VALUES(a, v) (SCM_CAR_SET_VALUE_AS_OBJ((a), (v)))
 
-#define SCM_FUNC_CFUNC(a)                (SCM_WORD_CAST(ScmFuncType, SCM_CAR_GET_VALUE_AS_PTR(a)))
+/* FIXME: This is a workaround way, because CAR part overwrites GC bit.
+ * How can we deal with this? */
+#define SCM_FUNC_CFUNC(a)                (SCM_WORD_CAST(ScmFuncType, SCM_GET_DIRECT_CAR(a)))
 #define SCM_FUNC_TYPECODE(a)             ((enum ScmFuncTypeCode)SCM_CDR_GET_VALUE_AS_INT((a), SCM_TAG_OTHERS_VALUE_OFFSET_FUNC))
-#define SCM_FUNC_SET_CFUNC(a, fptr)      (SCM_CAR_SET_VALUE_AS_PTR((a), SCM_WORD_CAST(ScmObj, (fptr))))
+#define SCM_FUNC_SET_CFUNC(a, fptr)      (SCM_SET_DIRECT_CAR((a), SCM_WORD_CAST(ScmObj, (fptr))))
 #define SCM_FUNC_SET_TYPECODE(a, code)   (SCM_CDR_SET_VALUE_AS_INT((a), (code), SCM_TAG_OTHERS_VALUE_OFFSET_FUNC, SCM_TAG_OTHERS_FUNC))
 #define SCM_SYNTAXP(a) (SCM_FUNCP(a)                                         \
                         && (SCM_FUNC_TYPECODE(a) & SCM_FUNCTYPE_SYNTAX))



More information about the uim-commit mailing list