From fc87033bf0fdc5530842cac8942dd1feaefcfd2a Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 28 Oct 2015 17:47:48 +0000 Subject: [PATCH] Stack slots can hold a double * libguile/frames.h (union scm_vm_stack_element): Add double member. * libguile/frames.c (scm_frame_local_ref, scm_frame_local_set_x): Wire up f64 support. --- libguile/frames.c | 5 +++-- libguile/frames.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libguile/frames.c b/libguile/frames.c index d522e762a..48e963a0f 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -262,7 +262,7 @@ SCM_DEFINE (scm_frame_local_ref, "frame-local-ref", 3, 0, 0, case STACK_ITEM_SCM: return item->as_scm; case STACK_ITEM_F64: - /* return item->as_f64; */ + return scm_from_double (item->as_f64); default: abort(); } @@ -298,7 +298,8 @@ SCM_DEFINE (scm_frame_local_set_x, "frame-local-set!", 4, 0, 0, item->as_scm = val; break; case STACK_ITEM_F64: - /* item->as_f64 = scm_to_double (val); */ + item->as_f64 = scm_to_double (val); + break; default: abort(); } diff --git a/libguile/frames.h b/libguile/frames.h index c965bbfb7..bb402ae71 100644 --- a/libguile/frames.h +++ b/libguile/frames.h @@ -91,6 +91,7 @@ union scm_vm_stack_element scm_t_uintptr as_uint; scm_t_uint32 *as_ip; SCM as_scm; + double as_f64; /* For GC purposes. */ void *as_ptr;