From c30bf50b5dc290a98a481e34e1db0b69ac9cef4c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 26 Nov 2019 16:11:57 -0500 Subject: [PATCH] Fix unsafe car/cdr --- include/cyclone/runtime.h | 4 ++++ scheme/cyclone/primitives.sld | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index e8752f55..2d851eed 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -826,6 +826,10 @@ static inline object Cyc_cdr(void *data, object lis) Cyc_check_pair(data, lis); return cdr(lis); } +// Unsafe car/cdr +#define Cyc_car_unsafe(d, lis) car(lis) +#define Cyc_cdr_unsafe(d, lis) cdr(lis) + list malloc_make_pair(object, object); object Cyc_set_cell(void *, object l, object val); object Cyc_set_car(void *, object l, object val); diff --git a/scheme/cyclone/primitives.sld b/scheme/cyclone/primitives.sld index ecaa0244..3a8facdf 100644 --- a/scheme/cyclone/primitives.sld +++ b/scheme/cyclone/primitives.sld @@ -575,11 +575,11 @@ ((eq? p 'Cyc-unsafe-cdr) "cdr") ((eq? p 'car) (if emit-unsafe - "car" + "Cyc_car_unsafe" "Cyc_car")) ((eq? p 'cdr) (if emit-unsafe - "cdr" + "Cyc_cdr_unsafe" "Cyc_cdr")) ((eq? p 'caar) "Cyc_caar") ((eq? p 'cadr) "Cyc_cadr")