36 citations found. Retrieving documents...
Barbara Ryder. Constructing the Call Graph of a Program. IEEE Transactions on Software Engineering, 5(3):216--225, 1979.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents

Object-Oriented Programs - Tr July Fl   (Correct)

.... Instead of specifying operations with non trivial preconditions or arbitrarily defining a result, one often wishes a program operation to signal an exception [Goo75] A programming language can define a mechanism to handle exceptions that arise while executing an invocation, as is done in CLU [LS79] and Trellis Owl. For simplicity, whenever exceptions are discussed, all operations of an algebra are thought of as returning OneOf objects. A OneOf type is like the variant or discriminated union types that appear in some programming languages, such as CLU [LAB 81] The carrier set and ....

Barbara H. Liskov and Alan Snyder. Exception Handling in CLU. IEEE Transactions on Software Engineering, SE-5(6):546--558, November 1979.


Reducing the Impact of Spill Code - Harvey   (Correct)

....in turn, forces edges between CCM locations and live ranges into the interference graph. The allocator ignores these edges during allocation and uses them during spill code insertion. When it goes to spill a value, edges between the node and CCM locations Calculate the call graph (if necessary) [38, 12] Conservatively mark subroutines in call graph cycles as using all of CCM For each subroutine, s, in a postorder walk over the call graph: Rewrite all spill instructions to use symbolic names Build liveness analysis for spill locations Build SSA on the spill locations Build live range names ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):217--226, May 1979.


Compiler-Controlled Memory - Cooper, Harvey (1998)   (17 citations)  (Correct)

....first is a post pass ccm allocator that operates after traditional register allocation. The second embeds support for ccm spilling directly into a typical Chaitin Briggs allocator [4] Our experiments show that the two approaches produce di#erent results. Calculate the call graph (if necessary) [23, 6] Conservatively mark subroutines in call graph cycles as using all of ccm For each subroutine, s, in a postorder walk over the call graph: Rewrite spill instructions with symbolic names Perform liveness analysis over spill locations Build ssa on the spill locations Build live range names ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):217--226, May 1979.


Context-Sensitive Interprocedural Points-to Analysis in.. - Emami, Ghiya, Hendren (1994)   (220 citations)  (Correct)

....abstract stack location. To date, our experiments show that this is not a problem, and that it is reasonable to decouple the stack and heap analyses. 7. 2 Function Pointers The problem of constructing the call graph of a program in the presence of procedure variables has been previously studied [3, 17, 29, 37, 42, 44]. However, the above techniques cannot handle function pointers, because in C they are considered no different from data pointers. One can have function pointers of multiple level, as fields of structures, and as arrays. They can also be type cast into data pointers and vice versa. Hence the full ....

B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--226, May 1979.


Distributed Smalltalk: Inheritance and Reactiveness in.. - Bennett (1988)   (1 citation)  (Correct)

....without loss of information. Argus reflects a large body of earlier work by Liskov and her students in reliable software [Liskov 72] data abstraction in programming languages [Liskov 75] and distributed computing [Liskov 79b] The sequential programming language CLU [Liskov 79a, Liskov 77, Liskov 79c] forms the linguistic foundation on top of which Argus is built. Argus provides two principal extensions to CLU: actions and guardians. Actions An action is an activity that modifies some object (or objects) in the distributed system state atomically 8 . There are two properties that ....

Barbara H. Liskov and Alan Snyder. Exception Handling in CLU. IEEE Transactions on Software Engineering, SE-5(6):546--558, October 1979.


Compiling Java for High Performance and the Internet - Budimlic (2001)   (Correct)

....of input types and each variant in its inheritance hierarchy. To obtain precise type signatures, the compiler can rely on the explicit type abstractions and applications provided by GJ NextGen [11, 25, 61] This approach is similar to the construction of a completely precise call graph in Fortran [65, 22]. The improvement derived by Hall and Kennedy was to construct the call graph as it was needed, carefully limiting the effective cost of propagation of information at newly discovered calls. This achieved a running time for non polyvariant analysis that was linear in the size of the generated call ....

B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--226, May 1979.


Microarchitectural and Compile-Time Optimizations for.. - Kalamatianos (2000)   (1 citation)  (Correct)

.... recording execution frequencies or transition frequencies between code modules [52, 53, 54, 67, 66, 72] The most popular model used as input to cachesensitive procedure reordering is that of a Call Graph (CG) A CG is a procedure graph, where an edge exists between procedures that call each other [88]. Every edge is weighted with the call return frequency captured in the program profile. Each procedure is mapped to a single vertex, with all call paths between any two procedures condensed into a single edge between the two vertices in the graph. The CG can be constructed statically or using ....

