Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Efficient implementation of lattice operations
ACM Transactions on Programming Languages and Systems (TOPLAS)
TS: an optimizing compiler for smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
Systems programming with Modula-3
Systems programming with Modula-3
Sharlit—a tool for building optimizers
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Concurrent aggregates: supporting modularity in massively parallel programs
Concurrent aggregates: supporting modularity in massively parallel programs
Reducing indirect function call overhead in C++ programs
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Precise concrete type inference for object-oriented languages
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Combining analyses, combining optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Simple and effective link-time optimization of Modula-3 programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
A type-based compiler for standard ML
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Reuse through inheritance: a quantitative study of C++ software
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Profile-guided receiver class prediction
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
A framework for selective recompilation in the presence of complex intermodule dependencies
Proceedings of the 17th international conference on Software engineering
Dynamic versus static optimization techniques for object-oriented languages
Theory and Practice of Object Systems - Special issue: type systems
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Simple and effective analysis of statically-typed object-oriented programs
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java Language Specification
The Java Language Specification
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Eliminating Virtual Function Calls in C++ Programs
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Towards reusable, extensible components
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Specifying representations of machine instructions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient type inclusion tests
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Call graph construction in object-oriented languages
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fast interprocedural class analysis
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Accurate indirect branch prediction
Proceedings of the 25th annual international symposium on Computer architecture
Comparing mostly-copying and mark-sweep conservative collection
Proceedings of the 1st international symposium on Memory management
Contraint-based polymorphism in Cecil: towards a practical and static type system
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A core library for robust numeric and geometric computation
SCG '99 Proceedings of the fifteenth annual symposium on Computational geometry
Efficient and precise modeling of exceptions for the analysis of Java programs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Representing Java classes in a typed intermediate language
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Efficient multiple and predicated dispatching
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A single intermediate language that supports multiple implementations of exceptions
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Practical virtual method call resolution for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Techniques for obtaining high performance in Java programs
ACM Computing Surveys (CSUR)
Exploring the Interaction between Java's Implicitly Thrown Exceptions and Instruction Scheduling
International Journal of Parallel Programming
Using types to analyze and optimize object-oriented programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Towards automatic construction of staged compilers
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composing dataflow analyses and transformations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A study of exception handling and its dynamic optimization in Java
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Alias analysis on type inference for class hierarchy in Java
ACSC '01 Proceedings of the 24th Australasian conference on Computer science
Open and closed scopes for constrained genericity
Theoretical Computer Science
Sifting out the mud: low level C++ code reuse
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Simple and effective array prefetching in Java
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
A Calculus for Compiling and Linking Classes
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Compiler Infrastructure for High-Performance Java
HPCN Europe 2001 Proceedings of the 9th International Conference on High-Performance Computing and Networking
Tranlating Java to C without Inserting Class Initialization Tests
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
LCPC '99 Proceedings of the 12th International Workshop on Languages and Compilers for Parallel Computing
Pragmatic Aspects of Reusable Program Generators
SAIG '00 Proceedings of the International Workshop on Semantics, Applications, and Implementation of Program Generation
Design and Correctness of Program Transformations Based on Control-Flow Analysis
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Towards Automatic Specialization of Java Programs
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Static Analyses for Eliminating Unnecessary Synchronization from Java Programs
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Stress-testing Control Structures for Dynamic Dispatch in Java
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
Comprehensive synchronization elimination for Java
Science of Computer Programming - Special issue on static analysis (SAS'99)
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
SOLAT - A Simple Object-Oriented Language Analyzing Tool
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
Traveling Through Dakota: Experiences with an Object-Oriented Program Analysis System
TOOLS '00 Proceedings of the Technology of Object-Oriented Languages and Systems (TOOLS 34'00)
Relaxed MultiJava: balancing extensibility and modular typechecking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Pragmatic aspects of reusable program generators
Journal of Functional Programming
Java-through-C Compilation: An Enabling Technology for Java in Embedded Systems
Proceedings of the conference on Design, automation and test in Europe - Volume 3
Oil and Water? High Performance Garbage Collection in Java with MMTk
Proceedings of the 26th International Conference on Software Engineering
Alias analysis in Java with reference-set representation for high-performance computing
International Journal of Parallel Programming
Automated soundness proofs for dataflow analyses and transformations via local rules
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Reflective Implementation of Java Multi-Methods
IEEE Transactions on Software Engineering
Automatically Reducing Repetitive Synchronization with a Just-in-Time Compiler for Java
Proceedings of the international symposium on Code generation and optimization
Adapting branch-target buffer to improve the target predictability of java code
ACM Transactions on Architecture and Code Optimization (TACO)
Incrementalization across object abstraction
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
EDO: Exception-directed optimization in java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Typed common intermediate format
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Harissa: a flexible and efficient java environment mixing bytecode and compiled code
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Toba: java for applications a way ahead of time (WAT) compiler
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Design and implementation of a comprehensive real-time java virtual machine
EMSOFT '07 Proceedings of the 7th ACM & IEEE international conference on Embedded software
Soot: a Java bytecode optimization framework
CASCON First Decade High Impact Papers
Loop transformations in the ahead-of-time optimization of java bytecode
CC'06 Proceedings of the 15th international conference on Compiler Construction
Open and efficient type switch for C++
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-oriented languages, but the degree to which these results are transferable to applications written in hybrid languages has been unclear. In part to answer this question, we have developed the Vortex compiler infrastructure, a language-independent optimizing compiler for object-oriented languages, with front-ends for Cecil, C++, Java, and Modula-3. In this paper, we describe the Vortex compiler's intermediate language, internal structure, and optimization suite, and then we report the results of experiments assessing the effectiveness of different combinations of optimizations on sizable applications across these four languages. We characterize the benchmark programs in terms of a collection of static and dynamic metrics, intended to quantify aspects of the "object-orientedness" of a program.