From 16414f430caa17fccb2e15611a367bb9236ac0ee Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 19 Mar 2012 02:00:45 -0700 Subject: * configure (uintptr): New variable. Indicates whether unsigned version of intptr_t is available and should be generated in config.h as uintptr_t. * eval.c (eval_init): New intrinsic functions floatp, integerp, flo-str. * gc.c (finalize): Handle FLNUM case. Rearranged cases so that all trivially returning cases are together. (mark): Handle FLNUM case. * hash.c (hash_double): New function. (equal_hash): Handle FLNUM via hash_double. (eql_hash): Likewise. * lib.c: is included. (float_s): New symbol variable. (code2type, equal): Handle FLNUM case in switch. (integerp): New function; does the same thing as integerp before. (numberp): Returns t for floats. (flo, floatp, flo_str): New functions. (obj_init): Initialize new float_s variable. (obj_print, obj_pprint): Handle FLNUM case in switch. Printing does not work yet; needs work in stream.c. * lib.h (enum type): New enumeration FLNUM. (struct flonum): New struct type. (union obj): New member, fl. (float_s, flo, floatp, integerp, flo_str): Declared. * parser.l (FLO): New token pattern definition. Scans to a NUMBER token. Corrected uses of yylval.num to yylval.val. * parser.y (%union): Removed num member from yystype. --- gc.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index b2247a9b..2b2567b9 100644 --- a/gc.c +++ b/gc.c @@ -186,30 +186,28 @@ static void finalize(val obj) switch (obj->t.type) { case NIL: case CONS: - return; - case STR: - free(obj->st.str); - obj->st.str = 0; - return; case CHR: case NUM: case LIT: case SYM: case PKG: case FUN: + case LCONS: + case LSTR: + case ENV: + case FLNUM: + return; + case STR: + free(obj->st.str); + obj->st.str = 0; return; case VEC: free(obj->v.vec-2); obj->v.vec = 0; return; - case LCONS: - case LSTR: - return; case COBJ: obj->co.ops->destroy(obj); return; - case ENV: - return; case BGNUM: mp_clear(mp(obj)); return; @@ -262,6 +260,7 @@ tail_call: case NUM: case LIT: case BGNUM: + case FLNUM: return; case CONS: mark_obj(obj->c.car); -- cgit v1.2.3