cs: repairs for 'text mode on Windows

Commit 24c6b2450c fixes a problem with 'text mode output, but "io.scm"
needed to be sync'ed for that repair to take effect. The repair
exposed a problem with position counting for 'text mode input, which
is repaied here.

This commit includes a relatively unrelated repair to `_list` and
`_vector`, which was exposed by a combination of the I/O demo
bootstrap and a recent repair for `malloc` to recognizes `_bytes` as a
GCable type.
This commit is contained in:
Matthew Flatt 2021-04-08 07:28:49 -06:00
parent 1c4570b315
commit ebb4ce990e
18 changed files with 1489 additions and 1251 deletions

View File

@ -763,6 +763,7 @@
(test "lo" cast (ptr-add (if (system-big-endian?) #"e\0l\0l\0o\0\0\0" #"\0l\0l\0o\0\0\0") 3) _pointer _string/utf-16)
(test "lo" cast (ptr-add (share-protect (if (system-big-endian?) #"\0\0\0l\0\0\0l\0\0\0o\0\0\0\0\0\0\0\0" #"\0\0\0\0l\0\0\0o\0\0\0\0\0\0\0")) 4)
_pointer _string/ucs-4)
(test #t cpointer-gcable? (cast '(#"apple") (_list i _bytes) _gcpointer))
(test #t
'many-casts
(for/and ([i (in-range 1000)])

View File

@ -1011,17 +1011,14 @@
(test 'line file-stream-buffer-mode ofile)
(close-output-port ofile)
(let ()
(define ifile (open-input-file path #:mode 'text))
(test "abc" read-line ifile)
(define pos (file-position ifile))
(test "def" read-line ifile)
(file-position ifile pos)
(test "def" read-line ifile))
(test (if (eq? 'windows (system-type))
#"abc\r\ndef\r\nghi\r\n"
#"abc\ndef\nghi\n")
call-with-input-file path (lambda (i) (read-bytes 100 i)))
(let ()
(for ([i '(none block)])
(define ifile (open-input-file path #:mode 'text))
(file-stream-buffer-mode ifile 'none)
(file-stream-buffer-mode ifile)
(test "abc" read-line ifile)
(define pos (file-position ifile))
(test "def" read-line ifile)

View File

@ -1123,20 +1123,20 @@
(provide _list)
(define-fun-syntax _list
(syntax-rules/symbol-literals (i o io)
[(_ i t ) (type: _pointer
[(_ i t ) (type: _gcpointer
pre: (x => (list->cblock x t)))]
[(_ i t mode) (type: _pointer
[(_ i t mode) (type: (malloc-mode-type mode)
pre: (x => (list->cblock x t #:malloc-mode (check-malloc-mode _list mode))))]
[(_ o t n) (type: _pointer
[(_ o t n) (type: _gcpointer
pre: (malloc n t)
post: (x => (cblock->list x t n)))]
[(_ o t n mode) (type: _pointer
[(_ o t n mode) (type: (malloc-mode-type mode)
pre: (malloc n t (check-malloc-mode _list mode))
post: (x => (cblock->list x t n)))]
[(_ io t n) (type: _pointer
[(_ io t n) (type: _gcpointer
pre: (x => (list->cblock x t))
post: (x => (cblock->list x t n)))]
[(_ io t n mode) (type: _pointer
[(_ io t n mode) (type: (malloc-mode-type mode)
pre: (x => (list->cblock x t #:malloc-mode (check-malloc-mode _list mode)))
post: (x => (cblock->list x t n)))]))
@ -1145,20 +1145,20 @@
(provide _vector)
(define-fun-syntax _vector
(syntax-rules/symbol-literals (i o io)
[(_ i t ) (type: _pointer
[(_ i t ) (type: _gcpointer
pre: (x => (vector->cblock x t)))]
[(_ i t mode) (type: _pointer
[(_ i t mode) (type: (malloc-mode-type mode)
pre: (x => (vector->cblock x t #:malloc-mode (check-malloc-mode _vector mode))))]
[(_ o t n) (type: _pointer
[(_ o t n) (type: _gcpointer
pre: (malloc n t)
post: (x => (cblock->vector x t n)))]
[(_ o t n mode) (type: _pointer
[(_ o t n mode) (type: (malloc-mode-type mode)
pre: (malloc n t (check-malloc-mode _vector mode))
post: (x => (cblock->vector x t n)))]
[(_ io t n) (type: _pointer
[(_ io t n) (type: _gcpointer
pre: (x => (vector->cblock x t))
post: (x => (cblock->vector x t n)))]
[(_ io t n mode) (type: _pointer
[(_ io t n mode) (type: (malloc-mode-type mode)
pre: (x => (vector->cblock x t #:malloc-mode (check-malloc-mode _vector mode)))
post: (x => (cblock->vector x t n)))]))
@ -1175,6 +1175,11 @@
"invalid malloc mode"
#'mode)]))
(define-syntax (malloc-mode-type stx)
(syntax-case stx (raw)
[(_ raw) #'_pointer]
[_ #'_gcpointer]))
;; Reflect the difference between 'racket and 'chez-scheme
;; VMs for `_bytes` in `_bytes*`:
(define _pointer/maybe-gcable

View File

@ -270,7 +270,10 @@
[`(define ,id ,rhs)
(if (or (eqv? 1 (hash-ref counts id))
(and (wrap-property rhs 'inferred-name)
(not (hash-ref export-counts id #f))))
(not (hash-ref export-counts id #f)))
(match rhs
[`(make-struct-type-install-properties . ,_) #t]
[_ #f]))
(add-new-names id env #:top? #t #:count-from (expression-shape rhs))
env)]
[`(define-values ,ids ,rhs)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -134,7 +134,19 @@
(lambda (v_0) (|#%app| (|#%app| do-stream-ref v_0 1)))
(lambda (v_0) (|#%app| (|#%app| do-stream-ref v_0 2))))))))
(define empty-stream (make-do-stream (lambda () #t) void void))
(define finish7
(define print-value-columns
(make-parameter
+inf.0
(lambda (c_0)
(if (let ((or-part_0 (eqv? c_0 +inf.0)))
(if or-part_0 or-part_0 (if (exact-integer? c_0) (> c_0 5) #f)))
c_0
(raise-argument-error
'print-value-columns
"(or/c +inf.0 (and/c exact-integer? (>/c 5)))"
c_0)))
'print-value-columns))
(define finish_2045
(make-struct-type-install-properties
'(known-constant)
0
@ -155,7 +167,7 @@
#f
0
0))
(define effect_2537 (finish7 struct:known-constant))
(define effect_2537 (finish_2045 struct:known-constant))
(define known-constant
(|#%name|
known-constant
@ -173,7 +185,7 @@
(if (impersonator? v)
(known-constant?_2598 (impersonator-val v))
#f))))))
(define finish10
(define finish_2081
(make-struct-type-install-properties
'(known-consistent)
0
@ -206,7 +218,7 @@
#f
0
0))
(define effect_2382 (finish10 struct:known-consistent))
(define effect_2382 (finish_2081 struct:known-consistent))
(define known-consistent
(|#%name|
known-consistent
@ -224,7 +236,7 @@
(if (impersonator? v)
(known-consistent?_3048 (impersonator-val v))
#f))))))
(define finish13
(define finish_2443
(make-struct-type-install-properties
'(known-authentic)
0
@ -257,7 +269,7 @@
#f
0
0))
(define effect_2570 (finish13 struct:known-authentic))
(define effect_2570 (finish_2443 struct:known-authentic))
(define known-authentic
(|#%name|
known-authentic
@ -275,7 +287,7 @@
(if (impersonator? v)
(known-authentic?_3119 (impersonator-val v))
#f))))))
(define finish16
(define finish_2536
(make-struct-type-install-properties
'(known-copy)
1
@ -308,7 +320,7 @@
#f
1
1))
(define effect_2542 (finish16 struct:known-copy))
(define effect_2542 (finish_2536 struct:known-copy))
(define known-copy
(|#%name|
known-copy
@ -340,7 +352,7 @@
s
'known-copy
'id))))))
(define finish20
(define finish_2861
(make-struct-type-install-properties
'(known-literal)
1
@ -373,7 +385,7 @@
#f
1
1))
(define effect_2788 (finish20 struct:known-literal))
(define effect_2788 (finish_2861 struct:known-literal))
(define known-literal
(|#%name|
known-literal
@ -407,7 +419,7 @@
s
'known-literal
'value))))))
(define finish24
(define finish_2897
(make-struct-type-install-properties
'(known-procedure)
1
@ -440,7 +452,7 @@
#f
1
1))
(define effect_2677 (finish24 struct:known-procedure))
(define effect_2677 (finish_2897 struct:known-procedure))
(define known-procedure
(|#%name|
known-procedure
@ -476,7 +488,7 @@
s
'known-procedure
'arity-mask))))))
(define finish28
(define finish_2542
(make-struct-type-install-properties
'(known-procedure/single-valued)
0
@ -509,7 +521,7 @@
#f
0
0))
(define effect_2532 (finish28 struct:known-procedure/single-valued))
(define effect_2532 (finish_2542 struct:known-procedure/single-valued))
(define known-procedure/single-valued
(|#%name|
known-procedure/single-valued
@ -532,7 +544,7 @@
(if (impersonator? v)
(known-procedure/single-valued?_3105 (impersonator-val v))
#f))))))
(define finish31
(define finish_2099
(make-struct-type-install-properties
'(known-procedure/no-prompt)
0
@ -565,7 +577,7 @@
#f
0
0))
(define effect_1771 (finish31 struct:known-procedure/no-prompt))
(define effect_1771 (finish_2099 struct:known-procedure/no-prompt))
(define known-procedure/no-prompt
(|#%name|
known-procedure/no-prompt
@ -588,7 +600,7 @@
(if (impersonator? v)
(known-procedure/no-prompt?_2036 (impersonator-val v))
#f))))))
(define finish34
(define finish_2719
(make-struct-type-install-properties
'(known-procedure/no-prompt/multi)
0
@ -621,7 +633,7 @@
#f
0
0))
(define effect_2793 (finish34 struct:known-procedure/no-prompt/multi))
(define effect_2793 (finish_2719 struct:known-procedure/no-prompt/multi))
(define known-procedure/no-prompt/multi
(|#%name|
known-procedure/no-prompt/multi
@ -644,7 +656,7 @@
(if (impersonator? v)
(known-procedure/no-prompt/multi?_2394 (impersonator-val v))
#f))))))
(define finish37
(define finish_2574
(make-struct-type-install-properties
'(known-procedure/no-return)
0
@ -677,7 +689,7 @@
#f
0
0))
(define effect_2517 (finish37 struct:known-procedure/no-return))
(define effect_2517 (finish_2574 struct:known-procedure/no-return))
(define known-procedure/no-return
(|#%name|
known-procedure/no-return
@ -700,7 +712,7 @@
(if (impersonator? v)
(known-procedure/no-return?_1763 (impersonator-val v))
#f))))))
(define finish40
(define finish_2550
(make-struct-type-install-properties
'(known-procedure/can-inline)
1
@ -733,7 +745,7 @@
#f
1
1))
(define effect_2308 (finish40 struct:known-procedure/can-inline))
(define effect_2308 (finish_2550 struct:known-procedure/can-inline))
(define known-procedure/can-inline
(|#%name|
known-procedure/can-inline
@ -774,7 +786,7 @@
s
'known-procedure/can-inline
'expr))))))
(define finish44
(define finish_1976
(make-struct-type-install-properties
'(known-procedure/can-inline/need-imports)
1
@ -807,7 +819,8 @@
#f
1
1))
(define effect_2618 (finish44 struct:known-procedure/can-inline/need-imports))
(define effect_2618
(finish_1976 struct:known-procedure/can-inline/need-imports))
(define known-procedure/can-inline/need-imports
(|#%name|
known-procedure/can-inline/need-imports
@ -848,7 +861,7 @@
s
'known-procedure/can-inline/need-imports
'needed))))))
(define finish48
(define finish_1734
(make-struct-type-install-properties
'(known-procedure/folding)
0
@ -881,7 +894,7 @@
#f
0
0))
(define effect_2478 (finish48 struct:known-procedure/folding))
(define effect_2478 (finish_1734 struct:known-procedure/folding))
(define known-procedure/folding
(|#%name|
known-procedure/folding
@ -904,7 +917,7 @@
(if (impersonator? v)
(known-procedure/folding?_2882 (impersonator-val v))
#f))))))
(define finish51
(define finish_2008
(make-struct-type-install-properties
'(known-procedure/folding/limited)
1
@ -937,7 +950,7 @@
#f
1
1))
(define effect_2518 (finish51 struct:known-procedure/folding/limited))
(define effect_2518 (finish_2008 struct:known-procedure/folding/limited))
(define known-procedure/folding/limited
(|#%name|
known-procedure/folding/limited
@ -978,7 +991,7 @@
s
'known-procedure/folding/limited
'kind))))))
(define finish55
(define finish_2826
(make-struct-type-install-properties
'(known-procedure/succeeds)
0
@ -1011,7 +1024,7 @@
#f
0
0))
(define effect_2467 (finish55 struct:known-procedure/succeeds))
(define effect_2467 (finish_2826 struct:known-procedure/succeeds))
(define known-procedure/succeeds
(|#%name|
known-procedure/succeeds
@ -1034,7 +1047,7 @@
(if (impersonator? v)
(known-procedure/succeeds?_3041 (impersonator-val v))
#f))))))
(define finish58
(define finish_2051
(make-struct-type-install-properties
'(known-procedure/allocates)
0
@ -1067,7 +1080,7 @@
#f
0
0))
(define effect_2336 (finish58 struct:known-procedure/allocates))
(define effect_2336 (finish_2051 struct:known-procedure/allocates))
(define known-procedure/allocates
(|#%name|
known-procedure/allocates
@ -1090,7 +1103,7 @@
(if (impersonator? v)
(known-procedure/allocates?_2244 (impersonator-val v))
#f))))))
(define finish61
(define finish_2724
(make-struct-type-install-properties
'(known-procedure/pure)
0
@ -1123,7 +1136,7 @@
#f
0
0))
(define effect_3058 (finish61 struct:known-procedure/pure))
(define effect_3058 (finish_2724 struct:known-procedure/pure))
(define known-procedure/pure
(|#%name|
known-procedure/pure
@ -1143,7 +1156,7 @@
(if (impersonator? v)
(known-procedure/pure?_2240 (impersonator-val v))
#f))))))
(define finish64
(define finish_2466
(make-struct-type-install-properties
'(known-procedure/pure/folding)
0
@ -1176,7 +1189,7 @@
#f
0
0))
(define effect_2264 (finish64 struct:known-procedure/pure/folding))
(define effect_2264 (finish_2466 struct:known-procedure/pure/folding))
(define known-procedure/pure/folding
(|#%name|
known-procedure/pure/folding
@ -1199,7 +1212,7 @@
(if (impersonator? v)
(known-procedure/pure/folding?_2719 (impersonator-val v))
#f))))))
(define finish67
(define finish_2978
(make-struct-type-install-properties
'(known-procedure/pure/folding-unsafe)
1
@ -1232,7 +1245,7 @@
#f
1
1))
(define effect_2657 (finish67 struct:known-procedure/pure/folding-unsafe))
(define effect_2657 (finish_2978 struct:known-procedure/pure/folding-unsafe))
(define known-procedure/pure/folding-unsafe
(|#%name|
known-procedure/pure/folding-unsafe
@ -1273,7 +1286,7 @@
s
'known-procedure/pure/folding-unsafe
'safe))))))
(define finish71
(define finish_3128
(make-struct-type-install-properties
'(known-procedure/has-unsafe)
1
@ -1306,7 +1319,7 @@
#f
1
1))
(define effect_1752 (finish71 struct:known-procedure/has-unsafe))
(define effect_1752 (finish_3128 struct:known-procedure/has-unsafe))
(define known-procedure/has-unsafe
(|#%name|
known-procedure/has-unsafe
@ -1347,7 +1360,7 @@
s
'known-procedure/has-unsafe
'alternate))))))
(define finish75
(define finish_2439
(make-struct-type-install-properties
'(known-procedure/has-unsafe/folding)
0
@ -1380,7 +1393,7 @@
#f
0
0))
(define effect_2489 (finish75 struct:known-procedure/has-unsafe/folding))
(define effect_2489 (finish_2439 struct:known-procedure/has-unsafe/folding))
(define known-procedure/has-unsafe/folding
(|#%name|
known-procedure/has-unsafe/folding
@ -1403,7 +1416,7 @@
(if (impersonator? v)
(known-procedure/has-unsafe/folding?_2169 (impersonator-val v))
#f))))))
(define finish78
(define finish_2602
(make-struct-type-install-properties
'(known-procedure/has-unsafe/folding/limited)
1
@ -1437,7 +1450,7 @@
1
1))
(define effect_2512
(finish78 struct:known-procedure/has-unsafe/folding/limited))
(finish_2602 struct:known-procedure/has-unsafe/folding/limited))
(define known-procedure/has-unsafe/folding/limited
(|#%name|
known-procedure/has-unsafe/folding/limited
@ -1479,7 +1492,7 @@
s
'known-procedure/has-unsafe/folding/limited
'kind))))))
(define finish82
(define finish_2844
(make-struct-type-install-properties
'(known-struct-type)
4
@ -1512,7 +1525,7 @@
#f
4
15))
(define effect_2667 (finish82 struct:known-struct-type))
(define effect_2667 (finish_2844 struct:known-struct-type))
(define known-struct-type
(|#%name|
known-struct-type
@ -1602,7 +1615,7 @@
s
'known-struct-type
'sealed?))))))
(define finish89
(define finish_2453
(make-struct-type-install-properties
'(known-constructor)
1
@ -1635,7 +1648,7 @@
#f
1
1))
(define effect_1913 (finish89 struct:known-constructor))
(define effect_1913 (finish_2453 struct:known-constructor))
(define known-constructor
(|#%name|
known-constructor
@ -1671,7 +1684,7 @@
s
'known-constructor
'type))))))
(define finish93
(define finish_2917
(make-struct-type-install-properties
'(known-predicate)
1
@ -1704,7 +1717,7 @@
#f
1
1))
(define effect_2144 (finish93 struct:known-predicate))
(define effect_2144 (finish_2917 struct:known-predicate))
(define known-predicate
(|#%name|
known-predicate
@ -1738,7 +1751,7 @@
s
'known-predicate
'type))))))
(define finish97
(define finish_2548
(make-struct-type-install-properties
'(known-accessor)
1
@ -1771,7 +1784,7 @@
#f
1
1))
(define effect_2905 (finish97 struct:known-accessor))
(define effect_2905 (finish_2548 struct:known-accessor))
(define known-accessor
(|#%name|
known-accessor
@ -1805,7 +1818,7 @@
s
'known-accessor
'type))))))
(define finish101
(define finish_2552
(make-struct-type-install-properties
'(known-mutator)
1
@ -1838,7 +1851,7 @@
#f
1
1))
(define effect_2521 (finish101 struct:known-mutator))
(define effect_2521 (finish_2552 struct:known-mutator))
(define known-mutator
(|#%name|
known-mutator
@ -1872,7 +1885,7 @@
s
'known-mutator
'type))))))
(define finish105
(define finish_2184
(make-struct-type-install-properties
'(known-struct-constructor)
1
@ -1905,7 +1918,7 @@
#f
1
1))
(define effect_3238 (finish105 struct:known-struct-constructor))
(define effect_3238 (finish_2184 struct:known-struct-constructor))
(define known-struct-constructor
(|#%name|
known-struct-constructor
@ -1946,7 +1959,7 @@
s
'known-struct-constructor
'type-id))))))
(define finish109
(define finish_2304
(make-struct-type-install-properties
'(known-struct-predicate)
3
@ -1979,7 +1992,7 @@
#f
3
7))
(define effect_2384 (finish109 struct:known-struct-predicate))
(define effect_2384 (finish_2304 struct:known-struct-predicate))
(define known-struct-predicate
(|#%name|
known-struct-predicate
@ -2053,7 +2066,7 @@
s
'known-struct-predicate
'sealed?))))))
(define finish115
(define finish_3014
(make-struct-type-install-properties
'(known-field-accessor)
4
@ -2086,7 +2099,7 @@
#f
4
15))
(define effect_2259 (finish115 struct:known-field-accessor))
(define effect_2259 (finish_3014 struct:known-field-accessor))
(define known-field-accessor
(|#%name|
known-field-accessor
@ -2178,7 +2191,7 @@
s
'known-field-accessor
'known-immutable?))))))
(define finish122
(define finish_2908
(make-struct-type-install-properties
'(known-field-mutator)
3
@ -2211,7 +2224,7 @@
#f
3
7))
(define effect_2603 (finish122 struct:known-field-mutator))
(define effect_2603 (finish_2908 struct:known-field-mutator))
(define known-field-mutator
(|#%name|
known-field-mutator
@ -2285,7 +2298,7 @@
s
'known-field-mutator
'pos))))))
(define finish128
(define finish_2543
(make-struct-type-install-properties
'(known-struct-constructor/need-imports)
1
@ -2318,7 +2331,7 @@
#f
1
1))
(define effect_2146 (finish128 struct:known-struct-constructor/need-imports))
(define effect_2146 (finish_2543 struct:known-struct-constructor/need-imports))
(define known-struct-constructor/need-imports
(|#%name|
known-struct-constructor/need-imports
@ -2359,7 +2372,7 @@
s
'known-struct-constructor/need-imports
'needed))))))
(define finish132
(define finish_2626
(make-struct-type-install-properties
'(known-struct-predicate/need-imports)
1
@ -2392,7 +2405,7 @@
#f
1
1))
(define effect_3156 (finish132 struct:known-struct-predicate/need-imports))
(define effect_3156 (finish_2626 struct:known-struct-predicate/need-imports))
(define known-struct-predicate/need-imports
(|#%name|
known-struct-predicate/need-imports
@ -2433,7 +2446,7 @@
s
'known-struct-predicate/need-imports
'needed))))))
(define finish136
(define finish_2444
(make-struct-type-install-properties
'(known-field-accessor/need-imports)
1
@ -2466,7 +2479,7 @@
#f
1
1))
(define effect_2513 (finish136 struct:known-field-accessor/need-imports))
(define effect_2513 (finish_2444 struct:known-field-accessor/need-imports))
(define known-field-accessor/need-imports
(|#%name|
known-field-accessor/need-imports
@ -2507,7 +2520,7 @@
s
'known-field-accessor/need-imports
'needed))))))
(define finish140
(define finish_2153
(make-struct-type-install-properties
'(known-field-mutator/need-imports)
1
@ -2540,7 +2553,7 @@
#f
1
1))
(define effect_2273 (finish140 struct:known-field-mutator/need-imports))
(define effect_2273 (finish_2153 struct:known-field-mutator/need-imports))
(define known-field-mutator/need-imports
(|#%name|
known-field-mutator/need-imports
@ -2581,7 +2594,7 @@
s
'known-field-mutator/need-imports
'needed))))))
(define finish144
(define finish_2492
(make-struct-type-install-properties
'(known-struct-type-property/immediate-guard)
0
@ -2609,7 +2622,7 @@
0
0))
(define effect_2294
(finish144 struct:known-struct-type-property/immediate-guard))
(finish_2492 struct:known-struct-type-property/immediate-guard))
(define known-struct-type-property/immediate-guard
(|#%name|
known-struct-type-property/immediate-guard

View File

@ -290,13 +290,13 @@
(|#%name|
check-range
(lambda (a_0 b_0 step_0)
(begin
(begin
(if (real? a_0) (void) (raise-argument-error 'in-range "real?" a_0))
(if (real? b_0) (void) (raise-argument-error 'in-range "real?" b_0))
(if (real? step_0)
(void)
(raise-argument-error 'in-range "real?" step_0)))))))
(begin (check-range-generic 'in-range a_0 b_0 step_0)))))
(define check-range-generic
(lambda (who_0 a_0 b_0 step_0)
(begin
(if (real? a_0) (void) (raise-argument-error who_0 "real?" a_0))
(if (real? b_0) (void) (raise-argument-error who_0 "real?" b_0))
(if (real? step_0) (void) (raise-argument-error who_0 "real?" step_0)))))
(define check-naturals
(lambda (n_0)
(if (if (integer? n_0) (if (exact? n_0) (>= n_0 0) #f) #f)
@ -687,6 +687,18 @@
(let ((or-part_0 (apply f_0 (map_1346 car ls_1))))
(if or-part_0 or-part_0 (loop_0 next-ls_0)))))))))))
(loop_0 ls_0)))))
(define print-value-columns
(make-parameter
+inf.0
(lambda (c_0)
(if (let ((or-part_0 (eqv? c_0 +inf.0)))
(if or-part_0 or-part_0 (if (exact-integer? c_0) (> c_0 5) #f)))
c_0
(raise-argument-error
'print-value-columns
"(or/c +inf.0 (and/c exact-integer? (>/c 5)))"
c_0)))
'print-value-columns))
(define regexp-error-tag (make-continuation-prompt-tag 'regexp-error))
(define regexp-error
(lambda (fmt_0 . args_0)
@ -865,7 +877,7 @@
(define rx:line-end 'line-end)
(define rx:word-boundary 'word-boundary)
(define rx:not-word-boundary 'not-word-boundary)
(define finish39
(define finish_2542
(make-struct-type-install-properties
'(rx:alts)
2
@ -886,7 +898,7 @@
#f
2
0))
(define effect_2414 (finish39 struct:rx:alts))
(define effect_2414 (finish_2542 struct:rx:alts))
(define rx:alts1.1
(|#%name|
rx:alts
@ -921,7 +933,7 @@
(rx:alts-rx_2917 s)
($value
(impersonate-ref rx:alts-rx_2917 struct:rx:alts 1 s 'rx:alts 'rx2))))))
(define finish44
(define finish_2732
(make-struct-type-install-properties
'(rx:sequence)
2
@ -942,7 +954,7 @@
#f
2
0))
(define effect_2459 (finish44 struct:rx:sequence))
(define effect_2459 (finish_2732 struct:rx:sequence))
(define rx:sequence2.1
(|#%name|
rx:sequence
@ -992,7 +1004,7 @@
s
'rx:sequence
'needs-backtrack?))))))
(define finish49
(define finish_2954
(make-struct-type-install-properties
'(rx:group)
2
@ -1013,7 +1025,7 @@
#f
2
0))
(define effect_1819 (finish49 struct:rx:group))
(define effect_1819 (finish_2954 struct:rx:group))
(define rx:group3.1
(|#%name|
rx:group
@ -1060,7 +1072,7 @@
s
'rx:group
'number))))))
(define finish54
(define finish_1837
(make-struct-type-install-properties
'(rx:repeat)
4
@ -1081,7 +1093,7 @@
#f
4
0))
(define effect_2312 (finish54 struct:rx:repeat))
(define effect_2312 (finish_1837 struct:rx:repeat))
(define rx:repeat4.1
(|#%name|
rx:repeat
@ -1161,7 +1173,7 @@
s
'rx:repeat
'non-greedy?))))))
(define finish61
(define finish_3260
(make-struct-type-install-properties
'(rx:maybe)
2
@ -1182,7 +1194,7 @@
#f
2
0))
(define effect_2202 (finish61 struct:rx:maybe))
(define effect_2202 (finish_3260 struct:rx:maybe))
(define rx:maybe5.1
(|#%name|
rx:maybe
@ -1229,7 +1241,7 @@
s
'rx:maybe
'non-greedy?))))))
(define finish66
(define finish_2500
(make-struct-type-install-properties
'(rx:conditional)
6
@ -1250,7 +1262,7 @@
#f
6
0))
(define effect_2905 (finish66 struct:rx:conditional))
(define effect_2905 (finish_2500 struct:rx:conditional))
(define rx:conditional6.1
(|#%name|
rx:conditional
@ -1366,7 +1378,7 @@
s
'rx:conditional
'needs-backtrack?))))))
(define finish75
(define finish_2488
(make-struct-type-install-properties
'(rx:lookahead)
4
@ -1387,7 +1399,7 @@
#f
4
0))
(define effect_2486 (finish75 struct:rx:lookahead))
(define effect_2486 (finish_2488 struct:rx:lookahead))
(define rx:lookahead7.1
(|#%name|
rx:lookahead
@ -1469,7 +1481,7 @@
s
'rx:lookahead
'num-n))))))
(define finish82
(define finish_3095
(make-struct-type-install-properties
'(rx:lookbehind)
6
@ -1490,7 +1502,7 @@
#f
6
12))
(define effect_2468 (finish82 struct:rx:lookbehind))
(define effect_2468 (finish_3095 struct:rx:lookbehind))
(define rx:lookbehind8.1
(|#%name|
rx:lookbehind
@ -1640,7 +1652,7 @@
v
'rx:lookbehind
'lb-max))))))
(define finish93
(define finish_2346
(make-struct-type-install-properties
'(rx:cut)
4
@ -1661,7 +1673,7 @@
#f
4
0))
(define effect_2158 (finish93 struct:rx:cut))
(define effect_2158 (finish_2346 struct:rx:cut))
(define rx:cut9.1
(|#%name|
rx:cut
@ -1733,7 +1745,7 @@
s
'rx:cut
'needs-backtrack?))))))
(define finish100
(define finish_1921
(make-struct-type-install-properties
'(rx:reference)
2
@ -1754,7 +1766,7 @@
#f
2
0))
(define effect_2306 (finish100 struct:rx:reference))
(define effect_2306 (finish_1921 struct:rx:reference))
(define rx:reference10.1
(|#%name|
rx:reference
@ -1806,7 +1818,7 @@
s
'rx:reference
'case-sensitive?))))))
(define finish105
(define finish_2471
(make-struct-type-install-properties
'(rx:range)
1
@ -1827,7 +1839,7 @@
#f
1
0))
(define effect_2071 (finish105 struct:rx:range))
(define effect_2071 (finish_2471 struct:rx:range))
(define rx:range11.1
(|#%name|
rx:range
@ -1858,7 +1870,7 @@
s
'rx:range
'range))))))
(define finish109
(define finish_2339
(make-struct-type-install-properties
'(rx:unicode-categories)
2
@ -1879,7 +1891,7 @@
#f
2
0))
(define effect_2341 (finish109 struct:rx:unicode-categories))
(define effect_2341 (finish_2339 struct:rx:unicode-categories))
(define rx:unicode-categories12.1
(|#%name|
rx:unicode-categories
@ -2129,7 +2141,7 @@
num-n_0
(let ((or-part_0 (needs-backtrack? pces1_0)))
(if or-part_0 or-part_0 (needs-backtrack? pces2_0))))))
(define finish123
(define finish_2581
(make-struct-type-install-properties
'(parse-config)
7
@ -2150,7 +2162,7 @@
#f
7
0))
(define effect_2622 (finish123 struct:parse-config))
(define effect_2622 (finish_2581 struct:parse-config))
(define parse-config1.1
(|#%name|
parse-config
@ -4697,7 +4709,7 @@
(zero-sized? (rx:cut-rx rx_0))
#f)))))))))))))))))))
(define union (lambda (a_0 b_0) (if a_0 (if b_0 (range-union a_0 b_0) #f) #f)))
(define finish535
(define finish_2590
(make-struct-type-install-properties
'(lazy-bytes)
13
@ -4718,7 +4730,7 @@
#f
13
3075))
(define effect_2741 (finish535 struct:lazy-bytes))
(define effect_2741 (finish_2590 struct:lazy-bytes))
(define lazy-bytes1.1
(|#%name|
lazy-bytes
@ -7242,7 +7254,7 @@
(if (rx:range? rx_0)
(range-matcher* (compile-range (rx:range-range rx_0)) max_0)
#f))))))
(define finish621
(define finish_2797
(make-struct-type-install-properties
'(regexp)
10
@ -7280,7 +7292,7 @@
#f
10
0))
(define effect_2726 (finish621 struct:rx:regexp))
(define effect_2726 (finish_2797 struct:rx:regexp))
(define rx:regexp1.1
(|#%name|
rx:regexp

View File

@ -1583,13 +1583,13 @@
(let ((app_1 (|#%app| range-ref v_0 0)))
(values values #f app_0 app_1 (|#%app| range-ref v_0 2) #f #f))))))))
(define check-range
(lambda (a_0 b_0 step_0)
(lambda (a_0 b_0 step_0) (check-range-generic 'in-range a_0 b_0 step_0)))
(define check-range-generic
(lambda (who_0 a_0 b_0 step_0)
(begin
(if (real? a_0) (void) (raise-argument-error 'in-range "real?" a_0))
(if (real? b_0) (void) (raise-argument-error 'in-range "real?" b_0))
(if (real? step_0)
(void)
(raise-argument-error 'in-range "real?" step_0)))))
(if (real? a_0) (void) (raise-argument-error who_0 "real?" a_0))
(if (real? b_0) (void) (raise-argument-error who_0 "real?" b_0))
(if (real? step_0) (void) (raise-argument-error who_0 "real?" step_0)))))
(define check-naturals
(lambda (n_0)
(if (if (integer? n_0) (if (exact? n_0) (>= n_0 0) #f) #f)
@ -1780,6 +1780,18 @@
(check-not-unsafe-undefined sort 'sort)
lst5_0
less?6_0)))))))
(define print-value-columns
(make-parameter
+inf.0
(lambda (c_0)
(if (let ((or-part_0 (eqv? c_0 +inf.0)))
(if or-part_0 or-part_0 (if (exact-integer? c_0) (> c_0 5) #f)))
c_0
(raise-argument-error
'print-value-columns
"(or/c +inf.0 (and/c exact-integer? (>/c 5)))"
c_0)))
'print-value-columns))
(define correlated?$1 syntax?)
(define correlated-e$1 syntax-e)
(define correlated-property$1 syntax-property)
@ -1850,7 +1862,7 @@
(define reannotate/new-srcloc
(lambda (old-term_0 new-term_0 new-srcloc_0)
(datum->syntax #f new-term_0 new-srcloc_0 old-term_0)))
(define finish48
(define finish_2045
(make-struct-type-install-properties
'(known-constant)
0
@ -1871,7 +1883,7 @@
#f
0
0))
(define effect_2537 (finish48 struct:known-constant))
(define effect_2537 (finish_2045 struct:known-constant))
(define known-constant
(|#%name|
known-constant
@ -1889,7 +1901,7 @@
(if (impersonator? v)
(known-constant?_2598 (impersonator-val v))
#f))))))
(define finish51
(define finish_2081
(make-struct-type-install-properties
'(known-consistent)
0
@ -1922,7 +1934,7 @@
#f
0
0))
(define effect_2382 (finish51 struct:known-consistent))
(define effect_2382 (finish_2081 struct:known-consistent))
(define known-consistent
(|#%name|
known-consistent
@ -1940,7 +1952,7 @@
(if (impersonator? v)
(known-consistent?_3048 (impersonator-val v))
#f))))))
(define finish54
(define finish_2443
(make-struct-type-install-properties
'(known-authentic)
0
@ -1973,7 +1985,7 @@
#f
0
0))
(define effect_2570 (finish54 struct:known-authentic))
(define effect_2570 (finish_2443 struct:known-authentic))
(define known-authentic
(|#%name|
known-authentic
@ -1991,7 +2003,7 @@
(if (impersonator? v)
(known-authentic?_3119 (impersonator-val v))
#f))))))
(define finish57
(define finish_2536
(make-struct-type-install-properties
'(known-copy)
1
@ -2024,7 +2036,7 @@
#f
1
1))
(define effect_2542 (finish57 struct:known-copy))
(define effect_2542 (finish_2536 struct:known-copy))
(define known-copy
(|#%name|
known-copy
@ -2056,7 +2068,7 @@
s
'known-copy
'id))))))
(define finish61
(define finish_2861
(make-struct-type-install-properties
'(known-literal)
1
@ -2089,7 +2101,7 @@
#f
1
1))
(define effect_2788 (finish61 struct:known-literal))
(define effect_2788 (finish_2861 struct:known-literal))
(define known-literal
(|#%name|
known-literal
@ -2123,7 +2135,7 @@
s
'known-literal
'value))))))
(define finish65
(define finish_2897
(make-struct-type-install-properties
'(known-procedure)
1
@ -2156,7 +2168,7 @@
#f
1
1))
(define effect_2677 (finish65 struct:known-procedure))
(define effect_2677 (finish_2897 struct:known-procedure))
(define known-procedure
(|#%name|
known-procedure
@ -2192,7 +2204,7 @@
s
'known-procedure
'arity-mask))))))
(define finish69
(define finish_2542
(make-struct-type-install-properties
'(known-procedure/single-valued)
0
@ -2225,7 +2237,7 @@
#f
0
0))
(define effect_2532 (finish69 struct:known-procedure/single-valued))
(define effect_2532 (finish_2542 struct:known-procedure/single-valued))
(define known-procedure/single-valued
(|#%name|
known-procedure/single-valued
@ -2248,7 +2260,7 @@
(if (impersonator? v)
(known-procedure/single-valued?_3105 (impersonator-val v))
#f))))))
(define finish72
(define finish_2099
(make-struct-type-install-properties
'(known-procedure/no-prompt)
0
@ -2281,7 +2293,7 @@
#f
0
0))
(define effect_1771 (finish72 struct:known-procedure/no-prompt))
(define effect_1771 (finish_2099 struct:known-procedure/no-prompt))
(define known-procedure/no-prompt
(|#%name|
known-procedure/no-prompt
@ -2304,7 +2316,7 @@
(if (impersonator? v)
(known-procedure/no-prompt?_2036 (impersonator-val v))
#f))))))
(define finish75
(define finish_2719
(make-struct-type-install-properties
'(known-procedure/no-prompt/multi)
0
@ -2337,7 +2349,7 @@
#f
0
0))
(define effect_2793 (finish75 struct:known-procedure/no-prompt/multi))
(define effect_2793 (finish_2719 struct:known-procedure/no-prompt/multi))
(define known-procedure/no-prompt/multi
(|#%name|
known-procedure/no-prompt/multi
@ -2360,7 +2372,7 @@
(if (impersonator? v)
(known-procedure/no-prompt/multi?_2394 (impersonator-val v))
#f))))))
(define finish78
(define finish_2574
(make-struct-type-install-properties
'(known-procedure/no-return)
0
@ -2393,7 +2405,7 @@
#f
0
0))
(define effect_2517 (finish78 struct:known-procedure/no-return))
(define effect_2517 (finish_2574 struct:known-procedure/no-return))
(define known-procedure/no-return
(|#%name|
known-procedure/no-return
@ -2416,7 +2428,7 @@
(if (impersonator? v)
(known-procedure/no-return?_1763 (impersonator-val v))
#f))))))
(define finish81
(define finish_2550
(make-struct-type-install-properties
'(known-procedure/can-inline)
1
@ -2449,7 +2461,7 @@
#f
1
1))
(define effect_2308 (finish81 struct:known-procedure/can-inline))
(define effect_2308 (finish_2550 struct:known-procedure/can-inline))
(define known-procedure/can-inline
(|#%name|
known-procedure/can-inline
@ -2490,7 +2502,7 @@
s
'known-procedure/can-inline
'expr))))))
(define finish85
(define finish_1976
(make-struct-type-install-properties
'(known-procedure/can-inline/need-imports)
1
@ -2523,7 +2535,8 @@
#f
1
1))
(define effect_2618 (finish85 struct:known-procedure/can-inline/need-imports))
(define effect_2618
(finish_1976 struct:known-procedure/can-inline/need-imports))
(define known-procedure/can-inline/need-imports
(|#%name|
known-procedure/can-inline/need-imports
@ -2564,7 +2577,7 @@
s
'known-procedure/can-inline/need-imports
'needed))))))
(define finish89
(define finish_1734
(make-struct-type-install-properties
'(known-procedure/folding)
0
@ -2597,7 +2610,7 @@
#f
0
0))
(define effect_2478 (finish89 struct:known-procedure/folding))
(define effect_2478 (finish_1734 struct:known-procedure/folding))
(define known-procedure/folding
(|#%name|
known-procedure/folding
@ -2620,7 +2633,7 @@
(if (impersonator? v)
(known-procedure/folding?_2882 (impersonator-val v))
#f))))))
(define finish92
(define finish_2008
(make-struct-type-install-properties
'(known-procedure/folding/limited)
1
@ -2653,7 +2666,7 @@
#f
1
1))
(define effect_2518 (finish92 struct:known-procedure/folding/limited))
(define effect_2518 (finish_2008 struct:known-procedure/folding/limited))
(define known-procedure/folding/limited
(|#%name|
known-procedure/folding/limited
@ -2694,7 +2707,7 @@
s
'known-procedure/folding/limited
'kind))))))
(define finish96
(define finish_2826
(make-struct-type-install-properties
'(known-procedure/succeeds)
0
@ -2727,7 +2740,7 @@
#f
0
0))
(define effect_2467 (finish96 struct:known-procedure/succeeds))
(define effect_2467 (finish_2826 struct:known-procedure/succeeds))
(define known-procedure/succeeds
(|#%name|
known-procedure/succeeds
@ -2750,7 +2763,7 @@
(if (impersonator? v)
(known-procedure/succeeds?_3041 (impersonator-val v))
#f))))))
(define finish99
(define finish_2051
(make-struct-type-install-properties
'(known-procedure/allocates)
0
@ -2783,7 +2796,7 @@
#f
0
0))
(define effect_2336 (finish99 struct:known-procedure/allocates))
(define effect_2336 (finish_2051 struct:known-procedure/allocates))
(define known-procedure/allocates
(|#%name|
known-procedure/allocates
@ -2806,7 +2819,7 @@
(if (impersonator? v)
(known-procedure/allocates?_2244 (impersonator-val v))
#f))))))
(define finish102
(define finish_2724
(make-struct-type-install-properties
'(known-procedure/pure)
0
@ -2839,7 +2852,7 @@
#f
0
0))
(define effect_3058 (finish102 struct:known-procedure/pure))
(define effect_3058 (finish_2724 struct:known-procedure/pure))
(define known-procedure/pure
(|#%name|
known-procedure/pure
@ -2859,7 +2872,7 @@
(if (impersonator? v)
(known-procedure/pure?_2240 (impersonator-val v))
#f))))))
(define finish105
(define finish_2466
(make-struct-type-install-properties
'(known-procedure/pure/folding)
0
@ -2892,7 +2905,7 @@
#f
0
0))
(define effect_2264 (finish105 struct:known-procedure/pure/folding))
(define effect_2264 (finish_2466 struct:known-procedure/pure/folding))
(define known-procedure/pure/folding
(|#%name|
known-procedure/pure/folding
@ -2915,7 +2928,7 @@
(if (impersonator? v)
(known-procedure/pure/folding?_2719 (impersonator-val v))
#f))))))
(define finish108
(define finish_2978
(make-struct-type-install-properties
'(known-procedure/pure/folding-unsafe)
1
@ -2948,7 +2961,7 @@
#f
1
1))
(define effect_2657 (finish108 struct:known-procedure/pure/folding-unsafe))
(define effect_2657 (finish_2978 struct:known-procedure/pure/folding-unsafe))
(define known-procedure/pure/folding-unsafe
(|#%name|
known-procedure/pure/folding-unsafe
@ -2989,7 +3002,7 @@
s
'known-procedure/pure/folding-unsafe
'safe))))))
(define finish112
(define finish_3128
(make-struct-type-install-properties
'(known-procedure/has-unsafe)
1
@ -3022,7 +3035,7 @@
#f
1
1))
(define effect_1752 (finish112 struct:known-procedure/has-unsafe))
(define effect_1752 (finish_3128 struct:known-procedure/has-unsafe))
(define known-procedure/has-unsafe
(|#%name|
known-procedure/has-unsafe
@ -3063,7 +3076,7 @@
s
'known-procedure/has-unsafe
'alternate))))))
(define finish116
(define finish_2439
(make-struct-type-install-properties
'(known-procedure/has-unsafe/folding)
0
@ -3096,7 +3109,7 @@
#f
0
0))
(define effect_2489 (finish116 struct:known-procedure/has-unsafe/folding))
(define effect_2489 (finish_2439 struct:known-procedure/has-unsafe/folding))
(define known-procedure/has-unsafe/folding
(|#%name|
known-procedure/has-unsafe/folding
@ -3119,7 +3132,7 @@
(if (impersonator? v)
(known-procedure/has-unsafe/folding?_2169 (impersonator-val v))
#f))))))
(define finish119
(define finish_2602
(make-struct-type-install-properties
'(known-procedure/has-unsafe/folding/limited)
1
@ -3153,7 +3166,7 @@
1
1))
(define effect_2512
(finish119 struct:known-procedure/has-unsafe/folding/limited))
(finish_2602 struct:known-procedure/has-unsafe/folding/limited))
(define known-procedure/has-unsafe/folding/limited
(|#%name|
known-procedure/has-unsafe/folding/limited
@ -3195,7 +3208,7 @@
s
'known-procedure/has-unsafe/folding/limited
'kind))))))
(define finish123
(define finish_2844
(make-struct-type-install-properties
'(known-struct-type)
4
@ -3228,7 +3241,7 @@
#f
4
15))
(define effect_2667 (finish123 struct:known-struct-type))
(define effect_2667 (finish_2844 struct:known-struct-type))
(define known-struct-type
(|#%name|
known-struct-type
@ -3318,7 +3331,7 @@
s
'known-struct-type
'sealed?))))))
(define finish130
(define finish_2453
(make-struct-type-install-properties
'(known-constructor)
1
@ -3351,7 +3364,7 @@
#f
1
1))
(define effect_1913 (finish130 struct:known-constructor))
(define effect_1913 (finish_2453 struct:known-constructor))
(define known-constructor
(|#%name|
known-constructor
@ -3387,7 +3400,7 @@
s
'known-constructor
'type))))))
(define finish134
(define finish_2917
(make-struct-type-install-properties
'(known-predicate)
1
@ -3420,7 +3433,7 @@
#f
1
1))
(define effect_2144 (finish134 struct:known-predicate))
(define effect_2144 (finish_2917 struct:known-predicate))
(define known-predicate
(|#%name|
known-predicate
@ -3454,7 +3467,7 @@
s
'known-predicate
'type))))))
(define finish138
(define finish_2548
(make-struct-type-install-properties
'(known-accessor)
1
@ -3487,7 +3500,7 @@
#f
1
1))
(define effect_2905 (finish138 struct:known-accessor))
(define effect_2905 (finish_2548 struct:known-accessor))
(define known-accessor
(|#%name|
known-accessor
@ -3521,7 +3534,7 @@
s
'known-accessor
'type))))))
(define finish142
(define finish_2552
(make-struct-type-install-properties
'(known-mutator)
1
@ -3554,7 +3567,7 @@
#f
1
1))
(define effect_2521 (finish142 struct:known-mutator))
(define effect_2521 (finish_2552 struct:known-mutator))
(define known-mutator
(|#%name|
known-mutator
@ -3588,7 +3601,7 @@
s
'known-mutator
'type))))))
(define finish146
(define finish_2184
(make-struct-type-install-properties
'(known-struct-constructor)
1
@ -3621,7 +3634,7 @@
#f
1
1))
(define effect_3238 (finish146 struct:known-struct-constructor))
(define effect_3238 (finish_2184 struct:known-struct-constructor))
(define known-struct-constructor
(|#%name|
known-struct-constructor
@ -3662,7 +3675,7 @@
s
'known-struct-constructor
'type-id))))))
(define finish150
(define finish_2304
(make-struct-type-install-properties
'(known-struct-predicate)
3
@ -3695,7 +3708,7 @@
#f
3
7))
(define effect_2384 (finish150 struct:known-struct-predicate))
(define effect_2384 (finish_2304 struct:known-struct-predicate))
(define known-struct-predicate
(|#%name|
known-struct-predicate
@ -3769,7 +3782,7 @@
s
'known-struct-predicate
'sealed?))))))
(define finish156
(define finish_3014
(make-struct-type-install-properties
'(known-field-accessor)
4
@ -3802,7 +3815,7 @@
#f
4
15))
(define effect_2259 (finish156 struct:known-field-accessor))
(define effect_2259 (finish_3014 struct:known-field-accessor))
(define known-field-accessor
(|#%name|
known-field-accessor
@ -3894,7 +3907,7 @@
s
'known-field-accessor
'known-immutable?))))))
(define finish163
(define finish_2908
(make-struct-type-install-properties
'(known-field-mutator)
3
@ -3927,7 +3940,7 @@
#f
3
7))
(define effect_2603 (finish163 struct:known-field-mutator))
(define effect_2603 (finish_2908 struct:known-field-mutator))
(define known-field-mutator
(|#%name|
known-field-mutator
@ -4001,7 +4014,7 @@
s
'known-field-mutator
'pos))))))
(define finish169
(define finish_2543
(make-struct-type-install-properties
'(known-struct-constructor/need-imports)
1
@ -4034,7 +4047,7 @@
#f
1
1))
(define effect_2146 (finish169 struct:known-struct-constructor/need-imports))
(define effect_2146 (finish_2543 struct:known-struct-constructor/need-imports))
(define known-struct-constructor/need-imports
(|#%name|
known-struct-constructor/need-imports
@ -4075,7 +4088,7 @@
s
'known-struct-constructor/need-imports
'needed))))))
(define finish173
(define finish_2626
(make-struct-type-install-properties
'(known-struct-predicate/need-imports)
1
@ -4108,7 +4121,7 @@
#f
1
1))
(define effect_3156 (finish173 struct:known-struct-predicate/need-imports))
(define effect_3156 (finish_2626 struct:known-struct-predicate/need-imports))
(define known-struct-predicate/need-imports
(|#%name|
known-struct-predicate/need-imports
@ -4149,7 +4162,7 @@
s
'known-struct-predicate/need-imports
'needed))))))
(define finish177
(define finish_2444
(make-struct-type-install-properties
'(known-field-accessor/need-imports)
1
@ -4182,7 +4195,7 @@
#f
1
1))
(define effect_2513 (finish177 struct:known-field-accessor/need-imports))
(define effect_2513 (finish_2444 struct:known-field-accessor/need-imports))
(define known-field-accessor/need-imports
(|#%name|
known-field-accessor/need-imports
@ -4223,7 +4236,7 @@
s
'known-field-accessor/need-imports
'needed))))))
(define finish181
(define finish_2153
(make-struct-type-install-properties
'(known-field-mutator/need-imports)
1
@ -4256,7 +4269,7 @@
#f
1
1))
(define effect_2273 (finish181 struct:known-field-mutator/need-imports))
(define effect_2273 (finish_2153 struct:known-field-mutator/need-imports))
(define known-field-mutator/need-imports
(|#%name|
known-field-mutator/need-imports
@ -4297,7 +4310,7 @@
s
'known-field-mutator/need-imports
'needed))))))
(define finish185
(define finish_2492
(make-struct-type-install-properties
'(known-struct-type-property/immediate-guard)
0
@ -4325,7 +4338,7 @@
0
0))
(define effect_2294
(finish185 struct:known-struct-type-property/immediate-guard))
(finish_2492 struct:known-struct-type-property/immediate-guard))
(define known-struct-type-property/immediate-guard
(|#%name|
known-struct-type-property/immediate-guard
@ -4366,7 +4379,7 @@
(let ((app_0
(if (string? prefix_0) prefix_0 (symbol->string prefix_0))))
(string-append app_0 (number->string (unbox b_0)))))))))
(define finish189
(define finish_2816
(make-struct-type-install-properties
'(import)
4
@ -4387,7 +4400,7 @@
#f
4
0))
(define effect_2192 (finish189 struct:import))
(define effect_2192 (finish_2816 struct:import))
(define import1.1
(|#%name|
import
@ -4453,7 +4466,7 @@
s
'import
'ext-id))))))
(define finish196
(define finish_1986
(make-struct-type-install-properties
'(import-group)
6
@ -4474,7 +4487,7 @@
#f
6
60))
(define effect_2739 (finish196 struct:import-group))
(define effect_2739 (finish_1986 struct:import-group))
(define import-group2.1
(|#%name|
import-group
@ -4823,7 +4836,7 @@
(|#%app| inc-index!_0)
(|#%app| add-group!_0 grp_0)
grp_0))))))
(define finish210
(define finish_2351
(make-struct-type-install-properties
'(export)
2
@ -4844,7 +4857,7 @@
#f
2
0))
(define effect_2782 (finish210 struct:export))
(define effect_2782 (finish_2351 struct:export))
(define export1.1
(|#%name|
export
@ -4884,7 +4897,7 @@
s
'export
'ext-id))))))
(define finish215
(define finish_2682
(make-struct-type-install-properties
'(too-early)
2
@ -4905,7 +4918,7 @@
#f
2
0))
(define effect_2833 (finish215 struct:too-early))
(define effect_2833 (finish_2682 struct:too-early))
(define too-early1.1
(|#%name|
too-early
@ -7193,7 +7206,7 @@
(case-lambda
((k_0 im_0) k_0)
(args (raise-binding-result-arity-error 2 args))))))
(define finish303
(define finish_2858
(make-struct-type-install-properties
'(struct-type-info)
11
@ -7214,7 +7227,7 @@
#f
11
0))
(define effect_2037 (finish303 struct:struct-type-info))
(define effect_2037 (finish_2858 struct:struct-type-info))
(define struct-type-info1.1
(|#%name|
struct-type-info
@ -30642,7 +30655,7 @@
(schemify-body_0 (cdr l_0) wcm-state_2))))))))))
(schemify_0 v_1 wcm-state_1)))))))
(schemify/knowns_0 knowns_0 8 wcm-state_0 v_0))))
(define finish1668
(define finish_2118
(make-struct-type-install-properties
'(convert-mode)
4
@ -30663,7 +30676,7 @@
#f
4
0))
(define effect_2443 (finish1668 struct:convert-mode))
(define effect_2443 (finish_2118 struct:convert-mode))
(define convert-mode1.1
(|#%name|
convert-mode
@ -39786,7 +39799,7 @@
(if (|#%app| need-exposed?_0 q_0)
#t
(if (extflonum? q_0) #t #f))))))))))))))
(define finish2138
(define finish_3138
(make-struct-type-install-properties
'(to-unfasl)
3
@ -39807,7 +39820,7 @@
#f
3
0))
(define effect_2898 (finish2138 struct:to-unfasl))
(define effect_2898 (finish_3138 struct:to-unfasl))
(define to-unfasl1.1
(|#%name|
to-unfasl
@ -39937,7 +39950,7 @@
'write
"cannot marshal value that is embedded in compiled code\n value: ~v"
v_0)))
(define finish2146
(define finish_2779
(make-struct-type-install-properties
'(node)
5
@ -39958,7 +39971,7 @@
#f
5
0))
(define effect_2547 (finish2146 struct:node))
(define effect_2547 (finish_2779 struct:node))
(define node1.1
(|#%name|
node
@ -40259,7 +40272,7 @@
app_2
(stack-set stack_1 pos_1 (car vals_1))))))))))))
(loop_0 pos_0 vals_0 count_0 stack_0))))))
(define finish2192
(define finish_2471
(make-struct-type-install-properties
'(stack-info)
5
@ -40280,7 +40293,7 @@
#f
5
28))
(define effect_2334 (finish2192 struct:stack-info))
(define effect_2334 (finish_2471 struct:stack-info))
(define stack-info4.1
(|#%name|
stack-info
@ -40617,7 +40630,7 @@
(define stack-info-non-tail!
(lambda (stk-i_0 stack-depth_0)
(set-stack-info-non-tail-call-later?! stk-i_0 #t)))
(define finish2206
(define finish_2360
(make-struct-type-install-properties
'(indirect)
2
@ -40638,7 +40651,7 @@
#f
2
0))
(define effect_2125 (finish2206 struct:indirect))
(define effect_2125 (finish_2360 struct:indirect))
(define indirect1.1
(|#%name|
indirect
@ -40685,7 +40698,7 @@
s
'indirect
'element))))))
(define finish2211
(define finish_2373
(make-struct-type-install-properties
'(boxed)
1
@ -40706,7 +40719,7 @@
#f
1
0))
(define effect_2970 (finish2211 struct:boxed))
(define effect_2970 (finish_2373 struct:boxed))
(define boxed2.1
(|#%name|
boxed
@ -40730,7 +40743,7 @@
(boxed-pos_2515 s)
($value
(impersonate-ref boxed-pos_2515 struct:boxed 0 s 'boxed 'pos))))))
(define finish2215
(define finish_2767
(make-struct-type-install-properties
'(boxed/check)
0
@ -40751,7 +40764,7 @@
#f
0
0))
(define effect_2937 (finish2215 struct:boxed/check))
(define effect_2937 (finish_2767 struct:boxed/check))
(define boxed/check3.1
(|#%name|
boxed/check

File diff suppressed because it is too large Load Diff

View File

@ -180,6 +180,10 @@
(wrap-procedure-result r)]
[else r])]))
;; in atomic mode
(define (read-in/inner self dest-bstr dest-start dest-end copy? to-buffer)
(read-in self dest-bstr dest-start dest-end copy?))
;; in atomic mode
;; Used only if `user-peek-in` is a function:
(define (peek-in self dest-bstr dest-start dest-end skip-k progress-evt copy?)
@ -290,7 +294,7 @@
[name name]
[offset init-offset]
#:override
[read-in/inner read-in]
[read-in/inner read-in/inner]
[close (values
(lambda (self)
(close self)

View File

@ -50,16 +50,30 @@
[fd #f]
[fd-refcount (box 1)]
[custodian-reference #f]
[is-converted #f]
#:public
[on-close (lambda () (void))]
[raise-read-error (lambda (n)
(raise-filesystem-error #f n "error reading from stream port"))]
#:override
[read-in/inner
(lambda (dest-bstr start end copy?)
(define n (rktio_read_in rktio fd dest-bstr start end))
(lambda (dest-bstr start end copy? to-buffer?)
(define n
(cond
[(and to-buffer?
(rktio_fd_is_text_converted rktio fd))
;; need to keep track of whether any bytes in the buffer were converted
(when (or (not is-converted)
((bytes-length is-converted) . < . end))
(define new-is-converted (make-bytes end))
(when is-converted
(bytes-copy! new-is-converted 0 is-converted))
(set! is-converted new-is-converted))
(rktio_read_converted_in rktio fd dest-bstr start end is-converted start)]
[else
(rktio_read_in rktio fd dest-bstr start end)]))
(cond
[(rktio-error? n)
(end-atomic)
@ -80,7 +94,7 @@
(case-lambda
[()
(define pos (get-file-position fd))
(and pos (buffer-adjust-pos pos))]
(and pos (buffer-adjust-pos pos is-converted))]
[(pos)
(purge-buffer)
(set-file-position fd pos)])]

View File

@ -21,7 +21,7 @@
#:public
;; in atomic mode; must override
[read-in/inner
(lambda (dest-bstr start end copy?)
(lambda (dest-bstr start end copy? to-buffer?)
0)]
#:static
@ -40,9 +40,19 @@
(progress!))]
[buffer-adjust-pos
(lambda (i)
(lambda (i is-converted) ; is-converted reports on CRLF conversions in the buffer
(define b buffer)
(- i (fx- end-pos (if (direct-bstr b) (direct-pos b) pos))))]
(define start-pos (if (direct-bstr b) (direct-pos b) pos))
(define r (- i (fx- end-pos start-pos)))
(cond
[is-converted (let loop ([pos start-pos] [r r])
(if (fx= pos end-pos)
r
(loop (fx+ pos 1)
(if (eqv? 0 (bytes-ref is-converted pos))
r
(- r 1)))))]
[else r]))]
;; in atomic mode
[default-buffer-mode
@ -55,7 +65,7 @@
[pull-some-bytes
(lambda ([amt (if (eq? 'block buffer-mode) (bytes-length bstr) 1)] [offset 0] [init-pos 0])
(define get-end (min (+ amt offset) (bytes-length bstr)))
(define v (send peek-via-read-input-port this read-in/inner bstr offset get-end #f))
(define v (send peek-via-read-input-port this read-in/inner bstr offset get-end #f #t))
(cond
[(eof-object? v)
(set! peeked-eof? #t)
@ -152,7 +162,7 @@
[(or (eqv? v 0) (evt? v)) v]
[else (try-again)])]
[else
(define v (send peek-via-read-input-port this read-in/inner dest-bstr start end copy?))
(define v (send peek-via-read-input-port this read-in/inner dest-bstr start end copy? #f))
(unless (eqv? v 0)
(progress!))
v])])))]

View File

@ -26,6 +26,7 @@ rktio_write
rktio_read_converted
rktio_read_in
rktio_write_in
rktio_read_converted_in
rktio_buffered_byte_count
rktio_poll_read_ready
rktio_poll_write_ready

View File

@ -204,7 +204,7 @@ RKTIO_EXTERN rktio_bool_t rktio_fd_is_terminal(rktio_t *rktio, rktio_fd_t *rfd);
/* The functions mostly report values of recorded mode flags. */
RKTIO_EXTERN rktio_bool_t rktio_fd_is_text_converted(rktio_t *rktio, rktio_fd_t *rfd);
/* Reports whether `RKTIO_OPEN_TEXT` was use and has an effect. The
/* Reports whether `RKTIO_OPEN_TEXT` was used and has an effect. The
`RKTIO_OPEN_TEXT` flag has an effect only on Windows. */
RKTIO_EXTERN rktio_bool_t rktio_fd_is_pending_open(rktio_t *rktio, rktio_fd_t *rfd);
@ -295,8 +295,11 @@ RKTIO_EXTERN_ERR(RKTIO_READ_ERROR)
intptr_t rktio_read_in(rktio_t *rktio, rktio_fd_t *fd, char *buffer, intptr_t start, intptr_t end);
RKTIO_EXTERN_ERR(RKTIO_WRITE_ERROR)
intptr_t rktio_write_in(rktio_t *rktio, rktio_fd_t *fd, const char *buffer, intptr_t start, intptr_t end);
/* Like `rktio_read` and `rktio_write`, but accepting start and end
positions within `buffer`. */
RKTIO_EXTERN_ERR(RKTIO_READ_ERROR)
intptr_t rktio_read_converted_in(rktio_t *rktio, rktio_fd_t *fd, char *buffer, intptr_t start, intptr_t len,
char *is_converted, intptr_t converted_start);
/* Like `rktio_read`, `rktio_write`, and `rktio_read_converted` but
accepting start and end positions within `buffer`. */
RKTIO_EXTERN_NOERR intptr_t rktio_buffered_byte_count(rktio_t *rktio, rktio_fd_t *fd);
/* Reports the number of bytes that are buffered from the file descriptor.

View File

@ -26,6 +26,7 @@ Sforeign_symbol("rktio_write", (void *)rktio_write);
Sforeign_symbol("rktio_read_converted", (void *)rktio_read_converted);
Sforeign_symbol("rktio_read_in", (void *)rktio_read_in);
Sforeign_symbol("rktio_write_in", (void *)rktio_write_in);
Sforeign_symbol("rktio_read_converted_in", (void *)rktio_read_converted_in);
Sforeign_symbol("rktio_buffered_byte_count", (void *)rktio_buffered_byte_count);
Sforeign_symbol("rktio_poll_read_ready", (void *)rktio_poll_read_ready);
Sforeign_symbol("rktio_poll_write_ready", (void *)rktio_poll_write_ready);

View File

@ -355,6 +355,18 @@
((*ref char) buffer)
(intptr_t start)
(intptr_t end)))
(define-function/errno
RKTIO_READ_ERROR
()
intptr_t
rktio_read_converted_in
(((ref rktio_t) rktio)
((ref rktio_fd_t) fd)
((*ref char) buffer)
(intptr_t start)
(intptr_t len)
((*ref char) is_converted)
(intptr_t converted_start)))
(define-function
()
intptr_t

View File

@ -1024,6 +1024,12 @@ intptr_t rktio_read_converted(rktio_t *rktio, rktio_fd_t *rfd, char *buffer, int
#endif
}
intptr_t rktio_read_converted_in(rktio_t *rktio, rktio_fd_t *rfd, char *buffer, intptr_t start, intptr_t end,
char *is_converted, intptr_t converted_start)
{
return rktio_read_converted(rktio, rfd, buffer+start, end-start, is_converted+converted_start);
}
intptr_t rktio_read(rktio_t *rktio, rktio_fd_t *rfd, char *buffer, intptr_t len)
{
return rktio_read_converted(rktio, rfd, buffer, len, NULL);