skip to main content
article
Free access

Declarative specialization of object-oriented programs

Published: 09 October 1997 Publication History

Abstract

Designing and implementing generic software components is encouraged by languages such as object-oriented ones and commonly advocated in most application areas. Generic software components have many advantages among which the most important is reusability. However, it comes at a price: genericity often incurs a loss of efficiency.This paper presents an approach aimed at reconciling genericity and efficiency. To do so, we introduce declarations to the Java language to enable a programmer to specify how generic programs should be specialized for a particular usage pattern. Our approach has been implemented as a compiler from our extended language into standard Java.

References

[1]
L. Andersen. Program Analysis and Specialization for the C Programming Language PhD thesis, DIKU, University of Copenhagen, Denmark, 1994. DIKU Research Report 94/19.
[2]
P. Andersen. Partial evaluation applied to ray tracing. DIKU Research Report 95/2, DIKU, University of Copenhagen, Denmark, 1995.
[3]
J. Auslander, M. Philipose, C. Chambers, S. Eggers, and B. Bershad. Fast, effective dynamic compilation. In PLDI96 {33}, pages 149-159.
[4]
R. Baier, R. Gifted, and tL ZSchling. Partial evaluation of numerical programs in Fortran. In A GM SIGPZAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 119-132, Orlando, FL, USA, June 1994. Technical Report 94/9, University of Melbourne, Australia.
[5]
A. Berlin. Partial evaluation applied to numerical computation. In ACM Conference on Lisp and Functional Programming, pages 139-150, Nice, France, 1990. ACM Press.
[6]
B. Bershad, T. Anderson, E. Lazowska, and H. Levy. Lighweight remote procedure call. ACM Transactions on Computer Systems, 8(1):37-55, February 1990.
[7]
R. Campbell, N. Islam, P. Madany, and D. Raila. Designing and implementing Choices: an object-oriented system in C++. Communications of the ACM, 1993.
[8]
C. Chambers. Predicate classes. In Proceedings of the ECOOP'93 European Conference on Object-oriented Programming, volume 707 of Lecture Notes in Computer Science, pages 268-296, Kaiserstautern, Germany, July 1993.
[9]
W. Chung and L. A. Exploring issures of operating systems structuring: from microkernel to extensible systems. ACM Operating Systems Reviews, 29(4):4-16, Oct. 1995.
[10]
C. Consel. A tour of Schism. In PEPM93 {31}, pages 66-77.
[11]
C. Consel, L. Hornof, F. Noel, J. Noye, and E. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54-72, Feb. 1996.
[12]
C. Consel, L. Hornof, F. Noel, J. Noye, and E. Volanschi. A uniform approach for compite-time and runtime specialization. Rapport de recherche 2775, INRIA, Rennes, France, Jan. 1996.
[13]
C. Consel and F. Noel. A general approach for run-time specialization and its application to C. In POPL96 {34}, pages 145-156.
[14]
C. Consel, C. Pu, and J. Walpole. Incremental specialization: The key to high performance, modularity and portability in poerating systems. In PEPM93 {31}, pages 44-46. Invited paper.
[15]
C. Cowan, T. Autrey, C. Krasic, C. Pu, and J. Walpole. Fast concurrent dynamic linking for an adaptive operating system. In International Conference on Configarable Distributed Systems, Annapolis, MD, May 1996.
[16]
C. Cowan, A. Black, C. Krasic, C. Pu, J. Walpole, C. Consel, and E. Volanschi. Specialization classes: An object framework for specialization. In Fifth IEEE International Workshop on Object-Orientation in Operating Systems, Seattle, Washington, Oct. 1996.
[17]
J. Dean, C. Chambers, and D. Grove. Selective specialization for object-oriented languages. In Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation. ACM SIGPLAN Notices, 30(6), June 1995.
[18]
D. Engler, W. Hsieh, and M. Kaashoek, 'C: A language for high-level, efficient, and machine-independent dynamic code generation. In POPL96 {34}, pages 131-144.
[19]
D. Engler and M. Kaashoek, DPF: Fast, flexible message demultiplexing using dynamic code generation. In SIGCOMM Symposium on Communications Architectures and Protocols, Stanford University, CA, Aug 1996. ACM Press.
[20]
M. Gien, Evolution of the CHORUS open microkernel architecture: The STREAM project. In Proceedings of Fifth IEEE Workshop on Future Trends in Distributed Computing Systems (FTDCS'95), Cheju Island, Korea, Aug. 1995. IEEE Computer Society Press. Also Technical Report CS/TR-95-107, Chorus Systemes.
[21]
B. Grant, M. Mock, M. Philipose, C. Chambers, and S. Eggers. Annotation-directed run-time specialization in C. In PEPM97 {32}, pages 163-178.
[22]
B. Guenter, T. Knoblock, and E. Ruf. Specializing shaders. In Computer Graphics Proceedings, Annual Conference Series, pages 343-350. ACM Press, 1995.
[23]
G. Hamilton and P. Kougiouris. The Spring nucleus: A microkernel for objects. Technical Report SMLI TR-93-14, Sun Microsystems Laboratories, Inc., Apr. 1993.
[24]
L. Hornof and J. Noye. Accurate binding-time analysis for imperative languages: Flow, context, and return sensitivity. In PEPM97 {32}.
[25]
G. Kiczales. Aspect-oriented programming. http://www.parc.xerox.com/sp1/projects/aop/, 1996.
[26]
P. Kleinrubatscher, A. Kriegshaber, R. Zochling, and R. Gluck. Fortran program specialization. In U. Meyer and G. Snelting, editors, Workshop Semontikgestutzte Analyse, Entwicklung and Generierung von Programmen, pages 45-54, Justus-Liebig-Universitat, giessen, Germany, 1994. Report No. 9402.
[27]
P. Lee and M. Leone. Optimizing ML with run-time code genreration. In PLDI96 {33}, pages 137-148.
[28]
B. Locanthi. Fast bitblt() with asm() and cpp. In European UNIX Systems User Group Conference Proceedings, pages 243-259, AT&T Bell Laboratories, Murray Hill, Sept. 1987. EUUG.
[29]
G. Muller, B. Moura, F. Bellard, and C. Consel. JIT vs. offline compilers: Limits and benefits of bytecode compilation. Rapport de recherche 1063, IRISA, Rennes, France, Dec. 1996.
[30]
G. Muller, E. Volanschi, and R. Marlet. Scaling up partial evaluation for optimizing a commercial RPC protocol. Rapport de recherche 1068, IRISA, Rennes, France, Dec. 1996. Also published in ACM SIGPLAN Conference on Partial Evaluation and Semanties-Based Program Manipulation, 1997.
[31]
Partial Evaluation and Semantics-Based Program Manipulation, Copenhagen, Denmark, June 1993. ACM Press.
[32]
ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997. ACM Press.
[33]
Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation. ACM SIGPLAN Notices, 31(5), May 1996.
[34]
Conference Record of the 23rd Annual ACM SIGPLAN-SIGACT Symposium on Principles Of Programming Languages, St. Petersburg Beach, FL, USA, Jan. 1996. ACM Press.
[35]
C. Pu, T. Autrey, A. Black, C. Consel, C. Cowan, J. Inouye, L. Kethana, J. Walpole, and K. Zhang, Optimistic incremental specialization: Streamlining a commercial operating system. In Proceedings of the 1995 ACM Symposium on Operating Systems Principles, pages 314-324, Copper Mountain Resort, CO, USA, Dec. 1995. ACM Operating Systems Reviews, 29(5), ACM Press.
[36]
C. Pu, H. Massalin, and J. Ioannidis. The Synthesis kernel. Computing Systems, 1(1):11-32, Winter 1988.
[37]
V. Rozier, V. Abrossimov, F. Armand, I. Boule, M. Gien, M. Guillemont, F. Herrmann, C. Kaiser, S. Langlois, P. Leonard, and W. Neuhauser. Overview of the Chorus distributed operating system. In USENIX- Workshop Proceedings - Micro-kernels and Other Kernel Architectures, pages 39-70, Seattle, WA, USA, Apr. 1992.
[38]
Sun. JavaCC -- the Java compiler compiler, http://www.suntest.com/JavaCC/, 1997.
[39]
E. Volanschi, G. Muller, and C. Consel. Safe operating system specialization: the RPC case study. In Workshop Record of WCSSS'96 - The Inaugural Workshop on Compiler Support for Systems Software, pages 24-28, Tucson, AZ, USA, Feb. 1996.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 32, Issue 10
Oct. 1997
344 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/263700
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '97: Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
    October 1997
    345 pages
    ISBN:0897919084
    DOI:10.1145/263698
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: 09 October 1997
Published in SIGPLAN Volume 32, Issue 10

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)477
  • Downloads (Last 6 weeks)58
Reflects downloads up to 14 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media