ABSTRACT
We present the DeAL language for heap assertions that are efficiently evaluated during garbage collection time. DeAL is a rich, declarative, logic-based language whose programs are guaranteed to be executable with good whole-heap locality, i.e., within a single traversal over every live object on the heap and a finite neighborhood around each object. As a result, evaluating DeAL programs incurs negligible cost: for simple assertion checking at each garbage collection, the end-to-end execution slowdown is below 2%. DeAL is integrated into Java as a VM extension and we demonstrate its efficiency and expressiveness with several applications and properties from the past literature.
Compared to past systems for heap assertions, DeAL is distinguished by its very attractive expressiveness/efficiency tradeoff: it o ers a significantly richer class of assertions than what past systems could check with a single traversal. Conversely, past systems that can express the same (or more) complex assertions as DeAL do so only by su ering orders-of-magnitude higher costs.
References
- }}E. E. Aftandilian and S. Z. Guyer. GC assertions: using the garbage collector to check heap properties. In PLDI '09: Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, pages 235--244, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- }}M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. Adaptive optimization in the Jalapeno JVM. In OOPSLA '00: Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 47--65, New York, NY, USA, 2000. ACM. Google Scholar
Digital Library
- }}M. Arnold, M. Vechev, and E. Yahav. QVM: an efficient runtime for detecting defects in deployed systems. In OOPSLA '08: Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, pages 143--162, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- }}S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovic, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, pages 169--190, New York, NY, USA, Oct. 2006. ACM Press. Google Scholar
Digital Library
- }}P. T. Darga and C. Boyapati. Efficient software model checking of data structure properties. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 363--382, 2006. Google Scholar
Digital Library
- }}B. Demsky, M. D. Ernst, P. J. Guo, S. McCamant, J. H. Perkins, and M. Rinard. Inference and enforcement of data structure consistency specifications. In ISSTA '06: Proceedings of the 2006 international symposium on Software testing and analysis, pages 233--244, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- }}B. Elkarablieh, I. Garcia, Y. L. Suen, and S. Khurshid. Assertion-based repair of complex data structures. In ASE '07: Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, pages 64--73, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- }}B. Elkarablieh, S. Khurshid, D. Vu, and K. S. McKinley. STARC: Static analysis for efficient repair of complex data. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 387--404, 2007. Google Scholar
Digital Library
- }}C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for Java. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 234--245. ACM, June 2002. Google Scholar
Digital Library
- }}N. Immerman. Descriptive Complexity. Springer, 1998. Google Scholar
Digital Library
- }}D. Jackson. Object models as heap invariants. Programming methodology, pages 247--268, 2003. Google Scholar
Digital Library
- }}S. McPeak and G. Necula. Data structure specifications via local equality axioms. In Computer Aided Verification, pages 476--490, 2005. Google Scholar
Digital Library
- }}B. Meyer. Object-Oriented Software Construction. Prentice Hall PTR, 2nd edition, 1997. Google Scholar
Digital Library
- }}T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Producing wrong data without doing anything obviously wrong! In ASPLOS '09: Proceeding of the 14th international conference on Architectural support for programming languages and operating systems, pages 265-276, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- }}G. Ramalingam. The undecidability of aliasing. ACM Transactions on Programming Languages and Systems, 16(5):1467--1471, 1994. Google Scholar
Digital Library
- }}D. Rayside and L. Mendel. Object ownership profiling: a technique for finding and fixing memory leaks. In ASE '07: Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, pages 194--203, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- }}D. Reimer, E. Schonberg, K. Srinivas, H. Srinivasan, J. Dolby, A. Kershenbaum, and L. Koved. Validating structural properties of nested objects. In OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pages 294--304, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- }}M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. In ACM Symposium on the Principles of Programming Languages, pages 105--118, 1999. Google Scholar
Digital Library
- }}A. Shankar and R. Bodik. DITTO: automatic incrementalization of data structure invariant checks (in Java). In PLDI '07: Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation, pages 310--319, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- }}Standard Performance Evaluation Corporation. SPECjvm98 Documentation, release 1.03 edition, 1999.Google Scholar
- }}Standard Performance Evaluation Corporation. SPECjbb2000 Documentation, release 1.01 edition, 2001.Google Scholar
- }}M. Vechev, E. Yahav, G. Yorsh, and B. Bloom. PHALANX: Parallel Checking of Expressive Heap Assertions. In ACM International Symposium on Memory Management, 2010. Google Scholar
Digital Library
- }}P. R. Wilson. Uniprocessor Garbage Collection Techniques. In Y. Bekkers and J. Cohen, editors, ACM International Workshop on Memory Management, number 637 in Lecture Notes in Computer Science, pages 142, St. Malo, France, Sept. 1992. Springer-Verlag. Google Scholar
Digital Library
- }}K. Zee, V. Kuncak, and M. Rinard. Full functional verification of linked data structures. In ACM Conference on Programming Languages Design and Implementation, pages 349--361, 2008. Google Scholar
Digital Library
Index Terms
What can the GC compute efficiently?: a language for heap assertions at GC time






Comments