https://github.com/Unipisa/CMM
Tip revision: bf76b38a16a1c7c2b9b54c40b3d6e1471fe79c7b authored by Giuseppe Attardi on 02 November 1995, 15:11:11 UTC
1.5 -
1.5 -
Tip revision: bf76b38
ChangeLog
Thu Nov 2 16:11:11 1995 Pietro Iglio <iglio@attardi.di.unipi.it>
* Added CmmObject::operator new[] and CmmObject::operator delete[].
Now CmmArray shouldn't be necessary.
Wed Nov 1 13:53:42 1995 Giuseppe Attardi <attardi@omega>
* cmm.h (Cmm): renamed mswHeap to theMSHeap
(GcObject): renamed fo CmmObject
(GcVarObject): renamed fo CmmVarObject
(GcArray): renamed fo CmmArray
Tue Oct 31 14:00:35 1995 Pietro Iglio <iglio@attardi>
* C++ programs don't need to call mswInit() any more.
Mon Oct 30 19:00:35 1995 Pietro Iglio <iglio@attardi>
* Added virtual method "CmmHeap::scanRoots(page)" that promote pages
for each allocated object inside "page". Such method has a
meaningful implementation for MarkAndSweep and UncollectedHeap heaps.
* Minor changes/cleanings.
Thu Oct 26 19:37:35 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (Cmm): added parameter newGcThreshold
Thu Oct 12 13:06:18 1995 Giuseppe Attardi <attardi@omega>
* cmm.h (bytesPerPageLg): eliminated
* cmm.cc: default traverse() is again empty:
it is not possible to call promotePage during traverse, since
all promotions must be done in first phase of collector.
Objects in such pages might have been already copied.
Tue Oct 3 11:43:54 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc: added default traverse() for GcObject
Sat Jun 10 10:47:08 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (collect):
verify_object -> verifyObject
verify_header -> verifyHeader
log_root -> logRoot
* cmm.h (WHEN_FLAGS): fixed
Thu Mar 23 18:58:17 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (CmmInit): removed memalign because it is not
available on Linux
Tue Mar 21 09:19:25 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (expandHeap): added parameter increment
Replaced new char with MEMALIGN, normally defined as memalign
* cmm.cc: allocatePage -> allocatePages
Fri Mar 3 12:17:21 1995 Giuseppe Attardi <attardi@omega>
* cmm.h (GCPtoPage): fixes for Alpha
* cmm.cc (basePointer): fixes for Alpha
Thu Mar 2 09:59:03 1995 Giuseppe Attardi <attardi@omega>
* tempheap.cc (scavenge): fixed MARKING with TempHeap
Tue Feb 28 09:52:56 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc: fixes for RS/6000:
added DefaultHeap::DefaultHeap() to initialize usedPages
added STACKBOTTOM
Wed Feb 22 12:51:01 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (collect): traverse Marked objects only in pages not yet scanned
* cmm.h (GcObject): Marked() -> isMarked()
Tue Feb 21 10:14:34 1995 Giuseppe Attardi <attardi@omega>
* cmm.cc (promotePage): fixed to work with MARKING
Sat Feb 18 13:12:05 1995 Giuseppe Attardi <attardi@omega>
* cmm.h: typedef long *GCP, for compatibility with
64-bit architecutres
Fri Feb 17 19:16:23 1995 Giuseppe Attardi <attardi@omega>
* machine.h: fixed DATASTART for SVR4 (Solaris2)
* cmm.cc (emptyStableSet): empties up to page.
This allows retaininig in stable set pages which have just been
copied during last collection which is not worth while to copy
again in the immediately following full collection.
Sat Feb 11 12:45:43 1995 Giuseppe Attardi <attardi@omega>
* tempheap.cc (collect): fixed printout when VERBOSE
Thu Jan 19 11:02:34 1995 Giuseppe Attardi <attardi@omega>
* cmm.h (GcArray): revised by Tito to use overloaded [].
Tue Jan 3 13:25:16 1995 Giuseppe Attardi <attardi@omega>
* cmm.h (CmmHeap):
changed transparent to opaque, so that default is 0 (false).
isTransparent() -> isOpaque()
setTransparent(bool) -> setOpaque(bool)
bool transparent -> bool opaque
Mon Dec 19 12:35:11 1994 Giuseppe Attardi <attardi@omega>
* cmm.h (Cmm): added
inline bool isTransparent()
inline void setTransparent(bool transparency)
private:
bool transparent = false;
Wed Dec 14 13:03:28 1994 Giuseppe Attardi <attardi@omega>
* cmm.cc (scavenge): fixed to visit only if base pointer is not
OUTSIDE_HEAP
Tue Dec 13 12:07:04 1994 Giuseppe Attardi <attardi@omega>
* cmm.*:
added support for SGI (contributed by Uttam M. Narsu" <narsu@styx.hks.com>)
* test*.cc:
updated to version 1.4
* doc/CMMguide.tex:
updated to version 1.4
Thu Dec 1 10:56:13 1994 Giuseppe Attardi <attardi@omega>
* tempheap.cc (alloc):
When HEADER_SIZE && defined(DOUBLE_ALIGN), top is kept at an odd value
by incrementing it if necessary after alloc() or copy().
* tempheap.h:
In class Container replaced variable bytes with size, which measures
the size in words.
Sun Nov 27 10:43:30 1994 Giuseppe Attardi <attardi@neuron>
* cmm.h: renamed
gcobject -> isTraced
Fri Nov 25 13:47:50 1994 Giuseppe Attardi <attardi@neuron>
* cmm.cc (expandHeap): restored from version 1.3
Mon Nov 21 17:16:19 1994 Giuseppe Attardi <attardi@omega>
* tempheap.cc: renamed
BBStack -> TempHeap
heapstack.cc -> tempheap.cc
heapstack.h -> tempheap.h
Eliminated HeapStack.
Sat Nov 19 12:35:36 1994 Giuseppe Attardi <attardi@neuron>
* cmm.cc:
firstp -> firstFreeWord
* heapstack.cc (Container::alloc, Container::copy, HeapStack::collect,
BBStack::collect):
added handling of case HEADER_SIZE && defined(DOUBLE_ALIGN)
Mon Nov 7 17:36:34 1994 Giuseppe Attardi <attardi@omega>
* machine.H: #undef STACK_GROWS_DOWNWARD for hp pa architecture
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