/** * payloads/integer.c * * An integer. Doctrine here is that we are not implementing bignum arithmetic in * the bootstrap layer; an integer is, for now, just a 64 bit integer. * * (c) 2026 Simon Brooke * Licensed under GPL version 2.0, or, at your option, any later version. */ #include #include "memory/node.h" #include "memory/pointer.h" #include "memory/pso.h" #include "memory/pso2.h" #include "memory/pso4.h" #include "memory/tags.h" #include "debug.h" /** * Allocate an integer cell representing this `value` and return a pso_pointer to it. * @param value an integer value; */ struct pso_pointer make_integer( struct pso_pointer frame_pointer, int64_t value ) { struct pso_pointer result = nil; debug_print( L"Entering make_integer\n", DEBUG_ALLOC, 0 ); result = allocate( frame_pointer, INTEGERTAG, 2 ); struct pso2 *cell = pointer_to_object( result ); cell->payload.integer.value = value; debug_printf( DEBUG_ALLOC, 0, L"\nmake_integer returning %ld\n", cell->payload.integer.value ); return result; } struct pso_pointer acquire_integer( struct pso_pointer frame_pointer, int64_t value ) { return make_integer( frame_pointer, value ); }