From 0b9b08a28d5c103241b1bf53df8992fbcfce0ce7 Mon Sep 17 00:00:00 2001 From: Ian Price Date: Wed, 2 Aug 2017 21:03:11 +0100 Subject: [PATCH] Implement immediate version of vector primitives. * module/language/js-il/runtime.js (make-vector/immediate, vector-set!/immediate, vector-ref/immediate): New Primitives. --- module/language/js-il/runtime.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js index 6b33f5cb9..a140147f3 100644 --- a/module/language/js-il/runtime.js +++ b/module/language/js-il/runtime.js @@ -235,9 +235,21 @@ scheme.primitives["vector?"] = function (obj) { return coerce_bool(obj instanceof scheme.Vector); }; -scheme.primitives["make-vector/immediate"] = not_implemented_yet; -scheme.primitives["vector-set!/immediate"] = not_implemented_yet; -scheme.primitives["vector-ref/immediate"] = not_implemented_yet; +scheme.primitives["make-vector/immediate"] = function(length, init) { + var v = new scheme.Vector(); + + var temp = [] + for (var i=0; i < length; i++) { + temp[i] = init; + } + + v.array = temp; + + return v; +}; + +scheme.primitives["vector-set!/immediate"] = scheme.primitives["vector-set!"]; +scheme.primitives["vector-ref/immediate"] = scheme.primitives["vector-ref"]; // Bytevectors