Catching on up to trunk
svn: r17182
This commit is contained in:
commit
40b17fa7de
|
@ -954,3 +954,26 @@
|
|||
16)
|
||||
(check-equal? (image-height (bitmap icons/stop-16x16.png))
|
||||
16)
|
||||
|
||||
(check-equal? (let ()
|
||||
(define bmp (make-object bitmap% 4 4))
|
||||
(define mask (make-object bitmap% 4 4))
|
||||
(define bdc (make-object bitmap-dc% bmp))
|
||||
(send bdc set-brush "black" 'solid)
|
||||
(send bdc draw-rectangle 0 0 4 4)
|
||||
(send bdc set-bitmap mask)
|
||||
(send bdc set-brush "black" 'solid)
|
||||
(send bdc clear)
|
||||
(send bdc draw-rectangle 1 1 1 1)
|
||||
(send bdc set-bitmap #f)
|
||||
(let-values ([(bytes w h) (bitmap->bytes bmp mask)])
|
||||
bytes))
|
||||
(bytes-append #"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0"
|
||||
#"\0\0\0\0" #"\377\0\0\0" #"\0\0\0\0" #"\0\0\0\0"
|
||||
#"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0"
|
||||
#"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0" #"\0\0\0\0"))
|
||||
|
||||
;; ensure no error
|
||||
(check-equal? (begin (scale 2 (make-object bitmap% 10 10))
|
||||
(void))
|
||||
(void))
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
(require "honu.ss"
|
||||
(for-syntax "debug.ss"
|
||||
"contexts.ss"
|
||||
scheme/base
|
||||
syntax/parse
|
||||
syntax/stx
|
||||
|
@ -368,17 +369,58 @@
|
|||
(#%braces (#%braces name pattern ...))
|
||||
(#%braces (#%braces template ...))
|
||||
. rest)
|
||||
(with-syntax ([pulled (pull #'(template ...))])
|
||||
(with-syntax ([pulled (pull #'(template ...))]
|
||||
[(pattern* ...) (map (lambda (stx)
|
||||
(if (and (identifier? stx)
|
||||
(not (ormap (lambda (f)
|
||||
(free-identifier=? stx f))
|
||||
(syntax->list #'(honu-literal ...))))
|
||||
(not (free-identifier=? stx #'(... ...))))
|
||||
(with-syntax ([x stx])
|
||||
#'(~and x (~not (~or honu-literal ...))))
|
||||
stx))
|
||||
(syntax->list #'(pattern ...)))]
|
||||
)
|
||||
(values
|
||||
#'(define-honu-syntax name
|
||||
(lambda (stx ctx)
|
||||
(syntax-case stx (honu-literal ...)
|
||||
[(name pattern ... . rrest)
|
||||
;; (define-literal-set literals (honu-literal ...))
|
||||
(syntax-parse stx
|
||||
;; #:literal-sets (literals)
|
||||
#:literals (honu-literal ...)
|
||||
[(name pattern* ... . rrest)
|
||||
(with-syntax ([(out (... ...)) (unpull #'pulled)])
|
||||
(define (X) (raise-syntax-error (syntax->datum #'name) "implement for this context"))
|
||||
(values
|
||||
;; this is sort of ugly, is there a better way?
|
||||
(cond
|
||||
[(type-context? ctx) (X)]
|
||||
[(type-or-expression-context? ctx) (X)]
|
||||
[(expression-context? ctx) #'(honu-unparsed-expr out (... ...))]
|
||||
[(expression-block-context? ctx)
|
||||
#'(honu-unparsed-begin out (... ...))]
|
||||
[(block-context? ctx)
|
||||
#'(honu-unparsed-begin out (... ...))]
|
||||
[(variable-definition-context? ctx) (X)]
|
||||
[(constant-definition-context? ctx) (X)]
|
||||
[(function-definition-context? ctx) (X)]
|
||||
[(prototype-context? ctx) (X)]
|
||||
[else #'(honu-unparsed-expr out (... ...))])
|
||||
#;
|
||||
#'(honu-unparsed-begin out (... ...))
|
||||
#'rrest)
|
||||
#;
|
||||
#'(honu-unparsed-block
|
||||
#f obj 'obj #f ctx
|
||||
out (... ...))
|
||||
#;
|
||||
(values
|
||||
#;
|
||||
#'(honu-unparsed-expr out (... ...))
|
||||
#'(honu-unparsed-block
|
||||
#f obj 'obj #f ctx
|
||||
out (... ...))
|
||||
out (... ...) rrest)
|
||||
#;
|
||||
#'rrest))])))
|
||||
#'rest))])))
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@
|
|||
(send dc set-text-foreground color)
|
||||
(send dc draw-text "?"
|
||||
(+ endx dx fw)
|
||||
(- endy dy fh)))))))])
|
||||
(- (+ endy dy) fh)))))))])
|
||||
(add-mouse-drawing from1 from2 draw tack-box)
|
||||
(add-mouse-drawing to1 to2 draw tack-box))))
|
||||
|
||||
|
|
|
@ -626,21 +626,23 @@ the mask bitmap and the original bitmap are all together in a single bytes!
|
|||
[orig-h (send orig-bm get-height)]
|
||||
[x-scale (bitmap-x-scale bitmap)]
|
||||
[y-scale (bitmap-y-scale bitmap)]
|
||||
[scale-w (* x-scale (send orig-bm get-width))]
|
||||
[scale-h (* y-scale (send orig-bm get-height))]
|
||||
[scale-w (ceiling (inexact->exact (* x-scale (send orig-bm get-width))))]
|
||||
[scale-h (ceiling (inexact->exact (* y-scale (send orig-bm get-height))))]
|
||||
[new-bm (make-object bitmap% scale-w scale-h)]
|
||||
[new-mask (make-object bitmap% scale-w scale-h)])
|
||||
(send new-bm set-loaded-mask new-mask)
|
||||
[new-mask (and orig-mask (make-object bitmap% scale-w scale-h))])
|
||||
(when new-mask
|
||||
(send new-bm set-loaded-mask new-mask))
|
||||
|
||||
(send bdc set-bitmap new-bm)
|
||||
(send bdc set-scale x-scale y-scale)
|
||||
(send bdc clear)
|
||||
(send bdc draw-bitmap orig-bm 0 0)
|
||||
|
||||
(send bdc set-bitmap new-mask)
|
||||
(send bdc set-scale x-scale y-scale)
|
||||
(send bdc clear)
|
||||
(send bdc draw-bitmap orig-mask 0 0)
|
||||
(when new-mask
|
||||
(send bdc set-bitmap new-mask)
|
||||
(send bdc set-scale x-scale y-scale)
|
||||
(send bdc clear)
|
||||
(send bdc draw-bitmap orig-mask 0 0))
|
||||
|
||||
(send bdc set-bitmap #f)
|
||||
|
||||
|
@ -734,6 +736,6 @@ the mask bitmap and the original bitmap are all together in a single bytes!
|
|||
render-image)
|
||||
|
||||
;; method names
|
||||
(provide get-shape get-bb get-normalized?)
|
||||
(provide get-shape get-bb get-normalized? get-normalized-shape)
|
||||
|
||||
(provide np-atomic-shape? atomic-shape? simple-shape?)
|
||||
|
|
|
@ -59,8 +59,8 @@ instead of this scaling code, we use the dc<%>'s scaling code.
|
|||
[h (send bm get-height)]
|
||||
[bytes (make-bytes (* w h NUM-CHANNELS) 0)])
|
||||
(send bm get-argb-pixels 0 0 w h bytes #f)
|
||||
(when (send bm get-loaded-mask)
|
||||
(send (send bm get-loaded-mask) get-argb-pixels 0 0 w h bytes #t))
|
||||
(when mask
|
||||
(send mask get-argb-pixels 0 0 w h bytes #t))
|
||||
(values bytes w h)))
|
||||
|
||||
(define (bytes->bitmap bytes w h)
|
||||
|
|
|
@ -1,57 +1,63 @@
|
|||
#lang scheme/base
|
||||
(require scheme/function
|
||||
scheme/path
|
||||
scheme/file)
|
||||
(provide compile-file)
|
||||
|
||||
(module compile mzscheme
|
||||
(require "file.ss"
|
||||
"port.ss")
|
||||
(provide compile-file)
|
||||
|
||||
;; (require compiler/src2src)
|
||||
|
||||
(define compile-file
|
||||
(case-lambda
|
||||
[(src)
|
||||
(let-values ([(base name dir?) (split-path src)])
|
||||
(let ([cdir (build-path
|
||||
(if (symbol? base)
|
||||
'same
|
||||
base)
|
||||
"compiled")])
|
||||
(unless (directory-exists? cdir)
|
||||
(make-directory cdir))
|
||||
(compile-file src (build-path cdir (path-add-suffix name #".zo")))))]
|
||||
[(src dest) (compile-file src dest values)]
|
||||
[(src dest filter)
|
||||
(let ([in (open-input-file src)])
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
(port-count-lines! in)
|
||||
(with-handlers ([void
|
||||
(lambda (exn)
|
||||
(with-handlers ([void void])
|
||||
(delete-file dest))
|
||||
(raise exn))])
|
||||
(let ([out (open-output-file dest 'truncate/replace)]
|
||||
[ok? #f])
|
||||
(let ([dir (let-values ([(base name dir?) (split-path src)])
|
||||
(if (eq? base 'relative)
|
||||
(current-directory)
|
||||
(path->complete-path base (current-directory))))])
|
||||
(parameterize ([current-load-relative-directory dir]
|
||||
[current-write-relative-directory dir])
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
(let loop ()
|
||||
(let ([r (read-syntax src in)])
|
||||
(unless (eof-object? r)
|
||||
(write (compile-syntax (filter (namespace-syntax-introduce r))) out)
|
||||
(loop))))
|
||||
(set! ok? #t))
|
||||
(lambda ()
|
||||
(close-output-port out)
|
||||
(unless ok?
|
||||
(with-handlers ([void void])
|
||||
(delete-file dest))))))))))
|
||||
(lambda () (close-input-port in))))
|
||||
dest])))
|
||||
(define compile-file
|
||||
(case-lambda
|
||||
[(src)
|
||||
(define cdir (build-path (path-only src) "compiled"))
|
||||
(make-directory* cdir)
|
||||
(compile-file src (build-path cdir (path-add-suffix (file-name-from-path src) #".zo")))]
|
||||
[(src dest)
|
||||
(compile-file src dest values)]
|
||||
[(src dest filter)
|
||||
(define in (open-input-file src))
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
(define ok? #f)
|
||||
; This must be based on the path to dest. Renaming typically cannot be done
|
||||
; atomically across file systems, so the temporary directory is not an option
|
||||
; because it is often a ram disk. src (or dir below) couldn't be used because
|
||||
; it may be on a different filesystem. Since dest must be a file path, this
|
||||
; guarantees that the temp file is in the same directory. It would take a weird
|
||||
; filesystem configuration to break that.
|
||||
(define temp-filename (make-temporary-file "tmp~a" #f (path-only dest)))
|
||||
(port-count-lines! in)
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
; XXX: This seems like it should be a library function named 'relative-path-only'
|
||||
(define dir
|
||||
(let-values ([(base name dir?) (split-path src)])
|
||||
(if (eq? base 'relative)
|
||||
(current-directory)
|
||||
(path->complete-path base (current-directory)))))
|
||||
(define out (open-output-file temp-filename #:exists 'truncate/replace))
|
||||
(parameterize ([current-load-relative-directory dir]
|
||||
[current-write-relative-directory dir])
|
||||
; Rather than installing a continuation barrier, we detect reinvocation.
|
||||
; The only thing that can cause reinvocation is if the filter captures the
|
||||
; continuation and communicates it externally.
|
||||
(define count 0)
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
(if (zero? count)
|
||||
(set! count 1)
|
||||
(error 'compile-file "filter function should not be re-entrant")))
|
||||
(lambda ()
|
||||
(for ([r (in-port (curry read-syntax src) in)])
|
||||
(write (compile-syntax (filter (namespace-syntax-introduce r))) out))
|
||||
(set! ok? #t))
|
||||
(lambda ()
|
||||
(close-output-port out)))))
|
||||
(lambda ()
|
||||
(if ok?
|
||||
(rename-file-or-directory temp-filename dest)
|
||||
(with-handlers ([exn:fail:filesystem? void])
|
||||
(delete-file temp-filename))))))
|
||||
(lambda () (close-input-port in)))
|
||||
dest]))
|
||||
|
||||
|
|
|
@ -712,12 +712,6 @@ before the pattern compiler is invoked.
|
|||
[(has-underscore? pattern)
|
||||
(let*-values ([(binder before-underscore)
|
||||
(let ([before (split-underscore pattern)])
|
||||
(unless (or (hash-maps? clang-ht before)
|
||||
(memq before underscore-allowed))
|
||||
(error 'compile-pattern "before underscore must be either a non-terminal ~a or a built-in pattern, found ~a in ~s"
|
||||
before
|
||||
(format "~s" (list* 'one 'of: (hash-map clang-ht (λ (x y) x))))
|
||||
pattern))
|
||||
(values pattern before))]
|
||||
[(match-raw-name has-hole?)
|
||||
(compile-id-pattern before-underscore)])
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(module rewrite-side-conditions scheme/base
|
||||
(module rewrite-side-conditions scheme
|
||||
(require (lib "list.ss")
|
||||
"underscore-allowed.ss")
|
||||
(require (for-template
|
||||
|
@ -74,6 +74,20 @@
|
|||
[(cross a) #`(cross #,(loop #'a))]
|
||||
[(cross a ...) (expected-exact 'cross 1 term)]
|
||||
[cross (expected-arguments 'cross term)]
|
||||
[_
|
||||
(identifier? term)
|
||||
(match (regexp-match #rx"^([^_]*)_.*" (symbol->string (syntax-e term)))
|
||||
[(list _ (app string->symbol s))
|
||||
(if (or (memq s (cons '... underscore-allowed))
|
||||
(memq s all-nts))
|
||||
term
|
||||
(raise-syntax-error
|
||||
what
|
||||
(format "before underscore must be either a non-terminal or a built-in pattern, found ~a in ~s"
|
||||
s (syntax-e term))
|
||||
orig-stx
|
||||
term))]
|
||||
[_ term])]
|
||||
[(terms ...)
|
||||
(map loop (syntax->list (syntax (terms ...))))]
|
||||
[else
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
(module term-test scheme
|
||||
(require "term.ss"
|
||||
"matcher.ss"
|
||||
"test-util.ss"
|
||||
errortrace/errortrace-lib
|
||||
errortrace/errortrace-key)
|
||||
"test-util.ss")
|
||||
|
||||
(reset-count)
|
||||
(test (term 1) 1)
|
||||
|
@ -105,58 +103,75 @@
|
|||
(define-namespace-anchor here)
|
||||
(define ns (namespace-anchor->namespace here))
|
||||
|
||||
(define (runtime-error-source sexp src)
|
||||
(let/ec return
|
||||
(cadar
|
||||
(continuation-mark-set->list
|
||||
(exn-continuation-marks
|
||||
(with-handlers ((exn:fail? values))
|
||||
(parameterize ([current-namespace ns])
|
||||
(parameterize ([current-compile (make-errortrace-compile-handler)])
|
||||
(eval (read-syntax src (open-input-string (format "~s" sexp))))))
|
||||
(return 'no-source)))
|
||||
errortrace-key))))
|
||||
|
||||
(let ([src 'term-template])
|
||||
(test
|
||||
(runtime-error-source
|
||||
'(term-let ([(x ...) '(a b c)]
|
||||
[((y ...) ...) '((1 2) (4 5 6) (7 8 9))])
|
||||
(term (((x y) ...) ...)))
|
||||
src)
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let ([(x ...) '(a b c)]
|
||||
[((y ...) ...) '((1 2) (4 5 6) (7 8 9))])
|
||||
(term (((x y) ...) ...)))
|
||||
src))
|
||||
src))
|
||||
|
||||
(let ([src 'term-template-metafunc])
|
||||
(test
|
||||
(runtime-error-source
|
||||
'(term-let-fn ((f car))
|
||||
(term-let ([(x ...) '(a b c)]
|
||||
[((y ...) ...) '((1 2) (4 5 6) (7 8 9))])
|
||||
(term ((((f x) y) ...) ...))))
|
||||
src)
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let-fn ((f car))
|
||||
(term-let ([(x ...) '(a b c)]
|
||||
[((y ...) ...) '((1 2) (4 5 6) (7 8 9))])
|
||||
(term ((((f x) y) ...) ...))))
|
||||
src))
|
||||
src))
|
||||
|
||||
(let ([src 'ellipsis-args])
|
||||
(test
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let-fn ((f car))
|
||||
(term-let ([(x ...) '(a b)]
|
||||
[(y ...) '(c d e)])
|
||||
(term (f ((x y) ...)))))
|
||||
src))
|
||||
src))
|
||||
|
||||
(let ([src 'ellipsis-args/map])
|
||||
(test
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let-fn ((f car))
|
||||
(term-let ([(x ...) '(a b)]
|
||||
[(y ...) '(c d e)])
|
||||
(term ((f (x y)) ...))))
|
||||
src))
|
||||
src))
|
||||
|
||||
(let ([src 'ellipsis-args/in-hole])
|
||||
(test
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let ([(x ...) '(a b)]
|
||||
[(y ...) '(c d e)])
|
||||
(term ((in-hole hole (x y)) ...)))
|
||||
src))
|
||||
src))
|
||||
|
||||
(let ([src 'term-let-rhs])
|
||||
(test
|
||||
(runtime-error-source
|
||||
'(term-let ([(x ...) 'a])
|
||||
3)
|
||||
src)
|
||||
(parameterize ([current-namespace ns])
|
||||
(runtime-error-source
|
||||
'(term-let ([(x ...) 'a])
|
||||
3)
|
||||
src))
|
||||
src))
|
||||
|
||||
(define (syntax-error-sources sexp src)
|
||||
(let ([p (read-syntax src (open-input-string (format "~s" sexp)))])
|
||||
(with-handlers ((exn:srclocs? (λ (x) (map srcloc-source ((exn:srclocs-accessor x) x)))))
|
||||
(parameterize ([current-namespace ns])
|
||||
(expand p))
|
||||
null)))
|
||||
|
||||
(let ([src 'term-template])
|
||||
(test
|
||||
(syntax-error-sources
|
||||
'(term-let ([(x ...) '(a b c)])
|
||||
(term x))
|
||||
src)
|
||||
(parameterize ([current-namespace ns])
|
||||
(syntax-error-sources
|
||||
'(term-let ([(x ...) '(a b c)])
|
||||
(term x))
|
||||
src))
|
||||
(list src)))
|
||||
|
||||
(print-tests-passed 'term-test.ss))
|
||||
|
|
|
@ -32,11 +32,11 @@
|
|||
(let ([result-id (car (generate-temporaries '(f-results)))])
|
||||
(with-syntax ([fn fn])
|
||||
(let loop ([func (syntax (λ (x) (fn (syntax->datum x))))]
|
||||
[args rewritten]
|
||||
[args-stx rewritten]
|
||||
[res result-id]
|
||||
[args-depth (min depth max-depth)])
|
||||
(with-syntax ([func func]
|
||||
[args args]
|
||||
[args args-stx]
|
||||
[res res])
|
||||
(if (zero? args-depth)
|
||||
(begin
|
||||
|
@ -45,7 +45,7 @@
|
|||
outer-bindings))
|
||||
(values result-id (min depth max-depth)))
|
||||
(loop (syntax (λ (l) (map func (syntax->list l))))
|
||||
(syntax (args (... ...)))
|
||||
(syntax/loc args-stx (args (... ...)))
|
||||
(syntax (res (... ...)))
|
||||
(sub1 args-depth)))))))))
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
(and (identifier? (syntax metafunc-name))
|
||||
(term-fn? (syntax-local-value (syntax metafunc-name) (λ () #f))))
|
||||
(rewrite-application (term-fn-get-id (syntax-local-value/catch (syntax metafunc-name) (λ (x) #t)))
|
||||
(syntax (arg ...))
|
||||
(syntax/loc stx (arg ...))
|
||||
depth)]
|
||||
[f
|
||||
(and (identifier? (syntax f))
|
||||
|
@ -76,7 +76,7 @@
|
|||
[(unquote-splicing . x)
|
||||
(raise-syntax-error 'term "malformed unquote splicing" orig-stx stx)]
|
||||
[(in-hole id body)
|
||||
(rewrite-application (syntax (λ (x) (apply plug x))) (syntax (id body)) depth)]
|
||||
(rewrite-application (syntax (λ (x) (apply plug x))) (syntax/loc stx (id body)) depth)]
|
||||
[(in-hole . x)
|
||||
(raise-syntax-error 'term "malformed in-hole" orig-stx stx)]
|
||||
[hole (values (syntax (unsyntax the-hole)) 0)]
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
#lang scheme
|
||||
|
||||
(require "matcher.ss")
|
||||
(require "matcher.ss"
|
||||
errortrace/errortrace-lib
|
||||
errortrace/errortrace-key)
|
||||
(provide test test-syn-err tests reset-count
|
||||
syn-err-test-namespace
|
||||
print-tests-passed
|
||||
equal/bindings?)
|
||||
equal/bindings?
|
||||
runtime-error-source syntax-error-sources)
|
||||
|
||||
(define syn-err-test-namespace (make-base-namespace))
|
||||
(parameterize ([current-namespace syn-err-test-namespace])
|
||||
|
@ -108,3 +111,20 @@
|
|||
;; rib-lt : rib rib -> boolean
|
||||
(define (rib-lt r1 r2) (string<=? (format "~s" (bind-name r1))
|
||||
(format "~s" (bind-name r2))))
|
||||
|
||||
(define (runtime-error-source sexp src)
|
||||
(let/ec return
|
||||
(cadar
|
||||
(continuation-mark-set->list
|
||||
(exn-continuation-marks
|
||||
(with-handlers ((exn:fail? values))
|
||||
(parameterize ([current-compile (make-errortrace-compile-handler)])
|
||||
(eval (read-syntax src (open-input-string (format "~s" sexp)))))
|
||||
(return 'no-source)))
|
||||
errortrace-key))))
|
||||
|
||||
(define (syntax-error-sources sexp src)
|
||||
(let ([p (read-syntax src (open-input-string (format "~s" sexp)))])
|
||||
(with-handlers ((exn:srclocs? (λ (x) (map srcloc-source ((exn:srclocs-accessor x) x)))))
|
||||
(expand p)
|
||||
null)))
|
|
@ -261,7 +261,16 @@
|
|||
(term (f 1)))
|
||||
(test rhs-eval-count 2))
|
||||
|
||||
(define-namespace-anchor here)
|
||||
(define ns (namespace-anchor->namespace here))
|
||||
|
||||
(let ([src 'bad-underscore])
|
||||
(test
|
||||
(parameterize ([current-namespace ns])
|
||||
(syntax-error-sources
|
||||
'(define-language L (n m_1))
|
||||
src))
|
||||
(list src)))
|
||||
|
||||
;
|
||||
;
|
||||
|
|
|
@ -1 +1 @@
|
|||
#lang scheme/base (provide stamp) (define stamp "30nov2009")
|
||||
#lang scheme/base (provide stamp) (define stamp "4dec2009")
|
||||
|
|
|
@ -66,9 +66,14 @@
|
|||
(define-values (flat-prop flat-pred? flat-get)
|
||||
(make-struct-type-property 'contract-flat))
|
||||
|
||||
(define-values (first-order-prop first-order-pred? first-order-get)
|
||||
(define-values (first-order-prop first-order-pred? raw-first-order-get)
|
||||
(make-struct-type-property 'contract-first-order))
|
||||
|
||||
(define (first-order-get stct)
|
||||
(cond
|
||||
[(flat-pred? stct) (flat-get stct)]
|
||||
[else (raw-first-order-get stct)]))
|
||||
|
||||
(define (contract-first-order-passes? c v)
|
||||
(let ([ctc (coerce-contract 'contract-first-order-passes? c)])
|
||||
(cond
|
||||
|
@ -404,7 +409,8 @@
|
|||
#:property name-prop (λ (ctc) (apply build-compound-type-name 'and/c (and/c-ctcs ctc)))
|
||||
#:property first-order-prop
|
||||
(λ (ctc)
|
||||
(let ([tests (map (λ (x) ((first-order-get x) x)) (and/c-ctcs ctc))])
|
||||
(let ([tests (map (λ (x) ((first-order-get x) x))
|
||||
(and/c-ctcs ctc))])
|
||||
(λ (x)
|
||||
(andmap (λ (f) (f x)) tests))))
|
||||
#:property stronger-prop
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
#lang scheme/base
|
||||
|
||||
(require (for-template scheme/base))
|
||||
|
||||
(provide at-syntax)
|
||||
|
||||
;; -------------------------------------------------------------------
|
||||
;; NOTE: This library is for internal use only, it is can change
|
||||
;; and/or disappear. Do not use without protective eyewear!
|
||||
;; -------------------------------------------------------------------
|
||||
|
||||
#|
|
||||
|
||||
The `(at-syntax expr)' form is a useful syntax-time utility that can
|
||||
be used to sort of evaluate an expression at syntax time, and doing so
|
||||
in a well behaved way (eg, it respects the source for-syntax bindings,
|
||||
but it does have some issues). It can be used to implement an escape
|
||||
to the syntax level that is not restricted like `begin-for-syntax'.
|
||||
|
||||
The basic idea of the code is to plant the given expression on the
|
||||
right hand side of a `let-syntax' -- inside a `(lambda (stx) ...)' to
|
||||
make it a valid transformer, with a singe use of this macro so that we
|
||||
get it to execute with `local-expand'. The macro returns a 3d
|
||||
expression that contains the evaluated expression "somehwhere",
|
||||
depending on the expansion of `let-syntax' -- so to make it easy to
|
||||
find we plant it inside a thunk (so this works as long as `let-syntax'
|
||||
does not include 3d procedure values in its expansion). Finally, the
|
||||
constructed `let-syntax' is expanded, we search through the resulting
|
||||
syntax for the thunk, then apply it to get the desired value.
|
||||
|
||||
Here's a silly example to demonstrate:
|
||||
|
||||
> (define-syntax (compile-time-if stx)
|
||||
(syntax-case stx ()
|
||||
[(_ cond expr1 expr2)
|
||||
(if (at-syntax #'cond) #'expr1 #'expr2)]))
|
||||
> (define-for-syntax x 8)
|
||||
> (define x 100)
|
||||
> (compile-time-if (< x 10) (+ x 10) (- x 10))
|
||||
110
|
||||
|
||||
And another example, creating a macro for syntax-time expressions:
|
||||
|
||||
> (define-syntax (compile-time-value stx)
|
||||
(syntax-case stx ()
|
||||
[(_ expr) #`(quote #,(at-syntax #'expr))]))
|
||||
> (compile-time-value (* x 2))
|
||||
16
|
||||
|
||||
but the `quote' here is a hint that this can get 3d values into
|
||||
syntax, and all the problems that are involved. Also, note that it
|
||||
breaks if you try to do something like:
|
||||
|
||||
> (compile-time-value (begin (set! x 11) x))
|
||||
8
|
||||
|
||||
(and, of course, it cannot be used to define new bindings).
|
||||
|
||||
|#
|
||||
|
||||
(define (at-syntax expr)
|
||||
(let loop ([x (with-syntax ([e expr])
|
||||
(local-expand
|
||||
#'(let-syntax ([here (lambda (stx)
|
||||
(datum->syntax stx (lambda () e)))])
|
||||
here)
|
||||
'expression '()))])
|
||||
(cond [(procedure? x) (x)]
|
||||
[(pair? x) (or (loop (car x)) (loop (cdr x)))]
|
||||
[(syntax? x) (loop (syntax-e x))]
|
||||
[else #f])))
|
|
@ -1,7 +1,7 @@
|
|||
#lang scheme/base
|
||||
|
||||
(require (for-syntax scheme/base scheme/provide-transform scheme/list
|
||||
"private/at-syntax.ss"))
|
||||
(only-in unstable/syntax syntax-local-eval)))
|
||||
|
||||
(provide matching-identifiers-out)
|
||||
(define-syntax matching-identifiers-out
|
||||
|
@ -21,7 +21,7 @@
|
|||
(lambda (stx modes)
|
||||
(syntax-case stx ()
|
||||
[(_ proc spec)
|
||||
(let ([proc (at-syntax #'proc)])
|
||||
(let ([proc (syntax-local-eval #'proc)])
|
||||
(filter-map
|
||||
(lambda (e)
|
||||
(let* ([s1 (symbol->string (export-out-sym e))]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#lang scheme/base
|
||||
|
||||
(require (for-syntax scheme/base scheme/require-transform scheme/list
|
||||
"private/at-syntax.ss")
|
||||
(only-in unstable/syntax syntax-local-eval))
|
||||
"require-syntax.ss")
|
||||
|
||||
(provide matching-identifiers-in)
|
||||
|
@ -43,7 +43,7 @@
|
|||
(lambda (stx)
|
||||
(syntax-case stx ()
|
||||
[(_ proc spec)
|
||||
(let ([proc (at-syntax #'proc)])
|
||||
(let ([proc (syntax-local-eval #'proc)])
|
||||
(define-values [imports sources] (expand-import #'spec))
|
||||
(values
|
||||
(filter-map
|
||||
|
|
|
@ -1735,7 +1735,7 @@ If @scheme[end] is not @scheme['same] and not the same as @scheme[start],
|
|||
|
||||
When the specified range cannot fit in the visible area, @scheme[bias]
|
||||
indicates which end of the range to display. When @scheme[bias] is
|
||||
@scheme['same], then the start of the range is displayed. When
|
||||
@scheme['start], then the start of the range is displayed. When
|
||||
@scheme[bias] is @scheme['end], then the end of the range is
|
||||
displayed. Otherwise, @scheme[bias] must be @scheme['none].
|
||||
|
||||
|
@ -1747,7 +1747,7 @@ If the editor is scrolled, then the editor is redrawn and the return
|
|||
scroll-editor-to].
|
||||
|
||||
Scrolling is disallowed when the editor is internally locked for
|
||||
reflowing (see also @|lockdiscuss|).
|
||||
reflowing (see also @|lockdiscuss|).
|
||||
|
||||
The system may scroll the editor without calling this method. For
|
||||
example, a canvas displaying an editor might scroll the editor to
|
||||
|
|
|
@ -36,7 +36,6 @@ Creates a new custodian as a subordinate of @var{m}. If @var{m} is
|
|||
Places the value @var{o} into the management of the custodian
|
||||
@var{m}. If @var{m} is @cpp{NULL}, the current custodian is used.
|
||||
|
||||
|
||||
The @var{f} function is called by the custodian if it is ever asked to
|
||||
``shutdown'' its values; @var{o} and @var{data} are passed on to
|
||||
@var{f}, which has the type
|
||||
|
@ -52,6 +51,10 @@ be remembered until either the custodian shuts it down or
|
|||
zero, the value is allowed to be garbaged collected (and automatically
|
||||
removed from the custodian).
|
||||
|
||||
Independent of whether @var{strong} is zero, the value @var{o} is
|
||||
initially weakly held. A value associated with a custodian can
|
||||
therefore be finalized via will executors.
|
||||
|
||||
The return value from @cpp{scheme_add_managed} can be used to refer
|
||||
to the value's custodian later in a call to
|
||||
@cpp{scheme_remove_managed}. A value can be registered with at
|
||||
|
|
|
@ -849,6 +849,58 @@ Returns @scheme[#t] if the native encoding of numbers is big-endian
|
|||
for the machine running Scheme, @scheme[#f] if the native encoding
|
||||
is little-endian.}
|
||||
|
||||
@; ------------------------------------------------------------------------
|
||||
@section{Inexact-Real Vectors}
|
||||
|
||||
A @deftech{flvector} is like a @tech{vector}, but it holds only
|
||||
inexact real numbers. This representation can be more compact, and
|
||||
unsafe operations on @tech{flvector}s (see
|
||||
@schememodname[scheme/unsafe/ops]) can execute more efficiently than
|
||||
unsafe operations on @tech{vectors} of inexact reals.
|
||||
|
||||
An f64vector as provided by @schememodname[scheme/foreign] stores the
|
||||
same kinds of values as an @tech{flvector}, but with extra
|
||||
indirections that make f64vectors more convenient for working with
|
||||
foreign libraries. The lack of indirections make unsafe
|
||||
@tech{flvector} access more efficient.
|
||||
|
||||
@defproc[(flvector? [v any/c]) boolean?]{
|
||||
|
||||
Returns @scheme[#t] if @scheme[v] is a @tech{flvector}, @scheme[#f] otherwise.}
|
||||
|
||||
@defproc[(flvector [x inexact-real?] ...) flvector?]{
|
||||
|
||||
Creates a @tech{flvector} containing the given inexact real numbers.}
|
||||
|
||||
@defproc[(make-flvector [size exact-nonnegative-integer?]
|
||||
[x inexact-real? 0.0])
|
||||
flvector?]{
|
||||
|
||||
Creates a @tech{flvector} with @scheme[size] elements, where every
|
||||
slot in the @tech{flvector} is filled with @scheme[x].}
|
||||
|
||||
@defproc[(flvector-length [vec flvector?]) exact-nonnegative-integer?]{
|
||||
|
||||
Returns the length of @scheme[vec] (i.e., the number of slots in the
|
||||
@tech{flvector}).}
|
||||
|
||||
|
||||
@defproc[(flvector-ref [vec flvector?] [pos exact-nonnegative-integer?])
|
||||
inexact-real?]{
|
||||
|
||||
Returns the inexact real number in slot @scheme[pos] of
|
||||
@scheme[vec]. The first slot is position @scheme[0], and the last slot
|
||||
is one less than @scheme[(flvector-length vec)].}
|
||||
|
||||
@defproc[(flvector-set! [vec flvector?] [pos exact-nonnegative-integer?]
|
||||
[x inexact-real?])
|
||||
inexact-real?]{
|
||||
|
||||
Sets the inexact real number in slot @scheme[pos] of @scheme[vec]. The
|
||||
first slot is position @scheme[0], and the last slot is one less than
|
||||
@scheme[(flvector-length vec)].}
|
||||
|
||||
|
||||
@; ------------------------------------------------------------------------
|
||||
@section{Extra Constants and Functions}
|
||||
|
||||
|
|
|
@ -169,6 +169,18 @@ Unsafe versions of @scheme[bytes-length], @scheme[bytes-ref], and
|
|||
fixnum).}
|
||||
|
||||
|
||||
@deftogether[(
|
||||
@defproc[(unsafe-flvector-length [v flvector?]) fixnum?]
|
||||
@defproc[(unsafe-flvector-ref [v flvector?][k fixnum?]) any/c]
|
||||
@defproc[(unsafe-flvector-set! [v flvector?][k fixnum?][x inexact-real?]) void?]
|
||||
)]{
|
||||
|
||||
Unsafe versions of @scheme[flvector-length], @scheme[flvector-ref], and
|
||||
@scheme[flvector-set!]. A @tech{flvector}'s size can never be larger than a
|
||||
@tech{fixnum} (so even @scheme[flvector-length] always returns a
|
||||
fixnum).}
|
||||
|
||||
|
||||
@deftogether[(
|
||||
@defproc[(unsafe-f64vector-ref [vec f64vector?][k fixnum?]) inexact-real?]
|
||||
@defproc[(unsafe-f64vector-set! [vec f64vector?][k fixnum?][n inexact-real?]) void?]
|
||||
|
|
|
@ -2060,6 +2060,12 @@
|
|||
x)
|
||||
'(2))
|
||||
|
||||
(test/spec-passed
|
||||
'or/c-hmm
|
||||
(let ([funny/c (or/c (and/c procedure? (-> any)) (listof (-> number?)))])
|
||||
(contract (-> funny/c any) void 'pos 'neg)))
|
||||
|
||||
|
||||
|
||||
;
|
||||
;
|
||||
|
|
|
@ -413,6 +413,10 @@
|
|||
(un-exact 'a 'unbox (box 'a))
|
||||
(un-exact 3 'vector-length (vector 'a 'b 'c))
|
||||
|
||||
(bin-exact 1.1 'flvector-ref (flvector 1.1 2.2 3.3) 0)
|
||||
(bin-exact 3.3 'flvector-ref (flvector 1.1 2.2 3.3) 2)
|
||||
(un-exact 3 'flvector-length (flvector 1.1 2.2 3.3))
|
||||
|
||||
(bin-exact #\a 'string-ref "abc\u2001" 0)
|
||||
(bin-exact #\b 'string-ref "abc\u2001" 1)
|
||||
(bin-exact #\c 'string-ref "abc\u2001" 2)
|
||||
|
@ -454,7 +458,8 @@
|
|||
'(0 1 2))))])
|
||||
(test-setter make-vector #f 7 'vector-set! vector-set! vector-ref)
|
||||
(test-setter make-bytes 0 7 'bytes-set! bytes-set! bytes-ref)
|
||||
(test-setter make-string #\a #\7 'string-set! string-set! string-ref))
|
||||
(test-setter make-string #\a #\7 'string-set! string-set! string-ref)
|
||||
(test-setter make-flvector 1.0 7.0 'flvector-set! flvector-set! flvector-ref))
|
||||
|
||||
))
|
||||
|
||||
|
|
|
@ -187,6 +187,14 @@
|
|||
#:post (lambda (x) (list x (string-ref v 2)))
|
||||
#:literal-ok? #f))
|
||||
|
||||
(test-bin 9.5 'unsafe-flvector-ref (flvector 1.0 9.5 18.7) 1)
|
||||
(test-un 5 'unsafe-flvector-length (flvector 1.1 2.0 3.1 4.5 5.7))
|
||||
(let ([v (flvector 1.0 9.5 18.7)])
|
||||
(test-tri (list (void) 27.4) 'unsafe-flvector-set! v 2 27.4
|
||||
#:pre (lambda () (flvector-set! v 2 0.0))
|
||||
#:post (lambda (x) (list x (flvector-ref v 2)))
|
||||
#:literal-ok? #f))
|
||||
|
||||
(test-bin 9.5 'unsafe-f64vector-ref (f64vector 1.0 9.5 18.7) 1)
|
||||
(let ([v (f64vector 1.0 9.5 18.7)])
|
||||
(test-tri (list (void) 27.4) 'unsafe-f64vector-set! v 2 27.4
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang scheme
|
||||
#lang scheme/base
|
||||
(require scheme/contract)
|
||||
|
||||
(define path-element?
|
||||
(or/c path-string? (symbols 'up 'same)))
|
||||
|
@ -13,7 +14,45 @@
|
|||
;; Eli: If this gets in, there should also be versions for bytes, lists, and
|
||||
;; vectors.
|
||||
|
||||
;; ryanc added:
|
||||
|
||||
;; (if/c predicate then/c else/c) applies then/c to satisfying
|
||||
;; predicate, else/c to those that don't.
|
||||
(define (if/c predicate then/c else/c)
|
||||
#|
|
||||
Naive version:
|
||||
(or/c (and/c predicate then/c)
|
||||
(and/c (not/c predicate) else/c))
|
||||
But that applies predicate twice.
|
||||
|#
|
||||
(let ([then-ctc (coerce-contract 'if/c then/c)]
|
||||
[else-ctc (coerce-contract 'if/c else/c)])
|
||||
(define name (build-compound-type-name 'if/c predicate then-ctc else-ctc))
|
||||
;; Special case: if both flat contracts, make a flat contract.
|
||||
(if (and (flat-contract? then-ctc)
|
||||
(flat-contract? else-ctc))
|
||||
;; flat contract
|
||||
(let ([then-pred (flat-contract-predicate then-ctc)]
|
||||
[else-pred (flat-contract-predicate else-ctc)])
|
||||
(define (pred x)
|
||||
(if (predicate x) (then-pred x) (else-pred x)))
|
||||
(flat-named-contract name pred))
|
||||
;; ho contract
|
||||
(let ([then-proj ((proj-get then-ctc) then-ctc)]
|
||||
[then-fo ((first-order-get then-ctc) then-ctc)]
|
||||
[else-proj ((proj-get else-ctc) else-ctc)]
|
||||
[else-fo ((first-order-get else-ctc) else-ctc)])
|
||||
(define ((proj pos neg srcinfo name pos?) x)
|
||||
(if (predicate x)
|
||||
((then-proj pos neg srcinfo name pos?) x)
|
||||
((else-proj pos neg srcinfo name pos?) x)))
|
||||
(make-proj-contract
|
||||
name
|
||||
proj
|
||||
(lambda (x) (if (predicate x) (then-fo x) (else-fo x))))))))
|
||||
|
||||
(provide/contract
|
||||
[non-empty-string/c contract?]
|
||||
[path-element? contract?]
|
||||
[port-number? contract?])
|
||||
[port-number? contract?]
|
||||
[if/c (-> procedure? contract? contract? contract?)])
|
||||
|
|
|
@ -1,19 +1,15 @@
|
|||
#lang scheme
|
||||
#lang scheme/base
|
||||
(require scheme/contract
|
||||
scheme/dict)
|
||||
|
||||
; list-prefix : list? list? -> (or/c list? false/c)
|
||||
; Is l a prefix or r?, and what is that prefix?
|
||||
; list-prefix : list? list? -> boolean?
|
||||
; Is l a prefix or r?
|
||||
(define (list-prefix? ls rs)
|
||||
(match ls
|
||||
[(list)
|
||||
#t]
|
||||
[(list-rest l0 ls)
|
||||
(match rs
|
||||
[(list)
|
||||
#f]
|
||||
[(list-rest r0 rs)
|
||||
(if (equal? l0 r0)
|
||||
(list-prefix? ls rs)
|
||||
#f)])]))
|
||||
(or (null? ls)
|
||||
(and (pair? rs)
|
||||
(equal? (car ls) (car rs))
|
||||
(list-prefix? (cdr ls) (cdr rs)))))
|
||||
|
||||
;; Eli: Is this some `match' obsession syndrom? The simple definition:
|
||||
;; (define (list-prefix? ls rs)
|
||||
;; (or (null? ls) (and (pair? rs) (equal? (car ls) (car rs))
|
||||
|
@ -25,6 +21,7 @@
|
|||
;; (Which can be useful for things like making a path relative to
|
||||
;; another path.) A nice generalization is to make it get two or more
|
||||
;; lists, and return a matching number of values.
|
||||
;; ryanc: changed to use Eli's version
|
||||
|
||||
(provide/contract
|
||||
[list-prefix? (list? list? . -> . boolean?)])
|
||||
|
@ -38,4 +35,52 @@
|
|||
(define (extend s t extra)
|
||||
(append t (build-list (- (length s) (length t)) (lambda _ extra))))
|
||||
|
||||
(provide filter-multiple extend)
|
||||
(provide filter-multiple extend)
|
||||
|
||||
;; ryanc added:
|
||||
|
||||
(provide/contract
|
||||
[check-duplicate
|
||||
(->* (list?)
|
||||
(#:key (-> any/c any/c)
|
||||
#:same? (or/c dict? (-> any/c any/c any/c)))
|
||||
any)])
|
||||
|
||||
;; check-duplicate : (listof X)
|
||||
;; #:key (X -> K)
|
||||
;; #:same? (or/c (K K -> bool) dict?)
|
||||
;; -> X or #f
|
||||
(define (check-duplicate items
|
||||
#:key [key values]
|
||||
#:same? [same? equal?])
|
||||
(cond [(procedure? same?)
|
||||
(cond [(eq? same? equal?)
|
||||
(check-duplicate/t items key (make-hash) #t)]
|
||||
[(eq? same? eq?)
|
||||
(check-duplicate/t items key (make-hasheq) #t)]
|
||||
[(eq? same? eqv?)
|
||||
(check-duplicate/t items key (make-hasheqv) #t)]
|
||||
[else
|
||||
(check-duplicate/list items key same?)])]
|
||||
[(dict? same?)
|
||||
(let ([dict same?])
|
||||
(if (dict-mutable? dict)
|
||||
(check-duplicate/t items key dict #t)
|
||||
(check-duplicate/t items key dict #f)))]))
|
||||
(define (check-duplicate/t items key table mutating?)
|
||||
(let loop ([items items] [table table])
|
||||
(and (pair? items)
|
||||
(let ([key-item (key (car items))])
|
||||
(if (dict-ref table key-item #f)
|
||||
(car items)
|
||||
(loop (cdr items) (if mutating?
|
||||
(begin (dict-set! table key-item #t) table)
|
||||
(dict-set table key-item #t))))))))
|
||||
(define (check-duplicate/list items key same?)
|
||||
(let loop ([items items] [sofar null])
|
||||
(and (pair? items)
|
||||
(let ([key-item (key (car items))])
|
||||
(if (for/or ([prev (in-list sofar)])
|
||||
(same? key-item prev))
|
||||
(car items)
|
||||
(loop (cdr items) (cons key-item sofar)))))))
|
||||
|
|
|
@ -13,8 +13,7 @@
|
|||
;; syntax -> void
|
||||
(define (fmv/list lstx)
|
||||
(for-each find-mutated-vars (syntax->list lstx)))
|
||||
;(when (and (pair? (syntax->datum form))) (printf "called with ~a~n" (syntax->datum form)))
|
||||
(kernel-syntax-case* form #f (define-type-alias-internal define-typed-struct-internal require/typed-internal)
|
||||
(kernel-syntax-case* form #f ()
|
||||
;; what we care about: set!
|
||||
[(set! v e)
|
||||
(begin
|
||||
|
@ -51,5 +50,8 @@
|
|||
;; less general.
|
||||
;; - What's with the typed-scheme literals? If they were needed, then
|
||||
;; typed-scheme is probably broken now.
|
||||
;; ryanc:
|
||||
;; - The for-template is needed.
|
||||
;; - I've removed the bogus literals.
|
||||
|
||||
(provide find-mutated-vars is-var-mutated?)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#lang scribble/doc
|
||||
@(require scribble/base
|
||||
scribble/manual
|
||||
"utils.ss"
|
||||
(for-label unstable/contract
|
||||
scheme/contract
|
||||
scheme/base))
|
||||
|
@ -9,8 +10,39 @@
|
|||
|
||||
@defmodule[unstable/contract]
|
||||
|
||||
@defthing[non-empty-string/c contract?]{Contract for non-empty strings.}
|
||||
@defthing[non-empty-string/c contract?]{
|
||||
Contract for non-empty strings.
|
||||
}
|
||||
|
||||
@defthing[port-number? contract?]{Equivalent to @scheme[(between/c 1 65535)].}
|
||||
@defthing[port-number? contract?]{
|
||||
Equivalent to @scheme[(between/c 1 65535)].
|
||||
}
|
||||
|
||||
@defthing[path-element? contract?]{Equivalent to @scheme[(or/c path-string? (symbols 'up 'same))].}
|
||||
@defthing[path-element? contract?]{
|
||||
Equivalent to @scheme[(or/c path-string? (symbols 'up 'same))].
|
||||
}
|
||||
|
||||
@addition{Ryan Culpepper}
|
||||
|
||||
@defproc[(if/c [predicate (-> any/c any/c)]
|
||||
[then-contract contract?]
|
||||
[else-contract contract?])
|
||||
contract?]{
|
||||
|
||||
Produces a contract that, when applied to a value, first tests the
|
||||
value with @scheme[predicate]; if @scheme[predicate] returns true, the
|
||||
@scheme[then-contract] is applied; otherwise, the
|
||||
@scheme[else-contract] is applied. The resulting contract is a flat
|
||||
contract if both @scheme[then-contract] and @scheme[else-contract] are
|
||||
flat contracts.
|
||||
|
||||
For example, the following contract enforces that if a value is a
|
||||
procedure, it is a thunk; otherwise it can be any (non-procedure)
|
||||
value:
|
||||
@schemeblock[(if/c procedure? (-> any) any/c)]
|
||||
Note that the following contract is @bold{not} equivalent:
|
||||
@schemeblock[(or/c (-> any) any/c) (code:comment "wrong!")]
|
||||
The last contract is the same as @scheme[any/c] because
|
||||
@scheme[or/c] tries flat contracts before higher-order contracts.
|
||||
|
||||
}
|
||||
|
|
|
@ -3,9 +3,11 @@
|
|||
scribble/manual
|
||||
scribble/eval
|
||||
"utils.ss"
|
||||
(for-label unstable/list
|
||||
scheme/contract
|
||||
scheme/base))
|
||||
(for-label scheme/dict
|
||||
unstable/list
|
||||
syntax/id-table
|
||||
scheme/contract
|
||||
scheme/base))
|
||||
|
||||
@(define the-eval (make-base-eval))
|
||||
@(the-eval '(require unstable/list))
|
||||
|
@ -40,4 +42,38 @@ Extends @scheme[l2] to be as long as @scheme[l1] by adding @scheme[(-
|
|||
|
||||
@examples[#:eval the-eval]
|
||||
(extend '(1 2 3) '(a) 'b)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@addition{Ryan Culpepper}
|
||||
|
||||
@defproc[(check-duplicate [lst list?]
|
||||
[#:key extract-key (-> any/c any/c) (lambda (x) x)]
|
||||
[#:same? same?
|
||||
(or/c (any/c any/c . -> . any/c)
|
||||
dict?)
|
||||
equal?])
|
||||
(or/c any/c #f)]{
|
||||
|
||||
Returns the first duplicate item in @scheme[lst]. More precisely, it
|
||||
returns the first @scheme[_x] such that there was a previous
|
||||
@scheme[_y] where @scheme[(same? (extract-key _x) (extract-key _y))].
|
||||
|
||||
The @scheme[same?] argument can either be an equivalence predicate
|
||||
such as @scheme[equal?] or @scheme[eqv?] or a dictionary. In the
|
||||
latter case, the elements of the list are mapped to @scheme[#t] in the
|
||||
dictionary until an element is discovered that is already mapped to a
|
||||
true value. The procedures @scheme[equal?], @scheme[eqv?], and
|
||||
@scheme[eq?] automatically use a dictionary for speed.
|
||||
|
||||
@(the-eval '(require syntax/id-table scheme/dict))
|
||||
@examples[#:eval the-eval
|
||||
(check-duplicate '(1 2 3 4))
|
||||
(check-duplicate '(1 2 3 2 1))
|
||||
(check-duplicate '((a 1) (b 2) (a 3)) #:key car)
|
||||
(define id-t (make-free-id-table))
|
||||
(check-duplicate (syntax->list #'(a b c d a b))
|
||||
#:same? id-t)
|
||||
(dict-map id-t list)
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3,24 +3,27 @@
|
|||
(require (for-syntax scheme/base
|
||||
scheme/struct-info))
|
||||
(provide make
|
||||
struct->list)
|
||||
struct->list
|
||||
(for-syntax get-struct-info))
|
||||
|
||||
;; get-struct-info : identifier stx -> struct-info-list
|
||||
(define-for-syntax (get-struct-info id ctx)
|
||||
(define (bad-struct-name x)
|
||||
(raise-syntax-error #f "expected struct name" ctx x))
|
||||
(unless (identifier? id)
|
||||
(bad-struct-name id))
|
||||
(let ([value (syntax-local-value id (lambda () #f))])
|
||||
(unless (struct-info? value)
|
||||
(bad-struct-name id))
|
||||
(extract-struct-info value)))
|
||||
|
||||
;; (make struct-name field-expr ...)
|
||||
;; Checks that correct number of fields given.
|
||||
(define-syntax (make stx)
|
||||
(define (bad-struct-name x)
|
||||
(raise-syntax-error #f "expected struct name" stx x))
|
||||
(define (get-struct-info id)
|
||||
(unless (identifier? id)
|
||||
(bad-struct-name id))
|
||||
(let ([value (syntax-local-value id (lambda () #f))])
|
||||
(unless (struct-info? value)
|
||||
(bad-struct-name id))
|
||||
(extract-struct-info value)))
|
||||
(syntax-case stx ()
|
||||
[(make S expr ...)
|
||||
(let ()
|
||||
(define info (get-struct-info #'S))
|
||||
(define info (get-struct-info #'S stx))
|
||||
(define constructor (list-ref info 1))
|
||||
(define accessors (list-ref info 3))
|
||||
(unless (identifier? #'constructor)
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
syntax/stx
|
||||
unstable/struct
|
||||
(for-syntax scheme/base
|
||||
scheme/private/sc))
|
||||
scheme/private/sc)
|
||||
(for-template scheme/base))
|
||||
|
||||
(provide unwrap-syntax
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ responses. One basic kind of response is to show an HTML page.
|
|||
|
||||
For example:
|
||||
|
||||
The HTML @tt{hello} is represented as @scheme["hello"].
|
||||
The HTML @tt{hello} is represented as @scheme["hello"]. Strings are automatically escaped when output. This guarantees valid HTML. Therefore, the value @scheme["<b>Unfinished tag"] is rendered as @tt{<b>Unfinished tag} not @tt{<b>Unfinished tag}. Similarly, @scheme["<i>Finished tag</i>"] is rendered as @tt{<i>Finished tag</i>} not @tt{<i>Finished tag</i>}.
|
||||
|
||||
@tt{<p>This is an example</p>} is
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
Version 4.2.3.4
|
||||
Added flvectors
|
||||
|
||||
Version 4.2.3.3
|
||||
Added unsafe-f64vector-ref and unsafe-f64vector-set!
|
||||
Changed JIT to inline numeric ops with more than 2 arguments
|
||||
|
|
|
@ -318,6 +318,12 @@ typedef struct Scheme_Vector {
|
|||
Scheme_Object *els[1];
|
||||
} Scheme_Vector;
|
||||
|
||||
typedef struct Scheme_Double_Vector {
|
||||
Scheme_Object so;
|
||||
long size;
|
||||
double els[1];
|
||||
} Scheme_Double_Vector;
|
||||
|
||||
typedef struct Scheme_Print_Params Scheme_Print_Params;
|
||||
typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Print_Params *pp);
|
||||
|
||||
|
@ -435,6 +441,8 @@ typedef long (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj, void *cycle_data)
|
|||
#define SCHEME_MUTABLE_VECTORP(obj) (SCHEME_VECTORP(obj) && SCHEME_MUTABLEP(obj))
|
||||
#define SCHEME_IMMUTABLE_VECTORP(obj) (SCHEME_VECTORP(obj) && SCHEME_IMMUTABLEP(obj))
|
||||
|
||||
#define SCHEME_FLVECTORP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_flvector_type)
|
||||
|
||||
#define SCHEME_STRUCTP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_structure_type) || SAME_TYPE(SCHEME_TYPE(obj), scheme_proc_struct_type))
|
||||
#define SCHEME_STRUCT_TYPEP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_struct_type_type)
|
||||
|
||||
|
@ -539,6 +547,9 @@ typedef long (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj, void *cycle_data)
|
|||
#define SCHEME_VEC_ELS(obj) (((Scheme_Vector *)(obj))->els)
|
||||
#define SCHEME_VEC_BASE(obj) SCHEME_VEC_ELS(obj)
|
||||
|
||||
#define SCHEME_FLVEC_SIZE(obj) (((Scheme_Double_Vector *)(obj))->size)
|
||||
#define SCHEME_FLVEC_ELS(obj) (((Scheme_Double_Vector *)(obj))->els)
|
||||
|
||||
#define SCHEME_ENVBOX_VAL(obj) (*((Scheme_Object **)(obj)))
|
||||
#define SCHEME_WEAK_BOX_VAL(obj) SCHEME_BOX_VAL(obj)
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,51,50,0,0,0,1,0,0,3,0,12,0,
|
||||
25,0,29,0,34,0,41,0,44,0,49,0,56,0,63,0,67,0,72,0,78,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,52,50,0,0,0,1,0,0,3,0,12,0,
|
||||
19,0,23,0,28,0,41,0,44,0,49,0,56,0,63,0,67,0,72,0,78,
|
||||
0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0,
|
||||
177,0,179,0,193,0,4,1,33,1,44,1,55,1,65,1,101,1,134,1,167,
|
||||
1,226,1,36,2,114,2,180,2,185,2,205,2,96,3,116,3,167,3,233,3,
|
||||
118,4,4,5,56,5,79,5,158,5,0,0,105,7,0,0,29,11,11,68,104,
|
||||
101,114,101,45,115,116,120,72,112,97,114,97,109,101,116,101,114,105,122,101,63,
|
||||
97,110,100,64,108,101,116,42,66,100,101,102,105,110,101,62,111,114,64,99,111,
|
||||
101,114,101,45,115,116,120,66,100,101,102,105,110,101,63,97,110,100,64,108,101,
|
||||
116,42,72,112,97,114,97,109,101,116,101,114,105,122,101,62,111,114,64,99,111,
|
||||
110,100,66,108,101,116,114,101,99,66,117,110,108,101,115,115,63,108,101,116,64,
|
||||
119,104,101,110,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114,110,
|
||||
101,108,11,29,94,2,13,68,35,37,112,97,114,97,109,122,11,62,105,102,65,
|
||||
|
@ -21,57 +21,57 @@
|
|||
2,161,2,1,36,2,2,2,1,2,2,96,11,11,8,240,35,79,0,0,16,
|
||||
0,96,37,11,8,240,35,79,0,0,16,0,13,16,4,35,29,11,11,2,1,
|
||||
11,18,16,2,99,64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,93,
|
||||
8,224,42,79,0,0,95,9,8,224,42,79,0,0,2,1,27,248,22,137,4,
|
||||
195,249,22,130,4,80,158,38,35,251,22,77,2,16,248,22,92,199,12,249,22,
|
||||
67,2,17,248,22,94,201,27,248,22,137,4,195,249,22,130,4,80,158,38,35,
|
||||
8,224,42,79,0,0,95,9,8,224,42,79,0,0,2,1,27,248,22,143,4,
|
||||
195,249,22,136,4,80,158,38,35,251,22,77,2,16,248,22,92,199,12,249,22,
|
||||
67,2,17,248,22,94,201,27,248,22,143,4,195,249,22,136,4,80,158,38,35,
|
||||
251,22,77,2,16,248,22,92,199,249,22,67,2,17,248,22,94,201,12,27,248,
|
||||
22,69,248,22,137,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248,22,
|
||||
75,248,22,69,194,248,22,68,193,249,22,130,4,80,158,38,35,251,22,77,2,
|
||||
22,69,248,22,143,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248,22,
|
||||
75,248,22,69,194,248,22,68,193,249,22,136,4,80,158,38,35,251,22,77,2,
|
||||
16,248,22,68,199,249,22,67,2,4,248,22,69,201,11,18,16,2,101,10,8,
|
||||
31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,
|
||||
49,50,57,54,48,16,4,11,11,2,19,3,1,8,101,110,118,49,50,57,54,
|
||||
49,93,8,224,43,79,0,0,95,9,8,224,43,79,0,0,2,1,27,248,22,
|
||||
69,248,22,137,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248,22,75,
|
||||
248,22,69,194,248,22,68,193,249,22,130,4,80,158,38,35,250,22,77,2,20,
|
||||
69,248,22,143,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248,22,75,
|
||||
248,22,69,194,248,22,68,193,249,22,136,4,80,158,38,35,250,22,77,2,20,
|
||||
248,22,77,249,22,77,248,22,77,2,21,248,22,68,201,251,22,77,2,16,2,
|
||||
21,2,21,249,22,67,2,7,248,22,69,204,18,16,2,101,11,8,31,8,30,
|
||||
8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,49,50,57,
|
||||
54,51,16,4,11,11,2,19,3,1,8,101,110,118,49,50,57,54,52,93,8,
|
||||
224,44,79,0,0,95,9,8,224,44,79,0,0,2,1,248,22,137,4,193,27,
|
||||
248,22,137,4,194,249,22,67,248,22,77,248,22,68,196,248,22,69,195,27,248,
|
||||
22,69,248,22,137,4,23,197,1,249,22,130,4,80,158,38,35,28,248,22,53,
|
||||
248,22,131,4,248,22,68,23,198,2,27,249,22,2,32,0,89,162,8,44,36,
|
||||
42,9,222,33,39,248,22,137,4,248,22,92,23,200,2,250,22,77,2,22,248,
|
||||
224,44,79,0,0,95,9,8,224,44,79,0,0,2,1,248,22,143,4,193,27,
|
||||
248,22,143,4,194,249,22,67,248,22,77,248,22,68,196,248,22,69,195,27,248,
|
||||
22,69,248,22,143,4,23,197,1,249,22,136,4,80,158,38,35,28,248,22,53,
|
||||
248,22,137,4,248,22,68,23,198,2,27,249,22,2,32,0,89,162,8,44,36,
|
||||
42,9,222,33,39,248,22,143,4,248,22,92,23,200,2,250,22,77,2,22,248,
|
||||
22,77,249,22,77,248,22,77,248,22,68,23,204,2,250,22,78,2,23,249,22,
|
||||
2,22,68,23,204,2,248,22,94,23,206,2,249,22,67,248,22,68,23,202,1,
|
||||
249,22,2,22,92,23,200,1,250,22,78,2,20,249,22,2,32,0,89,162,8,
|
||||
44,36,46,9,222,33,40,248,22,137,4,248,22,68,201,248,22,69,198,27,248,
|
||||
22,137,4,194,249,22,67,248,22,77,248,22,68,196,248,22,69,195,27,248,22,
|
||||
69,248,22,137,4,23,197,1,249,22,130,4,80,158,38,35,250,22,78,2,22,
|
||||
249,22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,137,4,248,22,
|
||||
68,201,248,22,69,198,27,248,22,69,248,22,137,4,196,27,248,22,137,4,248,
|
||||
22,68,195,249,22,130,4,80,158,39,35,28,248,22,75,195,250,22,78,2,20,
|
||||
44,36,46,9,222,33,40,248,22,143,4,248,22,68,201,248,22,69,198,27,248,
|
||||
22,143,4,194,249,22,67,248,22,77,248,22,68,196,248,22,69,195,27,248,22,
|
||||
69,248,22,143,4,23,197,1,249,22,136,4,80,158,38,35,250,22,78,2,22,
|
||||
249,22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,143,4,248,22,
|
||||
68,201,248,22,69,198,27,248,22,69,248,22,143,4,196,27,248,22,143,4,248,
|
||||
22,68,195,249,22,136,4,80,158,39,35,28,248,22,75,195,250,22,78,2,20,
|
||||
9,248,22,69,199,250,22,77,2,11,248,22,77,248,22,68,199,250,22,78,2,
|
||||
5,248,22,69,201,248,22,69,202,27,248,22,69,248,22,137,4,23,197,1,27,
|
||||
249,22,1,22,81,249,22,2,22,137,4,248,22,137,4,248,22,68,199,249,22,
|
||||
130,4,80,158,39,35,251,22,77,1,22,119,105,116,104,45,99,111,110,116,105,
|
||||
5,248,22,69,201,248,22,69,202,27,248,22,69,248,22,143,4,23,197,1,27,
|
||||
249,22,1,22,81,249,22,2,22,143,4,248,22,143,4,248,22,68,199,249,22,
|
||||
136,4,80,158,39,35,251,22,77,1,22,119,105,116,104,45,99,111,110,116,105,
|
||||
110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,78,1,23,101,120,
|
||||
116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
|
||||
21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,
|
||||
45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,78,2,20,9,248,
|
||||
22,69,203,27,248,22,69,248,22,137,4,196,28,248,22,75,193,20,15,159,36,
|
||||
35,36,249,22,130,4,80,158,38,35,27,248,22,137,4,248,22,68,197,28,249,
|
||||
22,167,8,62,61,62,248,22,131,4,248,22,92,196,250,22,77,2,20,248,22,
|
||||
22,69,203,27,248,22,69,248,22,143,4,196,28,248,22,75,193,20,15,159,36,
|
||||
35,36,249,22,136,4,80,158,38,35,27,248,22,143,4,248,22,68,197,28,249,
|
||||
22,173,8,62,61,62,248,22,137,4,248,22,92,196,250,22,77,2,20,248,22,
|
||||
77,249,22,77,21,93,2,25,248,22,68,199,250,22,78,2,8,249,22,77,2,
|
||||
25,249,22,77,248,22,101,203,2,25,248,22,69,202,251,22,77,2,16,28,249,
|
||||
22,167,8,248,22,131,4,248,22,68,200,64,101,108,115,101,10,248,22,68,197,
|
||||
22,173,8,248,22,137,4,248,22,68,200,64,101,108,115,101,10,248,22,68,197,
|
||||
250,22,78,2,20,9,248,22,69,200,249,22,67,2,8,248,22,69,202,100,8,
|
||||
31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,
|
||||
49,50,57,56,54,16,4,11,11,2,19,3,1,8,101,110,118,49,50,57,56,
|
||||
55,93,8,224,45,79,0,0,18,16,2,158,94,10,64,118,111,105,100,8,47,
|
||||
95,9,8,224,45,79,0,0,2,1,27,248,22,69,248,22,137,4,196,249,22,
|
||||
130,4,80,158,38,35,28,248,22,53,248,22,131,4,248,22,68,197,250,22,77,
|
||||
2,26,248,22,77,248,22,68,199,248,22,92,198,27,248,22,131,4,248,22,68,
|
||||
95,9,8,224,45,79,0,0,2,1,27,248,22,69,248,22,143,4,196,249,22,
|
||||
136,4,80,158,38,35,28,248,22,53,248,22,137,4,248,22,68,197,250,22,77,
|
||||
2,26,248,22,77,248,22,68,199,248,22,92,198,27,248,22,137,4,248,22,68,
|
||||
197,250,22,77,2,26,248,22,77,248,22,68,197,250,22,78,2,23,248,22,69,
|
||||
199,248,22,69,202,159,35,20,102,159,35,16,1,11,16,0,83,158,41,20,100,
|
||||
144,69,35,37,109,105,110,45,115,116,120,2,1,11,11,11,10,35,80,158,35,
|
||||
|
@ -90,16 +90,16 @@
|
|||
44,36,57,9,223,0,33,41,35,20,102,159,35,16,1,2,2,16,0,11,16,
|
||||
5,2,9,89,162,8,44,36,52,9,223,0,33,43,35,20,102,159,35,16,1,
|
||||
2,2,16,0,11,16,5,2,5,89,162,8,44,36,53,9,223,0,33,44,35,
|
||||
20,102,159,35,16,1,2,2,16,0,11,16,5,2,3,89,162,8,44,36,54,
|
||||
20,102,159,35,16,1,2,2,16,0,11,16,5,2,6,89,162,8,44,36,54,
|
||||
9,223,0,33,45,35,20,102,159,35,16,1,2,2,16,0,11,16,5,2,8,
|
||||
89,162,8,44,36,57,9,223,0,33,46,35,20,102,159,35,16,1,2,2,16,
|
||||
1,33,48,11,16,5,2,6,89,162,8,44,36,53,9,223,0,33,49,35,20,
|
||||
1,33,48,11,16,5,2,3,89,162,8,44,36,53,9,223,0,33,49,35,20,
|
||||
102,159,35,16,1,2,2,16,0,11,16,0,94,2,14,2,15,93,2,14,9,
|
||||
9,35,0};
|
||||
EVAL_ONE_SIZED_STR((char *)expr, 2018);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,51,59,0,0,0,1,0,0,13,0,18,0,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,52,59,0,0,0,1,0,0,13,0,18,0,
|
||||
35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0,226,
|
||||
0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,154,1,
|
||||
199,1,223,1,6,2,8,2,65,2,155,3,196,3,31,5,135,5,239,5,100,
|
||||
|
@ -131,176 +131,176 @@
|
|||
116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,
|
||||
100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,
|
||||
112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50,250,80,158,39,51,
|
||||
249,22,27,11,80,158,41,50,22,189,12,10,248,22,160,5,23,196,2,28,248,
|
||||
22,157,6,23,194,2,12,87,94,248,22,171,8,23,194,1,248,80,159,37,53,
|
||||
249,22,27,11,80,158,41,50,22,131,13,10,248,22,166,5,23,196,2,28,248,
|
||||
22,163,6,23,194,2,12,87,94,248,22,177,8,23,194,1,248,80,159,37,53,
|
||||
36,195,28,248,22,75,23,195,2,9,27,248,22,68,23,196,2,27,28,248,22,
|
||||
171,13,23,195,2,23,194,1,28,248,22,170,13,23,195,2,249,22,172,13,23,
|
||||
196,1,250,80,158,42,48,248,22,187,13,2,19,11,10,250,80,158,40,48,248,
|
||||
22,187,13,2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,174,13,249,
|
||||
22,172,13,23,198,1,247,22,188,13,27,248,22,69,23,200,1,28,248,22,75,
|
||||
23,194,2,9,27,248,22,68,23,195,2,27,28,248,22,171,13,23,195,2,23,
|
||||
194,1,28,248,22,170,13,23,195,2,249,22,172,13,23,196,1,250,80,158,47,
|
||||
48,248,22,187,13,2,19,11,10,250,80,158,45,48,248,22,187,13,2,19,23,
|
||||
197,1,10,28,23,193,2,249,22,67,248,22,174,13,249,22,172,13,23,198,1,
|
||||
247,22,188,13,248,80,159,45,52,36,248,22,69,23,199,1,87,94,23,193,1,
|
||||
177,13,23,195,2,23,194,1,28,248,22,176,13,23,195,2,249,22,178,13,23,
|
||||
196,1,250,80,158,42,48,248,22,129,14,2,19,11,10,250,80,158,40,48,248,
|
||||
22,129,14,2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,180,13,249,
|
||||
22,178,13,23,198,1,247,22,130,14,27,248,22,69,23,200,1,28,248,22,75,
|
||||
23,194,2,9,27,248,22,68,23,195,2,27,28,248,22,177,13,23,195,2,23,
|
||||
194,1,28,248,22,176,13,23,195,2,249,22,178,13,23,196,1,250,80,158,47,
|
||||
48,248,22,129,14,2,19,11,10,250,80,158,45,48,248,22,129,14,2,19,23,
|
||||
197,1,10,28,23,193,2,249,22,67,248,22,180,13,249,22,178,13,23,198,1,
|
||||
247,22,130,14,248,80,159,45,52,36,248,22,69,23,199,1,87,94,23,193,1,
|
||||
248,80,159,43,52,36,248,22,69,23,197,1,87,94,23,193,1,27,248,22,69,
|
||||
23,198,1,28,248,22,75,23,194,2,9,27,248,22,68,23,195,2,27,28,248,
|
||||
22,171,13,23,195,2,23,194,1,28,248,22,170,13,23,195,2,249,22,172,13,
|
||||
23,196,1,250,80,158,45,48,248,22,187,13,2,19,11,10,250,80,158,43,48,
|
||||
248,22,187,13,2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,174,13,
|
||||
249,22,172,13,23,198,1,247,22,188,13,248,80,159,43,52,36,248,22,69,23,
|
||||
199,1,248,80,159,41,52,36,248,22,69,196,27,248,22,147,13,23,195,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,162,6,23,195,2,27,248,22,169,
|
||||
13,195,28,192,192,248,22,170,13,195,11,87,94,28,28,248,22,148,13,23,195,
|
||||
2,10,27,248,22,147,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28,
|
||||
248,22,162,6,23,196,2,27,248,22,169,13,23,197,2,28,23,193,2,192,87,
|
||||
94,23,193,1,248,22,170,13,23,197,2,11,12,250,22,135,9,76,110,111,114,
|
||||
22,177,13,23,195,2,23,194,1,28,248,22,176,13,23,195,2,249,22,178,13,
|
||||
23,196,1,250,80,158,45,48,248,22,129,14,2,19,11,10,250,80,158,43,48,
|
||||
248,22,129,14,2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,180,13,
|
||||
249,22,178,13,23,198,1,247,22,130,14,248,80,159,43,52,36,248,22,69,23,
|
||||
199,1,248,80,159,41,52,36,248,22,69,196,27,248,22,153,13,23,195,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,168,6,23,195,2,27,248,22,175,
|
||||
13,195,28,192,192,248,22,176,13,195,11,87,94,28,28,248,22,154,13,23,195,
|
||||
2,10,27,248,22,153,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28,
|
||||
248,22,168,6,23,196,2,27,248,22,175,13,23,197,2,28,23,193,2,192,87,
|
||||
94,23,193,1,248,22,176,13,23,197,2,11,12,250,22,141,9,76,110,111,114,
|
||||
109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,
|
||||
40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,
|
||||
97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,28,28,
|
||||
248,22,148,13,23,195,2,249,22,167,8,248,22,149,13,23,197,2,2,20,249,
|
||||
22,167,8,247,22,181,7,2,20,27,28,248,22,162,6,23,196,2,23,195,2,
|
||||
248,22,171,7,248,22,152,13,23,197,2,28,249,22,136,14,0,21,35,114,120,
|
||||
248,22,154,13,23,195,2,249,22,173,8,248,22,155,13,23,197,2,2,20,249,
|
||||
22,173,8,247,22,187,7,2,20,27,28,248,22,168,6,23,196,2,23,195,2,
|
||||
248,22,177,7,248,22,158,13,23,197,2,28,249,22,142,14,0,21,35,114,120,
|
||||
34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,23,195,2,
|
||||
28,248,22,162,6,195,248,22,155,13,195,194,27,248,22,137,7,23,195,1,249,
|
||||
22,156,13,248,22,174,7,250,22,142,14,0,6,35,114,120,34,47,34,28,249,
|
||||
22,136,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,
|
||||
92,92,93,42,36,34,23,201,2,23,199,1,250,22,142,14,0,19,35,114,120,
|
||||
28,248,22,168,6,195,248,22,161,13,195,194,27,248,22,143,7,23,195,1,249,
|
||||
22,162,13,248,22,180,7,250,22,148,14,0,6,35,114,120,34,47,34,28,249,
|
||||
22,142,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,
|
||||
92,92,93,42,36,34,23,201,2,23,199,1,250,22,148,14,0,19,35,114,120,
|
||||
34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202,1,6,2,
|
||||
2,92,49,80,159,43,36,37,2,20,28,248,22,162,6,194,248,22,155,13,194,
|
||||
193,87,94,28,27,248,22,147,13,23,196,2,28,23,193,2,192,87,94,23,193,
|
||||
1,28,248,22,162,6,23,196,2,27,248,22,169,13,23,197,2,28,23,193,2,
|
||||
192,87,94,23,193,1,248,22,170,13,23,197,2,11,12,250,22,135,9,23,196,
|
||||
2,2,21,23,197,2,28,248,22,169,13,23,195,2,12,248,22,165,11,249,22,
|
||||
174,10,248,22,191,6,250,22,146,7,2,22,23,200,1,23,201,1,247,22,23,
|
||||
87,94,28,27,248,22,147,13,23,196,2,28,23,193,2,192,87,94,23,193,1,
|
||||
28,248,22,162,6,23,196,2,27,248,22,169,13,23,197,2,28,23,193,2,192,
|
||||
87,94,23,193,1,248,22,170,13,23,197,2,11,12,250,22,135,9,23,196,2,
|
||||
2,21,23,197,2,28,248,22,169,13,23,195,2,12,248,22,165,11,249,22,174,
|
||||
10,248,22,191,6,250,22,146,7,2,22,23,200,1,23,201,1,247,22,23,87,
|
||||
94,87,94,28,27,248,22,147,13,23,196,2,28,23,193,2,192,87,94,23,193,
|
||||
1,28,248,22,162,6,23,196,2,27,248,22,169,13,23,197,2,28,23,193,2,
|
||||
192,87,94,23,193,1,248,22,170,13,23,197,2,11,12,250,22,135,9,195,2,
|
||||
21,23,197,2,28,248,22,169,13,23,195,2,12,248,22,165,11,249,22,174,10,
|
||||
248,22,191,6,250,22,146,7,2,22,199,23,201,1,247,22,23,249,22,3,89,
|
||||
162,8,44,36,49,9,223,2,33,33,196,248,22,165,11,249,22,140,11,23,196,
|
||||
2,92,49,80,159,43,36,37,2,20,28,248,22,168,6,194,248,22,161,13,194,
|
||||
193,87,94,28,27,248,22,153,13,23,196,2,28,23,193,2,192,87,94,23,193,
|
||||
1,28,248,22,168,6,23,196,2,27,248,22,175,13,23,197,2,28,23,193,2,
|
||||
192,87,94,23,193,1,248,22,176,13,23,197,2,11,12,250,22,141,9,23,196,
|
||||
2,2,21,23,197,2,28,248,22,175,13,23,195,2,12,248,22,171,11,249,22,
|
||||
180,10,248,22,133,7,250,22,152,7,2,22,23,200,1,23,201,1,247,22,23,
|
||||
87,94,28,27,248,22,153,13,23,196,2,28,23,193,2,192,87,94,23,193,1,
|
||||
28,248,22,168,6,23,196,2,27,248,22,175,13,23,197,2,28,23,193,2,192,
|
||||
87,94,23,193,1,248,22,176,13,23,197,2,11,12,250,22,141,9,23,196,2,
|
||||
2,21,23,197,2,28,248,22,175,13,23,195,2,12,248,22,171,11,249,22,180,
|
||||
10,248,22,133,7,250,22,152,7,2,22,23,200,1,23,201,1,247,22,23,87,
|
||||
94,87,94,28,27,248,22,153,13,23,196,2,28,23,193,2,192,87,94,23,193,
|
||||
1,28,248,22,168,6,23,196,2,27,248,22,175,13,23,197,2,28,23,193,2,
|
||||
192,87,94,23,193,1,248,22,176,13,23,197,2,11,12,250,22,141,9,195,2,
|
||||
21,23,197,2,28,248,22,175,13,23,195,2,12,248,22,171,11,249,22,180,10,
|
||||
248,22,133,7,250,22,152,7,2,22,199,23,201,1,247,22,23,249,22,3,89,
|
||||
162,8,44,36,49,9,223,2,33,33,196,248,22,171,11,249,22,146,11,23,196,
|
||||
1,247,22,23,87,94,250,80,159,38,39,36,2,6,196,197,251,80,159,39,41,
|
||||
36,2,6,32,0,89,162,8,44,36,44,9,222,33,35,197,198,32,37,89,162,
|
||||
43,41,58,65,99,108,111,111,112,222,33,38,28,248,22,75,23,199,2,87,94,
|
||||
23,198,1,248,23,196,1,251,22,146,7,2,23,23,199,1,28,248,22,75,23,
|
||||
203,2,87,94,23,202,1,23,201,1,250,22,1,22,165,13,23,204,1,23,205,
|
||||
1,23,198,1,27,249,22,165,13,248,22,68,23,202,2,23,199,2,28,248,22,
|
||||
160,13,23,194,2,27,250,22,1,22,165,13,23,197,1,23,202,2,28,248,22,
|
||||
160,13,23,194,2,192,87,94,23,193,1,27,248,22,69,23,202,1,28,248,22,
|
||||
75,23,194,2,87,94,23,193,1,248,23,199,1,251,22,146,7,2,23,23,202,
|
||||
1,28,248,22,75,23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,165,
|
||||
13,23,207,1,23,208,1,23,201,1,27,249,22,165,13,248,22,68,23,197,2,
|
||||
23,202,2,28,248,22,160,13,23,194,2,27,250,22,1,22,165,13,23,197,1,
|
||||
204,28,248,22,160,13,193,192,253,2,37,203,204,205,206,23,15,248,22,69,201,
|
||||
23,198,1,248,23,196,1,251,22,152,7,2,23,23,199,1,28,248,22,75,23,
|
||||
203,2,87,94,23,202,1,23,201,1,250,22,1,22,171,13,23,204,1,23,205,
|
||||
1,23,198,1,27,249,22,171,13,248,22,68,23,202,2,23,199,2,28,248,22,
|
||||
166,13,23,194,2,27,250,22,1,22,171,13,23,197,1,23,202,2,28,248,22,
|
||||
166,13,23,194,2,192,87,94,23,193,1,27,248,22,69,23,202,1,28,248,22,
|
||||
75,23,194,2,87,94,23,193,1,248,23,199,1,251,22,152,7,2,23,23,202,
|
||||
1,28,248,22,75,23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,171,
|
||||
13,23,207,1,23,208,1,23,201,1,27,249,22,171,13,248,22,68,23,197,2,
|
||||
23,202,2,28,248,22,166,13,23,194,2,27,250,22,1,22,171,13,23,197,1,
|
||||
204,28,248,22,166,13,193,192,253,2,37,203,204,205,206,23,15,248,22,69,201,
|
||||
253,2,37,202,203,204,205,206,248,22,69,200,87,94,23,193,1,27,248,22,69,
|
||||
23,201,1,28,248,22,75,23,194,2,87,94,23,193,1,248,23,198,1,251,22,
|
||||
146,7,2,23,23,201,1,28,248,22,75,23,205,2,87,94,23,204,1,23,203,
|
||||
1,250,22,1,22,165,13,23,206,1,23,207,1,23,200,1,27,249,22,165,13,
|
||||
248,22,68,23,197,2,23,201,2,28,248,22,160,13,23,194,2,27,250,22,1,
|
||||
22,165,13,23,197,1,203,28,248,22,160,13,193,192,253,2,37,202,203,204,205,
|
||||
206,248,22,69,201,253,2,37,201,202,203,204,205,248,22,69,200,27,247,22,189,
|
||||
13,253,2,37,198,199,200,201,202,198,87,95,28,28,248,22,148,13,23,194,2,
|
||||
10,27,248,22,147,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,
|
||||
22,162,6,23,195,2,27,248,22,169,13,23,196,2,28,23,193,2,192,87,94,
|
||||
23,193,1,248,22,170,13,23,196,2,11,12,252,22,135,9,23,200,2,2,24,
|
||||
35,23,198,2,23,199,2,28,28,248,22,162,6,23,195,2,10,248,22,150,7,
|
||||
23,195,2,87,94,23,194,1,12,252,22,135,9,23,200,2,2,25,36,23,198,
|
||||
2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,168,13,23,197,2,87,
|
||||
94,23,195,1,87,94,28,192,12,250,22,136,9,23,201,1,2,26,23,199,1,
|
||||
249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,148,
|
||||
13,23,196,2,10,27,248,22,147,13,23,197,2,28,23,193,2,192,87,94,23,
|
||||
193,1,28,248,22,162,6,23,197,2,27,248,22,169,13,23,198,2,28,23,193,
|
||||
2,192,87,94,23,193,1,248,22,170,13,23,198,2,11,12,252,22,135,9,2,
|
||||
9,2,24,35,23,200,2,23,201,2,28,28,248,22,162,6,23,197,2,10,248,
|
||||
22,150,7,23,197,2,12,252,22,135,9,2,9,2,25,36,23,200,2,23,201,
|
||||
2,91,159,38,11,90,161,38,35,11,248,22,168,13,23,199,2,87,94,23,195,
|
||||
1,87,94,28,192,12,250,22,136,9,2,9,2,26,23,201,2,249,22,7,194,
|
||||
195,27,249,22,157,13,250,22,141,14,0,20,35,114,120,35,34,40,63,58,91,
|
||||
46,93,91,94,46,93,42,124,41,36,34,248,22,153,13,23,201,1,28,248,22,
|
||||
162,6,23,203,2,249,22,174,7,23,204,1,8,63,23,202,1,28,248,22,148,
|
||||
13,23,199,2,248,22,149,13,23,199,1,87,94,23,198,1,247,22,150,13,28,
|
||||
248,22,147,13,194,249,22,165,13,195,194,192,91,159,37,11,90,161,37,35,11,
|
||||
87,95,28,28,248,22,148,13,23,196,2,10,27,248,22,147,13,23,197,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,162,6,23,197,2,27,248,22,169,
|
||||
13,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,170,13,23,198,2,
|
||||
11,12,252,22,135,9,2,10,2,24,35,23,200,2,23,201,2,28,28,248,22,
|
||||
162,6,23,197,2,10,248,22,150,7,23,197,2,12,252,22,135,9,2,10,2,
|
||||
25,36,23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,168,13,
|
||||
23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,136,9,2,10,2,26,
|
||||
23,201,2,249,22,7,194,195,27,249,22,157,13,249,22,160,7,250,22,142,14,
|
||||
0,9,35,114,120,35,34,91,46,93,34,248,22,153,13,23,203,1,6,1,1,
|
||||
95,28,248,22,162,6,23,202,2,249,22,174,7,23,203,1,8,63,23,201,1,
|
||||
28,248,22,148,13,23,199,2,248,22,149,13,23,199,1,87,94,23,198,1,247,
|
||||
22,150,13,28,248,22,147,13,194,249,22,165,13,195,194,192,249,247,22,129,5,
|
||||
152,7,2,23,23,201,1,28,248,22,75,23,205,2,87,94,23,204,1,23,203,
|
||||
1,250,22,1,22,171,13,23,206,1,23,207,1,23,200,1,27,249,22,171,13,
|
||||
248,22,68,23,197,2,23,201,2,28,248,22,166,13,23,194,2,27,250,22,1,
|
||||
22,171,13,23,197,1,203,28,248,22,166,13,193,192,253,2,37,202,203,204,205,
|
||||
206,248,22,69,201,253,2,37,201,202,203,204,205,248,22,69,200,27,247,22,131,
|
||||
14,253,2,37,198,199,200,201,202,198,87,95,28,28,248,22,154,13,23,194,2,
|
||||
10,27,248,22,153,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,
|
||||
22,168,6,23,195,2,27,248,22,175,13,23,196,2,28,23,193,2,192,87,94,
|
||||
23,193,1,248,22,176,13,23,196,2,11,12,252,22,141,9,23,200,2,2,24,
|
||||
35,23,198,2,23,199,2,28,28,248,22,168,6,23,195,2,10,248,22,156,7,
|
||||
23,195,2,87,94,23,194,1,12,252,22,141,9,23,200,2,2,25,36,23,198,
|
||||
2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,174,13,23,197,2,87,
|
||||
94,23,195,1,87,94,28,192,12,250,22,142,9,23,201,1,2,26,23,199,1,
|
||||
249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,154,
|
||||
13,23,196,2,10,27,248,22,153,13,23,197,2,28,23,193,2,192,87,94,23,
|
||||
193,1,28,248,22,168,6,23,197,2,27,248,22,175,13,23,198,2,28,23,193,
|
||||
2,192,87,94,23,193,1,248,22,176,13,23,198,2,11,12,252,22,141,9,2,
|
||||
9,2,24,35,23,200,2,23,201,2,28,28,248,22,168,6,23,197,2,10,248,
|
||||
22,156,7,23,197,2,12,252,22,141,9,2,9,2,25,36,23,200,2,23,201,
|
||||
2,91,159,38,11,90,161,38,35,11,248,22,174,13,23,199,2,87,94,23,195,
|
||||
1,87,94,28,192,12,250,22,142,9,2,9,2,26,23,201,2,249,22,7,194,
|
||||
195,27,249,22,163,13,250,22,147,14,0,20,35,114,120,35,34,40,63,58,91,
|
||||
46,93,91,94,46,93,42,124,41,36,34,248,22,159,13,23,201,1,28,248,22,
|
||||
168,6,23,203,2,249,22,180,7,23,204,1,8,63,23,202,1,28,248,22,154,
|
||||
13,23,199,2,248,22,155,13,23,199,1,87,94,23,198,1,247,22,156,13,28,
|
||||
248,22,153,13,194,249,22,171,13,195,194,192,91,159,37,11,90,161,37,35,11,
|
||||
87,95,28,28,248,22,154,13,23,196,2,10,27,248,22,153,13,23,197,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,168,6,23,197,2,27,248,22,175,
|
||||
13,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,176,13,23,198,2,
|
||||
11,12,252,22,141,9,2,10,2,24,35,23,200,2,23,201,2,28,28,248,22,
|
||||
168,6,23,197,2,10,248,22,156,7,23,197,2,12,252,22,141,9,2,10,2,
|
||||
25,36,23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,174,13,
|
||||
23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,142,9,2,10,2,26,
|
||||
23,201,2,249,22,7,194,195,27,249,22,163,13,249,22,166,7,250,22,148,14,
|
||||
0,9,35,114,120,35,34,91,46,93,34,248,22,159,13,23,203,1,6,1,1,
|
||||
95,28,248,22,168,6,23,202,2,249,22,180,7,23,203,1,8,63,23,201,1,
|
||||
28,248,22,154,13,23,199,2,248,22,155,13,23,199,1,87,94,23,198,1,247,
|
||||
22,156,13,28,248,22,153,13,194,249,22,171,13,195,194,192,249,247,22,135,5,
|
||||
194,11,249,80,159,37,46,36,9,9,249,80,159,37,46,36,195,9,27,247,22,
|
||||
191,13,249,80,158,38,47,28,23,195,2,27,248,22,179,7,6,11,11,80,76,
|
||||
133,14,249,80,158,38,47,28,23,195,2,27,248,22,185,7,6,11,11,80,76,
|
||||
84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,
|
||||
196,1,250,22,165,13,248,22,187,13,69,97,100,100,111,110,45,100,105,114,247,
|
||||
22,177,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,
|
||||
36,250,22,81,23,203,1,248,22,77,248,22,187,13,72,99,111,108,108,101,99,
|
||||
196,1,250,22,171,13,248,22,129,14,69,97,100,100,111,110,45,100,105,114,247,
|
||||
22,183,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,
|
||||
36,250,22,81,23,203,1,248,22,77,248,22,129,14,72,99,111,108,108,101,99,
|
||||
116,115,45,100,105,114,23,204,1,28,193,249,22,67,195,194,192,32,47,89,162,
|
||||
8,44,38,54,2,18,222,33,48,27,249,22,134,14,23,197,2,23,198,2,28,
|
||||
8,44,38,54,2,18,222,33,48,27,249,22,140,14,23,197,2,23,198,2,28,
|
||||
23,193,2,87,94,23,196,1,27,248,22,92,23,195,2,27,27,248,22,101,23,
|
||||
197,1,27,249,22,134,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,
|
||||
197,1,27,249,22,140,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,
|
||||
1,27,248,22,92,23,195,2,27,250,2,47,23,203,2,23,204,1,248,22,101,
|
||||
23,199,1,28,249,22,156,7,23,196,2,2,27,249,22,81,23,202,2,194,249,
|
||||
22,67,248,22,156,13,23,197,1,194,87,95,23,199,1,23,193,1,28,249,22,
|
||||
156,7,23,196,2,2,27,249,22,81,23,200,2,9,249,22,67,248,22,156,13,
|
||||
23,197,1,9,28,249,22,156,7,23,196,2,2,27,249,22,81,197,194,87,94,
|
||||
23,196,1,249,22,67,248,22,156,13,23,197,1,194,87,94,23,193,1,28,249,
|
||||
22,156,7,23,198,2,2,27,249,22,81,195,9,87,94,23,194,1,249,22,67,
|
||||
248,22,156,13,23,199,1,9,87,95,28,28,248,22,150,7,194,10,248,22,162,
|
||||
6,194,12,250,22,135,9,2,13,6,21,21,98,121,116,101,32,115,116,114,105,
|
||||
23,199,1,28,249,22,162,7,23,196,2,2,27,249,22,81,23,202,2,194,249,
|
||||
22,67,248,22,162,13,23,197,1,194,87,95,23,199,1,23,193,1,28,249,22,
|
||||
162,7,23,196,2,2,27,249,22,81,23,200,2,9,249,22,67,248,22,162,13,
|
||||
23,197,1,9,28,249,22,162,7,23,196,2,2,27,249,22,81,197,194,87,94,
|
||||
23,196,1,249,22,67,248,22,162,13,23,197,1,194,87,94,23,193,1,28,249,
|
||||
22,162,7,23,198,2,2,27,249,22,81,195,9,87,94,23,194,1,249,22,67,
|
||||
248,22,162,13,23,199,1,9,87,95,28,28,248,22,156,7,194,10,248,22,168,
|
||||
6,194,12,250,22,141,9,2,13,6,21,21,98,121,116,101,32,115,116,114,105,
|
||||
110,103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22,76,195,249,22,
|
||||
4,22,147,13,196,11,12,250,22,135,9,2,13,6,13,13,108,105,115,116,32,
|
||||
111,102,32,112,97,116,104,115,197,250,2,47,197,195,28,248,22,162,6,197,248,
|
||||
22,173,7,197,196,32,50,89,162,8,44,39,57,2,18,222,33,53,32,51,89,
|
||||
4,22,153,13,196,11,12,250,22,141,9,2,13,6,13,13,108,105,115,116,32,
|
||||
111,102,32,112,97,116,104,115,197,250,2,47,197,195,28,248,22,168,6,197,248,
|
||||
22,179,7,197,196,32,50,89,162,8,44,39,57,2,18,222,33,53,32,51,89,
|
||||
162,8,44,38,54,70,102,111,117,110,100,45,101,120,101,99,222,33,52,28,23,
|
||||
193,2,91,159,38,11,90,161,38,35,11,248,22,168,13,23,199,2,87,95,23,
|
||||
195,1,23,194,1,27,28,23,198,2,27,248,22,173,13,23,201,2,28,249,22,
|
||||
169,8,23,195,2,23,202,2,11,28,248,22,169,13,23,194,2,250,2,51,23,
|
||||
201,2,23,202,2,249,22,165,13,23,200,2,23,198,1,250,2,51,23,201,2,
|
||||
193,2,91,159,38,11,90,161,38,35,11,248,22,174,13,23,199,2,87,95,23,
|
||||
195,1,23,194,1,27,28,23,198,2,27,248,22,179,13,23,201,2,28,249,22,
|
||||
175,8,23,195,2,23,202,2,11,28,248,22,175,13,23,194,2,250,2,51,23,
|
||||
201,2,23,202,2,249,22,171,13,23,200,2,23,198,1,250,2,51,23,201,2,
|
||||
23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,
|
||||
147,13,23,196,2,27,249,22,165,13,23,198,2,23,201,2,28,28,248,22,160,
|
||||
13,193,10,248,22,159,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,
|
||||
28,23,199,2,11,27,248,22,173,13,23,202,2,28,249,22,169,8,23,195,2,
|
||||
23,203,1,11,28,248,22,169,13,23,194,2,250,2,51,23,202,1,23,203,1,
|
||||
249,22,165,13,23,201,1,23,198,1,250,2,51,201,202,195,194,28,248,22,75,
|
||||
23,197,2,11,27,248,22,172,13,248,22,68,23,199,2,27,249,22,165,13,23,
|
||||
196,1,23,197,2,28,248,22,159,13,23,194,2,250,2,51,198,199,195,87,94,
|
||||
153,13,23,196,2,27,249,22,171,13,23,198,2,23,201,2,28,28,248,22,166,
|
||||
13,193,10,248,22,165,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,
|
||||
28,23,199,2,11,27,248,22,179,13,23,202,2,28,249,22,175,8,23,195,2,
|
||||
23,203,1,11,28,248,22,175,13,23,194,2,250,2,51,23,202,1,23,203,1,
|
||||
249,22,171,13,23,201,1,23,198,1,250,2,51,201,202,195,194,28,248,22,75,
|
||||
23,197,2,11,27,248,22,178,13,248,22,68,23,199,2,27,249,22,171,13,23,
|
||||
196,1,23,197,2,28,248,22,165,13,23,194,2,250,2,51,198,199,195,87,94,
|
||||
23,193,1,27,248,22,69,23,200,1,28,248,22,75,23,194,2,11,27,248,22,
|
||||
172,13,248,22,68,23,196,2,27,249,22,165,13,23,196,1,23,200,2,28,248,
|
||||
22,159,13,23,194,2,250,2,51,201,202,195,87,94,23,193,1,27,248,22,69,
|
||||
23,197,1,28,248,22,75,23,194,2,11,27,248,22,172,13,248,22,68,195,27,
|
||||
249,22,165,13,23,196,1,202,28,248,22,159,13,193,250,2,51,204,205,195,251,
|
||||
2,50,204,205,206,248,22,69,199,87,95,28,27,248,22,147,13,23,196,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,162,6,23,196,2,27,248,22,169,
|
||||
13,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,170,13,23,197,2,
|
||||
11,12,250,22,135,9,2,14,6,25,25,112,97,116,104,32,111,114,32,115,116,
|
||||
178,13,248,22,68,23,196,2,27,249,22,171,13,23,196,1,23,200,2,28,248,
|
||||
22,165,13,23,194,2,250,2,51,201,202,195,87,94,23,193,1,27,248,22,69,
|
||||
23,197,1,28,248,22,75,23,194,2,11,27,248,22,178,13,248,22,68,195,27,
|
||||
249,22,171,13,23,196,1,202,28,248,22,165,13,193,250,2,51,204,205,195,251,
|
||||
2,50,204,205,206,248,22,69,199,87,95,28,27,248,22,153,13,23,196,2,28,
|
||||
23,193,2,192,87,94,23,193,1,28,248,22,168,6,23,196,2,27,248,22,175,
|
||||
13,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,176,13,23,197,2,
|
||||
11,12,250,22,141,9,2,14,6,25,25,112,97,116,104,32,111,114,32,115,116,
|
||||
114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,
|
||||
195,2,28,27,248,22,147,13,23,197,2,28,23,193,2,192,87,94,23,193,1,
|
||||
28,248,22,162,6,23,197,2,27,248,22,169,13,23,198,2,28,23,193,2,192,
|
||||
87,94,23,193,1,248,22,170,13,23,198,2,11,248,22,169,13,23,196,2,11,
|
||||
10,12,250,22,135,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,
|
||||
195,2,28,27,248,22,153,13,23,197,2,28,23,193,2,192,87,94,23,193,1,
|
||||
28,248,22,168,6,23,197,2,27,248,22,175,13,23,198,2,28,23,193,2,192,
|
||||
87,94,23,193,1,248,22,176,13,23,198,2,11,248,22,175,13,23,196,2,11,
|
||||
10,12,250,22,141,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,
|
||||
116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,
|
||||
2,28,28,248,22,169,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,
|
||||
168,13,23,198,2,249,22,167,8,194,68,114,101,108,97,116,105,118,101,11,27,
|
||||
248,22,179,7,6,4,4,80,65,84,72,251,2,50,23,199,1,23,200,1,23,
|
||||
201,1,28,23,197,2,27,249,80,159,43,47,37,23,200,1,9,28,249,22,167,
|
||||
8,247,22,181,7,2,20,249,22,67,248,22,156,13,5,1,46,194,192,9,27,
|
||||
248,22,172,13,23,196,1,28,248,22,159,13,193,250,2,51,198,199,195,11,250,
|
||||
2,28,28,248,22,175,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,
|
||||
174,13,23,198,2,249,22,173,8,194,68,114,101,108,97,116,105,118,101,11,27,
|
||||
248,22,185,7,6,4,4,80,65,84,72,251,2,50,23,199,1,23,200,1,23,
|
||||
201,1,28,23,197,2,27,249,80,159,43,47,37,23,200,1,9,28,249,22,173,
|
||||
8,247,22,187,7,2,20,249,22,67,248,22,162,13,5,1,46,194,192,9,27,
|
||||
248,22,178,13,23,196,1,28,248,22,165,13,193,250,2,51,198,199,195,11,250,
|
||||
80,159,38,48,36,196,197,11,250,80,159,38,48,36,196,11,11,87,94,249,22,
|
||||
153,6,247,22,189,4,195,248,22,179,5,249,22,174,3,35,249,22,158,3,197,
|
||||
159,6,247,22,131,5,195,248,22,185,5,249,22,180,3,35,249,22,164,3,197,
|
||||
198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,
|
||||
1,27,248,22,187,13,2,19,27,249,80,159,40,48,36,23,196,1,11,27,27,
|
||||
248,22,177,3,23,200,1,28,192,192,35,27,27,248,22,177,3,23,202,1,28,
|
||||
192,192,35,249,22,156,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,
|
||||
47,9,224,3,2,33,57,23,195,1,23,196,1,27,248,22,141,5,23,195,1,
|
||||
1,27,248,22,129,14,2,19,27,249,80,159,40,48,36,23,196,1,11,27,27,
|
||||
248,22,183,3,23,200,1,28,192,192,35,27,27,248,22,183,3,23,202,1,28,
|
||||
192,192,35,249,22,162,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,
|
||||
47,9,224,3,2,33,57,23,195,1,23,196,1,27,248,22,147,5,23,195,1,
|
||||
248,80,159,38,53,36,193,159,35,20,102,159,35,16,1,11,16,0,83,158,41,
|
||||
20,100,144,67,35,37,117,116,105,108,115,29,11,11,11,11,11,10,42,80,158,
|
||||
35,35,20,102,159,37,16,17,2,1,2,2,2,3,2,4,2,5,2,6,2,
|
||||
|
@ -316,7 +316,7 @@
|
|||
83,158,35,16,2,89,162,43,36,48,2,18,223,0,33,28,80,159,35,53,36,
|
||||
83,158,35,16,2,89,162,8,44,36,55,2,18,223,0,33,29,80,159,35,52,
|
||||
36,83,158,35,16,2,32,0,89,162,43,36,44,2,1,222,33,30,80,159,35,
|
||||
35,36,83,158,35,16,2,249,22,164,6,7,92,7,92,80,159,35,36,36,83,
|
||||
35,36,83,158,35,16,2,249,22,170,6,7,92,7,92,80,159,35,36,36,83,
|
||||
158,35,16,2,89,162,43,36,53,2,3,223,0,33,31,80,159,35,37,36,83,
|
||||
158,35,16,2,32,0,89,162,8,44,37,49,2,4,222,33,32,80,159,35,38,
|
||||
36,83,158,35,16,2,32,0,89,162,8,44,38,50,2,5,222,33,34,80,159,
|
||||
|
@ -329,8 +329,8 @@
|
|||
11,222,33,43,80,159,35,45,36,83,158,35,16,2,83,158,38,20,96,96,2,
|
||||
12,89,162,43,35,43,9,223,0,33,44,89,162,43,36,44,9,223,0,33,45,
|
||||
89,162,43,37,54,9,223,0,33,46,80,159,35,46,36,83,158,35,16,2,27,
|
||||
248,22,130,14,248,22,173,7,27,28,249,22,167,8,247,22,181,7,2,20,6,
|
||||
1,1,59,6,1,1,58,250,22,146,7,6,14,14,40,91,94,126,97,93,42,
|
||||
248,22,136,14,248,22,179,7,27,28,249,22,173,8,247,22,187,7,2,20,6,
|
||||
1,1,59,6,1,1,58,250,22,152,7,6,14,14,40,91,94,126,97,93,42,
|
||||
41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,37,47,2,13,
|
||||
223,0,33,49,80,159,35,47,36,83,158,35,16,2,83,158,38,20,96,96,2,
|
||||
14,89,162,8,44,38,53,9,223,0,33,54,89,162,43,37,46,9,223,0,33,
|
||||
|
@ -341,7 +341,7 @@
|
|||
EVAL_ONE_SIZED_STR((char *)expr, 5006);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,51,8,0,0,0,1,0,0,6,0,19,0,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,52,8,0,0,0,1,0,0,6,0,19,0,
|
||||
34,0,48,0,62,0,76,0,118,0,0,0,38,1,0,0,65,113,117,111,116,
|
||||
101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,
|
||||
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
|
||||
|
@ -360,7 +360,7 @@
|
|||
EVAL_ONE_SIZED_STR((char *)expr, 331);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,51,56,0,0,0,1,0,0,11,0,38,0,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,51,46,52,56,0,0,0,1,0,0,11,0,38,0,
|
||||
44,0,57,0,66,0,73,0,95,0,117,0,143,0,155,0,173,0,193,0,205,
|
||||
0,221,0,244,0,0,1,31,1,38,1,43,1,48,1,53,1,58,1,67,1,
|
||||
72,1,76,1,84,1,93,1,101,1,204,1,249,1,13,2,42,2,73,2,129,
|
||||
|
@ -383,48 +383,48 @@
|
|||
29,94,2,3,2,5,11,64,98,111,111,116,64,115,101,97,108,64,115,97,109,
|
||||
101,5,3,46,122,111,6,6,6,110,97,116,105,118,101,64,108,111,111,112,63,
|
||||
108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80,159,37,45,37,249,
|
||||
80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,167,8,23,197,2,80,
|
||||
158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,176,4,23,197,2,28,
|
||||
248,22,147,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,168,13,23,
|
||||
80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,173,8,23,197,2,80,
|
||||
158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,182,4,23,197,2,28,
|
||||
248,22,153,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,174,13,23,
|
||||
197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,11,80,158,40,47,
|
||||
192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,130,5,28,192,
|
||||
192,247,22,188,13,20,14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,
|
||||
80,158,40,39,22,130,5,28,248,22,147,13,23,198,2,23,197,1,87,94,23,
|
||||
197,1,247,22,188,13,247,194,250,22,165,13,23,197,1,23,199,1,249,80,158,
|
||||
42,38,23,198,1,2,22,252,22,165,13,23,199,1,23,201,1,2,23,247,22,
|
||||
182,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87,94,23,194,1,27,
|
||||
250,22,182,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,
|
||||
67,195,194,11,27,252,22,165,13,23,200,1,23,202,1,2,23,247,22,182,7,
|
||||
249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22,182,13,196,11,32,
|
||||
192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,136,5,28,192,
|
||||
192,247,22,130,14,20,14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,
|
||||
80,158,40,39,22,136,5,28,248,22,153,13,23,198,2,23,197,1,87,94,23,
|
||||
197,1,247,22,130,14,247,194,250,22,171,13,23,197,1,23,199,1,249,80,158,
|
||||
42,38,23,198,1,2,22,252,22,171,13,23,199,1,23,201,1,2,23,247,22,
|
||||
188,7,249,80,158,44,38,23,200,1,80,159,44,35,37,87,94,23,194,1,27,
|
||||
250,22,188,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,
|
||||
67,195,194,11,27,252,22,171,13,23,200,1,23,202,1,2,23,247,22,188,7,
|
||||
249,80,158,45,38,23,201,1,80,159,45,35,37,27,250,22,188,13,196,11,32,
|
||||
0,89,162,8,44,35,40,9,222,11,28,192,249,22,67,195,194,11,249,247,22,
|
||||
129,14,248,22,68,195,195,27,250,22,165,13,23,198,1,23,200,1,249,80,158,
|
||||
43,38,23,199,1,2,22,27,250,22,182,13,196,11,32,0,89,162,8,44,35,
|
||||
40,9,222,11,28,192,249,22,67,195,194,11,249,247,22,128,5,248,22,68,195,
|
||||
195,249,247,22,128,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12,250,
|
||||
22,135,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,
|
||||
135,14,248,22,68,195,195,27,250,22,171,13,23,198,1,23,200,1,249,80,158,
|
||||
43,38,23,199,1,2,22,27,250,22,188,13,196,11,32,0,89,162,8,44,35,
|
||||
40,9,222,11,28,192,249,22,67,195,194,11,249,247,22,134,5,248,22,68,195,
|
||||
195,249,247,22,134,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12,250,
|
||||
22,141,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,
|
||||
6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,
|
||||
32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,11,28,248,
|
||||
22,171,13,23,201,2,23,200,1,27,247,22,130,5,28,23,193,2,249,22,172,
|
||||
13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,168,13,23,194,2,87,
|
||||
94,23,196,1,90,161,36,39,11,28,249,22,167,8,23,196,2,68,114,101,108,
|
||||
22,177,13,23,201,2,23,200,1,27,247,22,136,5,28,23,193,2,249,22,178,
|
||||
13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,174,13,23,194,2,87,
|
||||
94,23,196,1,90,161,36,39,11,28,249,22,173,8,23,196,2,68,114,101,108,
|
||||
97,116,105,118,101,87,94,23,194,1,2,21,23,194,1,90,161,36,40,11,247,
|
||||
22,190,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,31,27,89,162,
|
||||
22,132,14,27,89,162,43,36,49,62,122,111,225,7,5,3,33,31,27,89,162,
|
||||
43,36,51,9,225,8,6,4,33,32,27,249,22,5,89,162,8,44,36,46,9,
|
||||
223,5,33,33,23,203,2,27,28,23,195,1,27,249,22,5,89,162,8,44,36,
|
||||
52,9,225,13,11,9,33,34,23,205,2,27,28,23,196,2,11,193,28,192,192,
|
||||
28,193,28,23,196,2,28,249,22,170,3,248,22,69,196,248,22,69,23,199,2,
|
||||
28,193,28,23,196,2,28,249,22,176,3,248,22,69,196,248,22,69,23,199,2,
|
||||
193,11,11,11,11,28,23,193,2,249,80,159,47,58,36,202,89,162,43,35,45,
|
||||
9,224,14,2,33,35,87,94,23,193,1,27,28,23,197,1,27,249,22,5,83,
|
||||
158,39,20,97,94,89,162,8,44,36,50,9,225,14,12,10,33,36,23,203,1,
|
||||
23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,170,3,248,
|
||||
23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,176,3,248,
|
||||
22,69,196,248,22,69,199,193,11,11,11,11,28,192,249,80,159,48,58,36,203,
|
||||
89,162,43,35,45,9,224,15,2,33,37,249,80,159,48,58,36,203,89,162,43,
|
||||
35,44,9,224,15,7,33,38,32,40,89,162,8,44,36,54,2,24,222,33,42,
|
||||
0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,27,249,
|
||||
22,134,14,2,41,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,
|
||||
22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,134,14,2,41,23,196,
|
||||
22,140,14,2,41,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,
|
||||
22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,140,14,2,41,23,196,
|
||||
2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,27,248,
|
||||
22,101,23,197,1,27,249,22,134,14,2,41,23,196,2,28,23,193,2,87,94,
|
||||
22,101,23,197,1,27,249,22,140,14,2,41,23,196,2,28,23,193,2,87,94,
|
||||
23,194,1,249,22,67,248,22,92,23,196,2,248,2,40,248,22,101,23,197,1,
|
||||
248,22,77,194,248,22,77,194,248,22,77,194,32,43,89,162,43,36,54,2,24,
|
||||
222,33,44,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68,195,
|
||||
|
@ -434,95 +434,95 @@
|
|||
195,91,159,37,11,90,161,37,35,11,248,2,43,248,22,69,196,249,22,7,249,
|
||||
22,67,248,22,68,199,196,195,249,22,7,249,22,67,248,22,68,199,196,195,249,
|
||||
22,7,249,22,67,248,22,68,199,196,195,27,248,2,40,23,195,1,28,194,192,
|
||||
248,2,43,193,87,95,28,248,22,174,4,195,12,250,22,135,9,2,17,6,20,
|
||||
248,2,43,193,87,95,28,248,22,180,4,195,12,250,22,141,9,2,17,6,20,
|
||||
20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,
|
||||
197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,141,
|
||||
2,80,159,41,42,37,248,22,154,14,247,22,129,12,11,28,23,193,2,192,87,
|
||||
2,80,159,41,42,37,248,22,160,14,247,22,135,12,11,28,23,193,2,192,87,
|
||||
94,23,193,1,27,247,22,125,87,94,250,22,139,2,80,159,42,42,37,248,22,
|
||||
154,14,247,22,129,12,195,192,250,22,139,2,195,198,66,97,116,116,97,99,104,
|
||||
251,211,197,198,199,10,28,192,250,22,134,9,11,196,195,248,22,132,9,194,28,
|
||||
249,22,168,6,194,6,1,1,46,2,21,28,249,22,168,6,194,6,2,2,46,
|
||||
46,62,117,112,192,28,249,22,169,8,248,22,69,23,200,2,23,197,1,28,249,
|
||||
22,167,8,248,22,68,23,200,2,23,196,1,251,22,132,9,2,17,6,26,26,
|
||||
160,14,247,22,135,12,195,192,250,22,139,2,195,198,66,97,116,116,97,99,104,
|
||||
251,211,197,198,199,10,28,192,250,22,140,9,11,196,195,248,22,138,9,194,28,
|
||||
249,22,174,6,194,6,1,1,46,2,21,28,249,22,174,6,194,6,2,2,46,
|
||||
46,62,117,112,192,28,249,22,175,8,248,22,69,23,200,2,23,197,1,28,249,
|
||||
22,173,8,248,22,68,23,200,2,23,196,1,251,22,138,9,2,17,6,26,26,
|
||||
99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,
|
||||
101,58,32,126,101,23,200,1,249,22,2,22,69,248,22,82,249,22,67,23,206,
|
||||
1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22,67,248,22,
|
||||
154,14,247,22,129,12,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40,
|
||||
249,22,27,11,80,158,44,39,22,156,4,23,196,1,249,247,22,129,5,23,198,
|
||||
1,248,22,55,248,22,151,13,23,198,1,87,94,28,28,248,22,147,13,23,196,
|
||||
2,10,248,22,180,4,23,196,2,12,28,23,197,2,250,22,134,9,11,6,15,
|
||||
160,14,247,22,135,12,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40,
|
||||
249,22,27,11,80,158,44,39,22,162,4,23,196,1,249,247,22,135,5,23,198,
|
||||
1,248,22,55,248,22,157,13,23,198,1,87,94,28,28,248,22,153,13,23,196,
|
||||
2,10,248,22,186,4,23,196,2,12,28,23,197,2,250,22,140,9,11,6,15,
|
||||
15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,
|
||||
135,9,2,17,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,
|
||||
32,112,97,116,104,23,198,2,28,28,248,22,65,23,196,2,249,22,167,8,248,
|
||||
22,68,23,198,2,2,3,11,248,22,175,4,248,22,92,196,28,28,248,22,65,
|
||||
23,196,2,249,22,167,8,248,22,68,23,198,2,66,112,108,97,110,101,116,11,
|
||||
141,9,2,17,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,
|
||||
32,112,97,116,104,23,198,2,28,28,248,22,65,23,196,2,249,22,173,8,248,
|
||||
22,68,23,198,2,2,3,11,248,22,181,4,248,22,92,196,28,28,248,22,65,
|
||||
23,196,2,249,22,173,8,248,22,68,23,198,2,66,112,108,97,110,101,116,11,
|
||||
87,94,28,207,12,20,14,159,80,158,36,51,80,158,36,49,90,161,36,35,10,
|
||||
249,22,157,4,21,94,2,25,6,18,18,112,108,97,110,101,116,47,114,101,115,
|
||||
249,22,163,4,21,94,2,25,6,18,18,112,108,97,110,101,116,47,114,101,115,
|
||||
111,108,118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,
|
||||
108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,252,212,199,200,
|
||||
201,202,80,158,41,49,87,94,23,193,1,27,89,162,8,44,36,45,79,115,104,
|
||||
111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,48,
|
||||
27,28,248,22,53,23,198,2,27,250,22,141,2,80,159,42,43,37,249,22,67,
|
||||
23,203,2,247,22,189,13,11,28,23,193,2,192,87,94,23,193,1,91,159,37,
|
||||
23,203,2,247,22,131,14,11,28,23,193,2,192,87,94,23,193,1,91,159,37,
|
||||
11,90,161,37,35,11,249,80,159,43,48,36,248,22,58,23,203,2,11,27,251,
|
||||
80,158,46,52,2,17,23,202,1,28,248,22,75,23,199,2,23,199,2,248,22,
|
||||
68,23,199,2,28,248,22,75,23,199,2,9,248,22,69,23,199,2,249,22,165,
|
||||
68,23,199,2,28,248,22,75,23,199,2,9,248,22,69,23,199,2,249,22,171,
|
||||
13,23,195,1,28,248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97,
|
||||
105,110,46,115,115,249,22,185,6,23,199,1,6,3,3,46,115,115,28,248,22,
|
||||
162,6,23,198,2,87,94,23,194,1,27,248,80,159,40,59,36,23,200,2,27,
|
||||
105,110,46,115,115,249,22,191,6,23,199,1,6,3,3,46,115,115,28,248,22,
|
||||
168,6,23,198,2,87,94,23,194,1,27,248,80,159,40,59,36,23,200,2,27,
|
||||
250,22,141,2,80,159,43,43,37,249,22,67,23,204,2,23,199,2,11,28,23,
|
||||
193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,44,
|
||||
48,36,23,203,2,11,250,22,1,22,165,13,23,199,1,249,22,81,249,22,2,
|
||||
48,36,23,203,2,11,250,22,1,22,171,13,23,199,1,249,22,81,249,22,2,
|
||||
32,0,89,162,8,44,36,43,9,222,33,49,23,200,1,248,22,77,23,200,1,
|
||||
28,248,22,147,13,23,198,2,87,94,23,194,1,28,248,22,170,13,23,198,2,
|
||||
28,248,22,153,13,23,198,2,87,94,23,194,1,28,248,22,176,13,23,198,2,
|
||||
23,197,2,248,22,77,6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,
|
||||
116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,167,8,248,22,
|
||||
116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,173,8,248,22,
|
||||
68,23,200,2,2,25,27,250,22,141,2,80,159,42,43,37,249,22,67,23,203,
|
||||
2,247,22,189,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,
|
||||
2,247,22,131,14,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,
|
||||
161,37,35,11,249,80,159,44,48,36,248,22,92,23,204,2,11,90,161,36,37,
|
||||
11,28,248,22,75,248,22,94,23,203,2,28,248,22,75,23,194,2,249,22,136,
|
||||
11,28,248,22,75,248,22,94,23,203,2,28,248,22,75,23,194,2,249,22,142,
|
||||
14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197,
|
||||
2,249,22,81,28,248,22,75,248,22,94,23,207,2,21,93,6,5,5,109,122,
|
||||
108,105,98,249,22,1,22,81,249,22,2,80,159,50,8,25,36,248,22,94,23,
|
||||
210,2,23,197,2,28,248,22,75,23,196,2,248,22,77,23,197,2,23,195,2,
|
||||
251,80,158,48,52,2,17,23,204,1,248,22,68,23,198,2,248,22,69,23,198,
|
||||
1,249,22,165,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,
|
||||
1,249,22,171,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,
|
||||
248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,
|
||||
28,249,22,136,14,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,
|
||||
249,22,185,6,23,199,1,6,3,3,46,115,115,28,249,22,167,8,248,22,68,
|
||||
23,200,2,64,102,105,108,101,249,22,172,13,248,22,176,13,248,22,92,23,201,
|
||||
2,248,80,159,41,59,36,23,201,2,12,87,94,28,28,248,22,147,13,23,194,
|
||||
2,10,248,22,184,7,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,
|
||||
134,9,67,114,101,113,117,105,114,101,249,22,146,7,6,17,17,98,97,100,32,
|
||||
28,249,22,142,14,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,
|
||||
249,22,191,6,23,199,1,6,3,3,46,115,115,28,249,22,173,8,248,22,68,
|
||||
23,200,2,64,102,105,108,101,249,22,178,13,248,22,182,13,248,22,92,23,201,
|
||||
2,248,80,159,41,59,36,23,201,2,12,87,94,28,28,248,22,153,13,23,194,
|
||||
2,10,248,22,190,7,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,
|
||||
140,9,67,114,101,113,117,105,114,101,249,22,152,7,6,17,17,98,97,100,32,
|
||||
109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,68,23,
|
||||
199,2,6,0,0,23,202,1,87,94,23,199,1,250,22,135,9,2,17,249,22,
|
||||
146,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,
|
||||
2,248,22,68,23,199,2,6,0,0,23,200,2,27,28,248,22,184,7,23,195,
|
||||
2,249,22,189,7,23,196,2,35,249,22,174,13,248,22,175,13,23,197,2,11,
|
||||
27,28,248,22,184,7,23,196,2,249,22,189,7,23,197,2,36,248,80,158,41,
|
||||
53,23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,184,7,23,199,2,
|
||||
250,22,7,2,26,249,22,189,7,23,203,2,37,2,26,248,22,168,13,23,198,
|
||||
2,87,95,23,195,1,23,193,1,27,28,248,22,184,7,23,200,2,249,22,189,
|
||||
7,23,201,2,38,249,80,158,46,54,23,197,2,5,0,27,28,248,22,184,7,
|
||||
23,201,2,249,22,189,7,23,202,2,39,248,22,175,4,23,200,2,27,27,250,
|
||||
22,141,2,80,159,50,42,37,248,22,154,14,247,22,129,12,11,28,23,193,2,
|
||||
199,2,6,0,0,23,202,1,87,94,23,199,1,250,22,141,9,2,17,249,22,
|
||||
152,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,
|
||||
2,248,22,68,23,199,2,6,0,0,23,200,2,27,28,248,22,190,7,23,195,
|
||||
2,249,22,131,8,23,196,2,35,249,22,180,13,248,22,181,13,23,197,2,11,
|
||||
27,28,248,22,190,7,23,196,2,249,22,131,8,23,197,2,36,248,80,158,41,
|
||||
53,23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,190,7,23,199,2,
|
||||
250,22,7,2,26,249,22,131,8,23,203,2,37,2,26,248,22,174,13,23,198,
|
||||
2,87,95,23,195,1,23,193,1,27,28,248,22,190,7,23,200,2,249,22,131,
|
||||
8,23,201,2,38,249,80,158,46,54,23,197,2,5,0,27,28,248,22,190,7,
|
||||
23,201,2,249,22,131,8,23,202,2,39,248,22,181,4,23,200,2,27,27,250,
|
||||
22,141,2,80,159,50,42,37,248,22,160,14,247,22,135,12,11,28,23,193,2,
|
||||
192,87,94,23,193,1,27,247,22,125,87,94,250,22,139,2,80,159,51,42,37,
|
||||
248,22,154,14,247,22,129,12,195,192,87,95,28,23,208,1,27,250,22,141,2,
|
||||
248,22,160,14,247,22,135,12,195,192,87,95,28,23,208,1,27,250,22,141,2,
|
||||
23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,50,
|
||||
45,37,80,159,49,45,37,247,22,19,250,22,25,248,22,23,23,197,2,80,159,
|
||||
52,44,37,23,196,1,27,248,22,154,14,247,22,129,12,249,22,3,83,158,39,
|
||||
52,44,37,23,196,1,27,248,22,160,14,247,22,135,12,249,22,3,83,158,39,
|
||||
20,97,94,89,162,8,44,36,54,9,226,12,11,2,3,33,50,23,195,1,23,
|
||||
196,1,248,28,248,22,17,80,159,49,45,37,32,0,89,162,43,36,41,9,222,
|
||||
33,51,80,159,48,8,26,36,89,162,43,35,50,9,227,13,9,8,4,3,33,
|
||||
52,250,22,139,2,23,197,1,197,10,12,28,28,248,22,184,7,23,202,1,11,
|
||||
27,248,22,162,6,23,207,2,28,192,192,27,248,22,53,23,208,2,28,192,192,
|
||||
28,248,22,65,23,208,2,249,22,167,8,248,22,68,23,210,2,2,25,11,250,
|
||||
22,139,2,80,159,49,43,37,28,248,22,162,6,23,209,2,249,22,67,23,210,
|
||||
52,250,22,139,2,23,197,1,197,10,12,28,28,248,22,190,7,23,202,1,11,
|
||||
27,248,22,168,6,23,207,2,28,192,192,27,248,22,53,23,208,2,28,192,192,
|
||||
28,248,22,65,23,208,2,249,22,173,8,248,22,68,23,210,2,2,25,11,250,
|
||||
22,139,2,80,159,49,43,37,28,248,22,168,6,23,209,2,249,22,67,23,210,
|
||||
1,248,80,159,52,59,36,23,212,1,87,94,23,209,1,249,22,67,23,210,1,
|
||||
247,22,189,13,252,22,186,7,23,208,1,23,207,1,23,205,1,23,203,1,201,
|
||||
247,22,131,14,252,22,128,8,23,208,1,23,207,1,23,205,1,23,203,1,201,
|
||||
12,193,87,96,83,160,37,11,80,158,35,49,248,80,158,36,57,249,22,27,11,
|
||||
80,158,38,51,248,22,155,4,80,159,36,50,37,248,22,129,5,80,159,36,36,
|
||||
36,248,22,184,12,80,159,36,41,36,83,160,37,11,80,158,35,49,248,80,158,
|
||||
80,158,38,51,248,22,161,4,80,159,36,50,37,248,22,135,5,80,159,36,36,
|
||||
36,248,22,190,12,80,159,36,41,36,83,160,37,11,80,158,35,49,248,80,158,
|
||||
36,57,249,22,27,11,80,158,38,51,159,35,20,102,159,35,16,1,11,16,0,
|
||||
83,158,41,20,100,144,66,35,37,98,111,111,116,29,11,11,11,11,11,10,37,
|
||||
80,158,35,35,20,102,159,39,16,23,2,1,2,2,30,2,4,72,112,97,116,
|
||||
|
@ -543,7 +543,7 @@
|
|||
0,33,28,80,159,35,8,25,36,83,158,35,16,2,89,162,43,36,48,67,103,
|
||||
101,116,45,100,105,114,223,0,33,29,80,159,35,59,36,83,158,35,16,2,89,
|
||||
162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,30,80,159,35,58,
|
||||
36,83,158,35,16,2,248,22,181,7,69,115,111,45,115,117,102,102,105,120,80,
|
||||
36,83,158,35,16,2,248,22,187,7,69,115,111,45,115,117,102,102,105,120,80,
|
||||
159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,2,223,0,33,39,80,
|
||||
159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,8,222,192,
|
||||
80,159,35,41,36,83,158,35,16,2,247,22,128,2,80,159,35,42,36,83,158,
|
||||
|
|
|
@ -163,6 +163,7 @@ static void init_future_thread(struct Scheme_Future_State *fs, int i);
|
|||
|
||||
#define THREAD_POOL_SIZE 12
|
||||
#define INITIAL_C_STACK_SIZE 500000
|
||||
#define FUTURE_RUNSTACK_SIZE 1000
|
||||
|
||||
typedef struct Scheme_Future_State {
|
||||
struct Scheme_Future_Thread_State *pool_threads[THREAD_POOL_SIZE];
|
||||
|
@ -397,7 +398,7 @@ static void init_future_thread(Scheme_Future_State *fs, int i)
|
|||
|
||||
{
|
||||
Scheme_Object **rs_start, **rs;
|
||||
long init_runstack_size = 1000;
|
||||
long init_runstack_size = FUTURE_RUNSTACK_SIZE;
|
||||
rs_start = scheme_alloc_runstack(init_runstack_size);
|
||||
rs = rs_start XFORM_OK_PLUS init_runstack_size;
|
||||
params.runstack_start = rs_start;
|
||||
|
@ -565,6 +566,11 @@ Scheme_Object *future(int argc, Scheme_Object *argv[])
|
|||
scheme_on_demand_generate_lambda(nc, 0, NULL);
|
||||
}
|
||||
|
||||
if (ncd->max_let_depth > FUTURE_RUNSTACK_SIZE * sizeof(void*)) {
|
||||
/* Can't even call it in a future thread */
|
||||
ft->status = PENDING_OVERSIZE;
|
||||
}
|
||||
|
||||
ft->code = (void*)ncd->code;
|
||||
|
||||
pthread_mutex_lock(&fs->future_mutex);
|
||||
|
@ -631,7 +637,11 @@ Scheme_Object *touch(int argc, Scheme_Object *argv[])
|
|||
#endif
|
||||
|
||||
pthread_mutex_lock(&fs->future_mutex);
|
||||
if (ft->status == PENDING) {
|
||||
if ((ft->status == PENDING) || (ft->status == PENDING_OVERSIZE)) {
|
||||
if (ft->status == PENDING_OVERSIZE) {
|
||||
scheme_log(scheme_main_logger, SCHEME_LOG_DEBUG, 0,
|
||||
"future: oversize procedure deferred to runtime thread");
|
||||
}
|
||||
ft->status = RUNNING;
|
||||
pthread_mutex_unlock(&fs->future_mutex);
|
||||
|
||||
|
@ -820,7 +830,9 @@ void *worker_thread_future_loop(void *arg)
|
|||
//including runtime calls.
|
||||
//If jitcode asks the runrtime thread to do work, then
|
||||
//a GC can occur.
|
||||
LOG("Running JIT code at %p...\n", ft->code);
|
||||
LOG("Running JIT code at %p...\n", ft->code);
|
||||
|
||||
MZ_RUNSTACK = MZ_RUNSTACK_START + fts->runstack_size;
|
||||
|
||||
scheme_current_thread->error_buf = &newbuf;
|
||||
if (scheme_future_setjmp(newbuf)) {
|
||||
|
|
|
@ -34,6 +34,7 @@ typedef void* (*prim_pvoid_pvoid_pvoid_t)(void*, void*);
|
|||
#define RUNNING 1
|
||||
#define WAITING_FOR_PRIM 2
|
||||
#define FINISHED 3
|
||||
#define PENDING_OVERSIZE 4
|
||||
|
||||
#define FSRC_OTHER 0
|
||||
#define FSRC_RATOR 1
|
||||
|
|
|
@ -88,6 +88,8 @@ END_XFORM_ARITH;
|
|||
#define WORDS_TO_BYTES(x) ((x) << JIT_LOG_WORD_SIZE)
|
||||
#define MAX_TRY_SHIFT 30
|
||||
|
||||
#define JIT_LOG_DOUBLE_SIZE 3
|
||||
|
||||
/* a mzchar is an int: */
|
||||
#define LOG_MZCHAR_SIZE 2
|
||||
|
||||
|
@ -141,9 +143,11 @@ static void *bad_mcar_code, *bad_mcdr_code;
|
|||
static void *bad_set_mcar_code, *bad_set_mcdr_code;
|
||||
static void *bad_unbox_code;
|
||||
static void *bad_vector_length_code;
|
||||
static void *bad_flvector_length_code;
|
||||
static void *vector_ref_code, *vector_ref_check_index_code, *vector_set_code, *vector_set_check_index_code;
|
||||
static void *string_ref_code, *string_ref_check_index_code, *string_set_code, *string_set_check_index_code;
|
||||
static void *bytes_ref_code, *bytes_ref_check_index_code, *bytes_set_code, *bytes_set_check_index_code;
|
||||
static void *flvector_ref_check_index_code, *flvector_set_check_index_code;
|
||||
static void *syntax_e_code;
|
||||
void *scheme_on_demand_jit_code;
|
||||
static void *on_demand_jit_arity_code;
|
||||
|
@ -3248,7 +3252,9 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_
|
|||
|
||||
rator = (alt_rands ? alt_rands[0] : app->args[0]);
|
||||
|
||||
if (SCHEME_PRIMP(rator)) {
|
||||
if (no_call == 2) {
|
||||
direct_prim = 1;
|
||||
} else if (SCHEME_PRIMP(rator)) {
|
||||
if ((num_rands >= ((Scheme_Primitive_Proc *)rator)->mina)
|
||||
&& ((num_rands <= ((Scheme_Primitive_Proc *)rator)->mu.maxa)
|
||||
|| (((Scheme_Primitive_Proc *)rator)->mina < 0))
|
||||
|
@ -3594,6 +3600,7 @@ static int is_unboxable_op(Scheme_Object *obj, int flag)
|
|||
if (IS_NAMED_PRIM(obj, "unsafe-flabs")) return 1;
|
||||
if (IS_NAMED_PRIM(obj, "unsafe-fx->fl")) return 1;
|
||||
if (IS_NAMED_PRIM(obj, "unsafe-f64vector-ref")) return 1;
|
||||
if (IS_NAMED_PRIM(obj, "unsafe-flvector-ref")) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -5510,8 +5517,21 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
|
|||
|
||||
return 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "vector-length")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-vector-length")) {
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-vector-length")
|
||||
|| IS_NAMED_PRIM(rator, "flvector-length")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-flvector-length")) {
|
||||
GC_CAN_IGNORE jit_insn *reffail, *ref;
|
||||
int unsafe = 0, for_fl = 0;
|
||||
|
||||
if (IS_NAMED_PRIM(rator, "unsafe-vector-length")) {
|
||||
unsafe = 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "flvector-length")) {
|
||||
for_fl = 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-flvector-length")) {
|
||||
unsafe = 1;
|
||||
for_fl = 1;
|
||||
}
|
||||
|
||||
|
||||
LOG_IT(("inlined vector-length\n"));
|
||||
|
||||
|
@ -5522,7 +5542,7 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
|
|||
|
||||
mz_runstack_unskipped(jitter, 1);
|
||||
|
||||
if (!IS_NAMED_PRIM(rator, "unsafe-vector-length")) {
|
||||
if (!unsafe) {
|
||||
mz_rs_sync_fail_branch();
|
||||
|
||||
__START_TINY_JUMPS__(1);
|
||||
|
@ -5530,16 +5550,25 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
|
|||
__END_TINY_JUMPS__(1);
|
||||
|
||||
reffail = _jit.x.pc;
|
||||
(void)jit_calli(bad_vector_length_code);
|
||||
if (!for_fl)
|
||||
(void)jit_calli(bad_vector_length_code);
|
||||
else
|
||||
(void)jit_calli(bad_flvector_length_code);
|
||||
|
||||
__START_TINY_JUMPS__(1);
|
||||
mz_patch_branch(ref);
|
||||
jit_ldxi_s(JIT_R1, JIT_R0, &((Scheme_Object *)0x0)->type);
|
||||
(void)jit_bnei_i(reffail, JIT_R1, scheme_vector_type);
|
||||
if (!for_fl)
|
||||
(void)jit_bnei_i(reffail, JIT_R1, scheme_vector_type);
|
||||
else
|
||||
(void)jit_bnei_i(reffail, JIT_R1, scheme_flvector_type);
|
||||
__END_TINY_JUMPS__(1);
|
||||
}
|
||||
|
||||
(void)jit_ldxi_i(JIT_R0, JIT_R0, &SCHEME_VEC_SIZE(0x0));
|
||||
if (!for_fl)
|
||||
(void)jit_ldxi_i(JIT_R0, JIT_R0, &SCHEME_VEC_SIZE(0x0));
|
||||
else
|
||||
(void)jit_ldxi_l(JIT_R0, JIT_R0, &SCHEME_FLVEC_SIZE(0x0));
|
||||
jit_lshi_l(JIT_R0, JIT_R0, 1);
|
||||
jit_ori_l(JIT_R0, JIT_R0, 0x1);
|
||||
|
||||
|
@ -5870,7 +5899,8 @@ static int generate_binary_char(mz_jit_state *jitter, Scheme_App3_Rec *app,
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int base_offset, int unsafe)
|
||||
static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int base_offset,
|
||||
int for_fl, int unsafe)
|
||||
/* if int_ready, JIT_R1 has num index (for safe mode) and JIT_V1 has pre-computed offset,
|
||||
otherwise JIT_R1 has fixnum index */
|
||||
{
|
||||
|
@ -5887,9 +5917,15 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int
|
|||
jit_ori_l(JIT_R1, JIT_R1, 0x1);
|
||||
}
|
||||
if (set) {
|
||||
(void)jit_calli(vector_set_check_index_code);
|
||||
if (!for_fl)
|
||||
(void)jit_calli(vector_set_check_index_code);
|
||||
else
|
||||
(void)jit_calli(flvector_set_check_index_code);
|
||||
} else {
|
||||
(void)jit_calli(vector_ref_check_index_code);
|
||||
if (!for_fl)
|
||||
(void)jit_calli(vector_ref_check_index_code);
|
||||
else
|
||||
(void)jit_calli(flvector_ref_check_index_code);
|
||||
}
|
||||
/* doesn't return */
|
||||
CHECK_LIMIT();
|
||||
|
@ -5899,8 +5935,13 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int
|
|||
if (!int_ready)
|
||||
(void)jit_bmci_ul(reffail, JIT_R1, 0x1);
|
||||
jit_ldxi_s(JIT_R2, JIT_R0, &((Scheme_Object *)0x0)->type);
|
||||
(void)jit_bnei_i(reffail, JIT_R2, scheme_vector_type);
|
||||
jit_ldxi_i(JIT_R2, JIT_R0, (int)&SCHEME_VEC_SIZE(0x0));
|
||||
if (!for_fl) {
|
||||
(void)jit_bnei_i(reffail, JIT_R2, scheme_vector_type);
|
||||
jit_ldxi_i(JIT_R2, JIT_R0, (int)&SCHEME_VEC_SIZE(0x0));
|
||||
} else {
|
||||
(void)jit_bnei_i(reffail, JIT_R2, scheme_flvector_type);
|
||||
jit_ldxi_l(JIT_R2, JIT_R0, (int)&SCHEME_FLVEC_SIZE(0x0));
|
||||
}
|
||||
if (!int_ready) {
|
||||
jit_rshi_ul(JIT_V1, JIT_R1, 1);
|
||||
(void)jit_bler_ul(reffail, JIT_R2, JIT_V1);
|
||||
|
@ -5908,6 +5949,15 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int
|
|||
(void)jit_bler_ul(reffail, JIT_R2, JIT_R1);
|
||||
}
|
||||
CHECK_LIMIT();
|
||||
|
||||
if (for_fl && set) {
|
||||
jit_ldr_p(JIT_R2, JIT_RUNSTACK);
|
||||
(void)jit_bmsi_ul(reffail, JIT_R2, 0x1);
|
||||
jit_ldxi_s(JIT_R2, JIT_R2, &((Scheme_Object *)0x0)->type);
|
||||
(void)jit_bnei_i(reffail, JIT_R2, scheme_double_type);
|
||||
CHECK_LIMIT();
|
||||
}
|
||||
|
||||
__END_TINY_JUMPS__(1);
|
||||
} else {
|
||||
if (!int_ready)
|
||||
|
@ -5915,15 +5965,28 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int
|
|||
}
|
||||
|
||||
if (!int_ready) {
|
||||
jit_lshi_ul(JIT_V1, JIT_V1, JIT_LOG_WORD_SIZE);
|
||||
if (!for_fl)
|
||||
jit_lshi_ul(JIT_V1, JIT_V1, JIT_LOG_WORD_SIZE);
|
||||
else
|
||||
jit_lshi_ul(JIT_V1, JIT_V1, JIT_LOG_DOUBLE_SIZE);
|
||||
jit_addi_p(JIT_V1, JIT_V1, base_offset);
|
||||
}
|
||||
if (set) {
|
||||
jit_ldr_p(JIT_R2, JIT_RUNSTACK);
|
||||
jit_stxr_p(JIT_V1, JIT_R0, JIT_R2);
|
||||
if (!for_fl) {
|
||||
jit_stxr_p(JIT_V1, JIT_R0, JIT_R2);
|
||||
} else {
|
||||
jit_ldxi_d_fppush(JIT_FPR0, JIT_R2, &((Scheme_Double *)0x0)->double_val);
|
||||
jit_stxr_d_fppop(JIT_V1, JIT_R0, JIT_FPR0);
|
||||
}
|
||||
(void)jit_movi_p(JIT_R0, scheme_void);
|
||||
} else {
|
||||
jit_ldxr_p(JIT_R0, JIT_R0, JIT_V1);
|
||||
if (!for_fl) {
|
||||
jit_ldxr_p(JIT_R0, JIT_R0, JIT_V1);
|
||||
} else {
|
||||
jit_ldxr_d_fppush(JIT_FPR0, JIT_R0, JIT_V1);
|
||||
generate_alloc_double(jitter);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -6166,7 +6229,8 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
|
|||
|| IS_NAMED_PRIM(rator, "string-ref")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-string-ref")
|
||||
|| IS_NAMED_PRIM(rator, "bytes-ref")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-bytes-ref")) {
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-bytes-ref")
|
||||
|| IS_NAMED_PRIM(rator, "flvector-ref")) {
|
||||
int simple;
|
||||
int which, unsafe = 0, base_offset = ((int)&SCHEME_VEC_ELS(0x0));
|
||||
|
||||
|
@ -6175,6 +6239,9 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
|
|||
else if (IS_NAMED_PRIM(rator, "unsafe-vector-ref")) {
|
||||
which = 0;
|
||||
unsafe = 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "flvector-ref")) {
|
||||
which = 3;
|
||||
base_offset = ((int)&SCHEME_FLVEC_ELS(0x0));
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-struct-ref")) {
|
||||
which = 0;
|
||||
unsafe = 1;
|
||||
|
@ -6204,7 +6271,11 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
|
|||
|
||||
if (!which) {
|
||||
/* vector-ref is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 0, 0, base_offset, unsafe);
|
||||
generate_vector_op(jitter, 0, 0, base_offset, 0, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 3) {
|
||||
/* flvector-ref is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 0, 0, base_offset, 1, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 1) {
|
||||
if (unsafe) {
|
||||
|
@ -6247,12 +6318,18 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
|
|||
(void)jit_movi_p(JIT_R1, offset);
|
||||
if (!which)
|
||||
offset = base_offset + WORDS_TO_BYTES(offset);
|
||||
else if (which == 3)
|
||||
offset = base_offset + (offset * sizeof(double));
|
||||
else if (which == 1)
|
||||
offset = offset << LOG_MZCHAR_SIZE;
|
||||
jit_movi_l(JIT_V1, offset);
|
||||
if (!which) {
|
||||
/* vector-ref is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 0, 1, base_offset, unsafe);
|
||||
generate_vector_op(jitter, 0, 1, base_offset, 0, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 3) {
|
||||
/* flvector-ref is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 0, 1, base_offset, 1, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 1) {
|
||||
if (unsafe) {
|
||||
|
@ -6281,18 +6358,27 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
|
|||
}
|
||||
|
||||
return 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-f64vector-ref")) {
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-f64vector-ref")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-flvector-ref")) {
|
||||
int fpr0, unbox = jitter->unbox;
|
||||
int is_f64;
|
||||
|
||||
is_f64 = IS_NAMED_PRIM(rator, "unsafe-f64vector-ref");
|
||||
|
||||
jitter->unbox = 0; /* no unboxing of vector and index arguments */
|
||||
generate_two_args(app->rand1, app->rand2, jitter, 1, 2);
|
||||
jitter->unbox = unbox;
|
||||
CHECK_LIMIT();
|
||||
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&(((Scheme_Structure *)0x0)->slots[0]));
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&SCHEME_CPTR_VAL(0x0));
|
||||
if (is_f64) {
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&(((Scheme_Structure *)0x0)->slots[0]));
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&SCHEME_CPTR_VAL(0x0));
|
||||
}
|
||||
jit_rshi_ul(JIT_R1, JIT_R1, 1);
|
||||
jit_lshi_ul(JIT_R1, JIT_R1, 3); /* 3 = log(sizeof(double)) */
|
||||
jit_lshi_ul(JIT_R1, JIT_R1, JIT_LOG_DOUBLE_SIZE);
|
||||
if (!is_f64) {
|
||||
jit_addi_ul(JIT_R1, JIT_R1, (int)(&SCHEME_FLVEC_ELS(0x0)));
|
||||
}
|
||||
|
||||
if (jitter->unbox)
|
||||
fpr0 = JIT_FPR(jitter->unbox_depth);
|
||||
|
@ -6485,6 +6571,7 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
} else if (!for_branch) {
|
||||
if (IS_NAMED_PRIM(rator, "vector-set!")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-vector-set!")
|
||||
|| IS_NAMED_PRIM(rator, "flvector-set!")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-struct-set!")
|
||||
|| IS_NAMED_PRIM(rator, "string-set!")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-string-set!")
|
||||
|
@ -6499,6 +6586,9 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
else if (IS_NAMED_PRIM(rator, "unsafe-vector-set!")) {
|
||||
which = 0;
|
||||
unsafe = 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "flvector-set!")) {
|
||||
which = 3;
|
||||
base_offset = ((int)&SCHEME_FLVEC_ELS(0x0));
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-struct-set!")) {
|
||||
which = 0;
|
||||
unsafe = 1;
|
||||
|
@ -6573,7 +6663,11 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
if (!simple) {
|
||||
if (!which) {
|
||||
/* vector-set! is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 1, 0, base_offset, unsafe);
|
||||
generate_vector_op(jitter, 1, 0, base_offset, 0, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 3) {
|
||||
/* flvector-set! is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 1, 0, base_offset, 1, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 1) {
|
||||
if (unsafe) {
|
||||
|
@ -6605,12 +6699,18 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
(void)jit_movi_p(JIT_R1, offset);
|
||||
if (!which)
|
||||
offset = base_offset + WORDS_TO_BYTES(offset);
|
||||
else if (which == 3)
|
||||
offset = base_offset + (offset * sizeof(double));
|
||||
else if (which == 1)
|
||||
offset = offset << LOG_MZCHAR_SIZE;
|
||||
jit_movi_l(JIT_V1, offset);
|
||||
if (!which) {
|
||||
/* vector-set! is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 1, 1, base_offset, unsafe);
|
||||
generate_vector_op(jitter, 1, 1, base_offset, 0, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 3) {
|
||||
/* flvector-set! is relatively simple and worth inlining */
|
||||
generate_vector_op(jitter, 1, 1, base_offset, 1, unsafe);
|
||||
CHECK_LIMIT();
|
||||
} else if (which == 1) {
|
||||
if (unsafe) {
|
||||
|
@ -6641,7 +6741,10 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
mz_runstack_unskipped(jitter, 3 - pushed);
|
||||
|
||||
return 1;
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-f64vector-set!")) {
|
||||
} else if (IS_NAMED_PRIM(rator, "unsafe-f64vector-set!")
|
||||
|| IS_NAMED_PRIM(rator, "unsafe-flvector-set!")) {
|
||||
int is_f64;
|
||||
is_f64 = IS_NAMED_PRIM(rator, "unsafe-f64vector-set!");
|
||||
if (can_unbox(app->args[3], 5, JIT_FPR_NUM-1)) {
|
||||
int got_two;
|
||||
if (is_constant_and_avoids_r1(app->args[1])
|
||||
|
@ -6684,10 +6787,15 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
}
|
||||
CHECK_LIMIT();
|
||||
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&(((Scheme_Structure *)0x0)->slots[0]));
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&SCHEME_CPTR_VAL(0x0));
|
||||
if (is_f64) {
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&(((Scheme_Structure *)0x0)->slots[0]));
|
||||
jit_ldxi_p(JIT_R0, JIT_R0, (long)&SCHEME_CPTR_VAL(0x0));
|
||||
}
|
||||
jit_rshi_ul(JIT_R1, JIT_R1, 1);
|
||||
jit_lshi_ul(JIT_R1, JIT_R1, 3); /* 3 = log(sizeof(double)) */
|
||||
jit_lshi_ul(JIT_R1, JIT_R1, JIT_LOG_DOUBLE_SIZE);
|
||||
if (!is_f64) {
|
||||
jit_addi_ul(JIT_R1, JIT_R1, (int)(&SCHEME_FLVEC_ELS(0x0)));
|
||||
}
|
||||
jit_stxr_d_fppop(JIT_R1, JIT_R0, JIT_FPR0);
|
||||
CHECK_LIMIT();
|
||||
|
||||
|
@ -8650,6 +8758,16 @@ static int do_generate_common(mz_jit_state *jitter, void *_data)
|
|||
CHECK_LIMIT();
|
||||
register_sub_func(jitter, bad_vector_length_code, scheme_false);
|
||||
|
||||
/* *** bad_flvector_length_code *** */
|
||||
/* R0 is argument */
|
||||
bad_flvector_length_code = jit_get_ip().ptr;
|
||||
mz_prolog(JIT_R1);
|
||||
jit_prepare(1);
|
||||
jit_pusharg_i(JIT_R0);
|
||||
(void)mz_finish(ts_scheme_flvector_length);
|
||||
CHECK_LIMIT();
|
||||
register_sub_func(jitter, bad_flvector_length_code, scheme_false);
|
||||
|
||||
/* *** call_original_unary_arith_code *** */
|
||||
/* R0 is arg, R2 is code pointer, V1 is return address */
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
@ -9150,6 +9268,40 @@ static int do_generate_common(mz_jit_state *jitter, void *_data)
|
|||
}
|
||||
}
|
||||
|
||||
/* *** {flvector}_{ref,set}_check_index_code *** */
|
||||
/* Same calling convention as for vector ops. */
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (!i) {
|
||||
flvector_ref_check_index_code = jit_get_ip().ptr;
|
||||
} else {
|
||||
flvector_set_check_index_code = jit_get_ip().ptr;
|
||||
}
|
||||
|
||||
mz_prolog(JIT_R2);
|
||||
|
||||
jit_subi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2));
|
||||
CHECK_RUNSTACK_OVERFLOW();
|
||||
jit_str_p(JIT_RUNSTACK, JIT_R0);
|
||||
jit_stxi_p(WORDS_TO_BYTES(1), JIT_RUNSTACK, JIT_R1);
|
||||
if (!i) {
|
||||
jit_movi_i(JIT_R1, 2);
|
||||
} else {
|
||||
/* In set mode, value was already on run stack */
|
||||
jit_movi_i(JIT_R1, 3);
|
||||
}
|
||||
JIT_UPDATE_THREAD_RSPTR();
|
||||
jit_prepare(2);
|
||||
jit_pusharg_p(JIT_RUNSTACK);
|
||||
jit_pusharg_i(JIT_R1);
|
||||
if (!i) {
|
||||
(void)mz_finish(ts_scheme_checked_flvector_ref);
|
||||
} else {
|
||||
(void)mz_finish(ts_scheme_checked_flvector_set);
|
||||
}
|
||||
/* does not return */
|
||||
}
|
||||
|
||||
|
||||
/* *** syntax_ecode *** */
|
||||
/* R0 is (potential) syntax object */
|
||||
{
|
||||
|
|
|
@ -60,6 +60,7 @@ define_ts_iS_s(scheme_checked_set_mcar, FSRC_OTHER)
|
|||
define_ts_iS_s(scheme_checked_set_mcdr, FSRC_OTHER)
|
||||
define_ts_s_s(scheme_unbox, FSRC_OTHER)
|
||||
define_ts_s_s(scheme_vector_length, FSRC_OTHER)
|
||||
define_ts_s_s(scheme_flvector_length, FSRC_OTHER)
|
||||
define_ts_s_s(tail_call_with_values_from_multiple_result, FSRC_OTHER)
|
||||
define_ts_s_v(raise_bad_call_with_values, FSRC_OTHER)
|
||||
define_ts_s_s(call_with_values_from_multiple_result_multi, FSRC_OTHER)
|
||||
|
@ -70,6 +71,8 @@ define_ts_iS_s(scheme_checked_string_ref, FSRC_OTHER)
|
|||
define_ts_iS_s(scheme_checked_string_set, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_checked_byte_string_ref, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_checked_byte_string_set, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_checked_flvector_ref, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_checked_flvector_set, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_checked_syntax_e, FSRC_OTHER)
|
||||
define_ts_iS_s(scheme_extract_checked_procedure, FSRC_OTHER)
|
||||
define_ts_S_s(apply_checked_fail, FSRC_OTHER)
|
||||
|
@ -120,6 +123,7 @@ define_ts_siS_v(wrong_argument_count, FSRC_OTHER)
|
|||
# define ts_scheme_checked_set_mcdr scheme_checked_set_mcdr
|
||||
# define ts_scheme_unbox scheme_unbox
|
||||
# define ts_scheme_vector_length scheme_vector_length
|
||||
# define ts_scheme_flvector_length scheme_flvector_length
|
||||
# define ts_tail_call_with_values_from_multiple_result tail_call_with_values_from_multiple_result
|
||||
# define ts_raise_bad_call_with_values raise_bad_call_with_values
|
||||
# define ts_call_with_values_from_multiple_result_multi call_with_values_from_multiple_result_multi
|
||||
|
@ -130,6 +134,8 @@ define_ts_siS_v(wrong_argument_count, FSRC_OTHER)
|
|||
# define ts_scheme_checked_string_set scheme_checked_string_set
|
||||
# define ts_scheme_checked_byte_string_ref scheme_checked_byte_string_ref
|
||||
# define ts_scheme_checked_byte_string_set scheme_checked_byte_string_set
|
||||
# define ts_scheme_checked_flvector_ref scheme_checked_flvector_ref
|
||||
# define ts_scheme_checked_flvector_set scheme_checked_flvector_set
|
||||
# define ts_scheme_checked_syntax_e scheme_checked_syntax_e
|
||||
# define ts_scheme_extract_checked_procedure scheme_extract_checked_procedure
|
||||
# define ts_apply_checked_fail apply_checked_fail
|
||||
|
|
|
@ -1449,6 +1449,34 @@ static int vector_obj_FIXUP(void *p) {
|
|||
#define vector_obj_IS_CONST_SIZE 0
|
||||
|
||||
|
||||
static int flvector_obj_SIZE(void *p) {
|
||||
Scheme_Double_Vector *vec = (Scheme_Double_Vector *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Double_Vector)
|
||||
+ ((vec->size - 1) * sizeof(double))));
|
||||
}
|
||||
|
||||
static int flvector_obj_MARK(void *p) {
|
||||
Scheme_Double_Vector *vec = (Scheme_Double_Vector *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Double_Vector)
|
||||
+ ((vec->size - 1) * sizeof(double))));
|
||||
}
|
||||
|
||||
static int flvector_obj_FIXUP(void *p) {
|
||||
Scheme_Double_Vector *vec = (Scheme_Double_Vector *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Double_Vector)
|
||||
+ ((vec->size - 1) * sizeof(double))));
|
||||
}
|
||||
|
||||
#define flvector_obj_IS_ATOMIC 1
|
||||
#define flvector_obj_IS_CONST_SIZE 0
|
||||
|
||||
|
||||
static int input_port_SIZE(void *p) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Input_Port));
|
||||
|
|
|
@ -546,6 +546,15 @@ vector_obj {
|
|||
+ ((vec->size - 1) * sizeof(Scheme_Object *))));
|
||||
}
|
||||
|
||||
flvector_obj {
|
||||
Scheme_Double_Vector *vec = (Scheme_Double_Vector *)p;
|
||||
|
||||
mark:
|
||||
size:
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Double_Vector)
|
||||
+ ((vec->size - 1) * sizeof(double))));
|
||||
}
|
||||
|
||||
input_port {
|
||||
mark:
|
||||
Scheme_Input_Port *ip = (Scheme_Input_Port *)p;
|
||||
|
|
|
@ -98,6 +98,11 @@ static Scheme_Object *angle (int argc, Scheme_Object *argv[]);
|
|||
static Scheme_Object *int_sqrt (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *int_sqrt_rem (int argc, Scheme_Object *argv[]);
|
||||
|
||||
static Scheme_Object *flvector (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *flvector_p (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *flvector_length (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *make_flvector (int argc, Scheme_Object *argv[]);
|
||||
|
||||
static Scheme_Object *fx_and (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *fx_or (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *fx_xor (int argc, Scheme_Object *argv[]);
|
||||
|
@ -108,6 +113,10 @@ static Scheme_Object *fx_to_fl (int argc, Scheme_Object *argv[]);
|
|||
static Scheme_Object *fl_ref (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *fl_set (int argc, Scheme_Object *argv[]);
|
||||
|
||||
static Scheme_Object *unsafe_flvector_length (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *unsafe_flvector_ref (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *unsafe_flvector_set (int argc, Scheme_Object *argv[]);
|
||||
|
||||
static double not_a_number_val;
|
||||
|
||||
Scheme_Object *scheme_inf_object, *scheme_minus_inf_object, *scheme_nan_object;
|
||||
|
@ -284,7 +293,7 @@ scheme_init_number (Scheme_Env *env)
|
|||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
|
||||
scheme_add_global_constant("exact-positive-integer?", p, env);
|
||||
|
||||
p = scheme_make_noncm_prim(fixnum_p, "fixnum?", 1, 1);
|
||||
p = scheme_make_immed_prim(fixnum_p, "fixnum?", 1, 1);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
|
||||
scheme_add_global_constant("fixnum?", p, env);
|
||||
|
||||
|
@ -496,6 +505,39 @@ scheme_init_number (Scheme_Env *env)
|
|||
"inexact->exact",
|
||||
1, 1, 1),
|
||||
env);
|
||||
|
||||
scheme_add_global_constant("flvector",
|
||||
scheme_make_prim_w_arity(flvector,
|
||||
"flvector",
|
||||
0, -1),
|
||||
env);
|
||||
scheme_add_global_constant("flvector?",
|
||||
scheme_make_folding_prim(flvector_p,
|
||||
"flvector?",
|
||||
1, 1, 1),
|
||||
env);
|
||||
scheme_add_global_constant("make-flvector",
|
||||
scheme_make_immed_prim(make_flvector,
|
||||
"make-flvector",
|
||||
1, 2),
|
||||
env);
|
||||
|
||||
p = scheme_make_immed_prim(flvector_length, "flvector-length", 1, 1);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
|
||||
scheme_add_global_constant("flvector-length", p, env);
|
||||
|
||||
p = scheme_make_immed_prim(scheme_checked_flvector_ref,
|
||||
"flvector-ref",
|
||||
2, 2);
|
||||
if (scheme_can_inline_fp_op())
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED;
|
||||
scheme_add_global_constant("flvector-ref", p, env);
|
||||
|
||||
p = scheme_make_immed_prim(scheme_checked_flvector_set,
|
||||
"flvector-set!",
|
||||
3, 3);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_NARY_INLINED;
|
||||
scheme_add_global_constant("flvector-set!", p, env);
|
||||
}
|
||||
|
||||
void scheme_init_unsafe_number(Scheme_Env *env)
|
||||
|
@ -531,19 +573,34 @@ void scheme_init_unsafe_number(Scheme_Env *env)
|
|||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-fx->fl", p, env);
|
||||
|
||||
p = scheme_make_noncm_prim(fl_ref, "unsafe-f64vector-ref",
|
||||
p = scheme_make_immed_prim(fl_ref, "unsafe-f64vector-ref",
|
||||
2, 2);
|
||||
if (scheme_can_inline_fp_op())
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-f64vector-ref", p, env);
|
||||
|
||||
p = scheme_make_noncm_prim(fl_set, "unsafe-f64vector-set!",
|
||||
p = scheme_make_immed_prim(fl_set, "unsafe-f64vector-set!",
|
||||
3, 3);
|
||||
if (scheme_can_inline_fp_op())
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_NARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-f64vector-set!", p, env);
|
||||
}
|
||||
|
||||
p = scheme_make_immed_prim(unsafe_flvector_length, "unsafe-flvector-length",
|
||||
1, 1);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-flvector-length", p, env);
|
||||
|
||||
p = scheme_make_immed_prim(unsafe_flvector_ref, "unsafe-flvector-ref",
|
||||
2, 2);
|
||||
if (scheme_can_inline_fp_op())
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-flvector-ref", p, env);
|
||||
|
||||
p = scheme_make_immed_prim(unsafe_flvector_set, "unsafe-flvector-set!",
|
||||
3, 3);
|
||||
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_NARY_INLINED;
|
||||
scheme_add_global_constant("unsafe-flvector-set!", p, env);
|
||||
}
|
||||
|
||||
|
||||
Scheme_Object *
|
||||
|
@ -2787,6 +2844,156 @@ long scheme_integer_length(Scheme_Object *n)
|
|||
return SCHEME_INT_VAL(r);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* flvectors */
|
||||
/************************************************************************/
|
||||
|
||||
static Scheme_Double_Vector *alloc_flvector(long size)
|
||||
{
|
||||
Scheme_Double_Vector *vec;
|
||||
|
||||
vec = (Scheme_Double_Vector *)scheme_malloc_fail_ok(scheme_malloc_atomic_tagged,
|
||||
sizeof(Scheme_Double_Vector)
|
||||
+ ((size - 1) * sizeof(double)));
|
||||
vec->so.type = scheme_flvector_type;
|
||||
vec->size = size;
|
||||
|
||||
return vec;
|
||||
}
|
||||
|
||||
static Scheme_Object *flvector (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
int i;
|
||||
Scheme_Double_Vector *vec;
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
if (!SCHEME_FLOATP(argv[i])) {
|
||||
scheme_wrong_type("flvector", "inexact real", i, argc, argv);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
vec = alloc_flvector(argc);
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
vec->els[i] = SCHEME_FLOAT_VAL(argv[i]);
|
||||
}
|
||||
|
||||
return (Scheme_Object *)vec;
|
||||
}
|
||||
|
||||
|
||||
static Scheme_Object *flvector_p (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
if (SCHEME_FLVECTORP(argv[0]))
|
||||
return scheme_true;
|
||||
else
|
||||
return scheme_false;
|
||||
}
|
||||
|
||||
static Scheme_Object *make_flvector (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
Scheme_Double_Vector *vec;
|
||||
long size;
|
||||
|
||||
if (SCHEME_INTP(argv[0]))
|
||||
size = SCHEME_INT_VAL(argv[0]);
|
||||
else if (SCHEME_BIGNUMP(argv[0])) {
|
||||
if (SCHEME_BIGPOS(argv[0])) {
|
||||
scheme_raise_out_of_memory("make-flvector", NULL);
|
||||
return NULL;
|
||||
} else
|
||||
size = -1;
|
||||
} else
|
||||
size = -1;
|
||||
|
||||
if (size < 0)
|
||||
scheme_wrong_type("make-flvector", "exact non-negative integer", 0, argc, argv);
|
||||
|
||||
if (argc > 1) {
|
||||
if (!SCHEME_FLOATP(argv[1]))
|
||||
scheme_wrong_type("make-flvector", "inexact real", 1, argc, argv);
|
||||
}
|
||||
|
||||
vec = alloc_flvector(size);
|
||||
|
||||
if (argc > 1) {
|
||||
int i;
|
||||
double d = SCHEME_FLOAT_VAL(argv[1]);
|
||||
for (i = 0; i < size; i++) {
|
||||
vec->els[i] = d;
|
||||
}
|
||||
}
|
||||
|
||||
return (Scheme_Object *)vec;
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_flvector_length(Scheme_Object *vec)
|
||||
{
|
||||
if (!SCHEME_FLVECTORP(vec))
|
||||
scheme_wrong_type("flvector-length", "flvector", 0, 1, &vec);
|
||||
|
||||
return scheme_make_integer(SCHEME_FLVEC_SIZE(vec));
|
||||
}
|
||||
|
||||
static Scheme_Object *flvector_length (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return scheme_flvector_length(argv[0]);
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_checked_flvector_ref (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
double d;
|
||||
Scheme_Object *vec;
|
||||
long len, pos;
|
||||
|
||||
vec = argv[0];
|
||||
if (!SCHEME_FLVECTORP(vec))
|
||||
scheme_wrong_type("flvector-ref", "flvector", 0, argc, argv);
|
||||
|
||||
len = SCHEME_FLVEC_SIZE(vec);
|
||||
pos = scheme_extract_index("flvector-ref", 1, argc, argv, len, 0);
|
||||
|
||||
if (pos >= len) {
|
||||
scheme_bad_vec_index("flvector-ref", argv[1],
|
||||
"flvector", vec,
|
||||
0, len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
d = SCHEME_FLVEC_ELS(vec)[pos];
|
||||
|
||||
return scheme_make_double(d);
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_checked_flvector_set (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
Scheme_Object *vec;
|
||||
long len, pos;
|
||||
|
||||
vec = argv[0];
|
||||
if (!SCHEME_FLVECTORP(vec))
|
||||
scheme_wrong_type("flvector-set!", "flvector", 0, argc, argv);
|
||||
|
||||
len = SCHEME_FLVEC_SIZE(vec);
|
||||
pos = scheme_extract_index("flvector-set!", 1, argc, argv, len, 0);
|
||||
|
||||
if (!SCHEME_FLOATP(argv[2]))
|
||||
scheme_wrong_type("flvector-set!", "inexact real", 2, argc, argv);
|
||||
|
||||
if (pos >= len) {
|
||||
scheme_bad_vec_index("flvector-set!", argv[1],
|
||||
"flvector", vec,
|
||||
0, len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SCHEME_FLVEC_ELS(vec)[pos] = SCHEME_FLOAT_VAL(argv[2]);
|
||||
|
||||
return scheme_void;
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* Unsafe */
|
||||
/************************************************************************/
|
||||
|
@ -2848,3 +3055,29 @@ static Scheme_Object *fl_set (int argc, Scheme_Object *argv[])
|
|||
((double *)SCHEME_CPTR_VAL(p))[SCHEME_INT_VAL(argv[1])] = SCHEME_DBL_VAL(argv[2]);
|
||||
return scheme_void;
|
||||
}
|
||||
|
||||
static Scheme_Object *unsafe_flvector_length (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return scheme_make_integer(SCHEME_FLVEC_SIZE(argv[0]));
|
||||
}
|
||||
|
||||
static Scheme_Object *unsafe_flvector_ref (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
long pos;
|
||||
double d;
|
||||
|
||||
pos = SCHEME_INT_VAL(argv[1]);
|
||||
d = SCHEME_FLVEC_ELS(argv[0])[pos];
|
||||
|
||||
return scheme_make_double(d);
|
||||
}
|
||||
|
||||
static Scheme_Object *unsafe_flvector_set (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
long pos;
|
||||
|
||||
pos = SCHEME_INT_VAL(argv[1]);
|
||||
SCHEME_FLVEC_ELS(argv[0])[pos] = SCHEME_FLOAT_VAL(argv[2]);
|
||||
|
||||
return scheme_void;
|
||||
}
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
|
||||
#define USE_COMPILED_STARTUP 1
|
||||
|
||||
#define EXPECTED_PRIM_COUNT 959
|
||||
#define EXPECTED_UNSAFE_COUNT 49
|
||||
#define EXPECTED_PRIM_COUNT 965
|
||||
#define EXPECTED_UNSAFE_COUNT 52
|
||||
|
||||
#ifdef MZSCHEME_SOMETHING_OMITTED
|
||||
# undef USE_COMPILED_STARTUP
|
||||
|
|
|
@ -3192,6 +3192,13 @@ Scheme_Object *scheme_checked_byte_string_ref(int argc, Scheme_Object *argv[]);
|
|||
Scheme_Object *scheme_checked_byte_string_set(int argc, Scheme_Object *argv[]);
|
||||
Scheme_Object *scheme_checked_syntax_e(int argc, Scheme_Object **argv);
|
||||
Scheme_Object *scheme_vector_length(Scheme_Object *v);
|
||||
Scheme_Object *scheme_checked_flvector_ref(int argc, Scheme_Object **argv);
|
||||
Scheme_Object *scheme_checked_flvector_set(int argc, Scheme_Object **argv);
|
||||
Scheme_Object *scheme_flvector_length(Scheme_Object *v);
|
||||
|
||||
void scheme_bad_vec_index(char *name, Scheme_Object *i,
|
||||
const char *what, Scheme_Object *vec,
|
||||
long bottom, long len);
|
||||
|
||||
Scheme_Bucket_Table *scheme_make_weak_equal_table(void);
|
||||
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
consistently.)
|
||||
*/
|
||||
|
||||
#define MZSCHEME_VERSION "4.2.3.3"
|
||||
#define MZSCHEME_VERSION "4.2.3.4"
|
||||
|
||||
#define MZSCHEME_VERSION_X 4
|
||||
#define MZSCHEME_VERSION_Y 2
|
||||
#define MZSCHEME_VERSION_Z 3
|
||||
#define MZSCHEME_VERSION_W 3
|
||||
#define MZSCHEME_VERSION_W 4
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
|
|
@ -171,84 +171,85 @@ enum {
|
|||
scheme_noninline_proc_type, /* 153 */
|
||||
scheme_prune_context_type, /* 154 */
|
||||
scheme_future_type, /* 155 */
|
||||
scheme_flvector_type, /* 156 */
|
||||
|
||||
#ifdef MZTAG_REQUIRED
|
||||
_scheme_last_normal_type_, /* 156 */
|
||||
_scheme_last_normal_type_, /* 157 */
|
||||
|
||||
scheme_rt_weak_array, /* 157 */
|
||||
scheme_rt_weak_array, /* 158 */
|
||||
|
||||
scheme_rt_comp_env, /* 158 */
|
||||
scheme_rt_constant_binding, /* 159 */
|
||||
scheme_rt_resolve_info, /* 160 */
|
||||
scheme_rt_optimize_info, /* 161 */
|
||||
scheme_rt_compile_info, /* 162 */
|
||||
scheme_rt_cont_mark, /* 163 */
|
||||
scheme_rt_saved_stack, /* 164 */
|
||||
scheme_rt_reply_item, /* 165 */
|
||||
scheme_rt_closure_info, /* 166 */
|
||||
scheme_rt_overflow, /* 167 */
|
||||
scheme_rt_overflow_jmp, /* 168 */
|
||||
scheme_rt_meta_cont, /* 169 */
|
||||
scheme_rt_dyn_wind_cell, /* 170 */
|
||||
scheme_rt_dyn_wind_info, /* 171 */
|
||||
scheme_rt_dyn_wind, /* 172 */
|
||||
scheme_rt_dup_check, /* 173 */
|
||||
scheme_rt_thread_memory, /* 174 */
|
||||
scheme_rt_input_file, /* 175 */
|
||||
scheme_rt_input_fd, /* 176 */
|
||||
scheme_rt_oskit_console_input, /* 177 */
|
||||
scheme_rt_tested_input_file, /* 178 */
|
||||
scheme_rt_tested_output_file, /* 179 */
|
||||
scheme_rt_indexed_string, /* 180 */
|
||||
scheme_rt_output_file, /* 181 */
|
||||
scheme_rt_load_handler_data, /* 182 */
|
||||
scheme_rt_pipe, /* 183 */
|
||||
scheme_rt_beos_process, /* 184 */
|
||||
scheme_rt_system_child, /* 185 */
|
||||
scheme_rt_tcp, /* 186 */
|
||||
scheme_rt_write_data, /* 187 */
|
||||
scheme_rt_tcp_select_info, /* 188 */
|
||||
scheme_rt_namespace_option, /* 189 */
|
||||
scheme_rt_param_data, /* 190 */
|
||||
scheme_rt_will, /* 191 */
|
||||
scheme_rt_struct_proc_info, /* 192 */
|
||||
scheme_rt_linker_name, /* 193 */
|
||||
scheme_rt_param_map, /* 194 */
|
||||
scheme_rt_finalization, /* 195 */
|
||||
scheme_rt_finalizations, /* 196 */
|
||||
scheme_rt_cpp_object, /* 197 */
|
||||
scheme_rt_cpp_array_object, /* 198 */
|
||||
scheme_rt_stack_object, /* 199 */
|
||||
scheme_rt_preallocated_object, /* 200 */
|
||||
scheme_thread_hop_type, /* 201 */
|
||||
scheme_rt_srcloc, /* 202 */
|
||||
scheme_rt_evt, /* 203 */
|
||||
scheme_rt_syncing, /* 204 */
|
||||
scheme_rt_comp_prefix, /* 205 */
|
||||
scheme_rt_user_input, /* 206 */
|
||||
scheme_rt_user_output, /* 207 */
|
||||
scheme_rt_compact_port, /* 208 */
|
||||
scheme_rt_read_special_dw, /* 209 */
|
||||
scheme_rt_regwork, /* 210 */
|
||||
scheme_rt_buf_holder, /* 211 */
|
||||
scheme_rt_parameterization, /* 212 */
|
||||
scheme_rt_print_params, /* 213 */
|
||||
scheme_rt_read_params, /* 214 */
|
||||
scheme_rt_native_code, /* 215 */
|
||||
scheme_rt_native_code_plus_case, /* 216 */
|
||||
scheme_rt_jitter_data, /* 217 */
|
||||
scheme_rt_module_exports, /* 218 */
|
||||
scheme_rt_delay_load_info, /* 219 */
|
||||
scheme_rt_marshal_info, /* 220 */
|
||||
scheme_rt_unmarshal_info, /* 221 */
|
||||
scheme_rt_runstack, /* 222 */
|
||||
scheme_rt_sfs_info, /* 223 */
|
||||
scheme_rt_validate_clearing, /* 224 */
|
||||
scheme_rt_rb_node, /* 225 */
|
||||
scheme_rt_comp_env, /* 159 */
|
||||
scheme_rt_constant_binding, /* 160 */
|
||||
scheme_rt_resolve_info, /* 161 */
|
||||
scheme_rt_optimize_info, /* 162 */
|
||||
scheme_rt_compile_info, /* 163 */
|
||||
scheme_rt_cont_mark, /* 164 */
|
||||
scheme_rt_saved_stack, /* 165 */
|
||||
scheme_rt_reply_item, /* 166 */
|
||||
scheme_rt_closure_info, /* 167 */
|
||||
scheme_rt_overflow, /* 168 */
|
||||
scheme_rt_overflow_jmp, /* 169 */
|
||||
scheme_rt_meta_cont, /* 170 */
|
||||
scheme_rt_dyn_wind_cell, /* 171 */
|
||||
scheme_rt_dyn_wind_info, /* 172 */
|
||||
scheme_rt_dyn_wind, /* 173 */
|
||||
scheme_rt_dup_check, /* 174 */
|
||||
scheme_rt_thread_memory, /* 175 */
|
||||
scheme_rt_input_file, /* 176 */
|
||||
scheme_rt_input_fd, /* 177 */
|
||||
scheme_rt_oskit_console_input, /* 178 */
|
||||
scheme_rt_tested_input_file, /* 179 */
|
||||
scheme_rt_tested_output_file, /* 180 */
|
||||
scheme_rt_indexed_string, /* 181 */
|
||||
scheme_rt_output_file, /* 182 */
|
||||
scheme_rt_load_handler_data, /* 183 */
|
||||
scheme_rt_pipe, /* 184 */
|
||||
scheme_rt_beos_process, /* 185 */
|
||||
scheme_rt_system_child, /* 186 */
|
||||
scheme_rt_tcp, /* 187 */
|
||||
scheme_rt_write_data, /* 188 */
|
||||
scheme_rt_tcp_select_info, /* 189 */
|
||||
scheme_rt_namespace_option, /* 190 */
|
||||
scheme_rt_param_data, /* 191 */
|
||||
scheme_rt_will, /* 192 */
|
||||
scheme_rt_struct_proc_info, /* 193 */
|
||||
scheme_rt_linker_name, /* 194 */
|
||||
scheme_rt_param_map, /* 195 */
|
||||
scheme_rt_finalization, /* 196 */
|
||||
scheme_rt_finalizations, /* 197 */
|
||||
scheme_rt_cpp_object, /* 198 */
|
||||
scheme_rt_cpp_array_object, /* 199 */
|
||||
scheme_rt_stack_object, /* 200 */
|
||||
scheme_rt_preallocated_object, /* 201 */
|
||||
scheme_thread_hop_type, /* 202 */
|
||||
scheme_rt_srcloc, /* 203 */
|
||||
scheme_rt_evt, /* 204 */
|
||||
scheme_rt_syncing, /* 205 */
|
||||
scheme_rt_comp_prefix, /* 206 */
|
||||
scheme_rt_user_input, /* 207 */
|
||||
scheme_rt_user_output, /* 208 */
|
||||
scheme_rt_compact_port, /* 209 */
|
||||
scheme_rt_read_special_dw, /* 210 */
|
||||
scheme_rt_regwork, /* 211 */
|
||||
scheme_rt_buf_holder, /* 212 */
|
||||
scheme_rt_parameterization, /* 213 */
|
||||
scheme_rt_print_params, /* 214 */
|
||||
scheme_rt_read_params, /* 215 */
|
||||
scheme_rt_native_code, /* 216 */
|
||||
scheme_rt_native_code_plus_case, /* 217 */
|
||||
scheme_rt_jitter_data, /* 218 */
|
||||
scheme_rt_module_exports, /* 219 */
|
||||
scheme_rt_delay_load_info, /* 220 */
|
||||
scheme_rt_marshal_info, /* 221 */
|
||||
scheme_rt_unmarshal_info, /* 222 */
|
||||
scheme_rt_runstack, /* 223 */
|
||||
scheme_rt_sfs_info, /* 224 */
|
||||
scheme_rt_validate_clearing, /* 225 */
|
||||
scheme_rt_rb_node, /* 226 */
|
||||
#endif
|
||||
|
||||
scheme_place_type, /* 226 */
|
||||
scheme_engine_type, /* 227 */
|
||||
scheme_place_type, /* 227 */
|
||||
scheme_engine_type, /* 228 */
|
||||
|
||||
_scheme_last_type_
|
||||
};
|
||||
|
|
|
@ -161,6 +161,7 @@ scheme_init_type ()
|
|||
set_name(scheme_syntax_compiler_type, "<syntax-compiler>");
|
||||
set_name(scheme_macro_type, "<macro>");
|
||||
set_name(scheme_vector_type, "<vector>");
|
||||
set_name(scheme_flvector_type, "<flvector>");
|
||||
set_name(scheme_bignum_type, "<bignum-integer>");
|
||||
set_name(scheme_escaping_cont_type, "<escape-continuation>");
|
||||
set_name(scheme_sema_type, "<semaphore>");
|
||||
|
@ -540,6 +541,7 @@ void scheme_register_traversers(void)
|
|||
GC_REG_TRAV(scheme_mutable_pair_type, cons_cell);
|
||||
GC_REG_TRAV(scheme_raw_pair_type, cons_cell);
|
||||
GC_REG_TRAV(scheme_vector_type, vector_obj);
|
||||
GC_REG_TRAV(scheme_flvector_type, flvector_obj);
|
||||
GC_REG_TRAV(scheme_cpointer_type, cpointer_obj);
|
||||
GC_REG_TRAV(scheme_offset_cpointer_type, offset_cpointer_obj);
|
||||
|
||||
|
|
|
@ -321,27 +321,33 @@ Scheme_Object *scheme_vector_length(Scheme_Object *v)
|
|||
return vector_length(1, a);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
bad_index(char *name, Scheme_Object *i, Scheme_Object *vec, int bottom)
|
||||
void scheme_bad_vec_index(char *name, Scheme_Object *i, const char *what, Scheme_Object *vec,
|
||||
long bottom, long len)
|
||||
{
|
||||
int n = SCHEME_VEC_SIZE(vec) - 1;
|
||||
|
||||
if (SCHEME_VEC_SIZE(vec)) {
|
||||
if (len) {
|
||||
long n = len - 1;
|
||||
char *vstr;
|
||||
int vlen;
|
||||
vstr = scheme_make_provided_string(vec, 2, &vlen);
|
||||
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
|
||||
"%s: index %s out of range [%d, %d] for vector: %t",
|
||||
"%s: index %s out of range [%ld, %ld] for %s: %t",
|
||||
name,
|
||||
scheme_make_provided_string(i, 2, NULL),
|
||||
bottom, n,
|
||||
what,
|
||||
vstr, vlen);
|
||||
} else
|
||||
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
|
||||
"%s: bad index %s for empty vector",
|
||||
"%s: bad index %s for empty %s",
|
||||
name,
|
||||
scheme_make_provided_string(i, 0, NULL));
|
||||
|
||||
scheme_make_provided_string(i, 0, NULL),
|
||||
what);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
bad_index(char *name, Scheme_Object *i, Scheme_Object *vec, int bottom)
|
||||
{
|
||||
scheme_bad_vec_index(name, i, "vector", vec, bottom, SCHEME_VEC_SIZE(vec));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="4.2.3.3"
|
||||
version="4.2.3.4"
|
||||
processorArchitecture="X86"
|
||||
name="Org.PLT-Scheme.MrEd"
|
||||
type="win32"
|
||||
|
|
|
@ -20,8 +20,8 @@ APPLICATION ICON DISCARDABLE "mred.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 4,2,3,3
|
||||
PRODUCTVERSION 4,2,3,3
|
||||
FILEVERSION 4,2,3,4
|
||||
PRODUCTVERSION 4,2,3,4
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -39,11 +39,11 @@ BEGIN
|
|||
VALUE "CompanyName", "PLT Scheme Inc.\0"
|
||||
VALUE "FileDescription", "PLT Scheme GUI application\0"
|
||||
VALUE "InternalName", "MrEd\0"
|
||||
VALUE "FileVersion", "4, 2, 3, 3\0"
|
||||
VALUE "FileVersion", "4, 2, 3, 4\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1995-2009\0"
|
||||
VALUE "OriginalFilename", "MrEd.exe\0"
|
||||
VALUE "ProductName", "PLT Scheme\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 3\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 4\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -53,8 +53,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 4,2,3,3
|
||||
PRODUCTVERSION 4,2,3,3
|
||||
FILEVERSION 4,2,3,4
|
||||
PRODUCTVERSION 4,2,3,4
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -70,12 +70,12 @@ BEGIN
|
|||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "FileDescription", "MzCOM Module"
|
||||
VALUE "FileVersion", "4, 2, 3, 3"
|
||||
VALUE "FileVersion", "4, 2, 3, 4"
|
||||
VALUE "InternalName", "MzCOM"
|
||||
VALUE "LegalCopyright", "Copyright 2000-2009 PLT (Paul Steckler)"
|
||||
VALUE "OriginalFilename", "MzCOM.EXE"
|
||||
VALUE "ProductName", "MzCOM Module"
|
||||
VALUE "ProductVersion", "4, 2, 3, 3"
|
||||
VALUE "ProductVersion", "4, 2, 3, 4"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
HKCR
|
||||
{
|
||||
MzCOM.MzObj.4.2.3.3 = s 'MzObj Class'
|
||||
MzCOM.MzObj.4.2.3.4 = s 'MzObj Class'
|
||||
{
|
||||
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
|
||||
}
|
||||
MzCOM.MzObj = s 'MzObj Class'
|
||||
{
|
||||
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
|
||||
CurVer = s 'MzCOM.MzObj.4.2.3.3'
|
||||
CurVer = s 'MzCOM.MzObj.4.2.3.4'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {A3B0AF9E-2AB0-11D4-B6D2-0060089002FE} = s 'MzObj Class'
|
||||
{
|
||||
ProgID = s 'MzCOM.MzObj.4.2.3.3'
|
||||
ProgID = s 'MzCOM.MzObj.4.2.3.4'
|
||||
VersionIndependentProgID = s 'MzCOM.MzObj'
|
||||
ForceRemove 'Programmable'
|
||||
LocalServer32 = s '%MODULE%'
|
||||
|
|
|
@ -29,8 +29,8 @@ APPLICATION ICON DISCARDABLE "mzscheme.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 4,2,3,3
|
||||
PRODUCTVERSION 4,2,3,3
|
||||
FILEVERSION 4,2,3,4
|
||||
PRODUCTVERSION 4,2,3,4
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -48,11 +48,11 @@ BEGIN
|
|||
VALUE "CompanyName", "PLT Scheme Inc.\0"
|
||||
VALUE "FileDescription", "PLT Scheme application\0"
|
||||
VALUE "InternalName", "MzScheme\0"
|
||||
VALUE "FileVersion", "4, 2, 3, 3\0"
|
||||
VALUE "FileVersion", "4, 2, 3, 4\0"
|
||||
VALUE "LegalCopyright", "Copyright <20>© 1995-2009\0"
|
||||
VALUE "OriginalFilename", "mzscheme.exe\0"
|
||||
VALUE "ProductName", "PLT Scheme\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 3\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 4\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -22,8 +22,8 @@ APPLICATION ICON DISCARDABLE "mzstart.ico"
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 4,2,3,3
|
||||
PRODUCTVERSION 4,2,3,3
|
||||
FILEVERSION 4,2,3,4
|
||||
PRODUCTVERSION 4,2,3,4
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -45,7 +45,7 @@ BEGIN
|
|||
#ifdef MZSTART
|
||||
VALUE "FileDescription", "PLT Scheme Launcher\0"
|
||||
#endif
|
||||
VALUE "FileVersion", "4, 2, 3, 3\0"
|
||||
VALUE "FileVersion", "4, 2, 3, 4\0"
|
||||
#ifdef MRSTART
|
||||
VALUE "InternalName", "mrstart\0"
|
||||
#endif
|
||||
|
@ -60,7 +60,7 @@ BEGIN
|
|||
VALUE "OriginalFilename", "MzStart.exe\0"
|
||||
#endif
|
||||
VALUE "ProductName", "PLT Scheme\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 3\0"
|
||||
VALUE "ProductVersion", "4, 2, 3, 4\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
Loading…
Reference in New Issue
Block a user