https://github.com/Unipisa/CMM
Tip revision: 0e186db83a043dcfe9c666dd4c90f9e8d1b9234e authored by Giuseppe Attardi on 27 October 1994, 11:26:20 UTC
1.1 -
1.1 -
Tip revision: 0e186db
ChangeLog
Thu Oct 27 12:26:20 1994 Giuseppe Attardi (attardi@omega)
* cmm.H: renamed STATIC_0 as DATASTART
DATASTART is defined for many architectures
* cmm.C, cmm.H: updated for g++ 2.6
Thu Oct 20 11:11:16 1994 Giuseppe Attardi (attardi@omega)
* HeapStack.C (scavenge):
use OUTSIDE_HEAP instead of !inside
Wed Oct 19 11:39:50 1994 Giuseppe Attardi (attardi@omega)
* cmm.H (DefaultHeap::scavenge):
moved to cmm.C
* cmm.C (allocate_page):
removed bzero of page
Thu Oct 13 09:07:15 1994 Giuseppe Attardi (attardi@omega)
* cmm.H (CmmHeap):
DefaultHeap -> theDefaultHeap
gcmove -> CmmMove
* cmm.C (reserve_pages):
maintain reservedPages instead of unusedPages
* cmm.C ():
UNALLOCATEDPAGE -> UNALLOCATEDSPACE with value 1 to ensure it is
not STABLE()
Tue Oct 11 09:44:33 1994 Giuseppe Attardi (attardi@omega)
* cmm.C (reserve_page):
restricted search for unused pages to pages between
firstReservedPage and lastReservedPage
* cmm.C:
use memset (STD C) instead of bzero (BSD) when not GCC
(bzero is 3 times faster than memset)
Mon Oct 10 10:24:06 1994 Giuseppe Attardi (attardi@omega)
* cmm.C (collect):
#ifdef STACK_GROWS_DOWNWARD
register unsigned *lim = (unsigned *)regs;
#else
register unsigned *lim = (unsigned *)regs + sizeof(regs);
#endif
Fri Oct 7 18:49:27 1994 Giuseppe Attardi (attardi@omega)
* cmm.C (collect):
while (cp < nextcp ||
inCurrentPage && cp < (nextcp = (cp <= freep && freep < nextPage) ?
freep : nextPage)) {
was: cp < freep
* cmm.C : restored working version with HEADER_SIZE = 1,
Revised DOUBLE_SIZE handling with HEADER_SIZE = 1.
Tue Oct 4 11:52:29 1994 Giuseppe Attardi (attardi@igor)
* HeapStack.C (scavenge): eliminated Heapstack::outside
Mon Oct 3 20:15:02 1994 Giuseppe Attardi (attardi@igor)
* HeapStack.C (collect): added
SET_OBJECTMAP(ToSpace->current());
SET_OBJECTMAP(container->current());
to ensure that we stop at the end of the container.
* cmm.C (allocate_page):
set pageGroup for the benefit of words() in non default heap
Fri Sep 30 16:20:00 1994 Giuseppe Attardi (attardi@igor)
* cmm.C (collect):
Added
if (freePages + unusedPages < usedPages)
expandHeap();
to ensure that expandHeap is not called within gcmove.
* cmm.C (CmmInitEarly):
#ifdef STACK_GROWS_DOWNWARD
#else
stackBottom = (unsigned)&i & ~STACKBOTTOM_ALIGNMENT_M1;
#endif
* HeapStack.C (scavenge):
Added cast for correct offset computation:
*ptr = (GcObject *)((char *)newObj + offset);
Moved #include <iostream.h> to HeapStack.C to avoid unnecessary
inclusion
Fri Sep 30 09:55:24 1994 Giuseppe Attardi (attardi@omega)
* HeapStack.C (scan):
modified so that it the argument heap is used in traversal
* HeapStack.H ():
insert -> copy
ContainerStack -> Container
WordsInUse -> usedWords
used -> usedBytes
entryNump -> entrypNum
BBStack::top -> BBStack::current
Thu Sep 29 14:27:17 1994 Giuseppe Attardi (attardi@omega)
* HeapStack.C:
HeapStack::scavenge() and BBStack::scavenge() use just MARKED(p)
(rather than p->forwarded()) to determine whether object is forwarded
added resetLiveMap to clear LiveMap at beginning of collection
* cmm.H:
SetForward() marks object
Tue Sep 20 20:37:17 1994 Giuseppe Attardi (attardi@neuron)
* Makefile.schema (HFILES): added machine,h,
new file containing processor parameters.
* cmm.C (alloc): added alignment support
On processors requiring double alignment, objects of size > 12
are aligned to double words boundaries.
A padding is added when a large object is adjacent to a small one.
Fri Sep 16 14:41:17 1994 Giuseppe Attardi (attardi@omega)
* cmm.C (collect):
Added STACK_GROWS_DOWNWARD for stack limit identification.
Thu Sep 15 10:30:59 1994 Giuseppe Attardi (attardi@omega)
* Makefile.schema (demo): eliminated LCFLAGS
Tue Sep 6 11:40:40 1994 Giuseppe Attardi (attardi@omega)
* cmm.H: added #define VirtualBase(A)
Fri Aug 12 13:18:56 1994 Giuseppe Attardi (attardi@igor)
* cmm.H (GcObject):
Can't use IS_OBJECT(++nextObj), since macro evaluates arg twice:
while (! IS_OBJECT(nextObj) && nextObj < lastObj)
nextObj++;
Wed Aug 10 14:36:28 1994 Giuseppe Attardi (attardi@omega)
* cmm.C (collect):
Bartlett discards current page after sweeping it.
We continue using it instead.
* cmm.C (collect):
With traversal of uncollected heap:
valla 207.5 1.30 2150400
Without:
valla 166.94 1.9 2146304
Thu Aug 4 17:49:50 1994 Giuseppe Attardi (attardi@posso)
* Gr13/gc/cmm/cmm.H (MARK):
MARK operates on pointer to object, not to header
Eliminated flag GCHEAPMAP
Thu Aug 4 07:47:19 1994 Giuseppe Attardi (attardi@omega)
* Gr13/groebner/groebner.C (ShowTime):
Display name of problem and results on a single line so that it
can be pasted in a result file.
* Gr13/gc/cmm/cmm.C:
Eliminated callbacks.
HEADER_CALLBACK -> HEADER_TAG
freespace_callback -> freespace_tag
* Gr12a/gc/cmm/cmm.H (CmmHeap):
Eliminated CmmHeap()
* Gr12a/configure.in:
bartlett -> default
heapzone -> heap
with- ->
* Gr12a/gc/cmm/cmm.C (new):
Eliminated heap->id();
Wed Aug 3 12:07:01 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.C (reserve_pages):
moved call to queue in gcmove
* Gr12a/gc/cmm/cmm.C:
Eliminated
#include <sys/time.h>
#include <sys/ioctl.h>
#include <machine/vmparam.h>
#include <machine/param.h> -> <sys/param.h>
Tue Aug 2 11:16:51 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.C:
Introduced flag STACK_GROWS_DOWNWARD
* Gr12a/gc/cmm/cmm.C (alloc):
Should be better that alloc would return (object+1), i.e. pointer
to data, rather than to header.
Mon Aug 1 08:52:27 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.H (CmmHeap):
alloc returns GCP instead of GcObject*
* Gr12a/gc/cmm/interface.H (IsAnObject): eliminated
* Gr12a/gc/cmm/cmm.H (scavenge):
We must distinguish membership among several heaps.
So we use the following:
OUSIDE_HEAP outside any heap
gcobject recognised GcObject (to which traverse
can be applied)
CmmHeap::outside outside this heap
OutsideHeap -> !gcobject
Sat Jul 30 11:25:15 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/ecl.doc:
/* Shifting by 32 is noop, so we must do it in two steps: */
MTword(p) |= (~0 << MTbit(p)) & ~(~0 << MTbit(q) << 1);
* Rename:
Bartlett -> DefaultHeap
reclaimer -> reclaim
zone() -> heap()
firstword -> ObjectMap
GetBeginning -> basePointer
makecurrentstableset -> stableset_to_current
gcallpercent -> gcFullGcThreshold
GCALLPERCENT -> GCFULLGCTHRESHOLD
MARKED -> MARKING
IS_MARKED -> MARKED
IsMarked -> Marked
* Gr12a/Makefile (Makefiles):
Added:
rm -f junk.c \
Fri Jul 29 11:43:20 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.C:
GcObject -> gcobject (according to what mentioned in header file)
* Eliminated _gcinit: initialization is done by _CmmInit() in
interface.H
* stackbase is aligned to segment boundary:
stackbase = (((unsigned)&i + NBPG - 1) / NBPG) * NBPG;
->
stackbase = ((unsigned)&i + STACKBOTTOM_ALIGNMENT_M1)
& ~STACKBOTTOM_ALIGNMENT_M1;
* Eliminated STACKINC
Thu Jul 28 21:37:14 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.C (expand_heap):
new_firstword[i + (firstHeapPage-new_firstHeapPage)*BITSxWORD] = firstword[i];
->
new_firstword[i] = firstword[i];
* Gr12a/greobner/Makefile.schema (bench):
Added dependencies:
H = BaseItem.H gdiv.H pair.H algebra.H groebner.H poly.H util.H ../util/List.H
groebner: $(OBJS) $(GC_LIBS)
groebner.o: groebner.C $(H)
Thu Jul 28 12:09:26 1994 Giuseppe Attardi (attardi@omega)
* Gr12a/gc/cmm/cmm.C (promote_page):
Eliminated guess_pointer_count, guess_pointers and GCGUESSPTRS
* Gr12a/gc/cmm/cmm.H:
Eliminated __GCVariable and gcvnew
Introduced new flag TRACE: only when defined logging and
tracing are performed.
* Gr12a/gc/cmm/cmm.C (gccollect):
Serious error in Bartlett code:
for (int i = 0; i < roots_count; i++) {
fp = roots[i].addr;
for (int j = roots[i].bytes; j > 0; j = j-STACKINC) {
promote_page((GCP)*fp);
}
fp++; <- should be inside previous for loop
}
Serious error in Bartlett code:
if (gcflags & GCHEAPROOTS || gcflags & GCHEAPLOG) {
if (gcflags & GCHEAPLOG)
fprintf(stderr, "non-GC heap roots:\n");
unsigned* heapend = (unsigned*)sbrk(0);
while (fp < heapend) {
^^ is not initialized
* Gr12a/gc/cmm/interface.H:
follow -> visit
* Gr12a/gc/cmm/cmm.C
(allocate_page):
bzero((char*)&firstword[firstpage*BITSxWORD],
BIT_BYTES*pages);
->
bzero((char*)&firstword[WORD_INDEX(firstpage*BYTESxPAGE)],
pages*(WORDSxPAGE/BITSxWORD));
(gccollect):
bzero((char*)&marked[firstHeapPage*BITSxWORD],
BIT_BYTES*heapspanpages);
->
bzero((char*)&marked[WORD_INDEX(firstHeapPage*BYTESxWORD)],
heapspanpages*(WORDSxPAGE/BITSxWORD));
* Global renaming:
BIT_WORDS -> BITSxWORD
WORDBYTES -> BYTESxWORD
PAGEBYTES -> BYTESxPAGE
PAGEWORDS -> WORDSxPAGE
HeapZone -> CmmHeap
* Gr12a/gc/cmm/cmm.C (GcObject):
firstword = firstword - WORD_INDEX(firstHeapPage*BYTESxPAGE);
marked = marked - WORD_INDEX(firstHeapPage*BYTESxPAGE);
corretto di nuovo GcObjectect -> GcObject
Wed Jul 27 21:44:23 1994 Giuseppe Attardi (attardi@posso)
* Gr12a/config.h.in:
BARTLETT -> __BARTLETT
BOEHM -> __BOEHM
* Gr12a/groebner/main.H: added #ifdef __CMM before
extern HeapZone *hs;
* Gr12a/gc/cmm/gcalloc.C (gccollect):
replaced gcregisters with setjmp/longjmp