CA2171898A1 - Linker Optimization for Compiled Object Oriented Programs - Google Patents
Linker Optimization for Compiled Object Oriented ProgramsInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-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.
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)
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)
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)
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 |
-
1996
- 1996-03-15 CA CA002171898A patent/CA2171898C/en not_active Expired - Fee Related
- 1996-12-10 US US08/763,190 patent/US6182283B1/en not_active Expired - Lifetime
-
1997
- 1997-02-28 JP JP04607197A patent/JP3354425B2/en not_active Expired - Fee Related
Cited By (3)
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 |