From 6c145a7523605d227727a3aec68c22e50234947c Mon Sep 17 00:00:00 2001 From: michi Date: Thu, 8 Mar 2007 13:16:34 +0000 Subject: [PATCH] * src/vm/jit/i386/linux/md-os.c: Cleaned up. * src/mm/cacao-gc/gc.h: Fixed includes. * src/mm/cacao-gc/gc.c (gc_pending): Added global variable. --HG-- branch : exact-gc --- src/mm/cacao-gc/gc.c | 1 + src/mm/cacao-gc/gc.h | 8 ++++++++ src/vm/jit/i386/linux/md-os.c | 13 +++---------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mm/cacao-gc/gc.c b/src/mm/cacao-gc/gc.c index 95dc6a92b..2f2ea8805 100644 --- a/src/mm/cacao-gc/gc.c +++ b/src/mm/cacao-gc/gc.c @@ -58,6 +58,7 @@ /* Global Variables ***********************************************************/ +bool gc_pending; bool gc_running; bool gc_notify_finalizer; diff --git a/src/mm/cacao-gc/gc.h b/src/mm/cacao-gc/gc.h index fd84ca4e9..f5e624c12 100644 --- a/src/mm/cacao-gc/gc.h +++ b/src/mm/cacao-gc/gc.h @@ -40,6 +40,14 @@ #define _GC_H +#include "config.h" +#include "vm/types.h" + +#if defined(ENABLE_THREADS) +# include "threads/native/threads.h" +#endif + + /* Configuration Switches *****************************************************/ /*#define GCCONF_FINALIZER*/ diff --git a/src/vm/jit/i386/linux/md-os.c b/src/vm/jit/i386/linux/md-os.c index 9f52f43de..cc6839f9b 100644 --- a/src/vm/jit/i386/linux/md-os.c +++ b/src/vm/jit/i386/linux/md-os.c @@ -28,7 +28,7 @@ Changes: - $Id: md-os.c 7480 2007-03-08 12:46:19Z michi $ + $Id: md-os.c 7482 2007-03-08 13:16:34Z michi $ */ @@ -122,13 +122,10 @@ void md_signal_handler_sigfpe(int sig, siginfo_t *siginfo, void *_p) void md_signal_handler_sigusr1(int sig, siginfo_t *siginfo, void *_p) { threadobject *t; - executionstate_t *es; ucontext_t *_uc; mcontext_t *_mc; t = THREADOBJECT; - t->es = NEW(executionstate_t); /* TODO: this must be done before!!! */ - es = t->es; _uc = (ucontext_t *) _p; _mc = &_uc->uc_mcontext; @@ -136,12 +133,8 @@ void md_signal_handler_sigusr1(int sig, siginfo_t *siginfo, void *_p) /* assume there is a GC pending */ assert(gc_pending); - /* fill in the execution state of this thread */ - es->pc = (u1 *) _mc->gregs[REG_EIP]; - es->sp = (u1 *) _mc->gregs[REG_ESP]; - es->pv = (u1 *) NULL; - - /* TODO: int registers are missing */ + /* fill in the PC for this thread */ + t->pc = (u1 *) _mc->gregs[REG_EIP]; /* now suspend the current thread for GC */ gc_suspend(t, _uc); -- 2.25.1