| J. Dean, G. DeFouw, D. Grove, V. Livinov, and C. Chambers. "Vortex: An optimizing compiler for object-oriented languages" ACM SIGPLAN Notices, 31(10):83-- 100, Oct. 1996. |
....traversals, and thus subsumes our previous work that discovers regular accesses to linked structures [7] In this paper, we focus on arrays. We implement our data flow analysis and software prefetching technique in Vortex, an optimizing (ahead of time) compiler for object oriented programs [10]. We evaluate prefetching using benchmark programs from the Jama library [13] and the Java Grande benchmark suite [6] We run the programs on RSIM, a simulator for an out of order superscalar processor [20] and on an actual PowerPC processor [17] Our results show that our simple prefetching ....
....the effectiveness of prefetching on a PowerPC processor. We conclude with a discussion on the negative impact of conflict misses on prefetching. 5. 1 Methodology We implement the induction variable analysis and prefetching algorithm in Vortex, an optimizing compiler for object oriented languages [10]. We use Vortex to compile our Java programs, perform object oriented and traditional optimizations, and generate SPARC assembly code. We specify a prefetch distance of twenty elements as a compile time option. We use a twenty element prefetch distance since it is small enough to cover the latency ....
J. Dean, G. DeFouw, D. Grove, V. Litinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996.
....such languages have small basic blocks and use recursive functions for loops. These factors limit the applicability of standard intraprocedural optimizations [2, 25] and increase the importance of interprocedural optimizations. CFA enables interprocedural optimizations, and so is used frequently [7, 9, 10, 17, 19, 38, 41, 46]. The correctness of CFA itself has been widely studied [15, 18 20, 28 30, 37, 38] but little is known about how to prove the correctness of CFA based transformations. An analogous situation for dataflow analysis and dataflow analysis based transformations was recognized and addressed in the ....
J. Dean, G. DeFouw, D. Grove, and C. Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In OOPSLA'96, ACM Press.
....entire inheritance hierarchies rather than individual classes. The mean and median of the measures for individual classes provides enough information to roughly characterize the use of inheritance in entire object oriented systems [4] Such measures have been used to evaluate optimizing compilers [6]. Measures that focus on properties of entire systems forests of inheritance trees should provide information that can better answer questions about the system as a whole. Reuse in object oriented systems can be measured from a variety of perspectives [1, 2, 3] We focus on measuring ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. Proc OOPSLA'96, October 1996.
....and data structures and creation of data structures all force evaluation. R is also in many ways a very dynamic language, and it is likely to get a more object oriented flavor in the near future, so techniques developed for Self and other object oriented languages may be appropriate as well [11, 7]. One unusual feature about all statistical languages is that they deal heavily with vector data. Once again, specialized compilation techniques and perhaps language extensions from languages like NESL [4] may be useful. An issue currently under discussion is whether support for some form of ....
Je#rey Dean, Greg DeFouw David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the Eleventh Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 83--100, October 1996.
....it and execute it. It will be useful to extend JPS to support this feature. 8.2.3 Translator Optimizations The current bytecodes to C translator in JPS does a straight forward translation of bytecodes. However, it is possible to improve the translator to generate more optimized code. Vortex [DGC96] and Harissa [MMBC97] papers describe many such optimizations. These optimizations can be incorporated into JPS. It would be especially interesting to study how these optimizations apply in context of persistent programming systems. 56 ....
J. Dean, D. Grove, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of OOPSLA, San Jose (CA), USA, 1996. Available at www.cs.washington.edu/research/projects/cecil- /www/Papers/papers.html.
.... such as receiver prediction [18, 20] Since techniques such as inlining and specialization for types (customization [7] and method argument specialization [11] can cause code explosion, the same profiling information is used to focus these optimizations on the critical parts of the program [12, 20]. The optimizations offered by such systems depend on the accuracy of the analyses and profiling system. As a result, the level of optimization is difficult to predict, and structural overheads are not easily detected. By contrast, specialization is parameterized by information provided by the ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: an optimizing compiler for object-oriented languages. In OOPSLA' 96 Conference, pages 93--100, San Jose (CA), Oct. 1996.
....These are compilers which compile the bytecodes to native code or an intermediate language and can achieve near native performance. Since the compilation time using static compilers does not form a part of the application execution time, higher levels of optimizations can be performed. Vortex [39], NET [34] and Toba [54] are research compilers which translates bytecodes to native code. TowerJ [8] and GCJ [16] are commercial compilers that compile bytecodes to native code. 6. Native method calls: Calling native code for common library routines like graphics can lead to better performance. ....
....code. JIT compilers also exist for other platforms such as the x86 [11] and Alpha [42] Adaptive or dynamic compilers such as HotSpot [30] are more efficient than JITs since they selectively compile methods based on profiling the program execution. Offline compilers such as NET [34] and Vortex [39] compile the bytecodes to native code. The translation scheme of Caffeine system which also compiles bytecode to native code is described in [36] A mapping of the JVM 27 stack model to a register computation model performed during translation by Caffeine was observed to result in significant ....
Jeffrey Dean, Greg DeFouw, David Grove, Vass Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of OOPSLA'96, 1996.
....thus improving the performance of the program. The control flow simplification performed by specialization enables further optimizations on data structures. Object inlining is an instance of such optimizations that we will consider in the future. Optimization of control flow. The Vortex compiler [10] implements optimizations similar to those performed by program specialization. Vortex is based on static, global analyses, complemented by an automated profiling system. Profiling information guides aggressive optimizations. These optimizations eliminate virtual calls and specialize methods ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: an optimizing compiler for object-oriented languages. In OOPSLA' 96 Conference, pages 93--100, San Jose (CA), October 1996.
....of the language. However, they only distinguish between functions being totally free of side eoeects and having some side eoeects. We have not seen any other side eoeect analysis that use the special properties of objectoriented languages. 15.3 Java Byte Code Compilers The Vortex compiler [15] compiles Java, Java Byte Code, C , Cecil, Modula 3 and Smalltalk to C or native code. Vortex does a wide range of inter procedural analyses, including static class analysis, class hierarchy analysis, receiver class prediction, selective procedure specialization, alias analysis, and static ....
....handle other languages than Java Byte Code. Otherwise, only small amounts of abstraction are necessary. The analyses and optimizations that we have implemented are only a few of those that might be used, and not those that yield the best results for object oriented languages. The Vortex compiler [15] implements some more complex optimizations, such as method inlining and receiver class prediction. These optimizations have more impact on object oriented programs. Combining these with the side eoeect analysis should yield substantial improvements. Further work could include implementing some of ....
[Article contains additional citation context not shown here]
Jeoerey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. VORTEX: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96 Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 31, 10 of ACM SIGPLAN Notices, pages 83100. ACM, October 1996.
....compaction levels than our system. They are however programming language specific and start from programs containing the whole run time environment of Self applications. For Java [21] similar results to ours are achieved, but again the techniques used are language specific. MLD [9] and Vortex [6] are two whole program optimizers for object oriented languages. They focus on reducing the overhead created by virtual method invocation. Looking at the whole class hierarchy of a program, some of the virtual method invocations can be replaced by direct ones. These systems also reduce the ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and G. Chaimber. Vortex: an optimizing compiler for object-oriented languages. In Proc. OOPSLA'96, pages 83--100, San Jose, California, October 1996.
....language compilation, functional languages and classical compilers. That work forms a background for the techniques described later in this thesis. 2. 4 Related Work This thesis is largely based on combining the work that has been done on compiler optimizations for object oriented languages [1, 28, 27, 28, 36, 37, 55, 64], functional languages [42, 54, 56, 66, 68] and compilers for vector and parallel machines [40, 48, 69] as 16 well as some techniques from classical scalar compilers [14, 30] The unique paradigm compiling for the Internet that Java has imposed on compiler research has allowed us to explore ....
....Internet that Java has imposed on compiler research has allowed us to explore these techniques, modify, extend and apply them in this new environment. We will now address some of the work in these areas that is closely related to this thesis. Object Oriented Languages Compilation Dean et al. [36, 37, 27] have developed a whole program optimization framework for object oriented languages. They have proposed several optimization and analysis techniques for compilation of such languages when the whole program is known at the compile time. This thesis is concentrated on further developing some of ....
Jeffrey Dean, G. DeFouw, David Grove, V. Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages and Applications, San Jose, California, October 1996.
....in stack cutting [12] In handling an exception, stack cutting does not have to do anything in the mapping step, while it simply scans the try list in the searching step. Thus, stack cutting allows faster exception handling than stack unwinding. Stack cutting is typically implemented with setjmp [12, 22, 20], exception handler registration [38] or structured exception han normal path execution exception handling path execution try nonvolatile registers (NVRs) sync try search PCto try map class filter try search NVR restore locked objects release Unwinding no callee save no ....
....mechanisms, both those based on programming languages and those based on operating systems. Implementation techniques of programming language based exception handling mechanisms are described for CLU [49] Modula 2 [25] C [43, 12, 55, 20] a dialect of C [28] and intermediate languages [22, 53]. Ramsey and Jones [53] categorize these techniques into two, stack unwinding and stack cutting, based on whether or not the stack is walked. We use these terminologies in this paper. Drew et al. 25] show that unwinding the stack is expensive if the normal path is highly optimized and contains ....
Dean, J., DeFouw, G., Grove, D., Litvinov, V., and Chambers, C. Vortex: an optimizing compiler for object-oriented languages. In Proceedings of the 7th annual conference on Object-oriented programming systems, languages and applications (OOPSLA-
....the heap, the percent of instructions that are memory loads from the stack and global area (other) and the number of method invocations executed at run time. None of these programs were written to be benchmarks, but other researchers have used several of them in their studies [Fernandez 1995; Dean et al. 1996]. Table V contains the data on the original programs (i.e. without the optimizations proposed here) but with GCC s standard optimizations turned on, which include register allocation and instruction scheduling. Due to a compiler bug in GCC, we were unable to perform the standard optimizations on ....
DEAN, J., DEFOUW, G., GROVE, D., LITVINOV, V., AND CHAMBERS, C. 1996. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the ACM SIGPLAN '96 Conference on Object-Oriented Programming Systems, Languages, and Applications. San Jose, CA, 83--100.
....in these programs; thus, compiled Java programs suffer from the same latency problems as imperative languages. This paper includes a new data flow analysis for discovering accesses to linked data structures. We implement our analysis in Vortex, an optimizing compiler for objectoriented programs [9]. We use our linked structure analysis to identify opportunities for the compiler to insert prefetches of objects. Our first prefetching implementation, greedy prefetching, prefetches directly connected object(s) during each iteration of a loop or recursive function call. We also present an ....
....tolerance by prefetching further ahead in the linked structure, and, thus, increasing the amount of work between the prefetch and the demand request of an object. We implement our data flow analysis and software prefetching schemes in Vortex, an optimizing compiler for object oriented programs [9]. Vortex is a whole program optimizer that performs high level optimizations targeted to object oriented languages such as intraprocedural class analysis and class hierarchy analysis. Vortex implements call graph construction algorithms and uses the call graph to drive a general interprocedural ....
[Article contains additional citation context not shown here]
J. Dean, G. DeFouw, D. Grove, V. Litinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications, pages 83--100, Oct. 1996.
....communication is optimized. 5. The object code is generated. Throughout the rest of this section, the terms evaluation and execution are used interchangeably. 68 Yariv Aridor, Shimon Cohen and Amiram Yehudai 2. 1 Type inference Inferring the types of object variables during compile time (Dean et al. 1996, Plevyak and Chien 1995) is essential for carrying out static method dispatching and interprocedural strictness analysis (see below) A complete type inference has not yet been implemented. Currently, we exploit only the information about method invocations for which there is a single alternative ....
Dean, J., DeFouw, G., Grove, D., Litvinov, V. and Chambers, C. (1996) Vortex: An optimizing compiler for object-oriented languages. In Proceeding of the 11th Conference on Object-Oriented Programming Systems, Languages and Applications, pp. 83--100.
.... Several authors have investigated whole program optimization at compile time: examples include the FortranD compiler and its successors, developed at Rice University [23] which targets parallel and distributed scientific programs; and the Vortex compiler for object oriented languages [15], which targets a number of object oriented languages. There are three primary differences between this work and ours. The first is that, as compilers, they target a particular language or family of languages; by contrast, alto is able to process code generated from a variety of languages, ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers, "Vortex: An Optimizing Compiler for ObjectOriented Languages", Proc. OOPSLA'96: Eleventh Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, Oct. 1996, pp. 83--100.
.... DetectUnusedDataMembers(Program P ) 2] begin [3] mark all data members in P initially as dead ; 4] mark all classes in P initially as not visited ; 5] construct the call graph G of program P ; 6] for each statement s in each function f in call graph G do [7] call ProcessStatement(s) [8] end for [9] for each union construct U in P do [10] if (at least one of the members of U is marked live ) then [11] call MarkAllContainedMembers(U) 12] end if [13] end for [14] end; 15] procedure ProcessStatement(Statement s) 16] begin [17] for each expression e in statement s do ....
....classes for which a constructor call occurs in the application) and the number of data members that occur in used classes. Several of these benchmarks have been studied previously in the literature for other purposes (e.g. experimentation with virtual function call elimination algorithms) [5, 9, 8, 6, 12, 3]. The programs of Table 1 range from 606 to 58,296 lines of code, and contain between 10 to 268 classes, 5 and between 22 and 1052 data members. Some benchmarks (e.g. taldict, simulate, and hotwire) use class libraries that have been developed independently from the application. Several other ....
Dean, J., DeFouw, G., Grove, D., Litvinov, V., and Chambers, C. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996 ACM Conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA'96) (San Jose, CA, Oct. 1996), pp. 83--103. 8
....Ishizaki et al. have studied a wide variety of devirtualization techniques for a Java JIT compiler [25] Their study shows the promise of combining static techniques like type analysis and dynamic techniques. Our work builds on the Soot framework under development at McGill. Harissa [27] Vortex [13] and JAX [35] are alternative implementation frameworks. 6. CONCLUSIONS AND FUTURE WORK In this paper we have presented a new technique that can be used to estimate the possible types of receivers for virtual method and interface calls in Java. Two variations of the technique were presented, ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. VORTEX: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96 Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 31 of ACM SIGPLAN Notices, pages 83-100. ACM, Oct. 1996.
....for this test is given in the appendix. This encoding is trivial to compute. Its main drawback is that it has quadratic space requirements. For large programs, half megabyte matrices are easily conceivable. Nevertheless, the simplicity of the binary matrix has motivated its use in practice [11] [4]. The other constant time algorithms presented in this paper use encodings which can be viewed as compressed forms of the binary matrix. The constraint on the compression is that very fast random access to elements must be guaranteed. In this view, the works on parse table optimization and ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proc. Conference on Object Oriented Programming Systems, Languages & Applications, OOPSLA'96. ACM Press, October 1996.
....predictors perform better in virtually all cases, with an average of 24.9 misprediction rate, compared to 28.1 for a standard BTB. Polymorphic branches occasionally switch their target but are often dominated by one most frequent target, a situation observed in object oriented programs [6][36]. But even with two bit counters BTB accuracy is quite poor, ranging from average misprediction ratios of 20 in OO programs to 1 In conditional branch predictors, the latter strategy is implemented with a two bit saturating counter (2bc) hence the name. For an indirect branch, one bit suffices ....
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. Proceedings of OOPSLA `96, San Jose, CA, October, 1996.
.... the percent of instructions that are memory loads from the heap, and the percent of instructions that are memory loads from the stack and global area (other) None of these programs were written to be benchmarks, but other researchers have used several of them in their studies [Fernandez 1995; Dean et al. 1996]. Table VI contains the data on 6 One of the benchmarks, k tree, has object types in generic modules. We only count the number of static object types and not the number of times an object type is instantiated. Table V. Description of Benchmark Programs Name Description format Text formatter ....
DEAN, J., DEFOUW, G., GROVE, D., LITVINOV, V., AND CHAMBERS, C. 1996. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the ACM SIGPLAN '96 Conference on Object-Oriented Programming Systems, Languages, and Applications. San Jose, CA, 83--100.
.... such as receiver prediction [18, 20] Since techniques such as inlining and specialization for types (customization [7] and method argument specialization[10] can cause code explosion, the same proling information is used to focus these optimizations on the critical parts of the program [11, 20]. The optimizations ooeered by such systems depend on the accuracy of the analyses and proling system. As a result, the level of optimization is diOEcult to predict, and structural overheads are not easily detected. By contrast, specialization is parameterized by information provided by the ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: an optimizing compiler for object-oriented languages. In OOPSLA' 96 Conference, pages 93100, San Jose (CA), October 1996.
....expression is = x y 5 . The Ohio file version is a prefix expression with two differences. First, all subexpressions are parenthesized to improved human readability. Second, variable names are listed as a symbol table entry number in brackets. The resulting expression in the Ohio file is ( [ 3 ] (b [ 2 ] LI 5 ) The operator became b since a by itself is ambiguous. LI means Literal Integer. After the parser sees the LI string it expects an integer to be the next token. The Ohio component proved to be a useful component of the NPIC system. Although it was created to ....
....in designing their intermediate representation for WPO, a Whole Program Optimizer, written in Modula 3. Although the design of WPO is similar to the design of Dakota CFG nodes, it does not appear to use analysis subclassing or the abstract factory pattern used in Dakota. Like NPIC, the Vortex [3] and SUIF [25] compilers are written in an object oriented language, Cecil and C , respectively. Although both Vortex and SUIF provide analysis independent intermediate representations they do not use the multiple inheritance based scheme used in Dakota. Instead these systems provide the ....
[Article contains additional citation context not shown here]
Jeffrey Dean, Greg DeFouw, David Grove, Vass Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 83--100, October 1996.
....optimizations. The simplest of these is Toba[18] which produces unoptimized C code and relies on GCC to produce the native code. Slightly more sophisticated, Harissa[17] also produces C code but performs some method devirtualization and inlining first. The most sophisticated systems are Vortex[7] and Marmot[10] Vortex is a native compiler for Cecil, C and Java, and contains a complete set of optimizations. Marmot is also a complete Java optimization compiler and is SSA based. There are also numerous commercial Java native compilers, such as the IBM (R) High Performance Compiler for ....
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. VORTEX: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96 Conference on ObjectOriented Programming Systems, Languages, and Applications, volume 31 of ACM SIGPLAN Notices, pages 83--100. ACM, October 1996.
....2 or 3 targets according to the analyses and the pro le. This is of interest as it is possible to optimize polymorphic calls that have only a few possible targets by introducing a switch into the code that would call the appropriate method (statically resolved) based on the class of the receiver[22]. Column 3 shows the percentage of calls that are unresolved by the analyses and have more than 3 possible targets, along with the pro le number for such polymorphic calls. The nal column shows the average number of methods that could be called from each call site according to each analysis, and ....
Jerey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. VORTEX: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96 Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 31 of ACM SIGPLAN Notices, pages 83-100. ACM, October 1996.
....designing an analysis that works speci cally for Java, we work with a three address representation of Java bytecode, we transform bytecode to bytecode, and we gave measurements with respect to CHA and RTA. Our work builds on the Soot framework under development at McGill. Harissa [21] and Vortex [12] are alternative implementation frameworks. 6 Conclusions and Future Work In this paper we have presented a new technique that can be used to estimate the possible types of receivers for virtual method and interface calls in Java. Two variations of the technique were presented, variable type ....
Jerey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. VORTEX: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96 Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 31 of ACM SIGPLAN Notices, pages 83100. ACM, Oct. 1996.
No context found.
Jeffrey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In OOPSLA'96 Conference Proceedings, San Jose, CA, October 1996.
No context found.
Jeffrey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), San Jose, CA, October 1996.
No context found.
Jerey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996.
....optimizations ranges from 3 to 104 seconds, with an average of 28 seconds. 5. 2 Execution Engine To run Cobalt optimizations without first rewriting them in some other language, we have implemented an execution engine for Cobalt as an analysis in the Whirlwind compiler, a successor to Vortex [4]. This analysis stores at each program point a set of substitutions, with each substitution representing a potential witnessing region. Consider a forward optimization: s # filtered through choose The flow function for our analysis works as follows. First, if the statement being processed ....
Je#rey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An Optimizing Compiler for ObjectOriented Languages. In Proc. of the 11th Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1996.
....super analysis terminates, is sound if the individual analyses are sound, and under a certain monotonicity condition is guaranteed to produce no worse results than running arbitrarily iterated sequences of the individual analyses. We have implemented our framework in the Vortex compiler [13] and more recently in the Whirlwind compiler. Section 7 provides experimental results showing that our framework can combine modular analyses automatically and profitably with low compile time overhead. 2. OVERVIEW OF OUR APPROACH This section highlights the key ideas of our approach by sketching ....
....sub graph generated by constant folding, and the sub graph generated by CSE) 7. EXPERIMENTAL RESULTS In this section we provide experimental results showing that our approach for communication between analyses is useful in practice. We have collected performance numbers for the Vortex compiler [13] using several Cecil [5] benchmarks. The individual analyses under consideration are: Edges are never removed by the transformation function T . When a node is replaced by an empty subgraph, the adjacent edges are disconnected from the node, but remain in the graph. As a result edges in the ....
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In OOPSLA'96 Conference Proceedings, pages 83-- 100, October 1996.
....language features such as exceptions, synchronization, and memory consistency. The abstract locations introduced in section 3 can be viewed as an generalization of type based alias analysis to also deal with exceptions. Most previous compilers for object oriented languages (e.g. [7]) modeled exceptions as branch instructions that terminate basic blocks, and hence did not have to deal with dependence analysis for exceptions. In contrast, our compiler builds extended basic blocks that can include multiple PEIs within the same basic block. 6 Conclusions and Future Work In ....
Jeffrey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), San Jose, CA, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An Optimizing Compiler for ObjectOriented Languages. In Proc. of the 11th Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1996.
.... problem [Cook 90] We have been developing and experimenting with Cecil, an expressive and practical object oriented language based on multimethods [Chambers 92, Chambers 95] We have gained practical experience with programming in Cecil by writing an 80,000 line optimizing compiler, Vortex [Dean et al. 96] We recently presented a static type system, efficient typechecking algorithm, and module system for Cecil [Chambers Leavens 95] As part of our efforts to formalize the module system and generalize the underlying object model, we are designing a core language, BeCecil, that includes ....
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In Proceedings of the 1996 ACM Conference on ObjectOriented Programming Systems, Languages, and Applications (OOPSLA '96), pp. 83-100, San Jose, CA, October 1996.
No context found.
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In Proceedings of the 1996 ACM Conference on ObjectOriented Programming Systems, Languages, and Applications (OOPSLA '96), San Jose, CA, October 1996.
....subtype declarations, and multi methods. The authors of GJ report on the positive experience with their 20,000 line GJ compiler (written in GJ, too) which extensively uses parameterization for container classes and the Visitor pattern. The 125,000 line Vortex compiler written in Cecil [Dean et al. 96] also uses parameterization extensively for container classes as well as in heavily parameterized optimization and interprocedural analysis frameworks [Litvinov 98] Since Cecil allows additions of new multimethods and new branches of multi methods to the existing code, there is no need to use ....
Jeffrey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In OOPSLA'96 Conference Proceedings, San Jose, CA, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Livinov, and C. Chambers. "Vortex: An optimizing compiler for object-oriented languages" ACM SIGPLAN Notices, 31(10):83-- 100, Oct. 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In ACM Conference on Object Oriented Programming Styles, 1996.
No context found.
Je#rey Dean, Greg DeFouw, David Grove, Vassily Livinov, and Craig Chambers. Vortex: an optimizing compiler for object-oriented languages. ACM SIGPLAN Notices, 31(10):83--100, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 83--100, San Jose, CA, Oct. 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Livinov, and C. Chambers. "Vortex: An optimizing compiler for object-oriented languages" ACM SIGPLAN Notices, 31(10):83-- 100, Oct. 1996.
No context found.
Je#rey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In OOPSLA Proceedings, 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proc. Conference on Object Oriented Programming Systems, Languages & Applications, OOPSLA'96.ACM Press, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and G. Chaimber. Vortex: an optimizing compiler for object-oriented languages. In Proc. 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An Optimizing Compiler for Object-Oriented Languages. In Proc. of the 11th Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In OOPSLA '96, October 1996.
No context found.
J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for objectoriented languages. In Proceedings of the Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA '96), 1996.
No context found.
Dean, J., G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In OOPSLA'96, October 1995, pp. 83--100.
No context found.
Je#rey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings OOPSLA '96, ACM SIGPLAN Notices, pages 83--100, October 1996. Published as Proceedings OOPSLA '96, ACM SIGPLAN Notices, volume 31, number 10.
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