diff options
author | Christine Lemmer-Webber <cwebber@dustycloud.org> | 2021-10-10 20:59:04 -0400 |
---|---|---|
committer | Christine Lemmer-Webber <cwebber@dustycloud.org> | 2021-10-10 20:59:04 -0400 |
commit | 204cb986469b2751a3c3347a34a8013c1a0b6954 (patch) | |
tree | e91534db67add400e5213ec3becb6ab48544b470 /libguile/frames.c | |
parent | b03b359b5b16c040c485a565f3ce92481ea43f41 (diff) | |
parent | e60469c8b6936575c079faaffa40a340e1d49f3c (diff) | |
download | guile-204cb986469b2751a3c3347a34a8013c1a0b6954.tar.gz |
Merge branch 'main' into compile-to-js-merge
Diffstat (limited to 'libguile/frames.c')
-rw-r--r-- | libguile/frames.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libguile/frames.c b/libguile/frames.c index 0bb40579c..b2711df5c 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -1,4 +1,4 @@ -/* Copyright 2001,2009-2015,2018 +/* Copyright 2001,2009-2015,2018,2021 Free Software Foundation, Inc. This file is part of Guile. @@ -231,7 +231,8 @@ enum stack_item_representation STACK_ITEM_SCM = 0, STACK_ITEM_F64 = 1, STACK_ITEM_U64 = 2, - STACK_ITEM_S64 = 3 + STACK_ITEM_S64 = 3, + STACK_ITEM_PTR = 4 }; static enum stack_item_representation @@ -245,6 +246,8 @@ scm_to_stack_item_representation (SCM x, const char *subr, int pos) return STACK_ITEM_U64; if (scm_is_eq (x, scm_from_latin1_symbol ("s64"))) return STACK_ITEM_S64; + if (scm_is_eq (x, scm_from_latin1_symbol ("ptr"))) + return STACK_ITEM_PTR; scm_wrong_type_arg (subr, pos, x); return 0; /* Not reached. */ @@ -279,6 +282,8 @@ scm_frame_local_ref (SCM frame, SCM index, SCM representation) return scm_from_uint64 (item->as_u64); case STACK_ITEM_S64: return scm_from_int64 (item->as_s64); + case STACK_ITEM_PTR: + return scm_from_uintptr_t (item->as_uint); default: abort(); } @@ -321,6 +326,8 @@ scm_frame_local_set_x (SCM frame, SCM index, SCM val, SCM representation) case STACK_ITEM_S64: item->as_s64 = scm_to_int64 (val); break; + case STACK_ITEM_PTR: + item->as_uint = scm_to_uintptr_t (val); default: abort(); } |