Fixed several SparseInterpreter bugs related to strong updates. Switched
to SparseBitVector for representing points-to set. Refactored a little
bit to let SparseInterpreter and BasicInterpreter share more codes.
Added heap variable support
Fixed strong update on array object
Bug fixes
Finished the semi-sparse interpreter.
Added SEG construction.
Added support for argv
Separate pointer equivalence logic from PointerCFGBuilder.
Revised the SEG construction rule.
The interpreter logic needs to get updated with the new SEG rule.
Fixed the def-use graph caveats. Now PointerEquivalenceFinder and GraphCondenser both have their def-use graph counterpart.
Fixed the store pruning caveats. However, garbage collection is still hard to do.
Bug fixes required for semi-sparse interpreter.
Fixed all known correctness issues. Now we might want to start working on memory model.
Switched the memory model
Optimized the store pruning / garbage collection strategy. Now the reachability test will not performed for ALL pontential reachable objects, but only for those that are in the store.
Update the codes to compile with LLVM svn 208276. Finally we are able to compile and use creduce!
Fixed a state propagation bug. Now the main evaluation loop in eval() also takes care of environment changes.