VERSION_MAJOR = 0
VERSION_MINOR = 30
-VERSION_POSTFIX =
+VERSION_POSTFIX = p1
VERSION_STRING=$(VERSION_MAJOR).$(VERSION_MINOR)$(VERSION_POSTFIX)
##################### generation of the excutable ##############################
# Enabling/disabling thread support
-USE_THREADS = YES
-#USE_THREADS = NO
+# USE_THREADS = YES
+USE_THREADS = NO
ifeq ($(USE_THREADS),YES)
THREAD_OBJ = threads/threads.a
#LFLAGS = -lm
CC = cc
-#CFLAGS = -g3 -ieee $(THREAD_CFLAGS)
-CFLAGS = -O3 -ieee $(THREAD_CFLAGS)
+CFLAGS = -g3 -ieee $(THREAD_CFLAGS)
+#CFLAGS = -O3 -ieee $(THREAD_CFLAGS)
LFLAGS = -lm
# IRIX 6.5 MIPSPro 7.2.1
cd toolbox; $(MAKE) clean
cd threads; $(MAKE) clean
cd mm; $(MAKE) clean
+
tar:
rm -f cacao.tgz cacao.tar
tar -cvf cacao.tar Makefile */Makefile README COPYRIGHT tst/*.java \
dist:
rm -rf cacao-$(VERSION_STRING).tar.gz cacao-$(VERSION_STRING);
+# tar -cf cacao-$(VERSION_STRING).tar -T FILES;
( mkdir cacao-$(VERSION_STRING); \
-# tar -cf cacao-$(VERSION_STRING).tar -T FILES; \
tar -cvf cacao-$(VERSION_STRING).tar Makefile */Makefile README COPYRIGHT \
tst/*.java doc/*.doc html/*.html *.[ch] comp/*.[ch] ncomp/*.[ch] \
alpha/*.doc alpha/*.[ch] nat/*.[ch] toolbox/*.[ch] threads/*.[ch]; \
\
java.util.Properties \
java.util.Date
-
-
if ( isbitclear(startbits, blocknum) ) return;
if ( isbitset(markbits, blocknum) ) return;
+ fprintf(stderr, "mark: marking object at 0x%lx\n", obj);
setbit (markbits, blocknum);
if ( isbitclear(referencebits, blocknum) ) return;
#else
void **top_of_stack = &dummy;
+ fprintf(stderr, "marking stack\n");
+
if (top_of_stack > bottom_of_stack)
markreferences(bottom_of_stack, top_of_stack);
else
/* Alle vom Stack referenzierten Objekte markieren */
asm_dumpregistersandcall (markstack);
+ fprintf(stderr, "marking references\n");
/* Alle von globalen Variablen erreichbaren Objekte markieren */
p = chain_first (allglobalreferences);
while (p) {
/* Ende des freien Bereiches suchen */
freeend = findnextsetbit (markbits, topofheap, freestart+1);
+#if 0
+ if (freeend==topofheap) {
+ topofheap = freestart;
+ heapfreemem += (freeend-freestart);
+ goto freememfinished;
+ } else {
+ fprintf(stderr, "%lx -- %lx\n", heap + freestart, heap + freeend);
+#endif
+
/* Freien Bereich in Freispeicherliste einh"angen */
- memlist_addrange (freestart, freeend-freestart);
+ memlist_addrange (freestart, freeend-freestart);
/* Menge des freien Speichers mitnotieren */
- heapfreemem += (freeend-freestart);
+ heapfreemem += (freeend-freestart);
+#if 0
}
+#endif
+ }
freememfinished:
u4 freestart,freelength;
u4 length = ALIGN(bytelength, BLOCKSIZE) / BLOCKSIZE;
+ // fprintf(stderr, "heap_allocate: 0x%lx (%ld) requested, 0x%lx (%ld) aligned\n", bytelength, bytelength, length * BLOCKSIZE, length * BLOCKSIZE);
+
+ // heap_docollect();
+
intsDisable(); /* schani */
memlist_getsuitable (&freestart, &freelength, length);