diff --git a/src/c/environment/environment.c b/src/c/environment/environment.c index 28c453f..1c8ad1b 100644 --- a/src/c/environment/environment.c +++ b/src/c/environment/environment.c @@ -9,6 +9,8 @@ #include +#include "debug.h" + #include "memory/memory.h" #include "memory/node.h" #include "memory/pointer.h" @@ -39,6 +41,7 @@ struct pso_pointer initialise_environment( uint32_t node ) { struct pso_pointer result = initialise_memory( node ); if ( !exceptionp( result ) ) { + debug_print( L"Initialising `nil`... ", DEBUG_BOOTSTRAP, 0); struct pso_pointer n = allocate( NILTAG, 2 ); if ( ( n.page == 0 ) && ( n.offset == 0 ) ) { @@ -47,14 +50,17 @@ struct pso_pointer initialise_environment( uint32_t node ) { object->payload.cons.cdr = nil; nil = n; + debug_print( L"success\n", DEBUG_BOOTSTRAP, 0); } else { result = make_exception( c_string_to_lisp_string ( L"Unexpected cell while allocating `nil`." ), nil, n ); + debug_print( L"fail\n", DEBUG_BOOTSTRAP, 0); } } if ( !exceptionp( result ) ) { + debug_print( L"Initialising `t`... ", DEBUG_BOOTSTRAP, 0); struct pso_pointer n = allocate( TRUETAG, 2 ); if ( ( n.page == 0 ) && ( n.offset == 1 ) ) { @@ -63,11 +69,13 @@ struct pso_pointer initialise_environment( uint32_t node ) { object->payload.cons.cdr = t; t = n; + debug_print( L"success\n", DEBUG_BOOTSTRAP, 0); } else { result = make_exception( c_string_to_lisp_string ( L"Unexpected cell while allocating `t`." ), nil, n ); + debug_print( L"fail\n", DEBUG_BOOTSTRAP, 0); } } if ( !exceptionp( result ) ) { diff --git a/src/c/memory/memory.c b/src/c/memory/memory.c index 6d48334..fa49bf1 100644 --- a/src/c/memory/memory.c +++ b/src/c/memory/memory.c @@ -10,6 +10,8 @@ #include #include +#include "debug.h" + #include "memory/memory.h" #include "memory/node.h" #include "memory/pointer.h" @@ -47,12 +49,15 @@ struct pso_pointer initialise_memory( uint32_t node ) { if ( memory_initialised ) { result = make_exception( c_string_to_lisp_string - ( L"Attenpt to reinitialise environment" ), nil, + ( L"Attenpt to reinitialise memory." ), nil, nil ); } else { for ( uint8_t i = 0; i <= MAX_SIZE_CLASS; i++ ) { freelists[i] = nil; } +#ifdef DEBUG + debug_print(L"Memory initialised", DEBUG_BOOTSTRAP, 0); +#endif memory_initialised = true; } diff --git a/src/c/memory/page.c b/src/c/memory/page.c index 60771b4..74ae5c7 100644 --- a/src/c/memory/page.c +++ b/src/c/memory/page.c @@ -68,6 +68,10 @@ struct pso_pointer initialise_page( union page *page_addr, uint16_t page_index, int obj_bytes = obj_size * sizeof( uint64_t ); int objs_in_page = PAGE_BYTES / obj_bytes; + debug_printf(DEBUG_ALLOC, 0, + L"Initialising page %d for objects of size class %d...", + page_index, size_class); + // we do this backwards (i--) so that object {0, 0, 0} will be first on the // freelist when the first page is initiated, so we can grab that one for // `nil` and the next on for `t`. @@ -86,6 +90,8 @@ struct pso_pointer initialise_page( union page *page_addr, uint16_t page_index, ( uint16_t ) ( i * obj_size ) ); } + debug_print( L"page allocated.\n", DEBUG_ALLOC, 0); + return result; } diff --git a/src/c/memory/pso.c b/src/c/memory/pso.c index 7409e51..16ded6e 100644 --- a/src/c/memory/pso.c +++ b/src/c/memory/pso.c @@ -18,6 +18,7 @@ #include #include "debug.h" + #include "memory/destroy.h" #include "memory/header.h" #include "memory/memory.h" @@ -39,6 +40,10 @@ struct pso_pointer allocate( char *tag, uint8_t size_class ) { struct pso_pointer result = nil; +#ifdef DEBUG + debug_printf( DEBUG_ALLOC, 0, L"Allocating object of size class %d with tag `%s`... ", size_class, tag); +#endif + if ( size_class <= MAX_SIZE_CLASS ) { if ( nilp( freelists[size_class] ) ) { result = allocate_page( size_class ); @@ -66,6 +71,10 @@ struct pso_pointer allocate( char *tag, uint8_t size_class ) { } } // TODO: else throw exception +#ifdef DEBUG + debug_print(exceptionp(result)? L"fail\n" : L"success\n", DEBUG_ALLOC, 0); +#endif + return result; }