From 729e61cfaedecb5350eee680deda9a10236bc555 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Tue, 10 Jan 2012 10:51:13 -0500 Subject: [PATCH] unsafe-car, unsafe-cdr --- compiler/kernel-primitives.rkt | 3 +++ js-assembler/runtime-src/baselib-primitives.js | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/compiler/kernel-primitives.rkt b/compiler/kernel-primitives.rkt index 357f8d3..ac13bab 100644 --- a/compiler/kernel-primitives.rkt +++ b/compiler/kernel-primitives.rkt @@ -115,6 +115,9 @@ 'hash-values 'string-copy + + 'unsafe-car + 'unsafe-cdr )) (define-predicate KernelPrimitiveName? KernelPrimitiveName) diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index 16a661c..db35943 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -587,6 +587,13 @@ return baselib.lists.listRef(lst, baselib.numbers.toFixnum(index)); }); + installPrimitiveProcedure( + 'unsafe-car', + 1, + function (M) { + var firstArg = checkAny(M, 'unsafe-car', 0); + return firstArg.first; + }); installPrimitiveProcedure( 'car', @@ -610,6 +617,15 @@ var firstArg = checkCadrPair(M, 'cadr', 0); return firstArg.first.rest; }); + + installPrimitiveProcedure( + 'unsafe-cdr', + 1, + function (M) { + var firstArg = checkAny(M, 'unsafe-cdr', 0); + return firstArg.rest; + }); + installPrimitiveProcedure( 'cdr', 1,