123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- ; Part of Scheme 48 1.9. See file COPYING for notices and license.
- ; Authors: Richard Kelsey, Mike Sperber
- (define-interface utilities-interface
- (export bug
- user-error
- user-warning
- true false
- or-map
- remove-similar-elts
- select-from-table
- table->list table->entry-list
- table-push table-pop
- merge-lists
- vector-every?
- make-ignorable
- sub-vector->list
- flag-assq
- enforce
- writec
- mem?
- walk-vector
- vector-replace
- copy-list
- copy-vector
- string-hash
- char->ascii
- object-hash
- union intersection set-difference
- make-xvector xvector-length xvector-ref xvector-set! xvector->vector
- (define-subrecord :syntax)
- (define-subrecord-type :syntax)
- ;(define-simple-record-type :syntax)
- (define-local-syntax :syntax)
- ))
- (define-interface primop-interface
- (export primop? make-primop make-proc-primop make-conditional-primop
- all-primops get-primop
- primop-id primop-trivial? primop-side-effects
- primop-cost
- simplify-call
- primop-procedure? primop-call-index
- primop-conditional?
- expand-to-conditional
- simplify-conditional?
- primop-code-data set-primop-code-data!
- trivial-call-return-type
- (primop :syntax)
- ))
- (define-interface variable-interface
- (export variable? make-variable
- global-variable? make-global-variable
- variable-name set-variable-name!
- variable-id
- variable-type set-variable-type!
- variable-binder set-variable-binder!
- variable-refs set-variable-refs!
- variable-flag set-variable-flag!
- variable-flags set-variable-flags!
- variable-generate set-variable-generate!
- erase-variable
- variable-index copy-variable used? unused?
- variable-flag-accessor variable-flag-setter variable-flag-remover
- variable-known-value
- add-variable-known-value!
- remove-variable-known-value!
- variable-simplifier
- add-variable-simplifier!
- remove-variable-simplifier!
- note-known-global-lambda!
- variable-known-lambda
- ))
- (define-interface node-interface
- (compound-interface
- primop-interface
- variable-interface
- (export reset-node-id node-hash node-unhash
- node? node-variant
- node-parent set-node-parent!
- node-index set-node-index!
- node-simplified? set-node-simplified?!
- node-flag set-node-flag!
- empty empty? proclaim-empty
- erase
- detach detach-body
- attach attach-body
- move move-body
- insert-body
- replace replace-body
- connect-sequence
- mark-changed
- leaf-node?
-
- literal-node? make-literal-node
- literal-value set-literal-value!
- literal-type set-literal-type!
- copy-literal-node
- reference-node? make-reference-node
- reference-variable set-reference-variable!
- call-node? make-call-node
- call-primop set-call-primop!
- call-args set-call-args!
- call-exits set-call-exits!
- call-source set-call-source!
- call-arg call-arg-count
- lambda-node? make-lambda-node
- lambda-body set-lambda-body!
- lambda-variables set-lambda-variables!
- lambda-name set-lambda-name!
- lambda-id
- lambda-type
- lambda-block set-lambda-block!
- lambda-env set-lambda-env!
- lambda-protocol set-lambda-protocol!
- lambda-source set-lambda-source!
- lambda-variable-count
- calls-known? set-calls-known?!
- proc-lambda?
- initialize-lambdas add-lambda add-lambdas
- change-lambda-type
- walk-lambdas make-lambda-list
-
- loc/owner loc/type loc/rep
- set/owner set/type set/rep set/value
- node-base containing-procedure
- trivial? nontrivial?
- nontrivial-ancestor
- calls-this-primop?
- bound-to-variable
- walk-refs-safely
- small-node?
- side-effects?
- called-node? called-node
- called-lambda
- get-lambda-value
- ;set-reference?
- attach-call-args remove-call-args replace-call-args
- remove-null-arguments
- shorten-call-args insert-call-arg remove-call-arg
- append-call-arg
- remove-body
- put-in-letrec make-letrec
- remove-lambda-variable remove-variable remove-unused-variables
- substitute substitute-vars-in-node-tree
- replace-call-with-value
- copy-node-tree
- mark-ancestors marked-ancestor? unmarked-ancestor?
- node-ancestor? marked-ancestor least-common-ancestor
- proc-ancestor
- hoistable-node?
- find-scoping
- ((let-nodes new-lambda new-call) :syntax)
- node-equal?
- no-free-references?
- find-calls
- node-type
- the-undefined-value
- undefined-value?
- undefined-value-node?
- make-undefined-literal
- )))
- (define-interface simplify-internal-interface
- (export simplify-node
- default-simplifier
- simplify-arg
- simplify-args
- simplify-lambda-body
- simplify-known-lambda
-
- (pattern-simplifier :syntax)
- simplify-allocation
- simplify-known-call
- simplify-known-tail-call
- simplify-unknown-call
- simplify-return
- simplify-jump
- ; simplify-undefined-value
- simplify-test expand-test simplify-test?
- ))
- (define-interface front-debug-interface
- (export debug-breakpoint
- add-checks add-check clear-checks clear-check
- add-procs add-proc clear-procs clear-proc))
- (define-interface front-interface
- (export simplify-all
- integrate-jump-procs! ; for debugging
- ))
- (define-interface annotated-read-interface
- (export read-and-annotate
- pair-annotation
- annotated-cons
- annotation?
- annotation-file
- annotation-form
- annotation-row
- annotation-column
- ))
- (define-interface compiler-byte-vector-interface
- (export make-byte-vector byte-vector? byte-vector-length
- byte-vector-ref byte-vector-word-ref byte-vector-half-word-ref
- byte-vector-set! byte-vector-word-set! byte-vector-half-word-set!
- byte-vector-endianess set-byte-vector-endianess!
- ))
- (define-interface parameter-interface
- (export lookup-primop
- lookup-imported-variable
-
- type/unknown
- type-eq?
- lambda-node-type
- true-value
- false-value
- determine-lambda-protocol
- determine-continuation-protocol
- ))
|