Skip to content

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.

Edited by Andreas Klebinger
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information