On 19/11/2010, at 8:46 AM, Erick Tryzelaar wrote:

> On Wed, Nov 17, 2010 at 4:20 PM, john skaller
> <skal...@users.sourceforge.net> wrote:
>> 
>> I now have to make a key decision: whether to support relocation
>> (all closed bound tables start at offset 0 and on loading get relocated
>> to a free address) or somehow fix the addresses (eg by hashing,
>> or just do everything in some sequence and if there's a clash throw
>> it all out and rebuild from scratch).
> 
> For what it's worth, For felix2 I'm planning on using a combination of
> hash consing the internal structure and serializing out to indexed
> values on disk. The hope is that I can avoid having to manually track
> array indexes in maps and get cheap comparisons between values. I
> haven't done much prototyping yet, so I have yet to see if it's a
> worthwhile idea yet.

I've tried hash-consing: slows the program down 2x.

The parsing, table building stuff really doesn't matter much
because it's a per-file thing. No matter how slow it is,
the speed is limited by the physical file size, if you're compiles
are too slow, just break your file into pieces. Only the changed
bits get recompiled.

It's the whole program analysis that matters. The first stage
should strip unused stuff out. Still, processing time .. including
g++ compilation times .. depend on the size of your program.

At present I know the optimiser does multiple pointless passes
rebuilding caches because I couldn't figure out how to maintain
them.

It's doubtful if Felix2 will get off the ground: there aren't enough
people working on the project with enough time to even get
Felix 1 operational :) I have another weird bug from a transformation
which should have been transparent:

[cal_call] call non procedure, index_10342<10342>[<T10340>]
type=int * (int * <T10340> -> void) * avl[<T10340>] -> (int * (int * <T10340> 
-> void) * avl[<T10340>] -> void)
In build/release-optimized/lib/std/avl.flx: line 204, cols 5 to 19
203:     }
204:     aux(0, f, tree);
         ***************
205:   }

remember, none of the tables I'm building and caching on disk are actually
used: the only side effect I know about is gratuitous incrementation of the
fresh bid counter.

If you look at name of the routine above it is "index_10342" (hmm .. that number
was lower before .. ) This is what the print routine says when the index can't
be found in the symbol table.. yet it has a type:

T -> (T -> void)

which is a function taking a T and returning a procedure accepting a T.
It isn't a procedure, but it also isn't the aux() function you can see, that's
was just bound (correctly).

The only change to the binding code is that the state parameters are passed
marginally more transparently.



--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to