[Ecls-list] Questions about how generic function dispatching works in ECL - specifically in _ecl_standard_dispatch

Christian Schafmeister chris.schaf at verizon.net
Mon Mar 4 16:17:30 UTC 2013



Hey folks,

I've implemented a new Common Lisp implementation that hosts the ECL Common Lisp source code.  
The core of it is written from scratch in C++ using completely different core data-structures than ECL.
I've reproduced the functionality of the ECL core without copying the C source code or data structures but my code and ECL host the same ECL CL source code.

I've compiled about 50 of the ECL Common lisp source files - the list is shown below but when I hit generic functions and funcallable-instances that's where it becomes extremely important to understand the ECL generic-function dispatching and caching very well and mimic it very closely.

Could anyone who understands this code spend a few minutes with me on the phone or Skype to give me a few pointers as to how it works? I kind of get it but it would be great to talk to someone who really understand it how it works.

Feel free to email me: chris.schaf at verizon.net or find me on the #lisp IRC channel on freenode.net.   My id on #lisp is drmeister.

I'll follow up with an email to this mail-list regarding why I'm doing this and what I'm up to.


--- The ECL CL source code that I've loaded and compiled follows ------

;; One file specific to my implementation
    lsp/foundation
;; ECL CL source code follows
    lsp/export
    lsp/defmacro
    lsp/helpfile
    lsp/evalmacros
    lsp/logging
    lsp/makearray
;; My compiler consists of the following modules
    cmp/cmpsetup
    cmp/cmpglobals
    cmp/cmpvar
    cmp/compile-main
    cmp/llvm-ir
    cmp/exception-handling
    cmp/debuginfo
    cmp/lambda-list
    cmp/compile-var-lookups
    cmp/cmpquote
    cmp/compiler
    cmp/compile-file
;;  My compiler stops here - ECL source code follows
    lsp/setf
    lsp/setfrest
    lsp/listlib
    lsp/predlib
    lsp/sharpmacros
    lsp/cmuutil
    lsp/seqmacros
    lsp/seqlib
    lsp/seq
;;    lsp/arraylib
    lsp/assert
    lsp/defstruct
    lsp/iolib
    lsp/module
    lsp/trace
    lsp/loop2

    lsp/packlib
    lsp/defpackage
    :stage2 ;; Turn on :CLOS feature to compile beyond here
    lsp/format
    #| ;; These are not currently loaded
    arraylib
    describe
    mislib
    numlib
    packlib
    |#
    clos/package
    clos/cpl
    clos/hierarchy
    clos/std-slot-value
    clos/slot
    cmp/cmprepl
    clos/boot
    clos/kernel
    clos/method
    clos/combin
    clos/std-accessors
    clos/defclass
    clos/slotvalue
    clos/standard
    clos/builtin
    clos/change
    clos/stdmethod
    clos/generic
    clos/fixup
;; I've loaded and compiled up to here
    clos/conditions
    clos/print
    clos/streams




Cheers,

.Chris.






More information about the ecl-devel mailing list