165 research outputs found

    Practical and effective higher-order optimizations

    Full text link
    Inlining is an optimization that replaces a call to a function with that function’s body. This optimization not only reduces the overhead of a function call, but can expose additional optimization oppor-tunities to the compiler, such as removing redundant operations or unused conditional branches. Another optimization, copy propaga-tion, replaces a redundant copy of a still-live variable with the origi-nal. Copy propagation can reduce the total number of live variables, reducing register pressure and memory usage, and possibly elimi-nating redundant memory-to-memory copies. In practice, both of these optimizations are implemented in nearly every modern com-piler. These two optimizations are practical to implement and effec-tive in first-order languages, but in languages with lexically-scoped first-class functions (aka, closures), these optimizations are no

    O\u27Brien, M. (Torno - 5 acres tract No. 25, Section 58; Ware - Tract No. 25 in Section 58, 5 acres), 1944-1951

    Get PDF
    2.4 Real estate, Box 119, Folder 58https://scholarworks.utrgv.edu/johnshary/1107/thumbnail.jp

    Safe and efficient hybrid memory management for Java

    Full text link

    Detection of Asynchronous Message Passing Errors Using Static Analysis

    Get PDF
    Concurrent programming is hard and prone to subtle errors. In this paper we present a static analysis that is able to detect some commonly occurring kinds of message passing errors in languages with dynamic process creation and communication based on asynchronous message passing. Our analysis is completely automatic, fast, and strikes a proper balance between soundness and completeness: it is effective in detecting errors and avoids false alarms by computing a close approximation of the interprocess communication topology of programs. We have integrated our analysis in dialyzer, a widely used tool for detecting software defects in Erlang programs, and demonstrate its effectiveness on libraries and applications of considerable size. Despite the fact that these applications have been developed over a long period of time and are reasonably well-tested, our analysis has managed to detect a significant number of previously unknown message passing errors in their code

    Compilation of extended recursion in call-by-value functional languages

    Get PDF
    This paper formalizes and proves correct a compilation scheme for mutually-recursive definitions in call-by-value functional languages. This scheme supports a wider range of recursive definitions than previous methods. We formalize our technique as a translation scheme to a lambda-calculus featuring in-place update of memory blocks, and prove the translation to be correct.Comment: 62 pages, uses pi

    Worst-case analysis of heap allocations

    Get PDF
    Abstract. In object oriented languages, dynamic memory allocation is a fundamental concept. When using such a language in hard real-time systems, it becomes important to bound both the worst-case execution time and the worst-case memory consumption. In this paper, we present an analysis to determine the worst-case heap allocations of tasks. The analysis builds upon techniques that are well established for worst-case execution time analysis. The difference is that the cost function is not the execution time of instructions in clock cycles, but the allocation in bytes. In contrast to worst-case execution time analysis, worst-case heap allocation analysis is not processor dependent. However, the cost function depends on the object layout of the runtime system. The analysis is evaluated with several real-time benchmarks to establish the usefulness of the analysis, and to compare the memory consumption of different object layouts.

    Shape Analysis in the Absence of Pointers and Structure

    Get PDF
    discover properties of dynamic and/or mutable structures. We ask, β€œIs there an equivalent to shape analysis for purely functional programs, and if so, what β€˜shapes ’ does it discover? ” By treating binding environments as dynamically allocated structures, by treating bindings as addresses, and by treating value environments as heaps, we argue that we can analyze the β€œshape ” of higher-order functions. To demonstrate this, we enrich an abstract-interpretive control-flow analysis with principles from shape analysis. In particular, we promote β€œanodization ” as a way to generalize both singleton abstraction and the notion of focusing, and we promote β€œbinding invariants ” as the analog of shape predicates. Our analysis enables two optimizations known to be beyond the reach of control-flow analysis (globalization and super-Ξ² inlining) and one previously unknown optimization (higher-order rematerialization).

    Flow Analysis, Linearity, and PTIME

    Full text link
    Abstract. Flow analysis is a ubiquitous and much-studied component of compiler technologyβ€”and its variations abound. Amongst the most well known is Shivers ’ 0CFA; however, the best known algorithm for 0CFA requires time cubic in the size of the analyzed program and is unlikely to be improved. Consequently, several analyses have been de-signed to approximate 0CFA by trading precision for faster computation. Henglein’s simple closure analysis, for example, forfeits the notion of di-rectionality in flows and enjoys an β€œalmost linear ” time algorithm. But in making trade-offs between precision and complexity, what has been given up and what has been gained? Where do these analyses differ and where do they coincide? We identify a core languageβ€”the linear Ξ»-calculusβ€”where 0CFA, simple closure analysis, and many other known approximations or restrictions to 0CFA are rendered identical. Moreover, for this core language, analysis corresponds with (instrumented) evaluation. Because analysis faithfully captures evaluation, and because the linear Ξ»-calculus is complete for ptime, we derive ptime-completeness results for all of these analyses.

    Candida albicans Infection of Caenorhabditis elegans Induces Antifungal Immune Defenses

    Get PDF
    Candida albicans yeast cells are found in the intestine of most humans, yet this opportunist can invade host tissues and cause life-threatening infections in susceptible individuals. To better understand the host factors that underlie susceptibility to candidiasis, we developed a new model to study antifungal innate immunity. We demonstrate that the yeast form of C. albicans establishes an intestinal infection in Caenorhabditis elegans, whereas heat-killed yeast are avirulent. Genome-wide, transcription-profiling analysis of C. elegans infected with C. albicans yeast showed that exposure to C. albicans stimulated a rapid host response involving 313 genes (124 upregulated and 189 downregulated, ∼1.6% of the genome) many of which encode antimicrobial, secreted or detoxification proteins. Interestingly, the host genes affected by C. albicans exposure overlapped only to a small extent with the distinct transcriptional responses to the pathogenic bacteria Pseudomonas aeruginosa or Staphylococcus aureus, indicating that there is a high degree of immune specificity toward different bacterial species and C. albicans. Furthermore, genes induced by P. aeruginosa and S. aureus were strongly over-represented among the genes downregulated during C. albicans infection, suggesting that in response to fungal pathogens, nematodes selectively repress the transcription of antibacterial immune effectors. A similar phenomenon is well known in the plant immune response, but has not been described previously in metazoans. Finally, 56% of the genes induced by live C. albicans were also upregulated by heat-killed yeast. These data suggest that a large part of the transcriptional response to C. albicans is mediated through β€œpattern recognition,” an ancient immune surveillance mechanism able to detect conserved microbial molecules (so-called pathogen-associated molecular patterns or PAMPs). This study provides new information on the evolution and regulation of the innate immune response to divergent pathogens and demonstrates that nematodes selectively mount specific antifungal defenses at the expense of antibacterial responses

    C. elegans Germline-Deficient Mutants Respond to Pathogen Infection Using Shared and Distinct Mechanisms

    Get PDF
    Reproduction extracts a cost in resources that organisms are then unable to utilize to deal with a multitude of environmental stressors. In the nematode C. elegans, development of the germline shortens the lifespan of the animal and increases its susceptibility to microbial pathogens. Prior studies have demonstrated germline-deficient nematodes to have increased resistance to Gram negative bacteria. We show that germline-deficient strains display increased resistance across a broad range of pathogens including Gram positive and Gram negative bacteria, and the fungal pathogen Cryptococcus neoformans. Furthermore, we show that the FOXO transcription factor DAF-16, which regulates longevity and immunity in C. elegans, appears to be crucial for maintaining longevity in both wild-type and germline-deficient backgrounds. Our studies indicate that germline-deficient mutants glp-1 and glp-4 respond to pathogen infection using common and different mechanisms that involve the activation of DAF-16
    • …
    corecore