From 4006ca560d8845651ea7bb8edf5c5fb90d7458f4 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 14 Apr 2020 18:57:36 -0400 Subject: [PATCH] Proof-of-concept for Cyc-foreign-value --- scheme/cyclone/cgen.sld | 7 +++++++ scheme/cyclone/primitives.sld | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 19c73b62..3c3af3df 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -992,6 +992,13 @@ "boolean_f") args)) + ((eq? 'Cyc-foreign-value fun) + ;; TODO: take type into account, do not hardcode int + (c-code/vars + (string-append + "obj_int2obj(" (car args) ")") + (list))) + ((prim? fun) (let* ((c-fun (c-compile-prim fun cont ast-id)) diff --git a/scheme/cyclone/primitives.sld b/scheme/cyclone/primitives.sld index 7ff22701..5dd4ec34 100644 --- a/scheme/cyclone/primitives.sld +++ b/scheme/cyclone/primitives.sld @@ -90,6 +90,7 @@ Cyc-list Cyc-if Cyc-foreign-code + Cyc-foreign-value Cyc-fast-plus Cyc-fast-sub Cyc-fast-mul @@ -240,6 +241,7 @@ (Cyc-stderr 0 0) (Cyc-if 3 3) (Cyc-foreign-code 1 #f) + (Cyc-foreign-value 2 2) (Cyc-fast-plus 2 2) (Cyc-fast-sub 2 2) (Cyc-fast-mul 2 2) @@ -531,7 +533,8 @@ ((eq? p 'Cyc-stderr) "Cyc_stderr") ((eq? p 'Cyc-list) "Cyc_list") ((eq? p 'Cyc-if) "Cyc_if") - ((eq? p 'Cyc-foreign-code) "TODO") + ((eq? p 'Cyc-foreign-code) "UNDEF") + ((eq? p 'Cyc-foreign-value) "UNDEF") ((eq? p 'Cyc-fast-plus) "Cyc_fast_sum") ((eq? p 'Cyc-fast-sub) "Cyc_fast_sub") ((eq? p 'Cyc-fast-mul) "Cyc_fast_mul") @@ -705,6 +708,7 @@ (memq p '( Cyc-list Cyc-foreign-code + Cyc-foreign-value Cyc-fast-plus Cyc-fast-sub Cyc-fast-mul