Add signatures
field to primref record
primref.ss, primvars.ss original commit: 0d044806bd5c645bf2c4caf701c2615d6150f8bf
This commit is contained in:
parent
7f308c1006
commit
e37833b603
|
@ -14,14 +14,14 @@
|
||||||
;;; limitations under the License.
|
;;; limitations under the License.
|
||||||
|
|
||||||
(module (Lsrc Lsrc? Ltype Ltype? unparse-Ltype unparse-Lsrc count-Lsrc
|
(module (Lsrc Lsrc? Ltype Ltype? unparse-Ltype unparse-Lsrc count-Lsrc
|
||||||
lookup-primref primref? primref-name primref-level primref-flags primref-arity
|
lookup-primref primref? primref-name primref-level primref-flags primref-arity primref-signatures
|
||||||
sorry! make-preinfo preinfo? preinfo-lambda? preinfo-sexpr preinfo-sexpr-set! preinfo-src
|
sorry! make-preinfo preinfo? preinfo-lambda? preinfo-sexpr preinfo-sexpr-set! preinfo-src
|
||||||
make-preinfo-lambda preinfo-lambda-name preinfo-lambda-name-set! preinfo-lambda-flags preinfo-lambda-libspec
|
make-preinfo-lambda preinfo-lambda-name preinfo-lambda-name-set! preinfo-lambda-flags preinfo-lambda-libspec
|
||||||
prelex? make-prelex prelex-name prelex-name-set! prelex-flags prelex-flags-set!
|
prelex? make-prelex prelex-name prelex-name-set! prelex-flags prelex-flags-set!
|
||||||
prelex-source prelex-operand prelex-operand-set! prelex-uname make-prelex*
|
prelex-source prelex-operand prelex-operand-set! prelex-uname make-prelex*
|
||||||
target-fixnum? target-bignum?)
|
target-fixnum? target-bignum?)
|
||||||
|
|
||||||
(module (lookup-primref primref? primref-name primref-flags primref-arity primref-level)
|
(module (lookup-primref primref? primref-name primref-flags primref-arity primref-signatures primref-level)
|
||||||
(include "primref.ss")
|
(include "primref.ss")
|
||||||
|
|
||||||
(define $lookup-primref
|
(define $lookup-primref
|
||||||
|
|
|
@ -14,9 +14,9 @@
|
||||||
;;; limitations under the License.
|
;;; limitations under the License.
|
||||||
|
|
||||||
(define-record-type primref
|
(define-record-type primref
|
||||||
(nongenerative #{primref a0xltlrcpeygsahopkplcn-2})
|
(nongenerative #{primref a0xltlrcpeygsahopkplcn-3})
|
||||||
(sealed #t)
|
(sealed #t)
|
||||||
(fields name flags arity))
|
(fields name flags arity signatures))
|
||||||
|
|
||||||
(define primref-level
|
(define primref-level
|
||||||
(lambda (pr)
|
(lambda (pr)
|
||||||
|
|
|
@ -18,19 +18,19 @@
|
||||||
(include "primref.ss")
|
(include "primref.ss")
|
||||||
|
|
||||||
(define record-prim!
|
(define record-prim!
|
||||||
(lambda (prim unprefixed flags arity boolean-valued?)
|
(lambda (prim unprefixed flags arity boolean-valued? signatures)
|
||||||
(unless (eq? unprefixed prim) ($sputprop prim '*unprefixed* unprefixed))
|
(unless (eq? unprefixed prim) ($sputprop prim '*unprefixed* unprefixed))
|
||||||
(let ([flags (if boolean-valued? (fxlogor flags (prim-mask boolean-valued)) flags)]
|
(let ([flags (if boolean-valued? (fxlogor flags (prim-mask boolean-valued)) flags)]
|
||||||
[arity (and (not (null? arity)) arity)])
|
[arity (and (not (null? arity)) arity)])
|
||||||
($sputprop prim '*flags* flags)
|
($sputprop prim '*flags* flags)
|
||||||
(when (any-set? (prim-mask (or primitive system)) flags)
|
(when (any-set? (prim-mask (or primitive system)) flags)
|
||||||
($sputprop prim '*prim2* (make-primref prim flags arity))
|
($sputprop prim '*prim2* (make-primref prim flags arity signatures))
|
||||||
($sputprop prim '*prim3* (make-primref prim (fxlogor flags (prim-mask unsafe)) arity))))))
|
($sputprop prim '*prim3* (make-primref prim (fxlogor flags (prim-mask unsafe)) arity signatures))))))
|
||||||
|
|
||||||
(define-syntax setup
|
(define-syntax setup
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(import priminfo)
|
(import priminfo)
|
||||||
; sort vector of primitive names so boot files compare equal
|
; sort vector of primitive names so boot files compare equal
|
||||||
(let ([v-prim (vector-sort (lambda (x y) (string<=? (symbol->string x) (symbol->string y))) (primvec))])
|
(let ([v-prim (vector-sort (lambda (x y) (string<=? (symbol->string x) (symbol->string y))) (primvec))])
|
||||||
(let ([v-info (vector-map get-priminfo v-prim)])
|
(let ([v-info (vector-map get-priminfo v-prim)])
|
||||||
#`(vector-for-each record-prim!
|
#`(vector-for-each record-prim!
|
||||||
|
@ -38,7 +38,8 @@
|
||||||
'#,(datum->syntax #'* (vector-map priminfo-unprefixed v-info))
|
'#,(datum->syntax #'* (vector-map priminfo-unprefixed v-info))
|
||||||
'#,(datum->syntax #'* (vector-map priminfo-mask v-info))
|
'#,(datum->syntax #'* (vector-map priminfo-mask v-info))
|
||||||
'#,(datum->syntax #'* (vector-map priminfo-arity v-info))
|
'#,(datum->syntax #'* (vector-map priminfo-arity v-info))
|
||||||
'#,(datum->syntax #'* (vector-map priminfo-boolean? v-info)))))))
|
'#,(datum->syntax #'* (vector-map priminfo-boolean? v-info))
|
||||||
|
'#,(datum->syntax #'* (vector-map priminfo-signatures v-info)))))))
|
||||||
|
|
||||||
(for-each (lambda (x) (for-each (lambda (key) ($sremprop x key)) '(*prim2* *prim3* *flags* *unprefixed*))) (oblist))
|
(for-each (lambda (x) (for-each (lambda (key) ($sremprop x key)) '(*prim2* *prim3* *flags* *unprefixed*))) (oblist))
|
||||||
setup)
|
setup)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user