From b02d1b08d7d7f0eaafdd9dcfc3de3a139b25492e Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 26 Aug 2019 10:19:24 +0200 Subject: Compiler allocates boxed flonums in unmarked space This fixes a bug whereby the compiler would sometimes allocate floats in marked space. * libguile/gc-inline.h (scm_inline_gc_malloc_pointerless_words): New internal helper. * libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): * libguile/intrinsics.c (allocate_pointerless_words): (allocate_pointerless_words_with_freelist): New intrinsics. * libguile/jit.c (compile_allocate_pointerless_words): (compile_allocate_pointerless_words_immediate): New compilers. * libguile/vm-engine.c (allocate_pointerless_words) (allocate_pointerless_words_immediate): New opcodes. * module/language/cps/compile-bytecode.scm (compile-function): * module/language/cps/effects-analysis.scm (param): * module/language/cps/reify-primitives.scm (reify-primitives): * module/language/cps/specialize-primcalls.scm (specialize-primcalls): * module/language/cps/types.scm (allocate-words): (allocate-words/immediate): * module/system/vm/assembler.scm (system): Add support for the new opcodes. --- libguile/gc-inline.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'libguile/gc-inline.h') diff --git a/libguile/gc-inline.h b/libguile/gc-inline.h index a1932d65a..cb55aa86a 100644 --- a/libguile/gc-inline.h +++ b/libguile/gc-inline.h @@ -117,6 +117,12 @@ scm_inline_gc_malloc_words (scm_thread *thread, size_t words) return scm_inline_gc_malloc (thread, words * sizeof (void *)); } +static inline void * +scm_inline_gc_malloc_pointerless_words (scm_thread *thread, size_t words) +{ + return scm_inline_gc_malloc_pointerless (thread, words * sizeof (void *)); +} + static inline SCM scm_inline_cell (scm_thread *thread, scm_t_bits car, scm_t_bits cdr) { -- cgit v1.2.3