Abstract
An effects systems describes how state may be accessed during the execution of some program component. This information is used to assist reasoning about a program, such as determining whether data dependencies may exist between two computations. We define an effects system for Java that preserves the abstraction facilities that make objectoriented programming languages attractive. Specifically, a subclass may extend abstract regions of mutable state inherited from the superclass.
★
The effects system also permits an object’s state to contain the state of wholly-owned subsidiary objects. In this paper, we describe a set of annotations for declaring permitted effects in method headers, and show how the actual effects in a method body can be checked against the permitted effects.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Alexander Aiken, Manuel Fähndrich, and Raph Levien. Better static memory management: Improving region-based analysis of higher-order languages. In Proceedings of the ACM SIGPLAN’ 95 Conference on Programming Language Design and Implementation, San Diego, California, USA, ACM SIGPLAN Notices, 30(6):174–185, June 1995.
John Boyland. Deferring destruction when reading unique variables. Submitted to IWAOOS’ 99, March 1999.
John Boyland and Aaron Greenhouse. MayEqual: A new alias question. Submitted to IWAOOS’ 99, March 1999.
Edwin C. Chan, John T. Boyland, and William L. Scherlis. Promises: Limited specifications for analysis and manipulation. In Proceedings of the IEEE International Conference on Software Engineering (ICSE’ 98), Kyoto, Japan, April 19–25, pages 167–176. IEEE Computer Society, Los Alamitos, California, 1998.
David G. Clarke, John M. Potter, and James Noble. Ownership types for flexible alias protection. In OOPSLA’98 Conference Proceedings Object-Oriented Programming Systems, Languages and Applications, Vancouver, Canada, October 18–22, ACM SIGPLAN Notices, 33(10):48–64, October 1998.
D. K. Gifford, P. Jouvelot, J. M. Lucassen, and M. A. Sheldon. FX-87 reference manual. Technical Report MIT/LCS/TR-407, Massachusetts Institute of Technology, Laboratory for Computer Science, September 1987.
Daniel Jackson. Aspect: Detecting bugs with abstract dependencies. ACM Transactions on Software Engineering and Methodology, 4(2):109–145, April 1995.
Pierre Jouvelot and David K. Gifford. Algebraic reconstruction of types and effects. In Conference Record of the Eighteenth Annual ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages, pages 303–310. ACM Press, New York, 1991.
K. Rustan M. Leino. Data groups: Specifying the modification of extended state. In OOPSLA’98 Conference Proceedings-Object-Oriented Programming Systems, Languages and Applications, Vancouver, Canada, October 18–22, ACM SIGPLAN Notices, 33(10), October 1998.
John C. Reynolds. Syntactic control of interference. In Conference Record of the Fifth ACM Symposium on Principles of Programming Languages, pages 39–46. ACM Press, New York, January 1978.
Bjarne Steensgaard. Points-to analysis in almost linear time. In Conference Record of the Twenty-third Annual ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages, St. Petersburg, Florida, USA, January 21–24, pages 32–41. ACM Press, New York, 1996.
Jean-Pierre Talpin and Pierre Jouvelot. Polymorphic type, region and effect inference. Journal of Functional Programming, 2(3):245–271, July 1992.
Mads Tofte and Jean-Pierre Talpin. Implementation of the typed call-by-value λ-calculus using a stack of regions. In Conference Record of the Twenty-first Annual ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages, Portland, Oregon, USA, January 17–21, pages 188–201. ACM Press, New York, 1994.
Bill Venners. Design for thread safety: Design tips on when and how to use synchronization, immutable objects, and thread-safe wrappers. JavaWorld, August 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Greenhouse, A., Boyland, J. (1999). An Object-Oriented Effects System. In: Guerraoui, R. (eds) ECOOP’ 99 — Object-Oriented Programming. ECOOP 1999. Lecture Notes in Computer Science, vol 1628. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48743-3_10
Download citation
DOI: https://doi.org/10.1007/3-540-48743-3_10
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66156-6
Online ISBN: 978-3-540-48743-2
eBook Packages: Springer Book Archive