The goal of points-to analysis for java is to determine the set of objects pointed to by a reference variable or a reference objet field. Improving the precision of practical points-to analysis is important because po...
详细信息
ISBN:
(纸本)1581135629
The goal of points-to analysis for java is to determine the set of objects pointed to by a reference variable or a reference objet field. Improving the precision of practical points-to analysis is important because points-to information has a wide variety of client applications in optimizing compilers and software engineering tools. In this paper we present object sensitivity, a new form of context sensitivity for flow-insensitive points-to analysis for java. The key idea of our approach is to analyze a method separately for each of the objects on which this method is invoked. To ensure flexibility and practicality, we propose a parameterization framework that allows analysis designers to control the tradeoffs between cost and precision in the object-sensitive analysis. Side-effect analysis determines the memory locations that may be modified by the execution of a program statement. This information is needed for various compiler optimizations and software engineering tools. We present a new form of side-effect analysis for java which is based on object-sensitive points-to analysis. We have implemented one instantiation of our parameterized object-sensitive points-to analysis. We compare this instantiation with a context-insensitive points-to analysis for java which is based on Andersen's analysis for C. On a set of 23 java programs, our experiments show that the two analyses have comparable cost. In some cases the object-sensitive analysis is actually faster than the context-insensitive analysis. Our results also show that object sensitivity significantly improves the precision of side-effect analysis, call graph construction, and virtual call resolution. These experiments demonstrate that object-sensitive analyses can achieve significantly better precision than context-insensitive ones, while at the same time remaining efficient and practical.
A strategy for using javadoc, the primary mechanism for generating java API documentation in conjunction with an XML infrastructure was presented. The purpose was to improve the quality of API reference material and i...
详细信息
ISBN:
(纸本)9781581135435
A strategy for using javadoc, the primary mechanism for generating java API documentation in conjunction with an XML infrastructure was presented. The purpose was to improve the quality of API reference material and its integration into product documentation sets. javadoc used the java compiler to scan a set of java source files and generate HTML output.
Today's typical computational environment consists of a large numbers of commodity workstations interconnected by high bandwidth networks. However, only a small portion of workstation's capacity is utilized si...
详细信息
Today's typical computational environment consists of a large numbers of commodity workstations interconnected by high bandwidth networks. However, only a small portion of workstation's capacity is utilized since a large share of workstations may idle at any given moment. This paper proposes the general design of a runtime that executes a standard java application on available idle workstations. This runtime transparently distributes the application's threads and objects among the currently idle nodes.
There has been an increasing research interest in extending the use of java towards performance-oriented programming for distributed and concurrent applications. Numerous research projects have introduced class librar...
详细信息
ISBN:
(纸本)9781581135992
There has been an increasing research interest in extending the use of java towards performance-oriented programming for distributed and concurrent applications. Numerous research projects have introduced class libraries or language extensions for java in order to support automatic management of locality, parallelism and load balancing which is almost entirely under the control of a runtime system and frequently results in critical performance problems. In previous work we described javaSymphony to substantially alleviate this problem. javaSymphony is a java class library that allows the programmer to control parallelism, load balancing, and locality at a high level. Objects can be explicitly distributed and migrated based on a high-level API to static/dynamic system parameters and dynamic virtual distributed architectures which impose a virtual hierarchy on a distributed system of physical computing nodes. In this paper we describe various important extensions to the original javaSymphony API which includes a generalization of virtual architectures that can be used to specify and to request arbitrary heterogeneous distributed and concurrent architectures. The number of threads that execute an object's methods can be controlled dynamically through single- and multi-threaded objects. Conventional java objects can be dynamically converted to javaSymphony objects. A (un)lock mechanism has been introduced in order to avoid inconsistent modification of objects or virtual architectures. A sophisticated event mechanism for asynchronous communication, coordination, and interaction is provided. Several synchronization constructs including barrier synchronization and synchronization for asynchronous method invocations have been included. Experiments are presented to demonstrate the effectiveness and efficiency of javaSymphony.
Previous plasma simulations have used Fortran or other computer languages in which it is difficult to directly express the underlying physics. In a plasma, each particle - electron, ion, or dust - interacts with the e...
详细信息
ISBN:
(纸本)9781581135992
Previous plasma simulations have used Fortran or other computer languages in which it is difficult to directly express the underlying physics. In a plasma, each particle - electron, ion, or dust - interacts with the external fields and with other particles in ways that can be readily and effectively mimicked by object oriented programming. Thus, we have used java's strong object design to rewrite traditional plasma simulation codes. By using coarse grain and fine grain object design, we incorporate the power of object oriented design for programming and for making the physics clear while paying only a small cost in increased computational time. The java implementation has also the advantage that changes in the underlying physical model can be easily completed swapping or adding objects without large scale revisions of the code.
Recently there has been an increasing interest in developing parallel programming capabilities in java to harness the vast resources available in clusters, grids and heterogeneous networked systems. In this paper, we ...
详细信息
ISBN:
(纸本)9781581135992
Recently there has been an increasing interest in developing parallel programming capabilities in java to harness the vast resources available in clusters, grids and heterogeneous networked systems. In this paper, we introduce a java object-passing interface (JOPI) library. JOPI provides java programmers with the necessary functionality to write object-passing parallel programs in distributed heterogeneous systems. JOPI provides an MPI-like interface that can be used to exchange objects among processes. In addition to the well-known benefits of the object-oriented development model, using objects to exchange information in JOPI is advantageous because it facilitates passing complex structures and enables the programmer to isolate the problem space from the parallelization problem. The run-time environment for JOPI is portable, efficient and provides the necessary functionality to deploy and execute parallel java programs. Experiments were conducted on a cluster system and a collection of heterogeneous platforms to measure JOPI's performance and compare it with MPI. The results show good performance gains using JOPI.
In the JX project, a complete operating system using the type-safe, object-oriented languagejava is built. One of the major challenges is achieving a performance that is competitive to mainstream operating systems, s...
详细信息
In the JX project, a complete operating system using the type-safe, object-oriented languagejava is built. One of the major challenges is achieving a performance that is competitive to mainstream operating systems, such as Linux or Solaris. This paper concentrates on optimizing byte-code-to-nativecode translator and instrumentation/visualization tools to locate performance problems to achieve good performance.
Stack inspection is a mechanism for programming secure applications by which a method can obtain information from the call stack about the code that (directly or indirectly) invoked it. This mechanism plays a fundamen...
详细信息
ISBN:
(纸本)1581135289
Stack inspection is a mechanism for programming secure applications by which a method can obtain information from the call stack about the code that (directly or indirectly) invoked it. This mechanism plays a fundamental role in the security architecture of java and the NET Common language Runtime. A central problem with stack inspection is to determine to what extent the local checks inserted into the code are sufficient to guarantee that a global security property is enforced. In this paper, we present a technique for inferring a secure calling context for a method. By a secure calling context we mean a pre-condition on the call stack sufficient for guaranteeing that execution of the method will not violate a given global property. This is particularly useful for annotating library code in order to avoid having to reanalyse libraries for every new application. The technique is a constraint-based static program analysis implemented via fixed point iteration over an abstract domain of linear temporal logic properties.
We describe an extension to the javalanguage, Handi-Wrap, that supports weaving aspects into code at runtime. Aspects in Handi-Wrap take the form of method wrappers, which allow aspect code to be inserted around meth...
详细信息
ISBN:
(纸本)158113469X
We describe an extension to the javalanguage, Handi-Wrap, that supports weaving aspects into code at runtime. Aspects in Handi-Wrap take the form of method wrappers, which allow aspect code to be inserted around method bodies like advice in AspectJ. Handi-Wrap offers several advantages over static aspect languages such as AspectJ. First, aspects can be woven into binary libraries. Second, a wrapper in Handi-Wrap is a first-class java value, which allows users to exploit java mechanisms to define and weave wrappers. For example, wrappers can be passed explicit constructor arguments, and wrapper objects can be composed. Finally, methods in all java classes, including anonymous classes, can be wrapped. A prototype of Handi-Wrap is implemented in a compile-time metaprogramming system for java, called Maya;we briefly describe how Maya's features support Handi-Wrap.
Until recently, the best performing copying garbage collectors used a generational policy which repeatedly collects the very youngest objects, copies any survivors to an older space, and then infrequently collects the...
详细信息
ISBN:
(纸本)1581134789
Until recently, the best performing copying garbage collectors used a generational policy which repeatedly collects the very youngest objects, copies any survivors to an older space, and then infrequently collects the older space. A previous study that used garbagecollection simulation pointed to potential improvements by using an Older-First copying garbage collection algorithm. The OlderFirst algorithm sweeps a fixed-sized window through the heap from older to younger objects, and avoids copying the very youngest objects which have not yet had sufficient time to die. We describe and examine here an implementation of the Older-First algorithm in the Jikes RVM for java. This investigation shows that Older-First can perform as well as the simulation results suggested, and greatly improves total program performance when compared to using a fixedsize nursery generational collector. We further compare Older-First to a flexible-size nursery generational collector in which the nursery occupies all of the heap that does not contain older objects. In these comparisons, the flexible-nursery collector is occasionally the better of the two, but on average the Older-First collector performs the best. Copyright 2002 ACM.
暂无评论