From 309fc3dc13c2dac931ce7726a1a257f3d576988d Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sat, 2 Jan 2016 22:41:50 -0500 Subject: [PATCH] Added mutex functions --- scheme/cyclone/cgen.sld | 10 ++++++++++ scheme/cyclone/transforms.sld | 8 ++++++++ scheme/eval.sld | 3 +++ 3 files changed, 21 insertions(+) diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index c700f468..616c4a69 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -533,6 +533,10 @@ ((eq? p 'string-ref) "Cyc_string_ref") ((eq? p 'string-set!) "Cyc_string_set") ((eq? p 'substring) "Cyc_substring") + ((eq? p 'make-mutex) "Cyc_make_mutex") + ((eq? p 'mutex-lock) "Cyc_mutex_lock") + ((eq? p 'mutex-unlock) "Cyc_mutex_unlock") + ((eq? p 'mutex?) "Cyc_is_mutex") ((eq? p 'Cyc-installation-dir) "Cyc_installation_dir") ((eq? p 'command-line-arguments) "Cyc_command_line_arguments") ((eq? p 'Cyc-minor-gc) "Cyc_trigger_minor_gc") @@ -616,6 +620,9 @@ string-ref string-set! substring + make-mutex + mutex-lock + mutex-unlock Cyc-installation-dir command-line-arguments Cyc-minor-gc @@ -664,6 +671,9 @@ ((eq? p 'make-vector) "object") ((eq? p 'list->string) "object") ((eq? p 'list->vector) "object") + ((eq? p 'make-mutex) "object") + ((eq? p 'mutex-lock) "object") + ((eq? p 'mutex-unlock) "object") ((eq? p 'Cyc-installation-dir) "object") (else #f))) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index d8219d7c..5fc724dc 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -516,6 +516,10 @@ vector-length vector-ref vector-set! + make-mutex + mutex-lock! + mutex-unlock! + mutex? boolean? char? eof-object? @@ -579,6 +583,10 @@ string-set! string->symbol ;; Could be mistaken for an identifier make-vector + make-mutex + mutex-lock! + mutex-unlock! + mutex? ;; I/O must be done at runtime for side effects: Cyc-stdout Cyc-stdin diff --git a/scheme/eval.sld b/scheme/eval.sld index 9c3f64e3..e16442e7 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -223,6 +223,9 @@ (list 'vector-length vector-length) (list 'vector-ref vector-ref) (list 'vector-set! vector-set!) + (list 'make-mutex make-mutex) + (list 'mutex-lock! mutex-lock!) + (list 'mutex-unlock! mutex-unlock!) (list 'boolean? boolean?) (list 'char? char?) (list 'eof-object? eof-object?)