Export LambdaFormInfo for externally visible bindings in interface files.
Motivation
Currently if one module defines a value like this:
foo = Just bar
Then any reference to foo in other modules will be be a direct untagged pointer to foo.
As a result every time we are scrutinizing such a reference we need to enter it's closure.
Quite a waste.
Proposal
Export LambdaFormInfo to interface files. Allowing us to tag imported ids in the same way we tag ids coming from the current module.
Open question:
-
Does this establish the invariant that pointers to constructors are always tagged. This question was raised here
Answer: It doesn't as this is only enabled at -O1 and higher.