scsh-0.6/ps-compiler/interfaces.scm

259 lines
6.8 KiB
Scheme

; Copyright (c) 1993-1999 by Richard Kelsey. See file COPYING.
(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
symbol-hash
string-hash
char->ascii
object-hash
union intersection set-difference
make-xvector xvector-length xvector-ref xvector-set! xvector->vector
(define-subrecord :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-known-value
add-variable-known-value!
remove-variable-known-value!
variable-simplifier
add-variable-simplifier!
remove-variable-simplifier!
note-known-global-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
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
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 :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
))