remove old gc cruft
svn: r17634
This commit is contained in:
parent
8d00ce3cec
commit
e4fdd172a7
File diff suppressed because it is too large
Load Diff
|
@ -1,23 +0,0 @@
|
|||
#include "commongc_internal.h"
|
||||
|
||||
typedef struct CompactGC {
|
||||
/* Common with NewGC */
|
||||
Fnl *finalizers;
|
||||
Fnl *splayed_finalizers;
|
||||
int num_fnls;
|
||||
|
||||
void *park[2];
|
||||
void *park_save[2];
|
||||
|
||||
unsigned short weak_array_tag;
|
||||
unsigned short weak_box_tag;
|
||||
unsigned short ephemeron_tag;
|
||||
unsigned short cust_box_tag;
|
||||
|
||||
Roots roots;
|
||||
GC_Weak_Array *weak_arrays;
|
||||
GC_Weak_Box *weak_boxes;
|
||||
GC_Ephemeron *ephemerons;
|
||||
int num_last_seen_ephemerons;
|
||||
struct VM *vm;
|
||||
} CompactGC;
|
File diff suppressed because it is too large
Load Diff
|
@ -2046,13 +2046,6 @@ void GC_switch_out_master_gc() {
|
|||
}
|
||||
}
|
||||
|
||||
/* used to initialize a MasterGC Thread, bad idea
|
||||
* scheme_master_fast_path is more performant */
|
||||
void GC_switch_in_master_gc() {
|
||||
GC_set_GC(MASTERGC);
|
||||
restore_globals_from_gc(MASTERGC);
|
||||
}
|
||||
|
||||
/*used in scheme_master_fast_path*/
|
||||
void *GC_switch_to_master_gc() {
|
||||
NewGC *gc = GC_get_GC();
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
|
||||
/* This code comes from the conservative collector, ../gc/os_dep.c */
|
||||
|
||||
/* Decodes the machine instruction which was responsible for the sending of the
|
||||
SIGBUS signal. Sadly this is the only way to find the faulting address because
|
||||
the signal handler doesn't get it directly from the kernel (although it is
|
||||
available on the Mach level, but droppped by the BSD personality before it
|
||||
calls our signal handler...)
|
||||
This code should be able to deal correctly with all PPCs starting from the
|
||||
601 up to and including the G4s (including Velocity Engine). */
|
||||
#define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26)
|
||||
#define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1)
|
||||
#define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16)
|
||||
#define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21)
|
||||
#define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11)
|
||||
#define EXTRACT_DISP(iw) ((short *) &(iw))[1]
|
||||
|
||||
static char *get_fault_addr(unsigned int instr, unsigned int * regs)
|
||||
{
|
||||
int disp = 0, tmp;
|
||||
unsigned int baseA = 0, baseB = 0;
|
||||
unsigned int addr, alignmask = 0xFFFFFFFF;
|
||||
|
||||
switch(EXTRACT_OP1(instr)) {
|
||||
case 38: /* stb */
|
||||
case 39: /* stbu */
|
||||
case 54: /* stfd */
|
||||
case 55: /* stfdu */
|
||||
case 52: /* stfs */
|
||||
case 53: /* stfsu */
|
||||
case 44: /* sth */
|
||||
case 45: /* sthu */
|
||||
case 47: /* stmw */
|
||||
case 36: /* stw */
|
||||
case 37: /* stwu */
|
||||
tmp = EXTRACT_REGA(instr);
|
||||
if(tmp > 0)
|
||||
baseA = regs[tmp];
|
||||
disp = EXTRACT_DISP(instr);
|
||||
break;
|
||||
case 31:
|
||||
switch(EXTRACT_OP2(instr)) {
|
||||
case 86: /* dcbf */
|
||||
case 54: /* dcbst */
|
||||
case 1014: /* dcbz */
|
||||
case 247: /* stbux */
|
||||
case 215: /* stbx */
|
||||
case 759: /* stfdux */
|
||||
case 727: /* stfdx */
|
||||
case 983: /* stfiwx */
|
||||
case 695: /* stfsux */
|
||||
case 663: /* stfsx */
|
||||
case 918: /* sthbrx */
|
||||
case 439: /* sthux */
|
||||
case 407: /* sthx */
|
||||
case 661: /* stswx */
|
||||
case 662: /* stwbrx */
|
||||
case 150: /* stwcx. */
|
||||
case 183: /* stwux */
|
||||
case 151: /* stwx */
|
||||
case 135: /* stvebx */
|
||||
case 167: /* stvehx */
|
||||
case 199: /* stvewx */
|
||||
case 231: /* stvx */
|
||||
case 487: /* stvxl */
|
||||
tmp = EXTRACT_REGA(instr);
|
||||
if(tmp > 0)
|
||||
baseA = regs[tmp];
|
||||
baseB = regs[EXTRACT_REGC(instr)];
|
||||
/* determine Altivec alignment mask */
|
||||
switch(EXTRACT_OP2(instr)) {
|
||||
case 167: /* stvehx */
|
||||
alignmask = 0xFFFFFFFE;
|
||||
break;
|
||||
case 199: /* stvewx */
|
||||
alignmask = 0xFFFFFFFC;
|
||||
break;
|
||||
case 231: /* stvx */
|
||||
alignmask = 0xFFFFFFF0;
|
||||
break;
|
||||
case 487: /* stvxl */
|
||||
alignmask = 0xFFFFFFF0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 725: /* stswi */
|
||||
tmp = EXTRACT_REGA(instr);
|
||||
if(tmp > 0)
|
||||
baseA = regs[tmp];
|
||||
break;
|
||||
default: /* ignore instruction */
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: /* ignore instruction */
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
addr = (baseA + baseB) + disp;
|
||||
addr &= alignmask;
|
||||
return (char *)addr;
|
||||
}
|
|
@ -463,26 +463,6 @@ Scheme_Object *scheme_places_deep_copy_in_master(Scheme_Object *so) {
|
|||
#ifdef MZ_PRECISE_GC
|
||||
static void* scheme_master_place_handlemsg(int msg_type, void *msg_payload);
|
||||
|
||||
#if 0
|
||||
static void *master_scheme_place(void *data) {
|
||||
mz_proc_thread *myself;
|
||||
myself = proc_thread_self;
|
||||
GC_switch_in_master_gc();
|
||||
|
||||
while(1) {
|
||||
int recv_type;
|
||||
void *recv_payload;
|
||||
pt_mbox *origin;
|
||||
Scheme_Object *o;
|
||||
|
||||
pt_mbox_recv(myself->mbox, &recv_type, &recv_payload, &origin);
|
||||
o = scheme_master_place_handlemsg(recv_type, recv_payload);
|
||||
pt_mbox_send(origin, 2, (void *) o, NULL);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void* scheme_master_place_handlemsg(int msg_type, void *msg_payload)
|
||||
{
|
||||
switch(msg_type) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user