A type for program points.
A type for program points.
.
Remove all references to this local variable from both stack and bindings.
Remove all references to this local variable from both stack and bindings. It is called when a new assignment destroys previous copy-relations.
Implements forward dataflow analysis: the transfer function is applied when inputs to a Program point change, to obtain the new output value.
Implements forward dataflow analysis: the transfer function is applied when inputs to a Program point change, to obtain the new output value.
the transfer function.
Abstract interpretation for one instruction.
Drop everything known about mutable record fields.
Drop everything known about mutable record fields.
A simple escape analysis would help here. Some of the records we track never leak to other methods, therefore they can not be changed. We should not drop their bindings in this case. A closure object would be such an example. Some complications:
Is symbol m
a pure method?
Is symbol m
a pure method?
...
...
the number of times we iterated before reaching a fixpoint.
the number of times we iterated before reaching a fixpoint.
Reinitialize, but keep the old solutions.
Reinitialize, but keep the old solutions. Should be used when reanalyzing the same method, after some code transformation.
Update the state s
after the call to method
.
Update the state s
after the call to method
.
The stack elements are dropped and replaced by the result of the call.
If the method is impure, all bindings to record fields are cleared.
...
...
...
...
collect statistics?
collect statistics?