Gaining the code re-use advantages of object oriented programming requires dynamic function binding, which allows a new subclass to override a function of a superclass. Dynamic binding is obtained in C++ through the use of virtual functions. Unfortunately, virtual functions have two negative impacts on performance. First, they are traditionally compiled into indirect call instructions, which take longer to execute than direct call instructions. Second, it is difficult for the compiler to perform optimization since summary information from called procedures is hard or even impossible to obtain. The net effect is that C++ programmers avoid the use of virtual functions. We present a new optimization that (1) removes the indirect function calls...
Abstract. Optimizing compilers have a long history of applying loop transformations to C and Fortran...
Modern virtual machines for object-oriented machines use dynamic (run-time) compilation in order to ...
Dynamic binding in object-oriented languages is perhaps the most important semantic aspect of these ...
1 Introduction A major advantage of object-oriented languages is abstraction. The most important lan...
Virtual functions make code easier for programmers to reuse but also make it harder for compilers to...
For many software projects, it is desirable to use the features of an object-oriented programming la...
Inheritance together with virtual functions in C++ provides programmers much polymorphism, an import...
Global virtual functions (GVFs) are introduced as C++ functions defined at global or namespace scope...
In this dissertation, we show how a relatively simple and extremely fast interprocedural optimizatio...
Application codes reliably under perform the advertised performance of existing architectures, compi...
C++ has gained broad acceptance as an objectoriented evolutionary extension to the C language, but i...
C++ has gained broad acceptance as an objectoriented evolutionary extension to the C language, but i...
Polymorphic types, higher order functions, and partial application are common features in functional...
The structure of object-oriented programs differs from that of procedural programs, requiring specia...
Class-specific optimizations are compiler optimizations specified by the class implementor to the co...
Abstract. Optimizing compilers have a long history of applying loop transformations to C and Fortran...
Modern virtual machines for object-oriented machines use dynamic (run-time) compilation in order to ...
Dynamic binding in object-oriented languages is perhaps the most important semantic aspect of these ...
1 Introduction A major advantage of object-oriented languages is abstraction. The most important lan...
Virtual functions make code easier for programmers to reuse but also make it harder for compilers to...
For many software projects, it is desirable to use the features of an object-oriented programming la...
Inheritance together with virtual functions in C++ provides programmers much polymorphism, an import...
Global virtual functions (GVFs) are introduced as C++ functions defined at global or namespace scope...
In this dissertation, we show how a relatively simple and extremely fast interprocedural optimizatio...
Application codes reliably under perform the advertised performance of existing architectures, compi...
C++ has gained broad acceptance as an objectoriented evolutionary extension to the C language, but i...
C++ has gained broad acceptance as an objectoriented evolutionary extension to the C language, but i...
Polymorphic types, higher order functions, and partial application are common features in functional...
The structure of object-oriented programs differs from that of procedural programs, requiring specia...
Class-specific optimizations are compiler optimizations specified by the class implementor to the co...
Abstract. Optimizing compilers have a long history of applying loop transformations to C and Fortran...
Modern virtual machines for object-oriented machines use dynamic (run-time) compilation in order to ...
Dynamic binding in object-oriented languages is perhaps the most important semantic aspect of these ...