Mon Nov 7 17:36:34 1994 Giuseppe Attardi * 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 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 #include #include #include -> 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