Barbara Ryder. Constructing the Call Graph of a Program. IEEE Transactions on Software Engineering, 5(3):216--226, 1979.


Interprocedural Analyses of Fortran Programs - Creusillet, Irigoin (1997)   (4 citations)  (Correct)

....individual procedures, and edges represent call sites 4 . Each edge is labeled with the actual parameters associated to the corresponding call site. 4 Mathematically, this is a multigraph, since two nodes can be connected by several edges. 7 Call graphs can be constructed very efficiently [71, 45], and can provide sufficient information for many program optimizations, including parallelization. However, they do not allow flow sensitive interprocedural analyses, because they do not take into account the intraprocedural control flow of individual procedures. To perform flow sensitive ....

B. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--225, May 1979. 32


Practical Techniques For Virtual Call Resolution In Java - Sundaresan (1999)   (2 citations)  (Correct)

....for building a call graph 14 in languages with higher order functions. Other related work includes Shiver s k CFA family of algorithms [36, 37] for selecting the target contour based on k enclosing calling contours at each call site, Agesen s Cartesian Product Algorithm ( CPA ) 8] and Ryder s [35] call graph construction algorithm for Fortran 77. Agesen[7] describes constraint graph based instantiations of k CFA, and Plevyak s algorithm. We have not been able to nd any published work done on method inlining in Java, which takes as input class les and produces optimized class les. There ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216-226, May 1979.


Analyzing Exception Flow in Java Programs - Robillard, Murphy (1999)   (11 citations)  (Correct)

....was a file problem. Finer grained reactions to exceptions require a software engineer to reason about code on which the module being constructed depends. The exception handling mechanisms provided in some programming languages help a software developer perform this reasoning. Java [GJS96] and CLU [LS79], for instance, both support the declaration of exceptions in module interfaces; the compiler can then check that appropriate handlers are provided in a client module. However, this support is only partial because each of these languages also provides a form of unchecked exceptions. The developer ....

....a declaration of exception, it is assumed that all types of exceptions may be raised. Any exception raised within the method that is not declared is re mapped to a special unexpected exception. The developer of a client is not informed of missing handlers. In contrast, in Java [GJS96] and CLU [LS79], the compiler ensures that clients of a function either handle the exceptions declared by that function, or explicitly declare to signal them. In addition to these checked exceptions, Java and CLU also support unchecked exceptions which do not place such constraints on a client. We describe the ....

Barbara H. Liskov and Alan Snyder. Exception handling in CLU. IEEE Transactions on Software Engineering, 5(6), November 1979. Techical Report TR-99-02 14 March 2,


Supporting High Integrity and Behavioural Predictability .. - Colnaric, Verber, Halang (1995)   (Correct)

.... of the input and output data types by two irregular values representing signed infinity to accommodate overflows and underflows and undefined , as proposed in the IEEE 32 bit floating point standard [2] implemented also in the INMOS transputers Floating Point Unit (FPU) compare also [16]) Thus, computed irregular values do not raise exceptions, but are propagated to the subsequent or higher level blocks, which must be able to handle them. Non preventable, anticipated exceptions: If the potential danger of irregularity can be recognised during design time, it has to be taken ....

Barbara H. Liskov and Alan Snyder. Exception handling in CLU. IEEE Transactions on Software Engineering, 5(6):546--558, November 1979.


Using Bidirectional Data Flow Analysis To Support.. - Overstreet, Cherinka.. (1994)   (2 citations)  (Correct)

....aspects of the source. The following graphs are generated: 1. The control flow graph depicts the flow of information as well as the sequence in which steps can be performed within each module[4, 9] 2. The call graph depicts the calling hierarchy of the routines and functions in the source[3, 28]. 3. The dead graph lists the statements of code within the source file that are considered useless due to not being reachable during program execution. ffl The Henry Kafura complexity report depicts the flow of global variables in and out of each module in the source, as well as the flow of ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(5):216--226, May 1979.


Whole-Program Optimization of Object-Oriented Languages - Chambers, Dean, Grove (1996)   (27 citations)  (Correct)

.... being called can be a computed expression, and a number of context insensitive and sensitive algorithms have been developed [Shivers 88, Heintze 94] Similarly, algorithms have been developed to support calls of function variables in Fortran [Callahan et al. 90] and other imperative languages [Ryder 79, Weihl 80, Landi Ryder 92] Diwan, Moss, and McKinley have built an optimizing Modula 3 system based on whole program analysis [Diwan et al. 96] Their system includes several techniques similar to the Vortex compiler s techniques, including intraprocedural static class analysis and class ....

