mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
Debug prints added
This commit is contained in:
parent
c4ffeb2fbf
commit
73edd5603d
3 changed files with 22 additions and 11 deletions
17
runtime/gc.c
17
runtime/gc.c
|
|
@ -52,18 +52,21 @@ void *alloc (size_t size) {
|
|||
#ifdef DEBUG_VERSION
|
||||
++cur_id;
|
||||
#endif
|
||||
size_t bytes_sz = size;
|
||||
size_t obj_size = size;
|
||||
size = BYTES_TO_WORDS(size);
|
||||
size_t padding = size * sizeof(size_t) - obj_size;
|
||||
#if defined(DEBUG_VERSION) && defined(DEBUG_PRINT)
|
||||
fprintf(stderr, "allocation of size %zu words (%zu bytes): ", size, bytes_sz);
|
||||
#endif
|
||||
void *p = gc_alloc_on_existing_heap(size);
|
||||
if (!p) {
|
||||
fprintf(stderr, "Garbage collection is not implemented yet.\n");
|
||||
exit(149);
|
||||
// fprintf(stderr, "Garbage collection is not implemented yet.\n");
|
||||
// exit(149);
|
||||
// not enough place in the heap, need to perform GC cycle
|
||||
// p = gc_alloc(size);
|
||||
p = gc_alloc(size);
|
||||
}
|
||||
printf("Object allocated: content [%p, %p) padding [%p, %p)\n", p, p + obj_size, p + obj_size, p + size * sizeof(size_t));
|
||||
fflush(stdout);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
|
@ -185,6 +188,8 @@ void *gc_alloc_on_existing_heap (size_t size) {
|
|||
}
|
||||
|
||||
void *gc_alloc (size_t size) {
|
||||
printf("Reallocation!\n");
|
||||
fflush(stdout);
|
||||
#if defined(DEBUG_VERSION) && defined(DEBUG_PRINT)
|
||||
fprintf(stderr, "===============================GC cycle has started\n");
|
||||
#endif
|
||||
|
|
@ -880,6 +885,7 @@ void *alloc_string (auint len) {
|
|||
obj->id = cur_id;
|
||||
#endif
|
||||
obj->forward_address = 0;
|
||||
printf("Allocated string\n");
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
|
@ -893,6 +899,7 @@ void *alloc_array (auint len) {
|
|||
obj->id = cur_id;
|
||||
#endif
|
||||
obj->forward_address = 0;
|
||||
printf("Allocated array\n");
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
|
@ -907,6 +914,7 @@ void *alloc_sexp (auint members) {
|
|||
#endif
|
||||
obj->forward_address = 0;
|
||||
obj->tag = 0;
|
||||
printf("Allocated sexp\n");
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
|
@ -921,5 +929,6 @@ void *alloc_closure (auint captured) {
|
|||
obj->id = cur_id;
|
||||
#endif
|
||||
obj->forward_address = 0;
|
||||
printf("Allocated closure\n");
|
||||
return obj;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,9 @@
|
|||
// # define MINIMUM_HEAP_CAPACITY (8)
|
||||
// #else
|
||||
// # define MINIMUM_HEAP_CAPACITY (1 << 2)
|
||||
#define MINIMUM_HEAP_CAPACITY (1 << 30)
|
||||
//#define MINIMUM_HEAP_CAPACITY (1 << 30)
|
||||
//#define MINIMUM_HEAP_CAPACITY (30)
|
||||
#define MINIMUM_HEAP_CAPACITY (30)
|
||||
// #endif
|
||||
|
||||
#include <stdbool.h>
|
||||
|
|
|
|||
|
|
@ -786,9 +786,9 @@ extern void *Bclosure (aint bn, void *entry, ...) {
|
|||
va_list args;
|
||||
aint i, ai;
|
||||
#ifdef X86_64
|
||||
register size_t *stack_frame asm("ebp");
|
||||
#else
|
||||
register size_t *stack_frame asm("rbp");
|
||||
#else
|
||||
register size_t *stack_frame asm("ebp");
|
||||
#endif
|
||||
size_t *argss;
|
||||
data *r;
|
||||
|
|
@ -877,13 +877,13 @@ extern void *Bsexp (aint bn, ...) {
|
|||
return (void *)((data *)r)->contents;
|
||||
}
|
||||
|
||||
extern long Btag (void *d, aint t, aint n) {
|
||||
extern aint Btag (void *d, aint t, aint n) {
|
||||
data *r;
|
||||
|
||||
if (UNBOXED(d)) return BOX(0);
|
||||
else {
|
||||
r = TO_DATA(d);
|
||||
return (long)BOX(TAG(r->data_header) == SEXP_TAG && TO_SEXP(d)->tag == UNBOX(t)
|
||||
return (aint)BOX(TAG(r->data_header) == SEXP_TAG && TO_SEXP(d)->tag == UNBOX(t)
|
||||
&& LEN(r->data_header) == UNBOX(n));
|
||||
}
|
||||
}
|
||||
|
|
@ -1255,9 +1255,9 @@ extern void *Lhd (void *v) { return Belem(v, BOX(0)); }
|
|||
extern void *Ltl (void *v) { return Belem(v, BOX(1)); }
|
||||
|
||||
/* Lread is an implementation of the "read" construct */
|
||||
extern long Lread () {
|
||||
extern aint Lread () {
|
||||
// int result = BOX(0);
|
||||
int64_t result = BOX(0);
|
||||
aint result = BOX(0);
|
||||
|
||||
printf("> ");
|
||||
fflush(stdout);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue