From b4ca192000826c91092fe1024192780ab8948cf4 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 24 Mar 2016 01:22:42 -0400 Subject: [PATCH] WIP --- bytevector-tests.scm | 3 +++ runtime.c | 2 +- scheme/cyclone/cgen.sld | 5 +++++ scheme/cyclone/transforms.sld | 2 +- scheme/eval.sld | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bytevector-tests.scm b/bytevector-tests.scm index 065cc282..c1e7bffb 100644 --- a/bytevector-tests.scm +++ b/bytevector-tests.scm @@ -18,3 +18,6 @@ bv) ) ;=⇒ #u8(1 3 3 4) +(define a #u8(1 2 3 4 5)) +(write (Cyc-bytevector-copy a 2 4)) ; =⇒ #u8(3 4) + diff --git a/runtime.c b/runtime.c index f4c6ca9e..498d5a81 100644 --- a/runtime.c +++ b/runtime.c @@ -1490,7 +1490,7 @@ object Cyc_bytevector_copy(void *data, object cont, object bv, object start, obj Cyc_rt_raise2(data, "bytevector-copy - invalid end", end); } - len = e - s + 1; + len = e - s; result.len = len; result.data = alloca(sizeof(char) * len); memcpy(result.data, &(((bytevector)bv)->data)[s], len); diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 0021b054..a3c1ac9a 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -574,6 +574,7 @@ ((eq? p 'bytevector-length) "Cyc_bytevector_length") ((eq? p 'bytevector) "Cyc_bytevector") ((eq? p 'bytevector-append) "Cyc_bytevector_append") + ((eq? p 'Cyc-bytevector-copy) "Cyc_bytevector_copy") ((eq? p 'bytevector-u8-ref) "Cyc_bytevector_u8_ref") ((eq? p 'bytevector-u8-set!) "Cyc_bytevector_u8_set") ((eq? p 'make-vector) "Cyc_make_vector") @@ -662,6 +663,7 @@ make-bytevector bytevector-length bytevector-append + Cyc-bytevector-copy bytevector bytevector-u8-ref bytevector-u8-set! @@ -719,6 +721,7 @@ ((eq? p 'make-bytevector) "object") ((eq? p 'bytevector) "object") ((eq? p 'bytevector-append) "object") + ((eq? p 'Cyc-bytevector-copy) "object") ((eq? p 'make-vector) "object") ((eq? p 'list->string) "object") ((eq? p 'list->vector) "object") @@ -740,6 +743,7 @@ make-bytevector bytevector bytevector-append + Cyc-bytevector-copy make-vector list->vector symbol->string number->string substring @@ -758,6 +762,7 @@ symbol->string list->string substring string-append string->number make-bytevector bytevector-append + Cyc-bytevector-copy bytevector bytevector-u8-ref bytevector-u8-set! diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 1c1fa1fa..e3af73c1 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -517,7 +517,7 @@ bytevector-length bytevector bytevector-append - bytevector-copy + Cyc-bytevector-copy bytevector-u8-ref bytevector-u8-set! bytevector? diff --git a/scheme/eval.sld b/scheme/eval.sld index 2c0a53a4..f187ce1a 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -247,6 +247,7 @@ (list 'make-bytevector make-bytevector) (list 'bytevector-length bytevector-length) (list 'bytevector-append bytevector-append) + (list 'Cyc-bytevector-copy Cyc-bytevector-copy) (list 'bytevector bytevector) (list 'bytevector-u8-ref bytevector-u8-ref) (list 'bytevector-u8-set! bytevector-u8-set!)