Issue 22: Special treatment of borrowed objects
Status:  Fixed
Owner:
Closed:  Sep 2008
Project Member Reported by kevin.bi...@gmail.com, Sep 23, 2008
Can continue using permissions as before call (but need to detect failures
eagerly or preserve constraints from pre-condition).  State information
must be updated according to split/merged permissions.

Sep 23, 2008
Project Member #1 kevin.bi...@gmail.com
(No comment was entered for this change.)
Labels: Usability
Sep 23, 2008
Project Member #2 kevin.bi...@gmail.com
(No comment was entered for this change.)
Labels: per
Sep 23, 2008
Project Member #3 kevin.bi...@gmail.com
(No comment was entered for this change.)
Labels: -per Performance
Sep 26, 2008
Project Member #4 kevin.bi...@gmail.com
Turns out to be important for iterators to work right.  Iterators move the root up
and down a lot, and that complicates using an iterator after a loop.
Labels: -Priority-Medium Priority-High
Sep 29, 2008
Project Member #5 kevin.bi...@gmail.com
(No comment was entered for this change.)
Status: Started
Sep 30, 2008
Project Member #6 kevin.bi...@gmail.com
r87 remembers permissions of borrowed objects before splitting off the pre-condition
and puts them back into the lattice after the post-condition is merged in.  This is
not perfect because it would override permissions being merged into borrowed objects
in addition to what's borrowed, but I'm not aware of a case where that happens.

In order for this to work, it was necessary to delay permission splits in the
pre-condition until after packing.  That way, borrowed objects involved in the pack
are treated correctly (including the receiver).

This change sped up the regression tests by about 10 seconds on my machine (or about
50%).  This is because constraints for borrowed objects are not propagated down the
control flow graph.  It also removes follow-on errors (due to unsatisfiable
constraints introduced at previous call sites), which is reflected in reduced error
counts for some test files, committed in r88.
Status: Fixed
Sep 30, 2008
Project Member #7 kevin.bi...@gmail.com
r90 commits a modifying iterator test method that takes advantage of borrowing