skip to main content
10.1145/143095.143114acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free Access

Debugging optimized code with dynamic deoptimization

Published:01 July 1992Publication History

ABSTRACT

SELF's debugging system provides complete source-level debugging (expected behavior) with globally optimized code. It shields the debugger from optimizations performed by the compiler by dynamically deoptimizing code on demand. Deoptimization only affects the procedure activations that are actively being debugged; all other code runs at full speed. Deoptimization requires the compiler to supply debugging information at discrete interrupt points; the compiler can still perform extensive optimizations between interrupt points without affecting debuggability. At the same time, the inability to interrupt between interrupt points is invisible to the user. Our debugging system also handles programming changes during debugging. Again, the system provides expected behavior: it is possible to change a running program and immediately observe the effects of the change. Dynamic deoptimization transforms old compiled code (which may contain inlined copies of the old version of the changed procedure) into new versions reflecting the current source-level state. To the best of our knowledge, SELF is the first practical system providing full expected behavior with globally optimized code.

References

  1. Cha87.David Chase. Garbage Collection and Other Optimizations, Ph.D. dissertation, Computer Science Department, Rice University, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Cha92.Craig Chambers. The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object- Oriented Programming Languages. Ph.D. dissertation, Computer Science Department, Stanford University. March 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. CMR88.Deborah S. Coutant, Sue Meloy, and Michelle Ruscetta. DOC: A Practical Approach to Source-Level Debugging of Globally Optimized Code. in Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pp. 125-134. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. CUL89.Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In OOPSLA '89 Conference Proceedings, pp. 49-70, New Orleans, LA, October, 1989. Published as SIGPLAN Notices 24(10), October, 1989. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. CU90.Craig Chambers and David Ungar. Iterative Type Analysis and Extended Message Splitting' Optimizing Dynamically-Typed Object-Oriented Programs. in Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 150-164, White Plains, NY, June, 1990. Published as SIGPLAN Notices 25(6), June, 1990. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991. Google ScholarGoogle Scholar
  6. CU91.Craig Chambers and David Ungar. Making Pure Object- Oriented Languages Practical. In OOPSLA '91 Conference Proceedings, pp. 1-15, Phoenix, AZ, October, 1991. Published as SIGPLAN Notices 26(11), November, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. DS84.L. Peter Deutsch and Allan M. Schiffman. Efficient Implementation of the Smalltalk-80 System. In Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, pp. 297-302, Salt Lake City, UT, January, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Fei83.Peter H. Feiler. A Language-Oriented Interactive Programming Environment Based on Compilation Technology. Ph.D. dissertation, Carnegie-Mellon University, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. HCU91.Urs H61zle, Craig Chambers, and David Ungar. Optimizing Dynamically-Typed Object-Oriented Programming Languages with Polymorphic Inline Caches. In ECOOP '91 Conference Proceedings, pp. 21-38, Geneva, Switzerland, July, 1991. Published as Springer Verlag LNCS 512, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Hen82.John L. Hennessy. Symbolic Debugging of Optimized Code. ACM Transactions of Programming Languages and Systems 4(3), July 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. JGZ88.Ralph E. Johnson, Justin O. Graver, and Lawrence W. Zurawski. TS: An Optimizing Compiler for Smalltalk. In OOPSLA '88 Conference Proceedings, pp. 18-26, San Diego, CA, October, 1988. Published as SIGPLAN Notices 23(11), November, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. SW78.H. Schlaeppi and H. Warren. Design of the FDS Interactive Debugging System. IBM Research Report RC7214, IBM Yorktown Heights, July 1978.Google ScholarGoogle Scholar
  13. TA90.Andrew P. Tolmach and Andrew W. Appel. Debugging Standard ML Without Reverse Engineering. In Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990, pp. 1-12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. US87.David Ungar and Randall B. Smith. SELF: The Power of Simplicity. In OOPSLA '87 Conference Proceedings, pp. 227-241, Orlando, FL, October, 1987. Published{ as SIGPLAN Notices 22(12), December, 1987. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Zel83.Polle T. Zellweger. An Interactive High-Level Debugger for Control-Flow Optimized Programs. Xerox PARC Technical Report CSL-83-1, January 1983.Google ScholarGoogle Scholar
  16. Zel84.Polle T. Zellweger. Interactive Source-Level DebuggJ!ng of Optimized Programs. Ph.D. dissertation, Computer Science Department, University of California, Berkeley, 1984. Also published as Xerox PARC Technical Report CSL-84-5, May 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. ZJ91.Lawrence W. Zurawski and Ralph E. Johnson. Debugging Optimized Code With Expected Behavior. Unpublished manuscript, 1991.Google ScholarGoogle Scholar

Index Terms

  1. Debugging optimized code with dynamic deoptimization

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          PLDI '92: Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
          July 1992
          352 pages
          ISBN:0897914759
          DOI:10.1145/143095

          Copyright © 1992 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 1 July 1992

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • Article

          Acceptance Rates

          Overall Acceptance Rate406of2,067submissions,20%

          Upcoming Conference

          PLDI '24

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader