anchor.diff:  
   ;;;
   (defmacro js!call (func args) ;;;todo: check if a caller isn't  cons
  -  `(funcall (proc ,func)
  -	    ,(case (car func)
  -	       ((js!dot) (second func))
  -	       (t this)) ,@args))
  +  (let ((*proc (gensym)))
  +  `(let ((,*proc (proc ,func)))
  +     (declare (function ,*proc))
  +     (funcall ,*proc
  +	      ,(case (car func)
  +		 ((js!dot) (second func))
  +		 (t this)) ,@args))))
   
   (defmacro js!new (func args)
     (let ((ret (gensym)))
  
positive.code: 			`(setf ,exp ,val)
  			`,`(setf (prop *global* #+nil this ,exp) ,val))))
  		(js!return (ret) `,`(return-from ,',blockname ,ret)))
         (lambda (this &rest ,argument-list)
  	 (declare (dynamic-extent ,argument-list))
  	 #+js-debug (format t "this: ~A~%" this)
  	 (let ((arguments (coerce ,argument-list 'simple-vector))
  	       ,@(mapcar (lambda (var-desc)
  			   (list (car var-desc)
  				 (cdr var-desc))) local-var-list))
  	   (multiple-value-bind ,args (values-list ,argument-list)
  	     (block ,blockname ,@body)))))))
  
  (defmacro js!function (name args body)
    `(make-instance 'native-function
  
negative.code:     (f tree)))
  
  (defmacro js!lambda (args body)
    (let* ((additional-args (gensym))
  	 (local-var-list (find-vars body))
  	 (local-variable-p
  	  (lambda (var)
  