promotional, or sales literature without prior written consent from
MIT in each case. */
-/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/bchmmg.c,v 9.33 1987/07/22 21:54:00 jinx Exp $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/bchmmg.c,v 9.34 1987/08/06 06:05:47 cph Exp $ */
/* Memory management top level. Garbage collection to disk.
{
long position, offset;
+ if (addr >= Constant_Space)
+ return addr;
+
position = (addr - Heap_Bottom);
offset = (position % GC_DISK_BUFFER_SIZE);
position = (position / GC_DISK_BUFFER_SIZE);
}
\f
void
-GC()
+GC(initial_weak_chain)
+ Pointer initial_weak_chain;
{
static Pointer *Root, *Result, *end_of_constant_area,
The_Precious_Objects, *Root2, *free_buffer;
free_buffer = initialize_free_buffer();
Free = Heap_Bottom;
Set_Mem_Top(Heap_Top - GC_Reserve);
- Weak_Chain = NIL;
+ Weak_Chain = initial_weak_chain;
/* Save the microcode registers so that they can be relocated */
/*NOTREACHED*/
}
GC_Reserve = Get_Integer(Arg1);
- GC();
+ GC(NIL);
IntCode &= ~INT_GC;
Pop_Primitive_Frame(1);
GC_Daemon_Proc = Get_Fixed_Obj_Slot(GC_Daemon);
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/bchpur.c,v 9.33 1987/06/16 23:43:14 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/bchpur.c,v 9.34 1987/08/06 06:06:22 cph Rel $
Copyright (c) 1987 Massachusetts Institute of Technology
(overflow % GC_DISK_BUFFER_SIZE)) - 1);
break;
}
-\f
+
case_Non_Pointer:
break;
-
+\f
case_compiled_entry_point:
if (purify_mode == PURE_COPY)
break;
case TC_REFERENCE_TRAP:
if (Datum(Temp) <= TRAP_MAX_IMMEDIATE)
- {
- /* It is a non pointer. */
- break;
- }
+ break; /* It is a non pointer. */
goto purify_pair;
case TC_INTERNED_SYMBOL:
}
/* Fall through. */
- case TC_WEAK_CONS:
case_Fasdump_Pair:
purify_pair:
relocate_normal_pointer(copy_pair(), 2);
+ case TC_WEAK_CONS:
+ if (purify_mode == PURE_COPY)
+ break;
+ else
+ relocate_normal_pointer(copy_weak_pair(), 2);
+
case TC_VARIABLE:
case_Triple:
relocate_normal_pointer(copy_triple(), 3);
long length, pure_length;
Pointer value, *Result, *free_buffer, *block_start;
+ Weak_Chain = NIL;
free_buffer = initialize_free_buffer();
block_start = Free_Constant;
Free_Constant += 2;
*block_start++ = Make_Non_Pointer(TC_MANIFEST_SPECIAL_NM_VECTOR,
pure_length);
*block_start = Make_Non_Pointer(PURE_PART, (length - 1));
- GC();
+ GC(Weak_Chain);
Set_Pure_Top();
return TRUTH;
}
promotional, or sales literature without prior written consent from
MIT in each case. */
-/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 9.93 1987/08/06 05:04:11 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 9.94 1987/08/06 06:07:46 cph Exp $
This file contains version information for the microcode. */
\f
#define VERSION 9
#endif
#ifndef SUBVERSION
-#define SUBVERSION 93
+#define SUBVERSION 94
#endif
#ifndef UCODE_TABLES_FILENAME
promotional, or sales literature without prior written consent from
MIT in each case. */
-/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 9.93 1987/08/06 05:04:11 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 9.94 1987/08/06 06:07:46 cph Exp $
This file contains version information for the microcode. */
\f
#define VERSION 9
#endif
#ifndef SUBVERSION
-#define SUBVERSION 93
+#define SUBVERSION 94
#endif
#ifndef UCODE_TABLES_FILENAME