CA2171898A1 - Linker Optimization for Compiled Object Oriented Programs - Google Patents

Linker Optimization for Compiled Object Oriented Programs

Info

Publication number
CA2171898A1
CA2171898A1 CA2171898A CA2171898A CA2171898A1 CA 2171898 A1 CA2171898 A1 CA 2171898A1 CA 2171898 A CA2171898 A CA 2171898A CA 2171898 A CA2171898 A CA 2171898A CA 2171898 A1 CA2171898 A1 CA 2171898A1
Authority
CA
Canada
Prior art keywords
virtual
functions
virtual function
linker
compiler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA2171898A
Other languages
French (fr)
Other versions
CA2171898C (en
Inventor
Brian Ward Thomson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Canada Ltd
Original Assignee
IBM Canada Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Canada Ltd filed Critical IBM Canada Ltd
Priority to CA002171898A priority Critical patent/CA2171898C/en
Priority to US08/763,190 priority patent/US6182283B1/en
Priority to JP04607197A priority patent/JP3354425B2/en
Publication of CA2171898A1 publication Critical patent/CA2171898A1/en
Application granted granted Critical
Publication of CA2171898C publication Critical patent/CA2171898C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Abstract

When compiling and linking programs using an object oriented language and virtual functions addressed by virtual function tables, the compiled and linked program may often include functions that are not used. The compiler is unable todetermine whether a particular virtual function selected by it can actually be called and the linker must link the function into the program to satisfy the reference from the virtual function table. The present invention solves this problem. The compiler tags each defined virtual function with a code identifying it as a member of a group of related virtual functions. The compiler also tags each virtual function call to identify which group or groups of related virtual functions are candidates for invocation by the virtual function call. The linker combines the two codes to identify which defined virtual functions are not candidates for invocation by any virtualfunction call. The linker then omits those non-candidate virtual functions from the link if all references to them were from virtual function tables.
CA002171898A 1996-03-15 1996-03-15 Linker optimization for compiled object oriented programs Expired - Fee Related CA2171898C (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CA002171898A CA2171898C (en) 1996-03-15 1996-03-15 Linker optimization for compiled object oriented programs
US08/763,190 US6182283B1 (en) 1996-03-15 1996-12-10 Linker optimization for compiled object oriented programs
JP04607197A JP3354425B2 (en) 1996-03-15 1997-02-28 Method and system for improving executable file execution efficiency

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA002171898A CA2171898C (en) 1996-03-15 1996-03-15 Linker optimization for compiled object oriented programs

Publications (2)

Publication Number Publication Date
CA2171898A1 true CA2171898A1 (en) 1997-09-16
CA2171898C CA2171898C (en) 2000-02-01

Family

ID=4157755

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002171898A Expired - Fee Related CA2171898C (en) 1996-03-15 1996-03-15 Linker optimization for compiled object oriented programs

Country Status (3)

Country Link
US (1) US6182283B1 (en)
JP (1) JP3354425B2 (en)
CA (1) CA2171898C (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2135159A1 (en) * 2007-03-09 2009-12-23 Objective Interface Systems, Inc. Optimized code generation through elimination of unused virtual functions

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3284956B2 (en) * 1998-01-26 2002-05-27 日本電気株式会社 Program conversion method, program conversion device, and storage medium storing program conversion program
US6324689B1 (en) * 1998-09-30 2001-11-27 Compaq Computer Corporation Mechanism for re-writing an executable having mixed code and data
US6654951B1 (en) * 1998-12-14 2003-11-25 International Business Machines Corporation Removal of unreachable methods in object-oriented applications based on program interface analysis
US6247175B1 (en) * 1998-12-22 2001-06-12 Nortel Networks Limited Method and apparatus for identifying and removing unused software procedures
US6850950B1 (en) * 1999-02-11 2005-02-01 Pitney Bowes Inc. Method facilitating data stream parsing for use with electronic commerce
GB9920911D0 (en) * 1999-09-03 1999-11-10 Sgs Thomson Microelectronics A relocation format for linking
US6578194B1 (en) * 1999-09-08 2003-06-10 International Business Machines Corporation System and method using extended relocation types and operations in relocating operations
GB2360101A (en) * 2000-03-08 2001-09-12 Nokia Mobile Phones Ltd An optimised method of compiling code in an object oriented programming language
US6845502B1 (en) 2000-04-25 2005-01-18 International Business Machines Corporation Extended attribute information retention file format for object files
US6817014B2 (en) * 2001-04-11 2004-11-09 Hewlett-Packard Development Company, L.P. Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints
US7299462B2 (en) * 2001-05-07 2007-11-20 Stmicroelectronics Limited Relocation format for linking
US7152223B1 (en) * 2001-06-04 2006-12-19 Microsoft Corporation Methods and systems for compiling and interpreting one or more associations between declarations and implementations in a language neutral fashion
US7080354B2 (en) * 2002-03-29 2006-07-18 Intel Corporation Method for implementing dynamic type checking
US20040045018A1 (en) * 2002-08-27 2004-03-04 Nair Sreekumar R. Using address space bridge in postoptimizer to route indirect calls at runtime
JP2005018425A (en) * 2003-06-26 2005-01-20 Matsushita Electric Ind Co Ltd Program conversion method, program and storage medium
CA2453722A1 (en) * 2003-12-17 2005-06-17 Ibm Canada Limited-Ibm Canada Limitee Relationship management for data modeling in an integrated development environment
US8136094B2 (en) * 2004-01-07 2012-03-13 International Business Machines Corporation Relationship management for data modeling in an integrated development environment
JP2006146613A (en) * 2004-11-19 2006-06-08 Matsushita Electric Ind Co Ltd Program conversion method
DE102004058882A1 (en) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Generating program code in a load format and providing executable program code
US7357332B2 (en) * 2005-04-29 2008-04-15 International Business Machines Corporation Providing diagnostic information on the processing of variables in source code
US7992130B2 (en) * 2007-05-07 2011-08-02 Microsoft Corporation Class-based object-oriented features in class-less script language
US8307350B2 (en) * 2009-01-14 2012-11-06 Microsoft Corporation Multi level virtual function tables
US20110246966A1 (en) * 2010-04-06 2011-10-06 Sony Computer Entertainment America Inc. Embedding source files into program symbol files
US20120102473A1 (en) * 2010-10-23 2012-04-26 International Business Machines Corporation Abstract method removal for reduced memory footprint with optimizer tool
US8572594B2 (en) * 2010-12-22 2013-10-29 Microsoft Corporation Invasion analysis to identify open types
US8555264B2 (en) * 2011-01-14 2013-10-08 Oracle International Corporation System and method for efficient compilation and invocation of function type calls
JP2013235386A (en) * 2012-05-08 2013-11-21 Internatl Business Mach Corp <Ibm> Optimization apparatus, optimization method and optimization program
KR101394780B1 (en) * 2012-08-08 2014-05-15 인텔 코포레이션 Isa bridging including support for call to overidding virtual functions
US10061571B2 (en) * 2015-11-16 2018-08-28 Qualcomm Innovation Center, Inc. System and method for link time optimization
CN111782334B (en) * 2019-04-04 2024-02-23 北京智游网安科技有限公司 Dynamic link library file virtualization method, storage medium and terminal equipment
JP2021033567A (en) * 2019-08-22 2021-03-01 株式会社デンソー Electronic control device
US11334829B2 (en) * 2019-12-19 2022-05-17 Honeywell International Inc. Methods and systems for electronic checklist data references

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297284A (en) * 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
US5327562A (en) * 1992-05-06 1994-07-05 Microsoft Corporation Method for implementing virtual function tables in a compiler for an object-oriented programming language
US5442793A (en) * 1993-02-26 1995-08-15 Microsoft Corporation Method and system for locating an inherited virtual function member of a derived class
US5408665A (en) * 1993-04-30 1995-04-18 Borland International, Inc. System and methods for linking compiled code with extended dictionary support
US5632034A (en) * 1993-06-01 1997-05-20 International Business Machines Corporation Controlling method invocation sequence through virtual functions in an object-oriented class library

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2135159A1 (en) * 2007-03-09 2009-12-23 Objective Interface Systems, Inc. Optimized code generation through elimination of unused virtual functions
EP2135159A4 (en) * 2007-03-09 2011-11-30 Objective Interface Systems Inc Optimized code generation through elimination of unused virtual functions
US8887131B2 (en) 2007-03-09 2014-11-11 Objective Interface Systems, Inc. Optimized code generation by eliminating unused virtual function

Also Published As

Publication number Publication date
CA2171898C (en) 2000-02-01
JP3354425B2 (en) 2002-12-09
JPH09269898A (en) 1997-10-14
US6182283B1 (en) 2001-01-30

Similar Documents

Publication Publication Date Title
CA2171898A1 (en) Linker Optimization for Compiled Object Oriented Programs
CA2144874A1 (en) Incremental Build System
ATE238790T1 (en) USE OF PRAMIPEXOLE AS A NEUROPROTECTIVE AGENT
DE69428238D1 (en) Bacillus species xylanase, expression vectors for this xylanase and other proteins, host organism therefor, and uses thereof
EP0752650A3 (en) Method and apparatus for generating executable code from object-oriented C++ source code
ES2195970T3 (en) L-RIBAVIRINA AND USES OF THE SAME.
FR2712180B1 (en) Piston finger prosthesis.
CA2077273A1 (en) Language neutral objects
MX9805725A (en) Distributed processing.
DE59305997D1 (en) LARGE MANIPULATOR, ESPECIALLY FOR CONCRETE PUMPS
ATE187347T1 (en) BINDING SYSTEM FOR SLIDING BOARDS, ESPECIALLY SNOWBORDS
AU4203499A (en) Dynamically switching statically bound function calls to dynamically bound function calls without recompilation
ATE235078T1 (en) EXACT PROCEDURE FOR MAKING VIRTUAL CALLS INLINE
BR9307416A (en) General analysis system, system to process phone calls, process and system to control an industrial process, and process and system to compile and perform at least one analysis
DE69113348D1 (en) Emulsified alkenyl succinic acid as a sizing agent.
DE19680992D2 (en) Firearm, especially hand gun
MX9200939A (en) IMPROVED METHOD FOR LINKING IMAGES IN THE ACTIVATION OF A PROGRAM AND DEVICE TO ACTIVATE A TARGET IMAGE AND A CALLED IMAGE TO BE RUN ON A COMPUTER.
PT1024809E (en) UTILIZATION OF IMMUNOMODULATION AGENTS
GB2316782B (en) Communication device sharing on a local area network
MX9404014A (en) LIGAND ALPHA-1 ADRENERGIC PEPTOID RECEPTORS.
ES2135535T3 (en) TIAZOLOTRIAZOL AND TIAZOLODIAZOL DERIVATIVES WITH FUNGICIDE ACTIVITY.
BR9914396A (en) Process for protecting input addresses
DE69402304T2 (en) DAMPERS FOR WASHING MACHINES, ESPECIALLY FOR DOMESTIC WASHING MACHINES
EP0609903A3 (en) Program language compiling system.
DE29516084U1 (en) Display arrangement, especially for household items

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed