[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Watchpoints for emacs lisp.
From: |
alin.s |
Subject: |
Re: Watchpoints for emacs lisp. |
Date: |
Sat, 15 May 2010 04:24:05 -0700 (PDT) |
alin.s wrote:
>
>
>
> Stefan Monnier wrote:
>>
>>> I insert to the struct Lisp_Symbol a field :watched: .
>>
>> I think a good starting point is to use the existing `constant'
>> field and just add a special WATCHED value to it (it already has 2bits
>> but only uses 1, so you don't even need to make the field any larger).
>>
>>
>
> Here is the symbol structure. Can you point your finger on the unused bit
> ?
>
>
> /* In a symbol, the markbit of the plist is used as the gc mark bit */
>
> struct Lisp_Symbol
> {
> unsigned gcmarkbit : 1;
>
> /* Non-zero means symbol serves as a variable alias. The symbol
> holding the real value is found in the value slot. */
> unsigned indirect_variable : 1;
>
> /* Non-zero means symbol is constant, i.e. changing its value
> should signal an error. */
> unsigned constant : 1;
>
> /* Interned state of the symbol. This is an enumerator from
> enum symbol_interned. */
> unsigned interned : 2;
>
> /* The symbol's name, as a Lisp string.
>
> The name "xname" is used to intentionally break code referring to
> the old field "name" of type pointer to struct Lisp_String. */
> Lisp_Object xname;
>
> /* Value of the symbol or Qunbound if unbound. If this symbol is a
> defvaralias, `value' contains the symbol for which it is an
> alias. Use the SYMBOL_VALUE and SET_SYMBOL_VALUE macros to get
> and set a symbol's value, to take defvaralias into account. */
> Lisp_Object value;
>
> /* Function value of the symbol or Qunbound if not fboundp. */
> Lisp_Object function;
>
> /* The symbol's property list. */
> Lisp_Object plist;
>
> /* Next symbol in obarray bucket, if the symbol is interned. */
> struct Lisp_Symbol *next;
> };
>
>
I see 3 free bits here: 1+1+1+2 =5.
(the bits 6-7-8 are free).
Why do you say that it's impossible to insert a new field :watch: there ? It
takes 2 values, so it will rest 2 free bits.
--
View this message in context:
http://old.nabble.com/Watchpoints-for-emacs-lisp.-tp28512483p28567697.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.
- Watchpoints for emacs lisp., alin.s, 2010/05/10
- Re: Watchpoints for emacs lisp., Richard Stallman, 2010/05/11
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/11
- Re: Watchpoints for emacs lisp., Ken Raeburn, 2010/05/11
- Re: Watchpoints for emacs lisp., Stefan Monnier, 2010/05/11
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/11
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/15
- Re: Watchpoints for emacs lisp.,
alin.s <=
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/15
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/15
- Re: Watchpoints for emacs lisp., Helmut Eller, 2010/05/15
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/15
- Re: Watchpoints for emacs lisp., Stefan Monnier, 2010/05/15
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/16
- Re: Watchpoints for emacs lisp., Lennart Borgman, 2010/05/16
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/16
- Re: Watchpoints for emacs lisp., Lennart Borgman, 2010/05/16
- Re: Watchpoints for emacs lisp., alin.s, 2010/05/16