guile-prescheme/ps-compiler/node/arch.scm
2022-08-15 16:33:08 +10:00

52 lines
1.2 KiB
Scheme

;;; Ported from Scheme 48 1.9. See file COPYING for notices and license.
;;;
;;; Port Author: Andrew Whatson
;;;
;;; Original Authors: Richard Kelsey
;;;
;;; scheme48-1.9.2/ps-compiler/node/arch.scm
;;;
;;; These are all of the primitives that are known to the compiler.
;;;
;;; The enumeration is needed by the expander for LET-NODES so it ends up
;;; being loaded into two separate packages.
(define-module (ps-compiler node arch)
#:use-module (prescheme s48-defenum)
#:re-export (enum name->enumerand enumerand->name)
#:export (primop-enum
primop-enum-count))
(define-enumeration primop-enum
(
;; Nontrivial Primops
call ;; see below
tail-call
return
jump
throw
unknown-call
unknown-tail-call
unknown-return
dispatch ;; (dispatch <cont1> ... <contN> <exp>)
let ;; (let <lambda-node> . <args>)
letrec1 ;; (letrec1 (lambda (x v1 v2 ...)
letrec2 ;; (letrec2 <cont> x <lambda1> <lambda2> ...)))
cell-set!
global-set!
undefined-effect ;; (undefined-effect . <maybe-args>)
;; Trivial Primops
make-cell
cell-ref
global-ref
;; Environment stuff, these are both trivial
closure
env-ref
))