This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Traversing trees in a plugin...


On Sat, 2 Jun 2012 11:47:51 -0700
Brett Foster <fosterb@edgeandvertex.org> wrote:

> On Sat, Jun 2, 2012 at 11:31 AM, Basile Starynkevitch
> <basile@starynkevitch.net> wrote:
> > In the MELT meta-plugin (recall that MELT is a high-level domain specific language to
> > extend GCC, see http://gcc-melt.org/ for more) we extensively use associative hash-tables
> > for that. MELT offers homogeneous hash-tables, e.g. hash-table associating tree (i.e.
> > non-null tree pointers) to arbitrary non-null MELT values (e.g. MELT closures, or MELT
> > lists, or MELT objects, etc etc), or hash-table associating (non null) gimple to non
> > null MELT values.
> >
> > So you can have e.g. an hash-table associating each tree (every tree is in GCC a non-null
> > pointer to a structure) with data associated to it. Once it has some data you know that
> > this tree has been visited.
> 
> I'll poke around the MELT source code -
> 
> In Melt, where in source code may I have a look to see how trees and
> mapped to the hash table? Are you able to summarize the basics? I.e.
> the hash for a specific node tree is derived from what data? Pointer
> address?

MELT has a generic pointer (using the pointer address as hash function) to MELT value hash
table. In its file melt-runtime.c which you can browse at
http://gcc.gnu.org/viewcvs/branches/melt-branch/gcc/melt-runtime.c
you can find near lines 3795-4020 functions like meltgc_raw_new_mappointers
meltgc_raw_put_mappointers melt_raw_get_mappointers ...

There are used from inline functions in gcc/melt-runtime.h &
gcc/melt/generated/meltrunsup.h ; allocated size of hash tables is a prime number...

Feel free to ask more questions about that. (notice that MELT has a low-traffic dedicated
list gcc-melt@googlegroups.com etc..)

Feel also free to download & try MELT!

Cheers

-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]