Barbara Ryder. Constructing the Call Graph of a Program. IEEE Transactions on Software Engineering, 5(3):216--225, 1979.


Effective Interprocedural Optimization of Object-Oriented Languages - Grove (1998)   (5 citations)  Self-citation (Program)   (Correct)

No context found.

Barbara Ryder. Constructing the Call Graph of a Program. IEEE Transactions on Software Engineering, 5(3):216--225, 1979.


Using Program Structure to Guide Optimization in the Presence of.. - Tarditi (1994)   Self-citation (Program)   (Correct)

....of the new global optimizer against the current SML NJ global optimizer. My thesis differs from previous work on understanding the structure of functional programs (control flow analysis) in that my focus is on applying control flow analysis and using it to improve optimization. Previous works [46, 63, 27, 54, 55, 24, 21] focused on analyzing the structure of program, and not on using the information. I contend that the approximations used in these previous works which have been shown to be practical to compute are not always useful for determining the structure of programs; they are often too inaccurate. I ....

....allocation by making use of the call graph. He also considered limiting inlining to only structured loops. This had worse performance than the normal inlining strategy. 5. 2 Constructing control flow and call graphs Many researchers have investigated constructing control flow and call graphs [46, 63, 27, 54, 55, 24, 21, 26]. Ryder [46] investigated the construction of call graphs for Fortran programs, which are recursion free. Weihl [63] studied the effect of pointers and procedure variables on constructing call graphs and control flow graphs. The source language is unclear, and the algorithms are presented in an ....

[Article contains additional citation context not shown here]

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216--226, May 1979. 61


Contruction of Call Multigraphs Revisited - Lakhotia (1993)   Self-citation (Call)   (Correct)

....to the TD problem. The CGC problem too is, therefore, intractable. Any polynomial algorithm for it can only give approximate results. The algorithm presented makes the following contributions: 1. It constructs call graphs for a larger class of procedural language programs than previous algorithms [Bur87, CCHK90, HK93, Lak93, Wei80, Spi71, Ryd79]. 2. When compared under suitable mapping, the results of our algorithm are more precise than Pande and Ryder s type determination algorithm for C [PR93] 3. When compared under suitable mapping, our algorithm is equivalent to Shivers 1CFA [Shi88, Shi91b] Our algorithm is however a) more ....

....programming language they are applicable for and b) the precision of the call graph they construct. Due to the difference in their domain and results, comparing their computational cost is not meaningful. The algorithms of Burke [Bur87] Callahan et al. CCHK90] Hall Kennedy [HK93] and Ryder [Ryd79] are applicable for Fortran like languages in which a) only formal parameters 9 November 4, 1993 can be procedure valued variables, b) these formal parameters can not be assigned to, and c) procedure references can only be used as actual parameters. All but Ryder s algorithm are applicable for ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--226, May 1979.


Evaluating a Demand Driven Technique for Call Graph Construction - Agrawal, Li, Su (2002)   (5 citations)  Self-citation (Call)   (Correct)

.... an increasing focus on interprocedural optimizations in compilers for imperative and object oriented languages and with an increasing use of results of interprocedural program analysis in software development environments, the problem of call graph construction has received a significant attention [3, 5, 6, 10, 11, 13, 14, 18, 23, 22, 24, 25, 27, 29, 28, 30, 31, 33]. A call graph is a static representation of dynamic invocation relationships between procedures (or functions or methods) in a program. A node in this directed graph represents a procedure and an edge (p q) exists if the procedure p can invoke the procedure q [2] In objectoriented languages, a ....

....Lin and Padua [20] They have presented techniques for computing reaching properties of an array on a demand basis. Again, their work assumes that a call graph has already been constructed. The existing work in the area of call graph analysis is restricted to performing exhaustive analysis only [3, 5, 6, 10, 11, 13, 14, 18, 23, 22, 24, 25, 27, 29, 28, 30, 31, 33]. We are not aware of any previous work on performing demand driven construction of call graphs. 7 Conclusions We have presented design and evaluation of an algorithm for resolving call sites in an object oriented program on a demand driven fashion. The summary of our results using SPECJVM ....

B. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216-- 226, May 1979.


Simultaneous Demand-Driven Data-flow and Call Graph Analysis - Agrawal (1999)   (5 citations)  Self-citation (Call)   (Correct)

