[fix for building rts in different modes, profile,debug,windows
John Meacham <john@repetae.net>**20120216201402
 Ignore-this: 39b08c82b7239beaeaa6e77a3b986cd4
] hunk ./rts/rts/gc_jgc.c 4
+#include "rts/cdefs.h"
hunk ./rts/rts/gc_jgc.c 48
-static struct s_arena *arena;
+struct s_arena *arena;
hunk ./rts/rts/gc_jgc.c 53
-#ifdef JHC_JGC_STACK
-struct frame {
-        struct frame *prev;
-        unsigned nptrs;
-        void *ptrs[0];
-};
-#define gc_frame0(gc,n,...) struct { struct frame *prev; unsigned nptrs;void *ptrs[n]; } l \
-          = { gc, n, { __VA_ARGS__ } }; gc_t gc = (gc_t)(void *)&l;
-#else
hunk ./rts/rts/gc_jgc.c 56
-#endif
hunk ./rts/rts/gc_jgc.c 111
-A_UNUSED static void
-gc_add_root(gc_t gc, sptr_t root)
+void gc_add_root(gc_t gc, void *root)
hunk ./rts/rts/gc_jgc.c 151
-#ifdef JHC_JGC_STACK
-        for(;gc;gc = gc->prev) {
-                debugf(" |");
-                stack_check(&stack, gc->nptrs);
-                for(unsigned i = 0;i < gc->nptrs; i++) {
-                        number_stack++;
-                        // TODO - short circuit redirects on stack
-                        sptr_t ptr = gc->ptrs[i];
-                        if(P_LAZY == GET_PTYPE(ptr)) {
-                                if(!IS_LAZY(GETHEAD(FROM_SPTR(ptr)))) {
-                                        J1U(r,gc_allocated,((uintptr_t)FROM_SPTR(ptr) - sizeof(entry_t))/GC_ALIGNMENT);
-                                        if(r)
-                                                J1S(r,gc_grey,((uintptr_t)FROM_SPTR(ptr) - sizeof(entry_t))/GC_ALIGNMENT);
-                                        number_redirects++;
-                                        debugf(" *");
-                                        ptr = (sptr_t)GETHEAD(FROM_SPTR(ptr));
-                                }
-                        }
-                        if(__predict_false(!IS_PTR(ptr))) {
-                                debugf(" -");
-                                continue;
-                        }
-                        number_ptr++;
-                        entry_t *e = (entry_t *)FROM_SPTR(ptr) - 1;
-                        debugf(" %p",(void *)e);
-                        gc_add_grey(&gc_grey, &stack, (uintptr_t)e / GC_ALIGNMENT);
-                }
-        }
-#else
hunk ./rts/rts/gc_jgc.c 178
-#endif
hunk ./rts/rts/gc_jgc.c 206
-#ifdef JHC_JGC_STACK
-                void * gc_stack_base = &gc_stack_base;
-                Word_t n_roots;
-                J1C(n_roots,gc_roots,0,-1);
-#endif
-
hunk ./rts/rts/gc_jgc.c 226
-#ifndef JHC_JGC_STACK
hunk ./rts/rts/gc_jgc.c 227
-#endif
hunk ./rts/rts/gc_jgc.c 416
-void *
+void * A_STD
hunk ./rts/rts/gc_jgc.h 8
+typedef void* *gc_t;
hunk ./rts/rts/gc_jgc.h 10
-#define S_BLOCK(val) ((struct s_block *)((uintptr_t)(val) & ~ (BLOCK_SIZE - 1)))
hunk ./rts/rts/gc_jgc.h 12
-
-#ifdef JHC_JGC_STACK
-struct frame;
-typedef struct frame *gc_t;
-#else
-typedef void* *gc_t;
-#endif
-
-extern gc_t saved_gc;
-
+#define S_BLOCK(val) ((struct s_block *)((uintptr_t)(val) & ~ (BLOCK_SIZE - 1)))
hunk ./rts/rts/gc_jgc.h 16
-#define gc_frame0(gc,n,...) void *ptrs[n] = { __VA_ARGS__ }; for(int i = 0; i < n; i++) gc[i] = (sptr_t)ptrs[i]; gc_t sgc = gc;  gc_t gc = sgc + n;
+extern struct s_arena *arena;
+extern gc_t saved_gc;
+
+void *s_alloc(gc_t gc, struct s_cache *sc) A_STD;
+struct s_cache *find_cache(struct s_cache **rsc, struct s_arena *arena,
+                           unsigned short size, unsigned short num_ptrs);
+void gc_add_root(gc_t gc, void * root);
hunk ./rts/rts/gc_jgc.h 24
-void *s_alloc(gc_t gc, struct s_cache *sc);
-struct s_cache *find_cache(struct s_cache **rsc, struct s_arena *arena, unsigned short size, unsigned short num_ptrs);
+#define gc_frame0(gc,n,...) void *ptrs[n] = { __VA_ARGS__ }; \
+        for(int i = 0; i < n; i++) gc[i] = (sptr_t)ptrs[i]; gc_t sgc = gc;  gc_t gc = sgc + n;
hunk ./rts/rts/jhc_rts.c 226
-static void A_STD A_UNUSED A_HOT
+#if _JHC_DEBUG
+void A_STD A_UNUSED A_HOT
hunk ./rts/rts/jhc_rts.c 234
-
-#include "rts/gc_jgc.c"
+#endif
hunk ./rts/rts/jhc_rts.h 72
-eval(sptr_t s)
+eval(sptr_t s);
hunk ./rts/rts/jhc_rts.h 78
+void   A_STD update(void *, wptr_t);
hunk ./rts/rts/jhc_rts.h 82
+inline static void update(void *t, wptr_t n) { GETHEAD(t) = (fptr_t)n; }
hunk ./rts/rts/jhc_rts.h 85
+
hunk ./src/Grin/Main.hs 123
-                  "rts/jhc_rts.c", "lib/lib_cbits.c"]
+                  "rts/jhc_rts.c", "lib/lib_cbits.c", "rts/gc_jgc.c"]