107 |
(t (incf *inline-blocks*)))) |
(t (incf *inline-blocks*)))) |
108 |
|
|
109 |
(defun inline-args (forms types &optional fun &aux (locs nil) ii) |
(defun inline-args (forms types &optional fun &aux (locs nil) ii) |
|
(let ((arg-side-effects (args-cause-side-effect forms))) |
|
110 |
(do ((forms forms (cdr forms)) |
(do ((forms forms (cdr forms)) |
111 |
(types types (cdr types))) |
(types types (cdr types))) |
112 |
((endp forms) (reverse locs)) |
((endp forms) (reverse locs)) |
132 |
(wt-var (caaddr form) (cadr (caddr form))) |
(wt-var (caaddr form) (cadr (caddr form))) |
133 |
(wt ";") |
(wt ";") |
134 |
(push (coerce-loc temp type) locs))))) |
(push (coerce-loc temp type) locs))))) |
135 |
((or arg-side-effects |
((and (member (var-kind (caaddr form)) |
|
(and (member (var-kind (caaddr form)) |
|
136 |
'(FIXNUM LONG-FLOAT SHORT-FLOAT INTEGER)) |
'(FIXNUM LONG-FLOAT SHORT-FLOAT INTEGER)) |
137 |
(not (eq type (var-kind (caaddr form)))))) |
(not (eq type (var-kind (caaddr form))))) |
138 |
(let ((temp (cs-push type))) |
(let ((temp (cs-push type))) |
139 |
(wt-nl "V" temp " = " |
(wt-nl "V" temp " = " |
140 |
(coerce-loc (cons 'var (caddr form)) type) ";") |
(coerce-loc (cons 'var (caddr form)) type) ";") |
141 |
(push (list 'cvar temp) locs)) |
(push (list 'cvar temp) locs))) |
|
) |
|
142 |
(t (push (coerce-loc (cons 'VAR (caddr form)) type) |
(t (push (coerce-loc (cons 'VAR (caddr form)) type) |
143 |
locs)))) |
locs)))) |
144 |
(CALL-GLOBAL |
(CALL-GLOBAL |
233 |
(let ((*value-to-go* temp)) |
(let ((*value-to-go* temp)) |
234 |
(c2expr* form) |
(c2expr* form) |
235 |
(push (coerce-loc temp type) locs)))))))) |
(push (coerce-loc temp type) locs)))))))) |
|
) |
|
236 |
|
|
237 |
(defun coerce-loc (loc type) |
(defun coerce-loc (loc type) |
238 |
(case type |
(case type |