....analysis, we would have preferred to start with a conservative solution and then add further elements. However, this is not feasibly while performing demand analysis, because of the way the initial conservative call graph is constructed. The previous work in the area of call graph construction [2, 3, 4, 7, 8, 10, 11, 12, 15, 19, 18, 20, 21, 23, 25, 24, 26] has only focussed on exhaustive analysis and has not considered demand driven analysis. Similarly, the previous work in the area of demanddriven data flow analysis [9, 14] has assumed that a complete call graph has already been constructed before initiating the demand driven analysis. 6 ....

B. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--226, May 1979.


Practical Virtual Method Call Resolution for Java - Sundaresan, Hendren.. (2000)   (61 citations)  Self-citation (Call)   (Correct)

....[26] for building a call graph in languages with higher order functions. Other related work includes Shiver s k CFA family of algorithms [32, 33] for selecting the target contour based on k enclosing calling contours at each call site, Agesen s Cartesian Product Algorithm [6] and Ryder s [31] call graph construction algorithm for Fortran 77. Plevyak and Chien s iterative algo 6 Note that the number of Jimple statements reported in Table 4 is less than the numbers reported earlier in Table 1 where we summarized the benchmark characteristics. In Table 1 we included all methods in ....

B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216-226, May 1979.


An Assessment of Call Graph Construction Algorithms - Grove, Chambers (2000)   Self-citation (Call)   (Correct)

.... levels of k in different regions of the call graph to more flexibly manage the trade off between analysis time and precision [Plev94, Plev96] Finally, a number of algorithms based on arbitrarily large finite values for k have been proposed: Ryder s call graph construction algorithm for Fortran 77 [Ryde79], Callahan s extension to Ryder s work to support recursion [Call90] and Emami s alias analysis algorithm for C [Emam94] all Figure 11: Performance impact of 0 CFA richards deltablue instr sched typechecker new tc compiler 0 1 2 3 4 5 Cecil Speedup cassowary toba java cup espresso javac ....

Barbara Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216--225, 1979.


Practical Virtual Method Call Resolution for Java - Sundaresan, Hendren.. (1999)   (61 citations)  Self-citation (Call)   (Correct)

....[20] for building a call graph in languages with higher order functions. Other related work includes Shiver s k CFA family of algorithms [26, 27] for selecting the target contour based on k enclosing calling contours at each call site, Agesen s Cartesian Product Algorithm [6] and Ryder s [25] call graph construction algorithm for Fortran 77. Plevyak and Chien s iterative algorithm [24] tries to improve a safe call graph to begin with and tries to re ne it to the desired extent by creating new contours. Chatterjee et al. give 4 This implementation is built in Java using very ....

Barbara G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216226, May 1979.


Static Type Determination and Aliasing for C++ - Pande, Ryder (1995)   (24 citations)  Self-citation (Ryder)   (Correct)

....pointers. 1 The algorithm has now been modified to handle casting. Algorithms which attempt precise analysis in the presence of function pointers and procedure variables handle only a limited usage of such constructs or resort to possibly worst case exponential analyses [HK92, Lak93, MGH94, Ryd79] In general, precise compile time analysis in the presence of function pointers is an intractable problem [ZR94] This motivated us to develop new techniques to analyze virtual functions in the C domain itself. However, when there is no increase in generality, we reduce a C construct ....

B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--225, May 1979.


Static Type Determination for C++ - Pande, Ryder (1994)   (28 citations)  Self-citation (Ryder)   (Correct)

....be expressed in terms of function calls through arrays of function pointers. Algorithms which attempt precise analysis in the presence function pointers and procedure variables handle only a limited usage of such constructs or resort to possibly worst case exponential analyses [Ghi92, HK92, Lak93, Ryd79] This motivated us to develop new techniques to analyze virtual methods in the C domain itself; however, when there is no increase in generality, we reduce a C construct to a semantically equivalent C construct. For example, we transform a class constructor to a malloc followed by ....

B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, SE-5(3):216--225, May 1979.


Coordinating Access to Computation and Data in Distributed Systems - Thain (2004)   (Correct)

No context found.

Barbara Liskov and Alan Snyder. Exception handling in CLU. IEEE Transactions on Software Engineering, 5(6), 1979.


Coordinating Access to Computation and Data in Distributed Systems - Thain (2004)   (Correct)

No context found.

Barbara Liskov and Alan Snyder. Exception handling in CLU. IEEE Transactions on Software Engineering, 5(6), 1979.

First 50 documents

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