mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 00:32:24 +00:00
Update C bootstrap.
This commit is contained in:
parent
d5c3d2aae5
commit
51ae4c3241
186 changed files with 461 additions and 371 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* voc 2.00 [2016/11/27]. Bootstrapping compiler for address size 8, alignment 8. tsSF */
|
||||
/* voc 2.00 [2016/11/28]. Bootstrapping compiler for address size 8, alignment 8. tsSF */
|
||||
|
||||
#define SHORTINT INT8
|
||||
#define INTEGER INT16
|
||||
|
|
@ -68,7 +68,7 @@ static INT64 Heap_freeList[10];
|
|||
static INT64 Heap_bigBlocks;
|
||||
export INT64 Heap_allocated;
|
||||
static BOOLEAN Heap_firstTry;
|
||||
static INT64 Heap_heap, Heap_heapend;
|
||||
static INT64 Heap_heap, Heap_heapNegMin, Heap_heapNegMax, Heap_heapPosMin, Heap_heapPosMax;
|
||||
export INT64 Heap_heapsize;
|
||||
static Heap_FinNode Heap_fin;
|
||||
static INT16 Heap_lockdepth;
|
||||
|
|
@ -170,16 +170,33 @@ void Heap_INCREF (Heap_Module m)
|
|||
|
||||
static INT64 Heap_NewChunk (INT64 blksz)
|
||||
{
|
||||
INT64 chnk;
|
||||
INT64 chnk, blk, end;
|
||||
chnk = Heap_OSAllocate(blksz + 24);
|
||||
if (chnk != 0) {
|
||||
__PUT(chnk + 8, chnk + (24 + blksz), INT64);
|
||||
__PUT(chnk + 24, chnk + 32, INT64);
|
||||
__PUT(chnk + 32, blksz, INT64);
|
||||
__PUT(chnk + 40, -8, INT64);
|
||||
__PUT(chnk + 48, Heap_bigBlocks, INT64);
|
||||
Heap_bigBlocks = chnk + 24;
|
||||
blk = chnk + 24;
|
||||
end = blk + blksz;
|
||||
__PUT(chnk + 8, end, INT64);
|
||||
__PUT(blk, blk + 8, INT64);
|
||||
__PUT(blk + 8, blksz, INT64);
|
||||
__PUT(blk + 16, -8, INT64);
|
||||
__PUT(blk + 24, Heap_bigBlocks, INT64);
|
||||
Heap_bigBlocks = blk;
|
||||
Heap_heapsize += blksz;
|
||||
if (chnk > 0) {
|
||||
if (chnk < Heap_heapPosMin) {
|
||||
Heap_heapPosMin = blk + 8;
|
||||
}
|
||||
if (end > Heap_heapPosMax) {
|
||||
Heap_heapPosMax = end;
|
||||
}
|
||||
} else {
|
||||
if (chnk < Heap_heapNegMin) {
|
||||
Heap_heapNegMin = blk + 8;
|
||||
}
|
||||
if (end > Heap_heapNegMax) {
|
||||
Heap_heapNegMax = end;
|
||||
}
|
||||
}
|
||||
}
|
||||
return chnk;
|
||||
}
|
||||
|
|
@ -207,9 +224,6 @@ static void Heap_ExtendHeap (INT64 blksz)
|
|||
__PUT(chnk, next, INT64);
|
||||
__PUT(j, chnk, INT64);
|
||||
}
|
||||
if (next == 0) {
|
||||
__GET(chnk + 8, Heap_heapend, INT64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -592,7 +606,7 @@ static void Heap_MarkStack (INT64 n, INT64 *cand, ADDRESS cand__len)
|
|||
}
|
||||
while (sp != stack0) {
|
||||
__GET(sp, p, INT64);
|
||||
if ((p > Heap_heap && p < Heap_heapend)) {
|
||||
if ((((p > 0 && p >= Heap_heapPosMin)) && p < Heap_heapPosMax) || (((p < 0 && p >= Heap_heapNegMin)) && p < Heap_heapNegMax)) {
|
||||
if (nofcand == (INT64)cand__len) {
|
||||
Heap_HeapSort(nofcand, (void*)cand, cand__len);
|
||||
Heap_MarkCandidates(nofcand, (void*)cand, cand__len);
|
||||
|
|
@ -703,16 +717,20 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
|
|||
|
||||
void Heap_InitHeap (void)
|
||||
{
|
||||
Heap_heap = Heap_NewChunk(256000);
|
||||
__GET(Heap_heap + 8, Heap_heapend, INT64);
|
||||
__PUT(Heap_heap, 0, INT64);
|
||||
Heap_heap = 0;
|
||||
Heap_heapsize = 0;
|
||||
Heap_allocated = 0;
|
||||
Heap_lockdepth = 0;
|
||||
Heap_heapPosMin = 9223372036854775807;
|
||||
Heap_heapPosMax = 0;
|
||||
Heap_heapNegMin = 0;
|
||||
Heap_heapNegMax = (-9223372036854775807-1);
|
||||
Heap_heap = Heap_NewChunk(256000);
|
||||
__PUT(Heap_heap, 0, INT64);
|
||||
Heap_firstTry = 1;
|
||||
Heap_freeList[9] = 1;
|
||||
Heap_lockdepth = 0;
|
||||
Heap_FileCount = 0;
|
||||
Heap_modules = NIL;
|
||||
Heap_heapsize = 0;
|
||||
Heap_bigBlocks = 0;
|
||||
Heap_fin = NIL;
|
||||
Heap_interrupted = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue