Open
Description
Tier 2 trace projection can project traces through branches, calls, etc.
Currently we rely on the tier 1 instruction definition to perform the necessary checks, but this is flawed.
Consider a perfectly valid specialization of calls to class, that checked merely that the callable was a class.
This would be a perfectly valid instruction and will work flawlessly in tier 1, but will be wrong in a tier 2 trace that assumes a specific class.
Tier 2 trace projection needs to insert the necessary guards.
A lot of these extra guards will be redundant, but we can rely on the optimizer to remove them.