Summary of Objectives and Approach.
Detailed Summary of Technical Progress.
During the 1970's Schwartz developed an interesting but complicated value flow analysis for SETL1 in order to detect when hidden copies could be avoided, and update operations could be performed in place. The difficulty of the analysis seems to stem, in large part, from the fact that SETL1 did not implement reference counts, so that the analysis had to prove that an r-value was unshared. It was never implemented, and a completely different naive approach that was eventually used proved to be unsatisfactory.
In SETL2 dynamic reference counts of all pointers to each tuple or set value are maintained. If a value has a reference count greater than 1, then that value is shared, and cannot be updated unless it is first copied. For example, in order to perform element addition S with:= a (which adds element a to set S) in place, the r-value of S must have a reference count of 1 and the l-values of S and a must be different. Otherwise, a hidden copy of the r-value of S must be made, and the update is performed on the copy. Unfortunately, the backend of Snyder's SETL2 compiler introduces so many compiler-generated temporary variables (which don't get garbage collected until the end of scope) that practically all data is shared at runtime.
We are currently working on a good solution to the hidden copy problem for both Low SETL and SETL2 using dynamic reference counts. Such a solution would also shed light on related problems in the object oriented and functional programming communities. Our approach is to solve this problem indirectly by introducing operations that decrement reference counts of dead l-values dynamically. We have made good progress in solving the problem for SETL2, and a rudimentary, but effective, very local optimizer has been completed. A more global solution is planned for the coming year.
Transitions and DOD Interactions.
Software and Hardware Prototypes.
Invited and Contributed Presentations.
Honors, Prizes or Awards Received.
-------------------------------------------------------------