scispace - formally typeset
Search or ask a question
JournalISSN: 1057-4514

ACM Letters on Programming Languages and Systems 

Association for Computing Machinery
About: ACM Letters on Programming Languages and Systems is an academic journal. The journal publishes majorly in the area(s): Code generation & Pointer (computer programming). Over the lifetime, 42 publications have been published receiving 2616 citations.

Papers
More filters
Journal ArticleDOI
TL;DR: It is shown that two variations of each type of race exist: feasible general races and data races, and that locating feasible races is an NP-hard problem, implying that only the apparent races can be detected in practice.
Abstract: In shared-memory parallel programs that use explicit synchronization, race conditions result when accesses to shared memory are not properly synchronized. Race conditions are often considered to be manifestations of bugs, since their presence can cause the program to behave unexpectedly. Unfortunately, there has been little agreement in the literature as to precisely what constitutes a race condition. Two different notions have been implicitly considered: one pertaining to programs intended to be deterministic (which we call general races) and the other to nondeterministic programs containing critical sections (which we call data races). However, the differences between general races and data races have not yet been recognized. This paper examines these differences by characterizing races using a formal model and exploring their properties. We show that two variations of each type of race exist: feasible general races and data races capture the intuitive notions desired for debugging and apparent races capture less accurate notions implicitly assumed by most dynamic race detection methods. We also show that locating feasible races is an NP-hard problem, implying that only the apparent races, which are approximations to feasible races, can be detected in practice. The complexity of dynamically locating apparent races depends on the type of synchronization used by the program. Apparent races can be exhaustively located efficiently only for weak types of synchronization that are incapable of implementing mutual exclusion. This result has important implications since we argue that debugging general races requires exhaustive race detection and is inherently harder than debugging data races (which requires only partial race detection). Programs containing data races can therefore be efficiently debugged by locating certain easily identifiable races. In contrast, programs containing general races require more complex debugging techniques.

471 citations

Journal ArticleDOI
TL;DR: This paper focuses on static analysis of programs for languages with if statements, loops, dynamic storage, and recursive data structures, and examines the problems faced by such analysis under the common simplifying assumptions.
Abstract: Static analysis of programs is indispensable to any software tool, environment, or system that requires compile-time information about the semantics of programs. With the emergence of languages like C and LISP, static analysis of programs with dynamic storage and recursive data structures has become a field of active research. Such analysis is difficult, and the static-analysis community has recognized the need for simplifying assumptions and approximate solutions. However, even under the common simplifying assumptions, such analyses are harder than previously recognized. Two fundamental static-analysis problems are may alias and must alias. The former is not recursive (is undecidable), and the latter is not recursively enumerable (is uncomputable), even when all paths are executable in the program being analyzed for languages with if statements, loops, dynamic storage, and recursive data structures.

430 citations

Journal ArticleDOI
TL;DR: This paper describes a simple program that generates matchers that are fast, compact, and easy to understand and run up to 25 times faster than Twig's matchers.
Abstract: Many code-generator generators use tree pattern matching and dynamic programming This paper describes a simple program that generates matchers that are fast, compact, and easy to understand It is simpler than common alternatives: 200–700 lines of Icon or 950 lines of C versus 3000 lines of C for Twig and 5000 for burg Its matchers run up to 25 times faster than Twig's They are necessarily slower than burg's BURS (bottom-up rewrite system) matchers, but they are more flexible and still practical

222 citations

Journal ArticleDOI
TL;DR: It is shown how precise groundness information can be extracted from logic programs by using abstract interpretation with Boolean functions as “approximations” to groundness dependencies between variables.
Abstract: We show how precise groundness information can be extracted from logic programs. The idea is to use abstract interpretation with Boolean functions as “approximations” to groundness dependencies between variables. This idea is not new, and different classes of Boolean functions have been used. We argue, however, that one class, the positive functions, is more suitable than others. Positive Boolean functions have a certain property which we (inspired by A. Langen) call “condensation.” This property allows for rapid computation of groundness information.

127 citations

Journal ArticleDOI
TL;DR: Experimental results indicate that the number of bound checks performed during the execution of a program is greatly reduced using compile-time optimizations.
Abstract: Bound checks are introduced in programs for the run-time detection of array bound violations. Compile-time optimizations are employed to reduce the execution-time overhead due to bound checks. The optimizations reduce the program execution time through elimination of checks and propagation of checks out of loops. An execution of the optimized program terminates with an array bound violation if and only if the same outcome would have resulted during the execution of the program containing all array bound checks. However, the point at which the array bound violation occurs may not be the same. Experimental results indicate that the number of bound checks performed during the execution of a program is greatly reduced using these techniques.

119 citations

Network Information
Related Journals (5)
ACM Computing Surveys
2.4K papers, 395.7K citations
76% related
IEEE Computer
7.1K papers, 451.2K citations
73% related
Software - Practice and Experience
7.4K papers, 150.3K citations
73% related
Communications of The ACM
12.2K papers, 1.1M citations
72% related
IEEE Software
3.9K papers, 169.7K citations
72% related
Performance
Metrics
No. of papers from the Journal in previous years
YearPapers
199317
199225