guile-devel
[Top][All Lists]
Advanced

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

struct optimizations


From: Andy Wingo
Subject: struct optimizations
Date: Sun, 24 Jan 2010 18:29:33 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux)

Hi Ludovic,

Great work on the struct optimizations!

Some comments:

    -#define SCM_VTABLE_FLAG_RESERVED_0 (1L << 5)
    -#define SCM_VTABLE_FLAG_RESERVED_1 (1L << 6)
    +#define SCM_VTABLE_FLAG_SIMPLE (1L << 5) /* instances of this vtable have 
only "pr" fields */
    +#define SCM_VTABLE_FLAG_SIMPLE_RW (1L << 6) /* instances of this vtable 
have only "pw" fields */

The comments do not appear to be correct, given a later check:

    +  if (SCM_LIKELY (SCM_VTABLE_FLAG_IS_SET (vtable, SCM_VTABLE_FLAG_SIMPLE)
    +             && SCM_VTABLE_FLAG_IS_SET (vtable, SCM_VTABLE_FLAG_SIMPLE_RW)
    +             && p < SCM_STRUCT_DATA_REF (vtable, scm_vtable_index_size)))
    +    /* The fast path: HANDLE is a struct with only "p" fields.  */
    +    data[p] = SCM_UNPACK (val);

It seems that currently SIMPLE is for all pr *or* all pw slots. But we
should be more orthogonal than that; let's have SIMPLE be for having all
slots be readable p slots. (Note that this still allows a mix of
readable and writable slots.)

Then perhaps we can change SIMPLE_RW to be MUTABLE or something, to
indicate that all slots of this object are mutable.

What do you think?

Andy
-- 
http://wingolog.org/




reply via email to

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