Hi Rob,

Yes some operations are represented through bytecode operations and some through FFI calls.

Your proposal is an interesting idea but, as I see it, it does have some disadvantages:

  - It's not very extensible, if we need to add more operations and
    we've run out of reserved codes then it would be necessary to change
    the bytecode format.

  - It would introduce instructions with complex bit packed arguments.
    It's generally reckoned to be a good idea to avoid bit packing
    arguments in an interpreter because it's actually really expensive
    (and fiddly) to decode them.

  - It's a little more symmetrical than the current system but it is
    still quite asymmetrical; for example it could be argued "Why make a
    special case for the numeric functions?".
        
    For example, compare putChar with floating point signum; putChar
    might be called hundreds of times in one program but I've never even
    seen a program that actually uses floating poing signum!

  - There's nothing very wrong with the current system. It is a little
    asymmetrical but it's not a big problem. There would be more of a
    case to removing the numeric bytecodes and just using the FFI
    interface (as Hugs does) but I'm a big fan of:
               "if it aint broke, don't fix it".

So I would vote in favour of leaving it as it is, but please keep the suggestions comming :-)


Thanks

Tom


Robert Dockins wrote:
Hello,

A few weeks ago I was thinking about the strange situation with Yhc's numeric primitives. Some of them are in the bytecode set, and some are handled through the FFI (at least I think that's what's happening). Thinking about it led me to decide it would be better to somehow represent all the numeric primitives as bytecode operations. So, I wrote up a proposal. Anyone who is interested can check it out at:

http://haskell.org/haskellwiki/Image:Num-bytecodes.txt

The ideas are about 3/4 baked (which is to say, somewhat more than half-baked ;-) ) I think the integer stuff is pretty good, and the floating point is OK. I'm less sure about the pointer stuff. At any rate, I thought I'd share the proposal so it doesn't become completely lost in the dark recesses of my home directory.


Rob Dockins

Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
          -- TMBG



_______________________________________________
Yhc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/yhc

_______________________________________________
Yhc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/yhc

Reply via email to