diff --git a/src/ikarus.boot b/src/ikarus.boot index 5e55053..e190b9e 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/libhash.ss b/src/libhash.ss index cc3b9ae..5272f0a 100644 --- a/src/libhash.ss +++ b/src/libhash.ss @@ -1,4 +1,8 @@ +(library (ikarus hash-tables) + (export) + (import (scheme)) + (let ([hash-rtd (make-record-type '"hash-table" '(hash-vec count tc))]) ;;; accessors (define get-vec (record-field-accessor hash-rtd 0)) @@ -231,3 +235,5 @@ (if (hash-table? h) (put-hash! h x v) (error 'put-hash-table! "~s is not a hash table" h))))) + +) diff --git a/src/syntax.ss b/src/syntax.ss index 4796411..2819c01 100644 --- a/src/syntax.ss +++ b/src/syntax.ss @@ -565,6 +565,8 @@ [member member-label (core-prim . member)] [$car $car-label (core-prim . $car)] [$cdr $cdr-label (core-prim . $cdr)] + [$set-car! $set-car!-label (core-prim . $set-car!)] + [$set-cdr! $set-cdr!-label (core-prim . $set-cdr!)] ;;; chars [char? char?-label (core-prim . char?)] [char=? char=?-label (core-prim . char=?)] @@ -597,6 +599,9 @@ [vector-length vector-length-label (core-prim . vector-length)] [list->vector list->vector-label (core-prim . list->vector)] [vector->list vector->list-label (core-prim . vector->list)] + [$vector-length $vector-length-label (core-prim . $vector-length)] + [$vector-ref $vector-ref-label (core-prim . $vector-ref)] + [$vector-set! $vector-set!-label (core-prim . $vector-set!)] ;;; iterators [for-each for-each-label (core-prim . for-each)] [map map-label (core-prim . map)] @@ -625,9 +630,15 @@ [$fxadd1 $fxadd1-label (core-prim . $fxadd1)] [$fx>= $fx>=-label (core-prim . $fx>=)] [$fx= $fx=-label (core-prim . $fx=)] + [$fxsll $fxsll-label (core-prim . $fxsll)] + [$fxsra $fxsra-label (core-prim . $fxsra)] + [$fxlogxor $fxlogxor-label (core-prim . $fxlogxor)] + [$fxlognot $fxlognot-label (core-prim . $fxlognot)] + [$fxlogand $fxlogand-label (core-prim . $fxlogand)] [$fx+ $fx+-label (core-prim . $fx+)] [$fx- $fx--label (core-prim . $fx-)] [$fx< $fx<-label (core-prim . $fx<)] + [$fx> $fx>-label (core-prim . $fx>)] ;;; flonum [string->flonum string->flonum-label (core-prim . string->flonum)] ;;; generic arithmetic @@ -711,14 +722,17 @@ [command-line-arguments command-line-arguments-label (core-prim . command-line-arguments)] ;;; record/mid-level [record? record?-label (core-prim . record?)] + [make-record-type make-record-type-label (core-prim . make-record-type)] [record-type-descriptor record-type-descriptor-label (core-prim . record-type-descriptor)] [record-type-field-names record-type-field-names-label (core-prim . record-type-field-names)] [record-type-symbol record-type-symbol-label (core-prim . record-type-symbol)] [record-type-name record-type-name-label (core-prim . record-type-name)] [record-name record-name-label (core-prim . record-name)] - [record-length record-length-label (core-prim . record-length)] - [record-printer record-printer-label (core-prim . record-printer)] - [record-ref record-ref-label (core-prim . record-ref)] + [record-constructor record-constructor-label (core-prim . record-constructor)] + [record-predicate record-predicate-labe (core-prim . record-predicate)] + [record-length record-length-label (core-prim . record-length)] + [record-printer record-printer-label (core-prim . record-printer)] + [record-ref record-ref-label (core-prim . record-ref)] [record-field-accessor record-field-accessor-label (core-prim . record-field-accessor)] [record-field-mutator record-field-mutator-label (core-prim . record-field-mutator)] ;;; records/low-level @@ -742,8 +756,18 @@ [code-freevars code-freevars-label (core-prim . code-freevars)] [code-ref code-ref-label (core-prim . code-ref)] [code-set! code-set!-label (core-prim . code-set!)] + ;;; tcbuckets + [$make-tcbucket $make-tcbucket-label (core-prim . $make-tcbucket)] + [$tcbucket-key $tcbucket-key-label (core-prim . $tcbucket-key)] + [$tcbucket-val $tcbucket-val-label (core-prim . $tcbucket-val)] + [$tcbucket-next $tcbucket-next-label (core-prim . $tcbucket-next)] + [$set-tcbucket-val! $set-tcbucket-val!-label (core-prim . $set-tcbucket-val!)] + [$set-tcbucket-next! $set-tcbucket-next!-label (core-prim . $set-tcbucket-next!)] + [$set-tcbucket-tconc! $set-tcbucket-tconc!-label (core-prim . $set-tcbucket-tconc!)] + ;;; misc [immediate? immediate?-label (core-prim . immediate?)] + [pointer-value pointer-value-label (core-prim . pointer-value)] [primitive-set! primitive-set!-label (core-prim . primitive-set!)] [primitive-ref primitive-ref-label (core-prim . primitive-ref)] [$forward-ptr? $forward-ptr?-label (core-prim . $forward-ptr?)]