Optimized code restructuring of OS/2 executables

  • Authors:
  • Jyh-Herng Chow;Yong-fong Lee;Kalyan Muthukumar;Vivek Sarkar;Mauricio Serrano;Iris Garcia;John Hsu;Shauchi Ong;Honesty Young

  • Affiliations:
  • Application Dev. Technology Institute, IBM Software Solutions Division, 555 Bailey Avenue, San Jose, CA;Application Dev. Technology Institute, IBM Software Solutions Division, 555 Bailey Avenue, San Jose, CA;Application Dev. Technology Institute, IBM Software Solutions Division, 555 Bailey Avenue, San Jose, CA;Application Dev. Technology Institute, IBM Software Solutions Division, 555 Bailey Avenue, San Jose, CA;Application Dev. Technology Institute, IBM Software Solutions Division, 555 Bailey Avenue, San Jose, CA;Almaden Research Center, IBM Research Division, 650 Harry Road, San Jose, CA;Almaden Research Center, IBM Research Division, 650 Harry Road, San Jose, CA;Almaden Research Center, IBM Research Division, 650 Harry Road, San Jose, CA;Almaden Research Center, IBM Research Division, 650 Harry Road, San Jose, CA

  • Venue:
  • CASCON '95 Proceedings of the 1995 conference of the Centre for Advanced Studies on Collaborative research
  • Year:
  • 1995

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper describes the design and algorithms of FDPR/2 (Feedback Directed Program Restructuring of OS/2 executables), a general-purpose tool that can be used to instrument, profile, and restructure/optimize OS/2 executables for the tel x86 architecture. The optimizations delivered by FDPR/2's restructuring include improved utilization of the (instruction) memory hierarchy, improved branch alignment, and dead code elimination. These optimizations are known to be critical for object-oriented programs written in C++, and the relative performance gains observed are higher for large programs such as database engines, compilers, and debuggers that have large working sets and complex control flow. The code restructuring in FDPR/2 is performed at the basic-block granularity with the flexibility of general code motion of basic blocks across function boundaries.A full-function prototype of FDPR/2 has been developed at IBM, targeted to restructure OS/2 Intel executables and DLLs generated by the IBM Visual Age C++ compiler and linker. The performance gains delivered by FDPR/2 have been quite encouraging so far; e.g., a performance gain of about 18% has been achieved for launching and closing IPMD, the interactive debugger in Visual Age C++.An important characteristic of FDPR/2 is that it does not require any access or change to the source code of applications that it instruments or restructures. All it requires are the executables and the Dynamically Linked Libraries (DLL's) that make up an application, thus making it suitable for use by independent software vendors to optimize their applications written for the OS/2 platform and compiled by the Visual Age C++ compiler.