mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-28 07:22:27 -08:00
Add a name mangler to the lisp runtime. Use this mangler in the compiler to
optimize access to symbols and functions which are defined in the C runtime.
This commit is contained in:
parent
0dc4df6002
commit
f2da18a591
27 changed files with 783 additions and 709 deletions
|
|
@ -63,9 +63,9 @@
|
|||
(when x
|
||||
(dolist (tlf *top-level-forms*)
|
||||
(when (or (and (eq (car tlf) 'DEFVAR)
|
||||
(= (var-loc (second tlf)) (second x)))
|
||||
(equalp (var-loc (second tlf)) (second x)))
|
||||
(and (eq (car tlf) 'DECLARE)
|
||||
(= (second tlf) (second x))))
|
||||
(equalp (second tlf) (second x))))
|
||||
(return tlf))))))
|
||||
|
||||
;;;
|
||||
|
|
@ -220,11 +220,11 @@
|
|||
(LEXICAL (cond ;(ccb (wt-env var-loc))
|
||||
((var-ref-ccb var) (wt-env var-loc))
|
||||
(t (wt-lex var-loc))))
|
||||
(SPECIAL (wt "(VV[" var-loc "]->symbol.dbind)"))
|
||||
(SPECIAL (wt "(" var-loc "->symbol.dbind)"))
|
||||
(REPLACED (wt var-loc))
|
||||
(GLOBAL (if *safe-compile*
|
||||
(wt "symbol_value(VV[" var-loc "])")
|
||||
(wt "(VV[" var-loc "]->symbol.dbind)")))
|
||||
(wt "symbol_value(" var-loc ")")
|
||||
(wt "(" var-loc "->symbol.dbind)")))
|
||||
(t (case (var-kind var)
|
||||
(FIXNUM (wt "MAKE_FIXNUM"))
|
||||
(CHARACTER (wt "code_char"))
|
||||
|
|
@ -247,11 +247,11 @@
|
|||
(wt-env var-loc)
|
||||
(wt-lex var-loc))
|
||||
(wt "= " loc ";"))
|
||||
(SPECIAL (wt-nl "(VV[" var-loc "]->symbol.dbind)= " loc ";"))
|
||||
(SPECIAL (wt-nl "(" var-loc "->symbol.dbind)= " loc ";"))
|
||||
(GLOBAL
|
||||
(if *safe-compile*
|
||||
(wt-nl "set(VV[" var-loc "]," loc ");")
|
||||
(wt-nl "(VV[" var-loc "]->symbol.dbind)= " loc ";")))
|
||||
(wt-nl "set(" var-loc "," loc ");")
|
||||
(wt-nl "(" var-loc "->symbol.dbind)= " loc ";")))
|
||||
(t
|
||||
(wt-nl) (wt-lcl var-loc) (wt "= ")
|
||||
(case (var-kind var)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue