Added exception handler

This commit is contained in:
Justin Ethier 2017-04-26 18:08:07 -04:00
parent 51a1a63700
commit c2929af714

View file

@ -228,34 +228,37 @@
(for-each (for-each
(lambda (import) (lambda (import)
(let* ((lib-name-str (lib:name->string (lib:list->import-set import))) (with-handler
(inlinable-lambdas-fnc (lambda (err)
(string->symbol #f)
(string-append "c_" lib-name-str "_inlinable_lambdas")))) (let* ((lib-name-str (lib:name->string (lib:list->import-set import)))
(cond (inlinable-lambdas-fnc
((imported? import) (string->symbol
(let ((lib-name (lib:list->import-set import)) (string-append "c_" lib-name-str "_inlinable_lambdas"))))
(vars/inlines (eval `( ,inlinable-lambdas-fnc )))) (cond
(trace:info `(DEBUG ,import ,vars/inlines)) ((imported? import)
;; Register inlines as user-defined primitives (let ((lib-name (lib:list->import-set import))
(for-each (vars/inlines (eval `( ,inlinable-lambdas-fnc ))))
(lambda (v/i) (trace:info `(DEBUG ,import ,vars/inlines))
(let ((var (car v/i)) (inline (cdr v/i))) ;; Register inlines as user-defined primitives
(prim:add-udf! var inline))) (for-each
vars/inlines) (lambda (v/i)
;; Keep track of inline version of functions along with other imports (let ((var (car v/i)) (inline (cdr v/i)))
(set! imported-vars (prim:add-udf! var inline)))
(append vars/inlines)
imported-vars ;; Keep track of inline version of functions along with other imports
(map (set! imported-vars
(lambda (v/i) (append
(cons (cdr v/i) lib-name)) imported-vars
vars/inlines))))) (map
(else (lambda (v/i)
;; TODO: try loading if not loaded (but need ex handler in case anything bad happens) #t ;(eval `(import ,import)) (cons (cdr v/i) lib-name))
;;(%import import) vars/inlines)))))
#f)) (else
)) ;; TODO: try loading if not loaded (but need ex handler in case anything bad happens) #t ;(eval `(import ,import))
;;(%import import)
;; if this work is done, would need to consolidate inline reg code above
#f)))))
imports) imports)
;(for-each ;(for-each