Skip to content

Commit e1a2a77

Browse files
committed
test: revert changes to name/sc, ...
keep list of flat names in a separate table, performance seems better ... 25s ?
1 parent fc15feb commit e1a2a77

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

typed-racket-lib/typed-racket/static-contracts/combinators/name.rkt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
racket/match
1818
racket/syntax
1919
syntax/private/id-table
20+
(only-in syntax/private/id-set
21+
mutable-free-id-set
22+
free-id-set-add!
23+
free-id-set-member?)
2024
(for-syntax racket/base
2125
syntax/parse))
2226

@@ -41,12 +45,12 @@
4145

4246
(define name-sc-table (make-parameter (make-hash)))
4347
(define name-defs-table (make-parameter (make-hash)))
48+
(define current-flat-names (make-parameter (mutable-free-id-set)))
4449

4550
(define (set-flat-names! gen-names)
46-
(for* ([ns (in-hash-values (name-sc-table))]
47-
[n (in-list ns)]
48-
#:when (member (name-combinator-gen-name n) gen-names))
49-
(set-name-combinator-flat! n #true)))
51+
(define cfn (current-flat-names))
52+
(for ((stx (in-list gen-names)))
53+
(free-id-set-add! cfn stx)))
5054

5155
;; Use this table to track whether a contract has already been
5256
;; generated for this name type yet. Stores booleans.
@@ -63,7 +67,8 @@
6367
(define-syntax-rule (with-new-name-tables e)
6468
(parameterize ([name-sc-table (make-hash)]
6569
[name-defs-table (make-hash)]
66-
[name-defined-table (make-free-id-table)])
70+
[name-defined-table (make-free-id-table)]
71+
[current-flat-names (mutable-free-id-set)])
6772
e))
6873

6974
(define (get-all-name-defs)
@@ -98,7 +103,7 @@
98103
type
99104
(list typed-sc untyped-sc both-sc)))
100105

101-
(struct name-combinator combinator (gen-name [flat #:auto #:mutable])
106+
(struct name-combinator combinator (gen-name)
102107
#:transparent
103108
#:property prop:combinator-name "name/sc"
104109
#:methods gen:sc
@@ -110,11 +115,11 @@
110115
(define (sc->constraints v f)
111116
(variable-contract-restrict (name-combinator-gen-name v)))
112117
(define (sc-terminal-kind v)
113-
(if (name-combinator-flat v)
118+
(if (free-id-set-member? (current-flat-names) (name-combinator-gen-name v))
114119
'flat
115-
#f))])
120+
#false))])
116121

117122
(define-match-expander name/sc:
118123
(syntax-parser
119-
[(_ var) #'(name-combinator _ var _)]))
124+
[(_ var) #'(name-combinator _ var)]))
120125

typed-racket-lib/typed-racket/static-contracts/instantiate.rkt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@
3737
compute-recursive-kinds
3838
instantiate/inner))
3939

40-
(define (name/sc? v)
41-
(printf "nmae? ~a~n" v)
42-
(match v
43-
[(name/sc: _) #true]
44-
[_ #false]))
45-
4640
(define (instantiate/optimize sc fail kind #:cache cache #:trusted-positive trusted-positive #:trusted-negative trusted-negative)
4741
(define recursive-kinds
4842
(with-handlers [(exn:fail:constraint-failure?

0 commit comments

Comments
 (0)