323 |
(if ccb |
(if ccb |
324 |
(setf (fun-ref-ccb fun) t) |
(setf (fun-ref-ccb fun) t) |
325 |
(setf (fun-ref fun) t)) |
(setf (fun-ref fun) t)) |
326 |
(return (list 'call-local *info* fun ccb))))) |
;; Add fun-info here at the bottom of the call-local processing tree |
327 |
) |
;; FIXME -- understand why special variable *info* is used in certain |
328 |
|
;; cases and copy-info in othes. |
329 |
|
;; This extends local call arg side-effect protection (via args-info-changed-vars) |
330 |
|
;; through c1funob to other call methods than previously supported c1symbol-fun, |
331 |
|
;; e.g. c1multiple-value-call, etc. CM 20031030 |
332 |
|
(add-info *info* (fun-info fun)) |
333 |
|
(return (list 'call-local *info* fun ccb)))))) |
334 |
|
|
335 |
(defun sch-local-fun (fname) |
(defun sch-local-fun (fname) |
336 |
;;; Returns fun-ob for the local function (not locat macro) named FNAME, |
;;; Returns fun-ob for the local function (not locat macro) named FNAME, |
351 |
(when (eq (car fun) fname) (return (cadr fun)))) |
(when (eq (car fun) fname) (return (cadr fun)))) |
352 |
((eq (fun-name fun) fname) |
((eq (fun-name fun) fname) |
353 |
(setf (fun-ref-ccb fun) t) |
(setf (fun-ref-ccb fun) t) |
354 |
(return (list 'call-local *info* fun ccb))))) |
;; Add fun-info here at the bottom of the call-local processing tree |
355 |
) |
;; FIXME -- understand why special variable *info* is used in certain |
356 |
|
;; cases and copy-info in othes. |
357 |
|
;; This extends local call arg side-effect protection (via args-info-changed-vars) |
358 |
|
;; through c1funob to other call methods than previously supported c1symbol-fun, |
359 |
|
;; e.g. c1multiple-value-call, etc. CM 20031030 |
360 |
|
(add-info *info* (fun-info fun)) |
361 |
|
(return (list 'call-local *info* fun ccb)))))) |
362 |
|
|
363 |
(defun c2call-local (fd args &aux (*vs* *vs*)) |
(defun c2call-local (fd args &aux (*vs* *vs*)) |
364 |
;;; FD is a list ( fun-object ccb ). |
;;; FD is a list ( fun-object ccb ). |