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")