guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Status on Elisp and special variable handling


From: Daniel Kraft
Subject: Re: Status on Elisp and special variable handling
Date: Wed, 07 Oct 2009 09:03:26 +0200
User-agent: Thunderbird 2.0.0.0 (X11/20070425)

Ken Raeburn wrote:
On Oct 6, 2009, at 16:05, Daniel Kraft wrote:
If any such value is hit when reading/setting a variable, we do the needed stuff for handling aliases/foolocal variables instead of doing the operation directly. While this should work, I fear that it hits performance once again... But I do not see how we could implement aliases and foolocal variables without checking on each variable access if it is some special variable or not? Maybe there we could add VM support if necessary.

In the multithreaded case, I think the checks might need to be done every time -- one thread could call make-variable-foo-local while another thread is in between two accesses to the variable within a function. And you also need to watch out for updating what was a non-foo-local variable in one thread while another makes the variable foo-local...

I also fear that we probably need to examine each variable on each access for being something "special" or not (like the current void check). But with doing so it should be quite easy (and also robust) to implement aliases and foolocals, I've already some ideas and will work them out soon.

For now I will change the #:disable-viod-check option to #:no-special-var which disables *all* such special checks on access for sake of performance; but I'll also see how much this really affects timings. As a further idea, I think we could implement such "special" variables in the VM more or less easily (and without being too special about elisp and aliases/foolocals) to get better performance of variable access again, maybe I'll investigate that, also.

Yours,
Daniel

--
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri




reply via email to

[Prev in Thread] Current Thread [Next in Thread]