The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object structure in the Emerald system
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Inheritance and subtyping in a parallel object-oriented language
European conference on object-oriented programming on ECOOP '87
EMERALD: An object-based language for distributed programming
EMERALD: An object-based language for distributed programming
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The annotated C++ reference manual
The annotated C++ reference manual
Data abstraction and object-oriented programming in C++
Data abstraction and object-oriented programming in C++
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Object-oriented type inference
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Project Oberon: the design of an operating system and compiler
Project Oberon: the design of an operating system and compiler
Unboxed objects and polymorphic typing
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Precise concrete type inference for object-oriented languages
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Thread scheduling for cache locality
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
Automatic inline allocation of objects
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Type Directed Cloning for Object-Oriented Programs
LCPC '95 Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Extended SSA numbering: introducing SSA properties to languages with multi-level pointers
CASCON '96 Proceedings of the 1996 conference of the Centre for Advanced Studies on Collaborative research
Supporting High Level Programming with High Performance: The Illinois Concert System
HIPS '97 Proceedings of the 1997 Workshop on High-Level Programming Models and Supportive Environments (HIPS '97)
Optimization of object-oriented and concurrent programs
Optimization of object-oriented and concurrent programs
A core library for robust numeric and geometric computation
SCG '99 Proceedings of the fifteenth annual symposium on Computational geometry
Removing unnecessary synchronization in Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Field analysis: getting useful and low-cost interprocedural information
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
An automatic object inlining optimization and its evaluation
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Creating and preserving locality of java applications at allocation and garbage collection times
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Run-time evaluation of opportunities for object inlining in Java
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Towards Automatic Specialization of Java Programs
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Jumping to the Meta Level: Behavioral Reflection Can Be Fast and Flexible
Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
Fast Escape Analysis and Stack Allocation for Object-Based Programs
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Automatic program specialization for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Identifying opportunities for automatic remote field cloning
CASCON '04 Proceedings of the 2004 conference of the Centre for Advanced Studies on Collaborative research
Quantifying the performance of garbage collection vs. explicit memory management
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automatic feedback-directed object inlining in the java hotspot™ virtual machine
Proceedings of the 3rd international conference on Virtual execution environments
Automatic array inlining in java virtual machines
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Automatic feedback-directed object fusing
ACM Transactions on Architecture and Code Optimization (TACO)
Refactoring techniques for aggressive object inlining in Java applications
Automated Software Engineering
Improving shared cache behavior of multithreaded object-oriented applications in multicores
Proceedings of the International Conference on Computer-Aided Design
Hi-index | 0.00 |
Object-oriented languages such as Java and Smalltalk provide a uniform object reference model, allowing objects to be conveniently shared. If implemented directly, these uniform reference models can suffer in efficiency due to additional memory dereferences and memory management operations. Automatic inline allocation of child objects within parent objects can reduce overheads of heap-allocated pointer-referenced objects.We present three compiler analyses to identify inlinable fields by tracking accesses to heap objects. These analyses span a range from local data flow to adaptive whole-program, flow-sensitive inter-procedural analysis. We measure their cost and effectiveness on a suite of moderate-sized C++ programs (up to 30,000 lines including libraries). We show that aggressive interprocedural analysis is required to enable object inlining, and our adaptive inter-procedural analysis [23] computes precise information efficiently. Object inlining eliminates typically 40% of object accesses and allocations (improving performance up to 50%). Furthermore,