https://github.com/Unipisa/CMM
Raw File
Tip revision: 0e186db83a043dcfe9c666dd4c90f9e8d1b9234e authored by Giuseppe Attardi on 27 October 1994, 11:26:20 UTC
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

back to top