Update bootstrap C source

This commit is contained in:
David Brown 2016-12-28 12:34:28 +00:00
parent 173c83f217
commit 6c9fdacce5
185 changed files with 230 additions and 220 deletions

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2016/12/22]. Bootstrapping compiler for address size 8, alignment 8. tsSF */
/* voc 2.1.0 [2016/12/28]. Bootstrapping compiler for address size 8, alignment 8. tsSF */
#define SHORTINT INT8
#define INTEGER INT16
@ -68,6 +68,7 @@ static INT64 Heap_freeList[10];
static INT64 Heap_bigBlocks;
export INT64 Heap_allocated;
static BOOLEAN Heap_firstTry;
static INT16 Heap_ldUnit;
export INT64 Heap_heap;
static INT64 Heap_heapMin, Heap_heapMax;
export INT64 Heap_heapsize;
@ -257,16 +258,16 @@ SYSTEM_PTR Heap_NEWREC (INT64 tag)
SYSTEM_PTR new;
Heap_Lock();
__GET(tag, blksz, INT64);
i0 = __ASHR(blksz, 5);
i0 = __LSH(blksz, -Heap_ldUnit, 64);
i = i0;
if (Heap_uLT(i, 9)) {
if (i < 9) {
adr = Heap_freeList[i];
while (adr == 0) {
i += 1;
adr = Heap_freeList[i];
}
}
if (Heap_uLT(i, 9)) {
if (i < 9) {
__GET(adr + 24, next, INT64);
Heap_freeList[i] = next;
if (i != i0) {
@ -289,7 +290,7 @@ SYSTEM_PTR Heap_NEWREC (INT64 tag)
if (Heap_firstTry) {
Heap_GC(1);
blksz += 32;
t = __ASHL(__DIV(Heap_allocated + blksz, 96), 7);
t = __LSHR(Heap_allocated + blksz, 2, 64) * 5;
if (Heap_uLT(Heap_heapsize, t)) {
Heap_ExtendHeap(t - Heap_heapsize);
}
@ -444,7 +445,7 @@ static void Heap_Scan (void)
__PUT(start, start + 8, INT64);
__PUT(start + 8, freesize, INT64);
__PUT(start + 16, -8, INT64);
i = __ASHR(freesize, 5);
i = __LSH(freesize, -Heap_ldUnit, 64);
freesize = 0;
if (Heap_uLT(i, 9)) {
__PUT(start + 24, Heap_freeList[i], INT64);
@ -470,7 +471,7 @@ static void Heap_Scan (void)
__PUT(start, start + 8, INT64);
__PUT(start + 8, freesize, INT64);
__PUT(start + 16, -8, INT64);
i = __ASHR(freesize, 5);
i = __LSH(freesize, -Heap_ldUnit, 64);
freesize = 0;
if (Heap_uLT(i, 9)) {
__PUT(start + 24, Heap_freeList[i], INT64);
@ -757,6 +758,7 @@ void Heap_InitHeap (void)
Heap_heapMin = -1;
Heap_heapMax = 0;
Heap_bigBlocks = 0;
Heap_ldUnit = 5;
Heap_heap = Heap_NewChunk(256000);
__PUT(Heap_heap, 0, INT64);
Heap_firstTry = 1;