Cleaned up newgc_parts and newgc_internal.h

svn: r12286
This commit is contained in:
Kevin Tew 2008-11-05 21:08:11 +00:00
parent 06f3c07d42
commit 5f10e2d80e
5 changed files with 3 additions and 81 deletions

View File

@ -314,7 +314,7 @@ main.@LTO@: $(XSRCDIR)/main.c
$(CC) $(CFLAGS) -c $(XSRCDIR)/main.c -o main.@LTO@
gc2.@LTO@: $(srcdir)/gc2.c $(srcdir)/newgc.c $(srcdir)/compact.c $(srcdir)/newgc.c $(srcdir)/gc2.h \
$(srcdir)/newgc_internal.h \
$(srcdir)/newgc.h \
$(srcdir)/vm_osx.c $(srcdir)/vm_mmap.c $(srcdir)/vm_osk.c $(srcdir)/vm.c\
$(srcdir)/vm_memalign.c $(srcdir)/alloc_cache.c \
$(srcdir)/page_range.c $(srcdir)/protect_range.c $(srcdir)/var_stack.c $(srcdir)/stack_comp.c \

View File

@ -73,7 +73,7 @@ static const char *type_name[PAGE_TYPES] = {
};
#include "newgc_internal.h"
#include "newgc.h"
static THREAD_LOCAL NewGC *GC;
#include "msgprint.c"
@ -1303,7 +1303,7 @@ inline static int thread_get_owner(void *p)
{
return ((Scheme_Thread *)p)->gc_info->owner;
}
#include "newgc_parts/blame_the_child.c"
#include "blame_the_child.c"
int GC_set_account_hook(int type, void *c1, unsigned long b, void *c2)
{

View File

@ -1,78 +0,0 @@
/*****************************************************************************/
/* Backtrace */
/*****************************************************************************/
#if MZ_GC_BACKTRACE
static void backtrace_new_page(struct mpage *page)
{
/* This is a little wastefull for big pages, because we'll
only use the first few words: */
page->backtrace = (void **)malloc_pages(APAGE_SIZE, APAGE_SIZE);
}
static void free_backtrace(struct mpage *page)
{
free_pages(page->backtrace, APAGE_SIZE);
}
static void *bt_source;
static int bt_type;
static void set_backtrace_source(void *source, int type)
{
bt_source = source;
bt_type = type;
}
static void record_backtrace(struct mpage *page, void *ptr)
/* ptr is after objhead */
{
unsigned long delta;
delta = PPTR(ptr) - PPTR(page->addr);
page->backtrace[delta - 1] = bt_source;
((long *)page->backtrace)[delta] = bt_type;
}
static void copy_backtrace_source(struct mpage *to_page, void *to_ptr,
struct mpage *from_page, void *from_ptr)
/* ptrs are at objhead */
{
unsigned long to_delta, from_delta;
to_delta = PPTR(to_ptr) - PPTR(to_page->addr);
from_delta = PPTR(from_ptr) - PPTR(from_page->addr);
to_page->backtrace[to_delta] = from_page->backtrace[from_delta];
to_page->backtrace[to_delta+1] = from_page->backtrace[from_delta+1];
}
static void *get_backtrace(struct mpage *page, void *ptr)
/* ptr is after objhead */
{
unsigned long delta;
if (page->big_page)
ptr = PTR(page->addr + PREFIX_SIZE + WORD_SIZE);
delta = PPTR(ptr) - PPTR(page->addr);
return page->backtrace[delta - 1];
}
# define BT_STACK (PAGE_TYPES + 0)
# define BT_ROOT (PAGE_TYPES + 1)
# define BT_FINALIZER (PAGE_TYPES + 2)
# define BT_WEAKLINK (PAGE_TYPES + 3)
# define BT_IMMOBILE (PAGE_TYPES + 4)
#else
# define backtrace_new_page(page) /* */
# define free_backtrace(page) /* */
# define set_backtrace_source(ptr, type) /* */
# define record_backtrace(page, ptr) /* */
# define copy_backtrace_source(to_page, to_ptr, from_page, from_ptr) /* */
#endif