[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