Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/96709.96725acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications

Published: 01 December 1989 Publication History
  • Get Citation Alerts
  • Abstract

    We present a static analysis method for determining aliasing and lifetime of dynamically allocated data in lexically scoped, higher-order, strict and polymorphic languages with first class continuations. The goal is validate program transformations that introduce imperative constructs such as destructive updatings, stack allocations and explicit deallocations in order to reduce the run-time memory management overhead. Our method is based on an operational model of higher order functional programs from which we construct statically computable abstractions using the abstract interpretation framework. Our method provides a solution to a problem left open [Hudak 86]: determining isolation of data in the case of higher order languages with structured data.

    References

    [1]
    A. Aasa, S. Holmstrom, and C. Nilsson. An efficiency comparison of some representations of purely functional arrays. BIT, 28:490-503, 1988.
    [2]
    A. Appel. Garbage collection can be faster than stack allocation. Information Processing Letters, (25):275-279, Jun. 1987.
    [3]
    A. Appel. Simple generational garbage collection and fast allocation. Software Practice and Experience, 19(2):171-183, Feb. 1989.
    [4]
    J.M. Barth. Shifting garbage collection overhead to compile time. CACM, 20(7):513--518, Jul. 1977.
    [5]
    A. Bloss. Update analysis and the efficient implementation of functional aggregates. In Conference on Functional Programming Languages and Computer Architecture, pages 26-38, ACM Press, London, Sep. 1989.
    [6]
    L. Cardelli. Compiling a functional language. In Symposium on LISP and Functional Progmmming, pages 208-209, ACM, 1984.
    [7]
    D.R. Chase. Safety considerations for storage allocation optimizations. In SIGPLAN'88 Conference on Programming Language Design and Implementation, pages 1-9, Atlanta, Jun. 1988.
    [8]
    P. Cousot and R. Cousot. Abstract interpretation : a unified lattice model for static analysis of programs by construction of approximation of fixpoints. In 4th Annual ACM Symposium on Principles of Programming Languages, pages 238-252, Los Angeles, Jan. 1977.
    [9]
    P. Cousot and R. Cousot. Static determination of dynamic properties of generalised type unions. SIGPLANNotices, 12(3):77-94, Mar. 1977.
    [10]
    P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In 6th Annual ACM Symposium on Principle of Programming Languages, pages 269-282, 1979.
    [11]
    P. Cousot. Methodes iteratives de construction et d'approximation de points fixes d'operateurs monotones sur un treillis, analyse acmantique de programmes. These d'etat, Mar. 1978. Universite scientifique et medicale de Grenoble.
    [12]
    P. Cousot. Program Flow Analysis: Theory and Applications, chapter Semantic foundations of program analysis, pages 303--342. Prentice-Hall, 1981.
    [13]
    D. Coutant. Retargetable high-level alias analysis. In 13th Annual ACM Symposium on Principle ol Programming Languages, pages 110-118, Jan. 1986.
    [14]
    A. Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications (extended version). Research Report LiX/RR/89/(to appear), Ecole Polytechnique, 91128 Palaiseau, France, 1989.
    [15]
    J. Fairbairn and S.C. Wray. Code generation techniques for functional languages. In Conferences Record of the 1986 ACM symposium on LISP and Functional Programming, pages 94-104, Aug. 1986.
    [16]
    B. Goldberg. Detecting sharing of partial applications in functional programs. In G. Kahn, editor, Functional Programming Languages, and Computer Architecture, pages 408- 425, Springer Verlag, Sep. 1987. Volume 274 of Lecture Notes on Computer science.
    [17]
    C.T. Haynes and D.P. Friedman. Embeding continuations in procedural objects. ACM Transactions on programming Languages and Systems, 9(4):582-598, Oct.1987.
    [18]
    M.S. Hecht. Flow Analysis of Computer Programs, Elsevier North-Holland, New York, 1977.
    [19]
    S. Horwitz, P. Pfeiffer, and T. Repe. Dependence analysis for pointer variables. In Conference on Programming Language Design and Implementation, pages 28-40, Jun. 1989. Volume 24 of SIGPLAN Notices.
    [20]
    P. Hudak. A semantic model of reference counting and its abstraction. In Conference Record of the 1986 ACM symposium on LISP and Functional Programming, pages 351-363, Aug. 1986.
    [21]
    J. Hughes. Backward analysis of functional programs. In D. Bjorner, A.P. Ershov, and N.D Jones, editors, Proc. Workshop on Partial Evaluation and Mixed Computation, pages 155-169, North-Holland, Denmark, Oct. 1987.
    [22]
    K. Inoue, H. Seki, and H. Yagi. Analysis of functional programs to detect run-time garbage cells. ACM Transactions on Programming Languages and systems 10(4):555-578, Oct. 1988.
    [23]
    S.B. Jones and D. Le Metayer. Compile-time garbage collection by sharing analysis. In Conference on Functional Programming Languages and Computer Architecture, pages 54-74, ACM Press, London, Sep. 1989.
    [24]
    N.D. Jones and S. Muchnick. Program Flow Analysis: Theory and Applications, chapter Flow Analysis and Optimization of Lisp-like structures, pages 102-131. Prentice-Hall, New Jersey, 1981.
    [25]
    N.D. Jones and S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In 9th Anntml ACM Symposium on Principle of Programming Languages, pages 66-74, ACM Press, 1982.
    [26]
    N.D. Jones. Flow analysis of lambda expressions. In Symposium on Funtional Languages and Computer Architecture, pages 376-401, Chalmers University of Technology, Goteborg, Sweden, Jun. 1981.
    [27]
    P. Jouvelot and D.K. Gifford. Reasoning about continuations with control effects. In Conference on Programming Language Design and lmplementation, pages 218-226, ACM Press, Jun. 1989.
    [28]
    U. Kastens and M. Schmidt. Lifetime analysis for procedure parameters. In G. Goos and J. Hartmanis, editors, European Symposium on Programming, pages 53-69, Springer Verlag, Mar. 1986. Volume 213 of Lecture Notes on Compter Science.
    [29]
    K.W. Kennedy. Node listings applied to data flow analysis. In 3th Annual ACM Symposium on Principles of Programming Languages, pages 10-21, Jan. 1976.
    [30]
    J. Landin. The Mechanical Evaluation of Expressions. Volume 6, Computer Journal, Jan. 1964.
    [31]
    J.R. Larus and P.N. Hilfinger. Detecting conflicts between structure accesses. In SIGPLAN'88 Conference on Progmmming Language Design and Implementation, pages 21-34, ACM, Jun. 1988.
    [32]
    J. Launchbury. Projections for specialisation. In D. Bjorner, A.P. Ershov, and N.D. Jones, editors, Workshop on Partial Evaluation and Mixed Computation, pages 299-315, North Holland, Oct. I987.
    [33]
    T.AE. Mogensen. Partially static structures in a self-applicable partial evaluator. In D. Bjorner, A.P. Ershov, and N.D. Jones, editors, Workshop on Partial Evaluation and Mixed Computation, pages 325-347, North Holland, Oct. 1987.
    [34]
    T.AE. Mogensen. Binding time analysis for polymorphically typed higher-order languages. In Proc. TAPSOFT, pages 298-312, Springer Verlag, 1989. Volume 352 of Lecture Notes on Computer Science.
    [35]
    A. Neirynck, P. Panangaden, and A.J. Damers. Computation of aliases and support sets. In 14th Annual ACM Symposium on Principles of Programming Languages, pages 274-283, 1987.
    [36]
    H.R. Nielson and F. Nielson. Semantics directed compiling for functional languages. In Annual ACM Conference on Lisp and Functional Programming, pages 249-257, Aug. 1986.
    [37]
    F. Nielson and H.R. Nielson. Two-level semantics and code generation. Theoretical Computer Science, 56(1):59-133, Jan. 1988.
    [38]
    F. Nielson. Expected forms of data flow analyses. In H. Ganziger and N.D. Jones, editors, Programs as Data Objects, pages 172-191, Springer Verlag, 1985. VoIume 217 of Lecture Notes on Computer Science.
    [39]
    J.C. Raoult and R. Sethi. The global storage needs of a subcomputation. In 11th Annual ACM Symposium on Principles of Programming Languages, pages 149-157, ACM Press, 1984.
    [40]
    J.C. Raoult and R. Sethi. On Finding Stacked Attributes. Technical Report 206, LRI, Universite Paris-Sud, 91405 Orsay, France, Feb. 1985.
    [41]
    J. Rees and W Clinger. Revised3 report on the algorithmic language scheme. SIGPLAN Notices, 21(12):37-79, Dec. 1986.
    [42]
    C. Ruggieri and T. Murtagh. Lifetime analysis of dynamically allocated objects. In 15th Annual ACM Symposium on Principles of Programming Languages, pages 285-293, 1988.
    [43]
    D. Schmidt. Detecting global variables in denotational specifications. ACM Transactions on Programming Languages and Systems, 7(2):299-310, Apr. 1985.
    [44]
    J. Schwartz. Verifying the safe use of destructive operations in applicative programs. In B. Robinet, editor, Transformations de programmes : 3e colloque international, sur la programmation, pages 394-410, Dunod, Paris, mar. 1978.
    [45]
    P. Sestoft. Replacing function parameters by global variables. In Conference on Functional Programming Languages and Computer Architecture, pages 39-53, ACM Press, London, Sep. 1989.
    [46]
    M. Sharir and A. Pnueli. Program Flow Analysis: Theory and Applications, chapter Two approaches to inter procedural data flow analysis, pages 189-234. Prentice-Hall, 1981.
    [47]
    O. Shivers. Control flow analysis in scheme. In Conference on Programming Language Design and Implementation, pages 164-174, Jun. 1988.
    [48]
    I. Stransky. Analyse semantique de structures de donnces dynamiques aves application au cas particulier de langages LISPiens. PhD thesis, Universite de Paris-Sud, Orsay, France, Jun. 1988.
    [49]
    P. Wadler. Deforestation: transforming programs to eliminate trees. In European Symposium On Progrmming, Springer Verlag, 1988. Volume 300 of Lecture Notes on Computer Science.
    [50]
    W.E. Weihl. Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables. In 7th Annual ACM Symposium on Principles of Programming Languages, pages 83-94, 1980.

    Cited By

    View all
    • (2022)Aggregate update problem for multi-clocked dataflow languagesProceedings of the 20th IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO53902.2022.9741275(79-91)Online publication date: 2-Apr-2022
    • (2020)Escape from escape analysis of GolangProceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice10.1145/3377813.3381368(142-151)Online publication date: 27-Jun-2020
    • (2019)L Samplers and Their ApplicationsACM Computing Surveys10.1145/329771552:1(1-31)Online publication date: 13-Feb-2019
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    POPL '90: Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    December 1989
    401 pages
    ISBN:0897913434
    DOI:10.1145/96709
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 December 1989

    Permissions

    Request permissions for this article.

    Check for updates

    Qualifiers

    • Article

    Acceptance Rates

    Overall Acceptance Rate 824 of 4,130 submissions, 20%

    Upcoming Conference

    POPL '25

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)43
    • Downloads (Last 6 weeks)7
    Reflects downloads up to 27 Jul 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)Aggregate update problem for multi-clocked dataflow languagesProceedings of the 20th IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO53902.2022.9741275(79-91)Online publication date: 2-Apr-2022
    • (2020)Escape from escape analysis of GolangProceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice10.1145/3377813.3381368(142-151)Online publication date: 27-Jun-2020
    • (2019)L Samplers and Their ApplicationsACM Computing Surveys10.1145/329771552:1(1-31)Online publication date: 13-Feb-2019
    • (2017)A Fast Method to Compute Disjunctive Quadratic Invariants of Numerical ProgramsACM Transactions on Embedded Computing Systems10.1145/312650216:5s(1-19)Online publication date: 27-Sep-2017
    • (2017)Verifying Increasingly Expressive Temporal Logics for Infinite-State SystemsJournal of the ACM10.1145/306025764:2(1-39)Online publication date: 30-Apr-2017
    • (2016)Practical multispectral lighting reproductionACM Transactions on Graphics10.1145/2897824.292593435:4(1-11)Online publication date: 11-Jul-2016
    • (2016)Perspective-aware manipulation of portrait photosACM Transactions on Graphics10.1145/2897824.292593335:4(1-10)Online publication date: 11-Jul-2016
    • (2015)Automating ad hoc data representation transformationsACM SIGPLAN Notices10.1145/2858965.281427150:10(801-820)Online publication date: 23-Oct-2015
    • (2015)Automating ad hoc data representation transformationsProceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications10.1145/2814270.2814271(801-820)Online publication date: 23-Oct-2015
    • (2015)BuriACM Transactions on Architecture and Code Optimization10.1145/280823312:3(1-24)Online publication date: 6-Oct-2015
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media