| U. P. Schultz et al. H OLZLE,U.AND UNGAR, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI'94). ACM SIGPLAN Notices, 29(6), New York, NY, USA, 326-- 336. |
....characteristic of past dynamic analysis techniques is that they are limited in scope because they are usually performed on a single method (or a small number of methods) at a time. Early forms of dynamic optimization include customization [8] of methods and the addition of guards (runtime tests) [16] to enable optimization of code that is specialized to a likely target of an indirect call. More recent approaches enable analyses to be performed dynamically (while the program is executing) and optimistically (by ignoring feasible execution paths that have not been taken in the current program ....
U. Holzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 326-336, June 1994. SIGPLAN Notices, 29(6).
....Minv Minv RLE Minv RLE Inlining Fig. 26. Cumulative impact of optimizations. Figure 25 illustrates that most run time polymorphic method invocations arise because more than one type of object is stored in a heap slot. Two techniques, explicit type test [Calder and Grunwald 1994; Holzle and Ungar 1994] and cloning or splitting combined with aggressive alias analysis, may be able to resolve these method invocations. Merges in control are another important cause of the run time polymorphism, especially for trestle, and can be resolved by code splitting and cloning [Chambers and Ungar 1989; 1991; ....
....and Chien s analyses are more powerful than ours, since they are context sensitive (polyvariant) They are also more complex and expensive. Polyvariant analyses can be used in conjunction with transformations to resolve polymorphic method invocations. Chambers [1992] Calder and Grunwald [1994] Holzle and Ungar [1994], Dean et al. 1994] and Grove et al. 1995] describe transformations for converting polymorphic method invocations to direct calls, which we did not perform. Plevyak and Chien discuss reasons for loss of type information, but do not present any results. We present detailed data, giving reasons ....
H OLZLE, U. AND UNGAR, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation. ACM, 326--336.
....extra instructions into the code to ensure safety, instructions that take time to process. Interpreters (even those that use just in time compilation techniques) have both translation and run time overhead, causing interpreted code to run more slowly than compiled code, by two to one hundred times [May87, Hlze94]. The decision to use a hardware technique or a software technique is, as a first approximation, driven by the amount of code run between domain crossings. If little code is run between domain crossings, a software technique (with its lower domain crossing cost) can be more efficient. If much ....
....code rather than interpreting code directly. Code compiled by a JIT has been shown to be much faster than interpreted code; for example, Hlze et al. showed that a JIT for the Self programming language 10 generated code that ran only two to ten times slower than conventionally compiled code [Hlze94] (as compared with interpreted code, which runs ten to one hundred times slower than conventionally compiled code) A JIT has several disadvantages over a conventional compiler, however. First, it is usually working from an intermediate form that does not have as much high level information about ....
[Article contains additional citation context not shown here]
Hlze, U., Ungar, D., "Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback," Proceedings of the 1994 SIGPLAN Conference on Programming Language Design and Implementation, Orlando, FL (June 1994).
....can be used to: 1) compact applications by removing methods that are never called, and (2) improve the eciency and accuracy of subsequent interprocedural analyses. Of course, virtual method resolution is not a new problem. It has been widely studied for a variety of object oriented languages[7, 8, 9, 10, 12, 14, 18, 16, 21, 24, 28, 29, 30]. The focus of this paper is the development and evaluation of a new simple and inexpensive technique for resolving virtual method calls in Java. A main design objective was to develop a technique that would produce a solution in one iteration and thus scales linearly in the size of the program. ....
U. Holzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the Conference on Programming Language Design and Implementation, pages 326-336, New York, NY, USA, Jun. 1994. ACM Press.
....method invocation sites corresponding to the method invocations represented by the bar. Figure 24 illustrates that most run time polymorphic method invocations arise because more than one type of object is stored in a heap slot. Two techniques, explicit type test [Calder and Grunwald 1994; Holzle and Ungar 1994] and cloning or splitting combined with aggressive alias analysis, may be able to resolve these method invocations. Merges in control are another important cause of the run time polymorphism, especially for trestle, and can be resolved by code splitting and cloning [Chambers and Ungar 1989; Hall ....
....and Chien s analyses are more powerful than ours since they are context sensitive (polyvariant) They are also more complex and expensive. Polyvariant analyses can be used in conjunction with transformations to resolve polymorphic method invocations. Chambers [1992] Calder and Grunwald [1994] Holzle and Ungar [1994], 9 method resolution and type inference are terms that have been used to describe the same kinds of analysis in object oriented languages. Using Types to Analyze and Optimize Object Oriented Programs 37 Dean et al. 1994] and Grove et al. 1995] describe transformations for converting ....
H OLZLE, U. AND UNGAR, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation. ACM, 326--336.
....60 70 80 90 100 format dformat write pickle slisp dom k tree postcard m2tom3 m3cg trestle Unavailable Control merges Data merges 4 3 0 1 3 8 0 3 22 19 Fig. 24. Polymorphic method invocations 30 Delta Amer Diwan et al. explicit type test [Calder and Grunwald 1994; Holzle and Ungar 1994] and cloning or splitting combined with aggressive alias analysis, may be able to resolve these method invocations. Merges in control are another important cause of the run time polymorphism, especially for trestle, and can be resolved by code splitting and cloning [Chambers and Ungar 1989; Hall ....
....since they are context sensitive (polyvariant) They are also more complex and expensive. Polyvariant analyses can be used in conjunction with transformations to resolve polymorphic method invocations. Chambers [Chambers 1992] Calder and Grunwald [Calder and Grunwald 1994] Holzle and Ungar [Holzle and Ungar 1994], Dean et al. Dean et al. 1994] and Grove et al. Grove et al. 1995] describe transformations for converting method invocations to direct calls. We focus solely on analysis here. Plevyak and Chien discuss reasons for loss of type information, but do not present any results. We present detailed ....
H olzle, U. and Ungar, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation. ACM, 326--336.
....a given call site [Grove et al. 1995] This information is then used to drive optimizations that inline methods based on predictions about the class of the receiver. Dynamic type feedback is designed to direct the compiler s attention to parts of the program that would benefit from optimization [Holzle and Ungar 1994]. Once a method has been optimized, the generated code continues to collect data that can be used to drive further optimizations and reverse poor implementation choices. In this sense, dynamic feedback is similar to dynamic type feedback in that both techniques generate code that dynamically ....
H OLZLE, U. AND UNGAR, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Program Language Design and Implementation. ACM Press, New York, NY, 326--336.
.... makes it possible to perform optimizations across the boundaries of independently distributed software components and thereby reduce the performance penalty paid for modularization.This approach has been validated in previous work and is now common practice [Deutsch and Schi#man 1984; Franz 1994; Holzle 1994; Holzle and Ungar 1996; Adl Tabatabai et al. 1998] This paper presents a system that goes another step further, achieving a yet again better match between the software and the hardware by re evaluating the bindings between software and hardware at regular intervals instead of permanently fixing ....
.... several similar research projects were initiated with the explicit goal of making dynamic dispatches faster, reducing the overhead of garbage collection, and minimizing the overhead of thread synchronization; among them are the Smalltalk 80 system [Deutsch and Schi#man 1984] the Self 93 system [Holzle 1994; Holzle and Ungar 1996] the Continuous Program Optimization: A Case Study 35 HotSpot system, the Intel VTune system [Adl Tabatabai et al. 1998] and the Jalapeno system [Alpern et al. 1999; Alpern et al. 1999] Typical optimizations performed by these systems include run time type feedback ....
[Article contains additional citation context not shown here]
H olzle, U. and Ungar, D. 1994. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI). Orlando, Florida, 326--336.
.... branch prediction (and thereby instruction pipelining) and inhibit inlining, blocking subsequent traditional intra procedural compiler optimizations [6, 14] Many compilers go to great lengths to eliminate virtual calls [1, 12, 13, 27] some even make use of constrained specialization techniques [10, 20], such as customization [7] Standard compiler optimizations rely on static analysis; when the method referenced by a method call can be determined statically, the method call can be implemented using a direct call. Calls to inherited methods can often be implemented as direct calls, because the ....
....callees is limited, some compilers replace a virtual call by a conditional that selects at call time which callee to invoke with a direct call. This transformation can be directed using automatically gathered prole information, and enables further optimizations through inlining or customization [17, 20]. However, the cost of a runtime decision remains, and the control AEow is only somewhat simplied. These observations are illustrated by the the benchmarks reported in Section 6. Using state of the art Java compiler technology, we found that programs written using design patterns that operate ....
[Article contains additional citation context not shown here]
U. H#lzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the Conference on Programming Language Design and Implementation, pages 326336, New York, NY, USA, June 1994. ACM Press.
....prior specific permission and or a fee. Request Permissions from Publications Dept, ACM Inc. Fax 1 (212) 869 0481, or permissions acm.org . well known applications of dynamic code generation is by interpreters that compile frequently used code to machine code and then execute it directly [2, 6, 8, 13]. Hardware simulators and binary emulators can use the same techniques to dynamically translate simulated instructions to the instructions of the underlying machine [4, 22, 23] Runtime partial evaluation also uses dynamic code generation in order to propagate runtime constants to feed ....
....implementation details and Section 6 reports on our experiences using VCODE. Finally, we conclude in Section 7. 2 Related Work Dynamic code generation has a long history. It has been used to increase the performance of operating systems [20] windowing operations [18] dynamically typed languages [2, 13, 6], simulators [23] and matrix manipulations [10] In [14] Keppel, Eggers and Henry survey many advantageous uses for dynamic code generation. ParcPlace sells an implementation of Smalltalk 80 that uses a dynamic code generator for SPARC, Motorola 68k, PowerPC, Intel x86, and other architectures. ....
[Article contains additional citation context not shown here]
U. H olzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of PLDI '94, pages 326--335, Orlando, Florida, June 1994.
....inheriting the method. This process is referred to as customization. This allows the compiler to statically bind the specialized functions, and then perform optimizations on them. The drawback of that method is that the compile time as well as code space requirements are increased. H olzle et al. [23] implemented a run time type feedback system. Using the type feedback information, the compiler can then inline any dynamically dispatched function calls, specializing the dispatch based on the frequently encountered object types. The authors implemented their system in Self [24] which ....
....or C. Dean et al. [13, 21] extend the approach of customization by specializing only those cases where the highest benefit can be achieved. Selective specialization uses a runtime profile to determine exactly where customization would be most beneficial. What sets this apart from type feedback [23] is knowledge of the formal parameters, which allows for additional optimizations. Richardson [32] studied the potential performance gain due to replacing a complex instruction with trivial operands, with a trivial instruction. He profiled the operands of arithmetic operations looking for trivial ....
[Article contains additional citation context not shown here]
U. H¨olzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the SIGPLAN'93 Conference on Programming Language Design and Implementation, pages 326--336. ACM, June 1994.
....explained by the removal of the reflective patch. The numbers in Table 2 are important beyond indicating type inference precision. A compiler based on type inference compiles fewer methods if it uses CPA than any of the other algorithms (note: the current Self compiler does not use type inference [14]) Table 3 compares CPU times of the type inference algorithms, measured on a 50 MHz SparcStation 10. To focus on the type inference algorithms per se, the time spent on grouping objects is omitted. CPA is consistently fastest, although in fairness, it is also the best tuned of the ....
Hölzle, U. and D. Ungar, Optimizing Dynamically-Dispatched Calls with Run-time Type Feedback. In PLDI'94, Conference on Programming Language Design and Implementation, p. 326-336, Orlando, Florida, June 1994.
....work. 6. 3 Other Dynamic Compilation Systems A number of previous systems have exploited dynamic compilation for run time performance or flexibility gains, for example, in graphics displaying [PLR85] operating system operations [PAAB 95,PMI88] and object oriented systems [DS84,CU89,HU94] However, these systems did not make dynamic compilation available to the programmer in more general scenarios. 7 Conclusions We have designed and built a dynamic compilation framework for general purpose imperative languages like C whose twin goals are high quality dynamically compiled code ....
U. Hölzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Conference on Programming Language Design and Implementation, June 1994.
.... was both general (because it accepted any regular expression) and fast (because it generated special purpose code quickly) Run time code generation also led to notable performance improvements in the areas of operating systems [4, 8, 26, 33, 36] method dispatch in object oriented systems [1, 9, 13, 20], instruction set simulation [10] graphics [14, 31] and many other applications. With the emergence of highly distributed and Web computing, more applications demand software that is general purpose, safe, and highly composable. This trend has prompted increased interest in runtime (and ....
H olzle, U., and Ungar, D. Optimizing dynamicallydispatched calls with run-time type feedback. In PLDI'94 Conference on Programming Language Design and Implementation (June 1994).
.... history [Keppel et al. 1991] It has been used to increase the performance of operating systems [Bershad et al. 1995; Engler et al. 1995; Pu et al. 1995; Pu et al. 1988] windowing operations [Pike et al. 1985] dynamically typed languages [Chambers and Ungar 1989; Deutsch and Schiffman 1984; Holzle and Ungar 1994], and simulators [Witchel and Rosenblum 1996; Veenstra and Fowler 1994] Earlier descriptions of the C language and tcc have been published elsewhere [Engler et al. 1995; Poletto et al. 1997] Other languages also provide the ability to create code at run time. For example, most Lisp dialects ....
H olzle, U. and Ungar, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of PLDI '94. Orlando, Florida, 326--335.
....the original C language, the syntactic sugar of lambda can remove awkwardness in some situations. 7 Related Work Dynamic code generation has a long history. It has been used to increase the performance of operating systems [3, 12, 27, 28] windowing operations [26] dynamically typed languages [6, 10, 17], simulators [30, 34] and matrix manipulations [13] C grew out of our previous work with DCG [13] an efficient, retargetable dynamic code generation system. C offers several improvements over DCG, but retains DCG s portability and flexibility. First, C provides a high level interface for code ....
U. H olzle and D. Ungar. Optimizing dynamicallydispatched calls with run-time type feedback. In Proceedings of the SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 326--335, Orlando, Florida, June 1994.
....in the interpreter. The intermediate code could also be used as the input to a runtime code generator. A reasonably fast interpreter runs 10 to 100 times more slowly than compiled code [MAY87] however, using incremental code generation techniques, performance can approach that of compiled code [HOLZE94]. Note that there is a flexible line between generating native code at load time as above and dynamically generating native code from interpreted code. Java is compiled to a compact byte code for the Java Virtual Machine. As interpreters go, the Java interpreter is fairly fast. In ....
Hölze, U., Ungar, D., "Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback", Proceedings of the 1994 SIGPLAN Conference on Programming Language Design and Implementation, Orlando, FL (June 1994).
No context found.
U. P. Schultz et al. H OLZLE,U.AND UNGAR, D. 1994. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI'94). ACM SIGPLAN Notices, 29(6), New York, NY, USA, 326-- 336.
....language, it performs all computation via message sending, and thus virtually every source code token represents a message send whose cost (both in terms of space and time) is highly variable. To improve its estimates, the SELF compiler examines previously compiled optimized code where available [Hlzle 1994]. Besides being more accurate than source level size estimates, this approach also has the advantage of considering a bigger picture: typically, the compiled method for a source method includes not only code for the method itself but also that of inlined calls. By examining previously compiled ....
....on the stack (i.e. towards a caller) to make sure the compiler would inline that send. However, such a system is probably unrealistic: to make its inlining decisions, the compiler needs much more context, such as the overall size of the caller when combined with other inlining candidates (see [Hlzle 1994]) Computing this context would be 9 Note that m.count and m.sends are based on incomplete data since our system does not count the invocations of optimized methods, nor does it use edge counts. 10 The values of the parameters that our current system uses are MinInvocations = MinSends = 10,000, ....
HLZLE, U. AND UNGAR, D. 1994. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. Proceedings of the SIGPLAN `94 Conference on Programming Language Design and Implementation, 326-336.
....integrated development environment and lack of static typing make it hard to deliver small applications. Recently, great strides have been made towards leveling the playing field for performance and error detection of dynamically typed object oriented languages [Deutsch Schiffman 1984, H lzle Ungar 1994, Agesen et al. 1993] Application size, however, has remained an obstacle preventing programmers from using dynamically typed exploratory programming environments. Without some sort of application extraction, even the simplest program such as Hello World has the same size as the entire ....
Hölzle, U., Ungar, D. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. In Proceedings of the ACM SIGPLAN `94 Conference on Programming Language Design and Implementation (PLDI), pages 326-336, Orlando, FL, June 1994.
No context found.
U. Hlzle and D. Ungar. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. Conference on Programming Language Design and Implementation, Orlando, FL, June 1994, pp. 326-335.
No context found.
U. Holze and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Conference on Programming Language Design and Implementation, pages 326--335, June 1994.
No context found.
U. Holzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of the ACM SIGPLAN'94 Conference on Programming Language Design and Implementation (PLDI), pages 326-336, Orlando, Florida, 20-24 June 1994. SIGPLAN Notices 29(6), June 1994.
No context found.
Hölze, U., Ungar, D., "Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback", Proceedings of the 1994 SIGPLAN Conference on Programming Language Design and Implementation, Orlando, FL (June 1994).
No context found.
U. Holxle and D. Ungar, "Optimizing Dynamically Dispatched Calls with Run-Time Type Feedback", Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 94), Orlando, June 1994.
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