Check the basic block to be type correct and return the produced type stack.
Check the basic block to be type correct and return the produced type stack.
A wrapper to route log messages to debug output also.
A wrapper to route log messages to debug output also.
Apply the meet operator of the stack lattice on bl's predecessors.
Apply the meet operator of the stack lattice on bl's predecessors. :-). Compute the input to bl by checking that all stacks have the same length, and taking the lub of types at the same positions.
A couple closure creators to reduce noise in the output: when multiple items are pushed or popped, this lets us print something short and sensible for those beyond the first.
A couple closure creators to reduce noise in the output: when multiple items are pushed or popped, this lets us print something short and sensible for those beyond the first.
The presence of emptyStack means that path has not yet been checked (and may not be empty).
The presence of emptyStack means that path has not yet been checked (and may not be empty).