Tobias Rittweiler (SLIME hacker and genrally hoopy frood) outlined the following in an email conversation about directions to improve source location information in ABCL:
Low hanging fruits are the following:
* Instead of just storing pathname & file-position also store:
- a dspec that it what kind of the symbol is, e.g.
(DEFUN FOO)
(DEFMETHOD FOO (..specializers))
(DEFVAR *FOO*)
etc.
- a snippet of the source code.
- You can also look into SBCL's compiler how it constructs
source paths (indices paths into the AST), it's pretty easy to
do but requires some work. It's called GET-SOURCE-CODE, iirc.
(Midterm goal)
* At the moment, only one source location is stored. That doesn't mix
well with CL's nature that a symbol can represent many things, and
in particular not with GFs and methods. E.g. at the moment, ABCL
only remember the source location of the last-recently loaded
method.
- Long term goal: Store source location information in method /
function objects themselves. Make it extensible, so users can
add source-locations for their own objects.
and
Another thing: SWANK-COMPILE-STRING must be implemented on top of COMPILE-FILE, the current implementation is wrong. However, if you use COMPILE-FILE you'll go over a temporary file, messing up EXT:SOURCE-PATHNAME and -FILE-POSITION. SBCL does that by a :PLIST argument for WITH-COMPILATION-UNIT, and accessors from debug-infos. CCL provides special keyword arguments to COMPILE-FILE. Look into their swank backends.
Last modified 16 years ago
Last modified on 04/15/10 20:51:15