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

kzk at freedesktop.org kzk at freedesktop.org
Sun Oct 16 20:39:38 PDT 2005


Author: kzk
Date: 2005-10-16 20:39:35 -0700 (Sun, 16 Oct 2005)
New Revision: 1842

Modified:
   branches/r5rs/sigscheme/sigschemetype-compact.h
Log:
* sigscheme/sigschemetype-compact.h
  - update comment to describe new Object tagging system.
    This is discussed in anthy-dev.


Modified: branches/r5rs/sigscheme/sigschemetype-compact.h
===================================================================
--- branches/r5rs/sigscheme/sigschemetype-compact.h	2005-10-15 19:58:29 UTC (rev 1841)
+++ branches/r5rs/sigscheme/sigschemetype-compact.h	2005-10-17 03:39:35 UTC (rev 1842)
@@ -43,47 +43,48 @@
  * (0) LSB(Least Significant Bit) of "S" is called G-bit.
  *
  * (1) if S == "...00G", S is ConsCell. G-bit of S->X is used as
- *     marking bit of GC and G-bit of S-Y is always 0 for sweeping
- *     phase.
+ *     S->Y's G bit is always set to 0, which helps determine the
+ *     finalization semantics without a pointer. 
  *
- * (2) if S == "...01G", S is imeediate value. Imeediate value is
+ * (2) if S == "...01G", S is Closure. G-bit of S->X is used as
+ *     marking bit of GC.
+ *     S->Y's G bit is always set to 0, which helps determine the
+ *     finalization semantics without a pointer. 
+ *
+ *
+ * (4) if S == "...10G", S is other types. Type is separated by the
+ *     value of least n bits of S->Y.
+ *     S->Y's G bit is always set to 1, which helps determine the
+ *     finalization semantics without a pointer. 
+ *
+ *        S->Y              Type                content of S->Y
+ *     .....|00|1 : Symbol              : symbol name
+ *     .....|01|1 : String              : string length
+ *     .....|10|1 : Vector              : vector length
+ *     ..000|11|1 : Values              : all 0 (for efficiency)
+ *     ..001|11|1 : Func                : ScmFuncTypeCode
+ *     ..010|11|1 : Port                : ScmPortDirection
+ *     ..011|11|1 : Continuation        : all 0 (for efficiency)
+ *     ..100|11|1 : C Pointer           : pointer type
+ *                                      :   0 = void*, 1 = ScmFuncType
+ *     ..101|11|1 : Reserved            :
+ *     ..110|11|1 : Special Constant    : constant ID
+ *                                          0: EOF
+ *                                          1: Undef
+ *     ..111|11|1 : FreeCell            : all 0 (for efficiency)
+ *
+ * (4) if S == "...11G", S is imeediate value. Imeediate value is
  *     separated into these types by the value of least 2 or 5 bits of
  *     ((unsigned int S) >> 3).
  *
  *           S        Type
- *     .....01|01G : Integer
- *     .....11|01G : Char
+ *     ......0|11G : Integer
+ *     ......1|11G : Char
  *     ------------------------------
- *     ..00000|01G : #f
- *     ..00010|01G : #t
- *     ..00100|01G : ()
- *     ..00110|01G : EOF
- *     ..01000|01G : Quote
- *     ..01010|01G : Quasiquote
- *     ..01100|01G : Unquote
- *     ..01110|01G : UnquoteSplicing
- *     ..10000|01G : Unbound
- *     ..10010|01G : Undef
- *
- * (3) if S == "...10G", S is Closure. G-bit of S->X is used as
- *     marking bit of GC and G-bit of S-Y is always 0 for sweeping
- *     phase.
- *
- * (4) if S == "...11G", S is other types. Type is separated by the
- *     value of least n bits of S->Y. Anyway, G-bit of S-Y is always
- *     1 for sweeping phase..
- *
- *        S->Y        Type
- *     ...0000|1 : Symbol
- *     ...0001|1 : String
- *     ...0010|1 : Func
- *     ...0011|1 : Vector
- *     ...0100|1 : Port
- *     ...0101|1 : Continuation
- *     ...0110|1 : Values
- *     ...0111|1 : FreeCell
- *     ...1000|1 : C Pointer
- *     ...1001|1 : C Function Pointer
+ *     ..00|11|11G : INVALID
+ *     ..01|11|11G : UNBOUND
+ *     ..10|00|11G : #f
+ *     ..11|10|11G : #t
  */
 
 /*=======================================



More information about the uim-commit mailing list