
Can anyone tell me what the Finfo flags field means and is used for?
The C runtime defines this enum, which I assume is related:
enum FInfoFlags { FFL_NONE = 0x00, FFL_INVIS = 0x01, FFL_LAMBDA = 0x02, FFL_PRIM_APPLY = 0x04 };
They were added in about May, and seem to relate to Hat, based on patch comments.
Sorry Rob, Took me a while to spot this email. It's entirely Hat related, FFL_INVIS means treat this function as though it didn't exist from a tracing point of view. FFL_LAMBDA means this is a lambda function so don't try to trace it's name or anything. FFL_PRIM_APPLY means this is the special inbuilt apply function that is so special you can't even write it in Haskell. So please trace it specially. Thanks Tom

On Nov 2, 2006, at 9:53 AM, Thomas Shackell wrote:
Can anyone tell me what the Finfo flags field means and is used for? The C runtime defines this enum, which I assume is related: enum FInfoFlags { FFL_NONE = 0x00, FFL_INVIS = 0x01, FFL_LAMBDA = 0x02, FFL_PRIM_APPLY = 0x04 }; They were added in about May, and seem to relate to Hat, based on patch comments.
Sorry Rob,
Took me a while to spot this email. It's entirely Hat related,
FFL_INVIS means treat this function as though it didn't exist from a tracing point of view.
When would you use this flag? Is this for combinators introduced, eg, during lambda lifting?
FFL_LAMBDA means this is a lambda function so don't try to trace it's name or anything.
So this is particularly for anonymous functions, right?
FFL_PRIM_APPLY means this is the special inbuilt apply function that is so special you can't even write it in Haskell. So please trace it specially.
Is this also used for the STRING function? Does it have other uses? So then, if no flags are set the default is a named, non-primitive function that Hat should trace? Also, what happens if you get the flags wrong (like, set them all to 0 regardless of what they should be). Is Hat the only think affected? Will Hat crash if they're wrong?
Thanks
Tom
Thanks Rob Dockins Speak softly and drive a Sherman tank. Laugh hard; it's a long way to the bank. -- TMBG

Robert Dockins wrote:
When would you use this flag? Is this for combinators introduced, eg, during lambda lifting?
I forget exactly but it's something like that. Certainly it's for things that were never in the source code but which the compiler has introduced itself.
So this is particularly for anonymous functions, right?
Indeed.
FFL_PRIM_APPLY means this is the special inbuilt apply function that is so special you can't even write it in Haskell. So please trace it specially.
Is this also used for the STRING function? Does it have other uses?
It's only used for apply because the way a Hat trace views the higher order application and the way the G-Machine views higher order application are somewhat different.
Also, what happens if you get the flags wrong (like, set them all to 0 regardless of what they should be). Is Hat the only think affected? Will Hat crash if they're wrong?
Hat will be the only thing affected and it shouldn't crash it'll just give you an incorrect trace. Thanks Tom
participants (2)
-
Robert Dockins
-
Thomas Shackell