From e8e57484bec820cce401241845fa3ca8197548f8 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 23 Jan 2020 22:43:46 -0500 Subject: [PATCH] Fixes for set-global in cps --- scheme/cyclone/cps-opt-memoize-pure-fncs.scm | 2 +- scheme/cyclone/primitives.sld | 12 ++++++++++-- scheme/cyclone/transforms.sld | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/scheme/cyclone/cps-opt-memoize-pure-fncs.scm b/scheme/cyclone/cps-opt-memoize-pure-fncs.scm index 797350b8..0610789f 100644 --- a/scheme/cyclone/cps-opt-memoize-pure-fncs.scm +++ b/scheme/cyclone/cps-opt-memoize-pure-fncs.scm @@ -191,7 +191,7 @@ (new-var (cdr var/new-var)) (body `((Cyc-seq - (set-global! ,var ,rsym) + (set-global-unsafe! ,var ,rsym) ,acc))) ) `(Cyc-memoize diff --git a/scheme/cyclone/primitives.sld b/scheme/cyclone/primitives.sld index 21dcee81..5aaa7cd3 100644 --- a/scheme/cyclone/primitives.sld +++ b/scheme/cyclone/primitives.sld @@ -67,6 +67,7 @@ Cyc-spawn-thread! Cyc-end-thread! set-global! + set-global-unsafe! set-cell! set-car! set-cdr! @@ -132,6 +133,7 @@ Cyc-fast-list-4 cell-get set-global! + set-global-unsafe! set-cell! cell eq? @@ -278,6 +280,7 @@ (Cyc-fast-list-4 4 4) (cell-get 1 1) (set-global! 2 2) + (set-global-unsafe! 2 2) (set-cell! 2 2) (cell 1 1) (eq? 2 2) @@ -688,7 +691,8 @@ ((eq? p 'cell) "set_cell_as_expr") ((eq? p 'cell-get) "car") ;; Unsafe as cell gets added by compiler ((eq? p 'set-cell!) "Cyc_set_cell") - ((eq? p 'set-global!) "global_set") + ((eq? p 'set-global!) "global_set2") + ((eq? p 'set-global-unsafe!) "global_set") (else (error "unhandled primitive: " p)))) @@ -788,7 +792,8 @@ set-car! set-cdr! procedure? - set-cell!)) + set-cell! + set-global!)) (memq p *udf-prims*))) ;; Determine if primitive receives a pointer to a local C variable @@ -873,6 +878,7 @@ ((eq? p 'set-car!) "object") ((eq? p 'set-cdr!) "object") ((eq? p 'vector-set!) "object") + ((eq? p 'set-global!) "object") ((eq? p 'Cyc-installation-dir) "object") ((eq? p 'Cyc-compilation-environment) "object") ;((memq p *udf-prims*) "object") @@ -906,6 +912,7 @@ set-car! set-cdr! vector-set! + set-global! ;Cyc-fast-plus ;Cyc-fast-sub ;Cyc-fast-mul @@ -947,6 +954,7 @@ set-car! set-cdr! vector-set! + set-global! Cyc-list Cyc-read-char Cyc-peek-char symbol->string list->string substring string-append string->number diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 39f509a6..68c26bbe 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -431,6 +431,7 @@ if (acc) { Cyc-current-exception-handler cell-get set-global! + set-global-unsafe! set-cell! cell cons