mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-02-15 03:41:00 -08:00
cmp: rearrange the order in +all-c1-forms+ to hint top-levelness
This commit is contained in:
parent
0ccb877b8a
commit
18030bf1b4
1 changed files with 36 additions and 30 deletions
|
|
@ -17,42 +17,54 @@
|
|||
|
||||
(eval-when (:compile-toplevel :execute)
|
||||
(defconstant +all-c1-forms+
|
||||
'((LOCATION loc :pure :single-valued)
|
||||
'(;; top-level forms
|
||||
(ORDINARY c1form :pure)
|
||||
(MAKE-FORM vv-loc value-c1form :side-effects)
|
||||
(INIT-FORM vv-loc value-c1form :side-effects)
|
||||
;; both-level forms (different semantics)
|
||||
(EXT:COMPILER-LET symbols values body)
|
||||
(SI:FSET function-object vv-loc macro-p pprint-p lambda-form :side-effects)
|
||||
(CL:LOAD-TIME-VALUE dest-loc value-c1form :pure :single-valued)
|
||||
(CL:PROGN body :pure)
|
||||
;; sub-level forms
|
||||
(LOCATION loc :pure :single-valued)
|
||||
(VAR var :single-valued)
|
||||
(cl:SETQ var value-c1form :side-effects)
|
||||
(cl:PSETQ var-list value-c1form-list :side-effects)
|
||||
(cl:BLOCK blk-var progn-c1form :pure)
|
||||
(cl:PROGN body :pure)
|
||||
(cl:PROGV symbols values form :side-effects)
|
||||
(cl:TAGBODY tag-var tag-body :pure)
|
||||
(cl:RETURN-FROM blk-var nonlocal value :side-effects)
|
||||
(cl:FUNCALL fun-value (arg-value*) :side-effects)
|
||||
(CL:SETQ var value-c1form :side-effects)
|
||||
(CL:PSETQ var-list value-c1form-list :side-effects)
|
||||
(CL:BLOCK blk-var progn-c1form :pure)
|
||||
|
||||
(CL:PROGV symbols values form :side-effects)
|
||||
(CL:TAGBODY tag-var tag-body :pure)
|
||||
(CL:RETURN-FROM blk-var nonlocal value :side-effects)
|
||||
(CL:FUNCALL fun-value (arg-value*) :side-effects)
|
||||
(CALL-LOCAL obj-fun (arg-value*) :side-effects)
|
||||
(CALL-GLOBAL fun-name (arg-value*))
|
||||
(cl:CATCH catch-value body :side-effects)
|
||||
(cl:UNWIND-PROTECT protected-c1form body :side-effects)
|
||||
(cl:THROW catch-value output-value :side-effects)
|
||||
(cl:GO tag-var nonlocal :side-effects)
|
||||
(ffi:C-INLINE (arg-c1form*)
|
||||
(CL:CATCH catch-value body :side-effects)
|
||||
(CL:UNWIND-PROTECT protected-c1form body :side-effects)
|
||||
(CL:THROW catch-value output-value :side-effects)
|
||||
(CL:GO tag-var nonlocal :side-effects)
|
||||
|
||||
(FFI:C-INLINE (arg-c1form*)
|
||||
(arg-type-symbol*)
|
||||
output-rep-type
|
||||
c-expression-string
|
||||
side-effects-p
|
||||
one-liner-p)
|
||||
(ffi:C-PROGN variables forms)
|
||||
(FFI:C-PROGN variables forms)
|
||||
|
||||
(LOCALS local-fun-list body labels-p :pure)
|
||||
(cl:IF fmla-c1form true-c1form false-c1form :pure)
|
||||
(CL:IF fmla-c1form true-c1form false-c1form :pure)
|
||||
(FMLA-NOT fmla-c1form :pure)
|
||||
(FMLA-AND * :pure)
|
||||
(FMLA-OR * :pure)
|
||||
(cl:LAMBDA lambda-list doc body-c1form)
|
||||
(cl:LET* vars-list var-init-c1form-list decl-body-c1form :pure)
|
||||
(cl:VALUES values-c1form-list :pure)
|
||||
(cl:MULTIPLE-VALUE-SETQ vars-list values-c1form-list :side-effects)
|
||||
(cl:MULTIPLE-VALUE-BIND vars-list init-c1form body :pure)
|
||||
(ext:COMPILER-LET symbols values body)
|
||||
(cl:FUNCTION (GLOBAL/CLOSURE) lambda-form fun-object :single-valued)
|
||||
(cl:RPLACD (dest-c1form value-c1form) :side-effects)
|
||||
(CL:LAMBDA lambda-list doc body-c1form)
|
||||
(CL:LET* vars-list var-init-c1form-list decl-body-c1form :pure)
|
||||
(CL:VALUES values-c1form-list :pure)
|
||||
(CL:MULTIPLE-VALUE-SETQ vars-list values-c1form-list :side-effects)
|
||||
(CL:MULTIPLE-VALUE-BIND vars-list init-c1form body :pure)
|
||||
|
||||
(CL:FUNCTION (GLOBAL/CLOSURE) lambda-form fun-object :single-valued)
|
||||
(CL:RPLACD (dest-c1form value-c1form) :side-effects)
|
||||
|
||||
(SI:STRUCTURE-REF struct-c1form type-name slot-index (:UNSAFE/NIL) :pure)
|
||||
(SI:STRUCTURE-SET struct-c1form type-name slot-index value-c1form :side-effects)
|
||||
|
|
@ -60,12 +72,6 @@
|
|||
(WITH-STACK body :side-effects)
|
||||
(STACK-PUSH-VALUES value-c1form push-statement-c1form :side-effects)
|
||||
|
||||
(ORDINARY c1form :pure)
|
||||
(cl:LOAD-TIME-VALUE dest-loc value-c1form :pure :single-valued)
|
||||
(SI:FSET function-object vv-loc macro-p pprint-p lambda-form
|
||||
:side-effects)
|
||||
(MAKE-FORM vv-loc value-c1form :side-effects)
|
||||
(INIT-FORM vv-loc value-c1form :side-effects)
|
||||
(ext:COMPILER-TYPECASE var expressions)
|
||||
(ext:CHECKED-VALUE type value-c1form let-form))))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue