| L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 249--260, New York, NY, June 1992. ACM Press. |
....algorithms (e.g. 1, 2, 3, 8, 7, 14] developed for C have very limited power in distinguishing di#erent parts in such data structures, we expect these algorithms, when being extended for Java programs, to compute very imprecise information for these callsites. Shape analysis techniques (e.g. [5, 6, 12]) have been developed to compute more precise information for sophisticated data structures in C. The e#ectiveness of these techniques on Java programs must be evaluated. In addition, these techniques do not seem to scale to large C programs. New reference analysis algorithms may need to be ....
L. J. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis of imperative programs. In Proceedings of the ACM SIGPLAN'92 Conference on Programming Language Design and Implementation (PLDI), pages 249--260, San Francisco, California, 17--19 June 1992.
....is the incorporation of client analysis information into procedure level pointer alias summaries [81] Clientdriven pointer analyses may also be able to selectively apply more aggressive approaches to obtaining precision, such as those of [68] 4. 6 Heap Modeling Shape analysis algorithms [53, 43, 9, 19, 36, 35, 18, 74, 28, 29, 87, 88, 89, 103, 21, 54] have demonstrated high precision, over schemes that name objects based on allocation site (as in [47, 44, 83, 43, 9] but their scalability to even medium programs is uncertain. Mooly Sagiv summarizes the current state of the eld: Although I believe we are making good progress, in all honesty, ....
....is used for a pointer, the programmer asserts that the pointer will not point to a global or local that is directly accessed during the scope of the pointer. The net e ect is that such pointers no longer require stack based pointer analysis. Similar suggestions have been proposed for C pointers [45, 35] and for Java collection classes [60] 6. ACKNOWLEDGMENTS We are grateful to Michael Burke, Jong Deok Choi, Manuvir Das, Amer Diwan, Manuel F ahndrich, Rakesh Ghiya, Susan Horwitz, Bill Landi, Tom Reps, Erik Ruf, Barbara Ryder, Mooly Sagiv, and Bjarne Steensgaard for sharing their ideas on the ....
L. J. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis of imperative programs. In Proceedings of the ACM SIGPLAN'92 Conference on Programming Language Design and Implementation, pages 249-260, 17-19 June. SIGPLAN Notices 27(7), July 1992.
....dependences. At worst, we end up with code that appears totally unsliceable when it may, in fact, be amenable to slicing. Again, the developers can be of enormous help, by manually breaking some of the false dependences. We also note that dependence analyzers are improving at a fast rate (see [14, 30]) and our algorithm will improve along with them. For example, if we incorporate the recent advances in loop dependence analyses such as those in the Omega Test [30] we may not have to unroll loops to slice a real time task. Moreover, we can obtain better slices for loops using techniques like ....
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the A CM 29 SIGPLAN Cozferezce o Programmizg Lazguage Desigz azd Implemeztatioz, pages 249 260. ACM Press, June 1992.
....can be used to determine many global properties. Furthermore, our analysis does not assume that a local property holds for the analyzed program. Instead, the analysis determines the stack variables that have a given property. Of course, it can bene t from the presence of a speci cation, e.g. [HHN92], which would allow us to look for the special global properties of the speci ed program. For example, the property sh b x (v) holds for a list element v that is pointed to by two or more invisible instances (see Chapter 2) of the parameter x from previous activation records. When sh b x (v) does ....
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 249-260, New York, NY, June 1992. ACM Press.
....can be used to determine many global properties. Furthermore, our analysis does not assume that a local property holds for the analyzed program. Instead, the analysis determines the stack variables that have a given property. Of course, it can bene t from the presence of a speci cation, e.g. [9], which would allow us to look for the special global properties of the speci ed program. For example, the property sh bx (v) holds for a list element v that is pointed to by two or more invisible instances of the parameter x from previous activation records. When sh bx (v) does not hold for ....
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 249-260, June 1992.
....data structures that are not graph types, but so far all their examples have been in 2 that class. Unlike PALE, TVLA cannot produce explicit counterexamples when programs fail to verify. There exists a variety of assertion languages designed to express properties of data structures, such as ADDS [21], Lr [3] and Shape Types [18] We rely on PAL since it provides a high degree of expressiveness while still having a decision procedure that works in practice. A drawback of our approach is that detailed, explicitly stated loop invariants often are required. The overhead of adding such ....
....of the form: ptrdirs # ( T . p [ form ] # They allows pointer fields to be constrained di#erently at di#erent program points. This is important because temporary but intentional invalidation of data structure invariants often occurs in imperative programs, as noted for instance in [21]. Pointer directives, both default and overriding, are required to be well formed. This means that in any store and for any record, the directives associated to the pointer fields must denote exactly one record. Fortunately, as proved in [28] this is decidable. A pair consisting of a formula and ....
[Article contains additional citation context not shown here]
Laurie Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Program Language Design and Implementation, PLDI'92, 1992.
....at the granularity of the individual loop iterations. 8. 2 Data Dependence Analysis Research on automatically parallelizing serial computations that manipulate pointer based data structures has focused on techniques that precisely represent the run time topology of the heap [Chase et al. 1990; Hendren et al. 1992; Larus and Hilfinger 1988; Plevyak et al. 1993] The idea is that the analysis can use this precise representation to discover independent pieces of code. To recognize independent pieces of code, the compiler must understand the global topology of the manipulated data structures [Hendren et al. ....
....et al. 1992; Larus and Hilfinger 1988; Plevyak et al. 1993] The idea is that the analysis can use this precise representation to discover independent pieces of code. To recognize independent pieces of code, the compiler must understand the global topology of the manipulated data structures [Hendren et al. 1992; Larus and Hilfinger 1988] It must therefore analyze the code that builds the data structures and propagate the results of this analysis through the program to the section that uses the data. A limitation of these techniques is an inherent inability to parallelize computations that manipulate ....
HENDREN, L., HUMMEL, J., AND NICOLAU, A. 1992. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Program Language Design and Implementation. ACM Press, San Francisco, CA.
....from some pointer variable along n elds (i.e. is v a nongarbage element) compile time garbage collection cn (v) Is v on a directed cycle of n elds reference counting [Jones and Muchnick 1981] c f:b (v) Does a eld f deref. from v, followed by a eld b deref. yield v doubly linked lists [Hendren et al. 1992], Plevyak et al. 1993] c b:f (v) Does a eld b deref. from v, followed by a eld f deref. yield v doubly linked lists [Hendren et al. 1992] Plevyak et al. 1993] Table V. Examples of instrumentation predicates. is (v) def = 9v1 ; v2 : n(v1 ; v) n(v2 ; v) v1 6= v2 (13) rx;n (v) ....
....n elds reference counting [Jones and Muchnick 1981] c f:b (v) Does a eld f deref. from v, followed by a eld b deref. yield v doubly linked lists [Hendren et al. 1992] Plevyak et al. 1993] c b:f (v) Does a eld b deref. from v, followed by a eld f deref. yield v doubly linked lists [Hendren et al. 1992], Plevyak et al. 1993] Table V. Examples of instrumentation predicates. is (v) def = 9v1 ; v2 : n(v1 ; v) n(v2 ; v) v1 6= v2 (13) rx;n (v) def = x(v) 9v1 : x(v1 ) n (v1 ; v) 14) rn (v) def = x2PVar (x(v) 9v1 : x(v1 ) n (v1 ; v) 15) cn (v) def = n ....
Hendren, L., Hummel, J., and Nicolau, A. 1992. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conf. on Prog. Lang. Design and Impl. ACM Press, New York, NY, 249-260.
....obtainable by following links in a recursive data structure, only maintaining the first k dereferences, a process known as k limiting. Others have suggested less naive ways of restricting the namespace while obtaining more accurate aliases of heap stored objects [CWZ90, Deu94, HPR89, LH88, HN90, HHN92, GH96a, GH96b, SRW98] One di#culty with k limiting is that it loses information about the su#x of an object name. With 2 limiting, the alias #p f g h, x# is represented by #p f g#, x#. However this klimited object name also represents a set of object names, e.g. p f g h i for all i ....
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving analysis and transformations of imperative languages. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 249--260, June 1992. SIGPLAN Notices, volume 27, number 6.
....a similar way as costs of other constructs. For example, accessing an array element a[i] has the cost of accessing i, o setting the element address from that of a, and nally getting the value from that address. Note that side e ects caused by these features often cause other analysis to be dicult [9, 22]. For pure functional languages, higher order functions and lazy evaluations are important. Cost functions that accommodate these features have been studied [49, 44] The symbolic evaluation and optimizations we describe apply to them as well. 3 Constructing cost bound functions 3.1 Constructing ....
L. J. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 249-260. ACM, New York, June 1992.
....techniques for extracting or verifying this kind of information. There are two broad categories: analyses that characterize the accessed regions of dense matrices [8, 53, 7, 50, 77, 9, 5, 38, 47, 84] and analyses that extract or verify reachability properties of linked data structures [60, 19, 51, 43, 85]. Although many of these analyses were originally developed for the automatic parallelization of sequential programs, the basic approaches should generalize to handle the appropriate kinds of multithreaded programs. Researchers have also developed dynamic race detection algorithms, which monitor a ....
....parts of the same data structure. Over the years researchers have developed many sophisticated techniques for extracting or verifying this kind of information, both for programs that access dense matrices [8, 53, 7, 50, 77, 9, 5, 38, 47, 84] and for programs that manipulate linked data structures [60, 19, 51, 43, 85]. Parallel computing programs may also use reductions and commuting operations, in which case it may be important to generalize algorithms from the field of automatic parallelization to verify that the program executes deterministically [39, 44, 48, 80] In general, the programmer can reasonably ....
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Program Language Design and Implementation, San Francisco, CA, June 1992. ACM, New York.
....analysis is a static analysis that infers properties of pointer structures that could be used by programmers as invariants. In particular, shape analysis produces a graph structure for a structure pointer reference that summarizes the abstract memory locations that it can reach [JM81, LH88, CWZ90, HHN92, SRW99] ADDS, for example, uses traditional gen kill analysis to propagate descriptions like pointer dimensionality and reachability through a program [GH96] permitting the determination of tree, dag, and cyclic properties. The necessity to summarize actual properties in static approaches is ....
Laurie J. Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In PLDI, pages 249--260, June 17--19, 1992.
....(such as C and Java) where arrays might themselves be aliased. Analysis and optimization algorithms in the second category face the daunting challenge of dealing with pointer induced aliases in a weakly typed language. A large body of work has considered pointer analysis techniques (e.g. [17, 6, 13, 16, 7, 12]) that include powerful methods to track pointer references both intraand inter procedurally. However, many of these techniques have limited effectiveness for large real world programs because the underlying language semantics force highly conservative default assumptions. In addition, these ....
.... points to analysis before pointer references can be classified as stack directed or heapdirected and any effective optimization can be performed [12] To address this challenge, there has been a large body of research on flow sensitive pointerinduced alias analysis in weakly typed languages e.g. [17, 6, 13, 16, 7]. However, these algorithms are too complex for use in efficient analysis of strongly typed languages, compared to the algorithms presented in this paper. Specifically, our algorithms analyze object references in the same SSA framework that has been used in the past for efficient scalar analysis. ....
Laurie J. Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis of imperative programs. Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 249--260, June 1992.
....to data structures that are not graph types, but so far all their examples have been in that class. Unlike PALE, TVLA cannot produce explicit counterexamples when programs fail to verify. There exists a variety of assertion languages designed to express properties of data structures, such as ADDS [21], Lr [3] and Shape Types [18] We rely on PAL since it provides a high degree of expressiveness while still having a decision procedure that works in practice. 2 Pointer Assertion Logic In this section, we informally present the components of our framework. First, we describe the underlying ....
....pointer directives of the form: ptrdir T . p [ form ] They allows pointer elds to be constrained di erently at di erent program points. This is important because temporary but intentional invalidation of data structure invariants often occurs in imperative programs, as noted for instance in [21]. Pointer directives are required to be well formed. This means that in any store and for any record, the directives associated to the pointer elds must denote exactly one record. Fortunately, as proved in [29] this is decidable. A pair consisting of a formula and a set of pointer directives: ....
Laurie Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Conference on Program Language Design and Implementation, PLDI'92, 1992.
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 249--260, New York, NY, June 1992. ACM Press.
No context found.
Hendren, L., Hummel, J., Nicolau, A.: Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In: SIGPLAN Conf. on Prog. Lang. Design and Impl., New York, NY, ACM Press (1992) 249--260
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conference on Programming Languages Design and Implementation, pages 249--260, New York, NY, June 1992. ACM Press.
No context found.
L.J. Hendren, J. Hummel, and A. Nicolau, Abstractions for Recursive Pointer Data Structures: Improving the Analysis and Transformation of Imperative Programs, Proceedings of SIGPLAN PLDI, pp. 249-260, San Francisco, CA, June 1992.
No context found.
Laurie J. Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 249-260, San Francisco, CA, June 17-19, 1992.
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Implementation, San Francisco, CA, June 1992. ACM, New York.
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Program Language Design and Implementation, San Francisco, CA, June 1992.
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 249-260, New York, NY, June 1992. ACM Press.
No context found.
L. HENDREN, J. HUMMEL, AND A. NICOLAU, Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs, in Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '92, June 1992.
No context found.
Laurie J. Hendren, Joseph Hummel, and Alexandru Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 249-260, San Francisco, CA, June 17-19, 1992.
No context found.
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 ConferenceonProgram Language Design and Implementation, San Francisco, CA, June 1992.
First 50 documents Next 50
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC