Many devirtualization techniques have been proposed to reduce the runtime overhead of dynamic method calls for various object-oriented languages, however, most of them are less effective or cannot be applied for java ...
详细信息
Many devirtualization techniques have been proposed to reduce the runtime overhead of dynamic method calls for various object-oriented languages, however, most of them are less effective or cannot be applied for java in a straightforward manner. This is partly because java is a statically-typed language and thus transforming a dynamic call to a static one does not make a tangible performance gain (owing to the low overhead of accessing the method table) unless it is inlined, and partly because the dynamic class loading feature of java prohibits the whole program analysis and optimizations from being applied. We propose a new technique called direct devirtualization with the code parching mechanism. For a given dynamic call site, our compiler first determines whether the call can be devirtualized, by analyzing the current class hierarchy. When the call is devirtualizable and the target method is suitably sized, the compiler generates the inlined code of the method, together with the backup code of making the dynamic call. Only the inlined code is actually executed until our assumption about the devirtualization becomes invalidated, at which time the compiler performs code patching to make the backup code executed subsequently. Since the new technique prevents some code motions across the merge point between the inlined code and the backup code, we have furthermore implemented recently-known analysis techniques, such as type analysis and preexistence analysis, which allow the backup code to be completely eliminated. We made various experiments using 16 real programs to understand the effectiveness and characteristics of the devirtualization techniques in our java Just-In-Time (JIT) compiler. In summary, we reduced the number of dynamic calls by ranging from 8.9% to 97.3% (the average of 40.2%), and we improved the execution performance by ranging from -1% to 133% (with the geometric mean of 16%).
Today, distributed object-based computing is closely linked with java. The java virtual machine is ported to most current operating systems and provides many services which help developing distributed object-based app...
详细信息
ISBN:
(纸本)0769507328
Today, distributed object-based computing is closely linked with java. The java virtual machine is ported to most current operating systems and provides many services which help developing distributed object-based applications (e.g. RMI). In java, code and data mobility ts a very important aspect. java provides a serialisation mechanism which allows the capture and restoration of objects I states and therefore the migration of objects between machines. It also allows classes to be dynamically loaded and therefore to be moved between nodes. However. java does not provide a mechanism for capturing and restoring a thread state. The stack of a java thread is not accessible. Such a mechanism would allow a thread to be checkpointed or migrated between different nodes. In. this paper, we report on our experience which consisted in extending the java virtual machine in order to allow the capture and restoration of a thread state. We describe the principles of the implementation of this extension and provide a performance evaluation.
This paper proposes a java bytecode transformation algorithm for realizing transparent thread migration in a portable and efficient manner. In contrast to previous studies, our approach does not need extended virtual ...
详细信息
ISBN:
(纸本)354041052X
This paper proposes a java bytecode transformation algorithm for realizing transparent thread migration in a portable and efficient manner. In contrast to previous studies, our approach does not need extended virtual machines nor source code of target programs. The whole state of stack frames is saved, and then restored at a remote site. To accomplish this goal, a type system for java bytecode is used to correctly determine valid frame variables and valid entries in the operand stack. A target program is transformed based on the type information into a form so that it can perform transparent thread migration. We have also measured execution efficiency of transformed programs and growth in bytecode size, and obtained better results compared to previous studies.
The javaprogramming environment is increasingly being used to build large-scale multi-language applications. Whether these applications combine java with other languages for legacy reasons, to address performance con...
详细信息
ISBN:
(纸本)354067442X
The javaprogramming environment is increasingly being used to build large-scale multi-language applications. Whether these applications combine java with other languages for legacy reasons, to address performance concerns, or to add java functionality to preexisting server environments, they require correct and efficient native interfaces. This paper examines current native interface implementations, presents performance results, and discusses performance improvements in our IRIX java Virtual Machine and Just-In-Time Compiler that have sped up native interfacing by significant factors over previous releases.
This paper presents the experience of using the Common Object Request Broker Architecture (CORBA)[1] in the ATLAS prototype DAQ project[2]. Many communication links in the DAQ system have been designed and implemented...
详细信息
ISBN:
(纸本)078035463X
This paper presents the experience of using the Common Object Request Broker Architecture (CORBA)[1] in the ATLAS prototype DAQ project[2]. Many communication links in the DAQ system have been designed and implemented using the CORBA standard. A public domain package, called Inter-language Unification (TLU)[3] has been used to implement CORBA based communications between DAQ components in a local area network (LAN) of heterogeneous computers. The CORBA Naming Service[4] provides the principal mechanism through which most clients of an ORE-based system locate objects that they intend to use. In our project, conventions are employed that meaningfully partition the name space of the Naming Service according to divisions in the DAQ system itself. The Inter Process Communication (IPC) package[5], implemented in C++ on the top of CORBA/ILU, incorporates this facility and hides the details of the naming schema is described. The development procedure and environment for remote database access using IPC is described. Various end-user interfaces have been implemented using the javalanguage that communicate with C++ servers via CORBA/ILU. To support such interfaces, a second implementation of IPC in java has been developed. The design and implementation of such connections are described. An alternative CORBA implementation, ORBacus[6], has been evaluated and compared with ILU.
This paper describes the implementation of Hyperion, an environment for executing java programs on clusters of computers. To provide high performance, the environment compiles java bytecode to native code and supports...
详细信息
ISBN:
(纸本)354067442X
This paper describes the implementation of Hyperion, an environment for executing java programs on clusters of computers. To provide high performance, the environment compiles java bytecode to native code and supports the concurrent execution of java threads on multiple nodes of a cluster. The implementation uses the PM2 distributed, multithreaded runtime system. PM2 provides lightweight threads and efficient inter-node communication. It also includes a generic, distributed shared memory layer (DSM-PM2) which allows the efficient and flexible implementation of the java memory consistency model. This paper includes preliminary performance figures for our implementation of Hyperion/PM2 on clusters of Linux machines connected by SCI and Myrinet.
Proxy Tk allows a Tcl program to provide a highly interactive web-browser user interface, without requiring the end user to download additional software. It uses a thin client design, where a server-side Tcl applicati...
详细信息
ISBN:
(纸本)1880446243
Proxy Tk allows a Tcl program to provide a highly interactive web-browser user interface, without requiring the end user to download additional software. It uses a thin client design, where a server-side Tcl application communicates with a very small generic java applet running in the browser, sending it commands to create and modify widgets, and receiving events from the user. A Tk-like layer encapsulates the communication protocols to provide a familiar programming paradigm, and allow easy porting of existing code.
The newly introduced Microprocessor Architecture for java Computing (MAJC) supports parallelism in a hierarchy of levels: multiprocessors on chip,vertical micro threading, instruction level parallelism via a very long...
详细信息
ISBN:
(纸本)0780362985
The newly introduced Microprocessor Architecture for java Computing (MAJC) supports parallelism in a hierarchy of levels: multiprocessors on chip,vertical micro threading, instruction level parallelism via a very long instruction word architecture (VLIW) and SIMD. The first implementation, MAJC 5200, includes some key features of MAJC to realize a high performance multimedia processor. Two CPUs running at 500 MHz are integrated into the chip to provide 6.16 GFLOPS and 12.33 GOPS with high speed interfaces providing a peak input-output (I/O) data rate of more than 4.8 G Bytes/second. The chip is suitable for a number of applications including graphics/multimedia processing for high-end set-top boxes, digital voice processing for telecommunications, and advanced imaging.
In this paper we lay out the design time and space of component assembly in a visual builder and propose concrete ways of also handling context components seamlessly. We present an environment that allows java develop...
详细信息
ISBN:
(纸本)0769507743;0769507751
In this paper we lay out the design time and space of component assembly in a visual builder and propose concrete ways of also handling context components seamlessly. We present an environment that allows java developers to test and evaluate javaBeans components implementing the extensible runtime containment and services protocol. We enhanced the BeanBox from the Bean Development Kit (BDK) with new visual manipulation capabilities for nested beans, so that it is possible to drag and drop, serialize and de-serialize, group and ungroup, nested beans. By means of these visual manipulations, child beans can be visually put inside context beans.
We have identified in previous work two translations for parametrically typed extensions of java. The homogeneous translation maps type variables to a uniform representation, while the heterogeneous translation expand...
详细信息
ISBN:
(纸本)3540410902
We have identified in previous work two translations for parametrically typed extensions of java. The homogeneous translation maps type variables to a uniform representation, while the heterogeneous translation expands the program by specialising parameterised classes according to their arguments. This paper describes both translations in detail, compares their time and space requirements and discusses how each affects the java security model.
暂无评论