7,482 papers · page 274 of 375
Zhenyu Qian, Allen Goldberg, Alessandro Coglio
The Java Virtual Machine (JVM) has a novel and powerful mechanism to support lazy, dynamic class loading according to user-definable policies. Class loading directly impacts type safety, on which the security of Java applications is based. Conceptual bugs in the loading mechanism…
Derek Rayside, Gerard T. Campbell
The folklore of the object-oriented programming community at times maintains that object-oriented programming has drawn inspiration from philosophy, specically that of Aristotle. We investigate this relation, first of all, in the hope of attaining a better understanding of object…
Clyde Ruby, Gary T. Leavens
A major problem for object-oriented frameworks and class libraries is how to provide enough information about a superclass, so programmers can safely create new subclasses without giving away the superclass's code. Code inherited from the superclass can call down to methods of th…
Mauricio J. Serrano, Rajesh Bordawekar, Samuel P. Midkiff, Manish Gupta
This paper presents the design and implementation of the Quicksilver1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines the benefits of static and dynamic compilation, while maintaining compliance with the Java standard, including support of…
Vijay Sundaresan, Laurie J. Hendren, Chrislain Razafimahefa, Raja Vallée-Rai, Patrick Lam, Etienne Gagnon, Charles Godin
This paper addresses the problem of resolving virtual method and interface calls in Java bytecode. The main focus is on a new practical technique that can be used to analyze large applications. Our fundamental design goal was to develop a technique that can be solved with only on…
Frank Tip, Jens Palsberg
Propagation-based call graph construction algorithms have been studied intensively in the 199Os, and differ primarily in the number of sets that are used to approximate run-time values of expressions. In practice, algorithms such as RTA that use a single set for the whole program…
Mirko Viroli, Antonio Natali
The introduction of parametric polymorphism in Java with translation approaches has been shown to be of considerable interest, allowing the definition of extensions of Java on top of the existing Virtual Machines. Homogeneous translations furthermore, seem to be more useful than …
Ayal Zaks, Vitaly Feldman, Nava Aizikowitz
Ø�Ö��Ø×�ÙÖ�Ø�ÐÝÌ��ÔÖÓ�Ð�Ñ�×�×Ô���ÐÐÝ��ÆÙÐØ�ÓÖ �ÝÒ�Ñ�Ð�Ò�Ù���××Ù��×Â�Ú����Ù×�����Ø�ÓÒ�ÐØ�Ö��Ø × ��Ø�ÖÑ�Ò�Ò�Ø��ÔÓØ�ÒØ��ÐØ�Ö��Ø×Ó�Ú�ÖØÙ�ÐÑ�Ø�Ó��ÒÚÓ � Ø�ÓÒ×�×�××�ÒØ��Ð�ÓÖ�ÒØ�ÖÔÖÓ��ÙÖ�ÐÓÔØ�Ñ�Þ�Ø�ÓÒ×Ó�Ó���Ø ÓÖ��ÒØ��ÔÖÓ�Ö�Ñ×ÁØ�×��Ò�Ö�ÐÐÝ��Ö�ØÓ��Ø�ÖÑ�Ò�×Ù � Â�Ú�Ó���ØÓÖ��ÒØ��ÔÖÓ�Ö�ÑÑ�Ò��Ò…
Vasanth Bala, Evelyn Duesterwald, Sanjeev Banerjia
We describe the design and implementation of Dynamo, a software dynamic optimization system that is capable of transparently improving the performance of a native instruction stream as it executes on the processor. The input native instruction stream to Dynamo can be dynamically …
Rastislav Bodík, Rajiv Gupta, Vivek Sarkar
To guarantee typesafe execution, Java and other strongly typed languages require bounds checking of array accesses. Because array-bounds checks may raise exceptions, they block code motion of instructions with side effects, thus preventing many useful code optimizations, such as …
Bob Boothe
This paper discusses our research into algorithms for creating an efficient bidirectional debugger in which all traditional forward movement commands can be performed with equal ease in the reverse direction. We expect that adding these backwards movement capabilities to a debugg…
Dante J. Cannarozzi, Michael P. Plezbert, Ron Cytron
We describe a new method for determining when an object can be garbage collected. The method does not require marking live objects. Instead, each object X is dynamically associated with a stack frame M, such that Xis collectable when M pops. Because X could have been dead earlier…
Ben-Chung Cheng, Wen-mei W. Hwu
In this paper we present a modular interprocedural pointer analysis algorithm based on access-paths for C programs. We argue that access paths can reduce the overhead of representing context-sensitive transfer functions and effectively distinguish non-recursive heap objects. And …
Michal Cierniak, Guei-Yuan Lueh, James M. Stichnoth
A high-performance implementation of a Java Virtual Machine (JVM) consists of efficient implementation of Just-In-Time (JIT) compilation, exception handling, synchronization mechanism, and garbage collection (GC). These components are tightly coupled to achieve high performance. …
Christopher Colby, Peter Lee, George C. Necula, Fred Blau, Mark Plesko, Kenneth Cline
This paper presents the initial results of a project to determine if the techniques of proof-carrying code and certifying compilers can be applied to programming languages of realistic size and complexity. The experiment shows that: (1) it is possible to implement a certifying na…
Manuvir Das
This paper describes a new algorithm for flow and context insensitive pointer analysis of C programs. Our studies show that the most common use of pointers in C programs is in passing the addresses of composite objects or updateable values as arguments to procedures. Therefore, w…
Julian Dolby, Andrew A. Chien
Automatic object inlining [19, 20] transforms heap data structures by fusing parent and child objects together. It can improve runtime by reducing object allocation and pointer dereference costs. We report continuing work studying object inlining optimizations. In particular, we …
Tamar Domani, Elliot K. Kolodner, Erez Petrank
An on-the-fly garbage collector does not stop the program threads to perform the collection. Instead, the collector executes in a separate thread (or process) in parallel to the program. On-the-fly collectors are useful for multi-threaded applications running on multiprocessor se…
Manuel Fähndrich, Jakob Rehof, Manuvir Das
This paper shows that a type graph (obtained via polymorphic type inference) harbors explicit directional flow paths between functions. These flow paths arise from the instantiations of polymorphic types and correspond to call-return sequences in first-order programs. We show tha…
Cormac Flanagan, Stephen N. Freund
This paper presents a static race detection analysis for multithreaded Java programs. Our analysis is based on a formal type system that is capable of capturing many common synchronization patterns. These patterns include classes with internal synchronization, classes thatrequire…