Richard L. Halterman and Bradley T. Vander Zanden
Submitted to OOPSLA'98.
Available via anonymous ftp to cs.utk.edu in
Dataflow constraints allow programmers to easily specify relationships among application objects in a natural, declarative manner. Most constraint solvers represent these dataflow relationships as directed edges in a dependency graph. Unfortunately, dependency graphs require a great deal of storage. Consequently, an application with a large number of constraints can get pushed into virtual memory and performance degrades in interactive applications. Our solution is based on the observation that objects derived from the same prototype use the same constraints and thus have the same dependency graphs. We represent the common dependency patterns in a model dependency graph that is stored in a prototype. Instance objects may derive explicit dependencies from this graph when the dependencies are needed. Model dependencies provide a useful new mechanism for improving the storage efficiency of dataflow constraint systems, especially when a large number of constrained objects must be managed.