Hello,

I have an issue when compiling: The Dataflow+ fail and "remove" a part of the 
code:
Unfortunatly I did not success to make a testcase.... Issue is probably coming 
by the fact that several things are coming and used in several modules.
For information, it is working in 4.3a.

I have originaly something like:
======================
   (let* (((get-key        (lambda (obj)
                             (let* ((key   (obj :get-key))
                                    (stuff (%hashtable :get key)))
                               (if stuff
                                   stuff
                                   "unknown"))))
  (something that pass get-key in argument)
===================

-Note that "stuff" is a lambda


After Dataflow it becomes:
==================
(get-key
(obj)
(let ((key (funcall
             obj
             obj
             :get-key)))
   (let ((stuff (funcall
                 %hashtable
                 %hashtable
                 :get
                 key)))
     (let ()
       (if stuff
           stuff
           "unknown")))))
==================


After the Dataflow+ it becomes:
==================
Top of file:
-----
;; &get-key
;; procedure-el x obj -> obj
;; [static  side-effect: #t  occ: 1  rm: now  loc: #{location src/pvtsc_rdb.scm 
46059 973}  user?: #t removable: now]
(define (&get-key env obj)
  (let ((%hashtable (procedure-el-ref env 0)))
    (labels
      ((get-key
         (obj)
         (let ((key (funcall obj obj :get-key-pvtsc)))
           (let ((stuff (funcall %hashtable %hashtable :get key)))
             (let () (if stuff stuff "unknown"))))))
      (get-key obj))))


In the "normal code":
-------
(let ((get-key
       (make-el-procedure
        1)))
  (begin
    (begin
      (procedure-el-set!
       get-key
       0
       %hashtable))

==================


Do you have any advice on how I can debug this ???

Best regards,
Pierre-Francois






Reply via email to