JP2010170585A - ディスパッチテーブル構造のための方法と装置 - Google Patents
ディスパッチテーブル構造のための方法と装置 Download PDFInfo
- Publication number
- JP2010170585A JP2010170585A JP2010107436A JP2010107436A JP2010170585A JP 2010170585 A JP2010170585 A JP 2010170585A JP 2010107436 A JP2010107436 A JP 2010107436A JP 2010107436 A JP2010107436 A JP 2010107436A JP 2010170585 A JP2010170585 A JP 2010170585A
- Authority
- JP
- Japan
- Prior art keywords
- class
- accessibility
- superclass
- entry
- dispatch table
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】本発明の一実施の形態では、新規ディスパッチテーブルを割り当てるための判断はクラスのアクセス可能性に左右される。ディスパッチテーブル及びディスパッチテーブル構造プロセスは、Vtableのためのエントリが、アクセス可能性とクラス階層との間の競合を回避するように判定される、と説明されている。特に、ディスパッチテーブル及びディスパッチテーブル構造プロセスは、メソッドのアクセス可能性とパッケージ状態を、適切にオーバーライドしている意味規定とテーブル構築技術の判定において考慮する、と説明されている。ディスパッチテーブルはメソッドのための複数の明確なエントリを有していてもよい。
【選択図】図4
Description
Claims (18)
- コンピュータにより実行される、直属の親スーパークラスから継承する第1のクラス内のメソッドのためのディスパッチテーブルの構築方法であって、
前記コンピュータが、クラス内のメソッドへのポインタを格納するエントリを有する構造体であるディスパッチテーブルを前記直属の親スーパークラスからコピーするステップであって、該メソッドには他のクラスからアクセスできるか否かを示すアクセス可能性の情報が関連付けられている、該ステップと、
前記コンピュータが、前記第1のクラス内のメソッドがクラス階層内の前記第1のクラスの先祖スーパークラス内にも存在するかどうかを判定するステップと、
前記メソッドが前記先祖スーパークラス内にも存在することが判定された場合に、前記コンピュータが、前記ディスパッチテーブルに含まれているポインタで示される前記メソッドの前記先祖スーパークラスバージョンに対応する前記アクセス可能性の情報に基づいて、前記第1のクラスから該メソッドの該先祖スーパークラスバージョンへのアクセスが可能かどうかを判定するステップと、
前記メソッドの前記先祖スーパークラスバージョンへアクセスできないと判定された場合に、前記コンピュータが、前記第1のクラス内の前記メソッドへのポインタを格納する新規エントリを前記ディスパッチテーブル内に作成するステップと、
前記メソッドの前記先祖スーパークラスバージョンへアクセスできると判定された場合に、前記コンピュータが、前記ディスパッチテーブル内にある、該メソッドの該先祖スーパークラスバージョンへのポインタを格納しているエントリに、前記第1のクラス内のメソッドへのポインタを格納することで、該エントリを上書きするステップと、
を含むディスパッチテーブルの構築方法。 - 前記第1のクラスが少なくとも一つのスーパーインターフェースからメソッドを継承する、
請求項1に記載の方法。 - 前記メソッドがミランダ(miranda)メソッドである、
請求項2に記載の方法。 - 前記ディスパッチテーブルを構築する前記方法がオブジェクト指向型言語によって実装される、
請求項1〜3のいずれか一項に記載の方法。 - 前記オブジェクト指向型言語がJAVA(登録商標)である、
請求項4に記載の方法。 - 前記エントリ又は前記新規エントリの位置がインデックスにより示される、
請求項1〜5のいずれか一項に記載の方法。 - 前記クラスがパッケージに属する、
請求項1〜6のいずれか一項に記載の方法。 - 前記アクセス可能性には、パブリック(public)アクセス可能性、プライベート(private)アクセス可能性、プロテクテッド(protected)アクセス可能性、及びパッケージプライベートアクセス可能性のうちの一つが含まれる、
請求項1〜7のいずれか一項に記載の方法。 - コンピュータにより実行される、先祖階層内の直属の親スーパークラスから継承する第1のクラス内のメソッドのためのディスパッチテーブルの構築方法であって、
前記コンピュータが、クラス内のメソッドへのポインタを格納するエントリを有する構造体であるディスパッチテーブルを前記直属の親スーパークラスからコピーするステップであって、該メソッドには他のクラスからアクセスできるか否かを示すアクセス可能性の情報が関連付けられており、前記エントリの位置がインデックスにより示される、該ステップと、
前記コンピュータが、前記第1のクラス内のメソッド、及び該メソッドに対応するアクセス可能性の情報が前記先祖階層のスーパークラス内に存在するかどうかを判定するステップと、
前記コンピュータが、前記メソッド及び前記アクセス可能性の情報が前記先祖階層のスーパークラス内にも存在することが判定された場合に、該スーパークラスに対応するディスパッチテーブルのインデックスを前記メソッド及び前記アクセス可能性の情報に割り当てることを、メソッドに関連付けられたアクセス可能性毎に行うステップと、
前記コンピュータが、前記メソッド及び前記アクセス可能性の情報が前記先祖階層のスーパークラス内に存在しないと判定された場合に、前記ディスパッチテーブルのインデックスを作成して該インデックスを前記メソッド及び前記アクセス可能性の情報に割り当てることを、メソッドに関連付けられたアクセス可能性毎に行うステップと、
前記コンピュータが、前記メソッドへのポインタを格納する前記ディスパッチテーブル内のエントリを前記メソッドが割り当てられたインデックスに割り当てることを、各インデックスについて行うステップと、
を含むディスパッチテーブルの構築方法。 - 前記コンピュータが、前記アクセス可能性に基づいて決定された優先度を、前記メソッド及び前記アクセス可能性に対応するエントリに割り当てるステップを更に含む、
請求項9に記載の方法。 - 前記優先度を前記エントリに割り当てるステップが、前記メソッドと、前記第1のクラスのアクセス可能性に対応するアクセス可能性とに関連付けられた前記エントリに一次優先度を割り当てるステップを含む、
請求項10に記載の方法。 - 前記メソッドのすべての前記アクセス可能性の情報にインデックスが割り当てられた場合に、前記コンピュータが、前記第1のクラス内の前記メソッド及び前記アクセス可能性が前記先祖階層のスーパークラス内にも存在するかどうかの判定を中止するステップを更に含む、
請求項9〜11のいずれか一項に記載の方法。 - 前記アクセス可能性がパブリックアクセス可能性、プライベートアクセス可能性、プロテクテッドアクセス可能性、又はパッケージプライベートアクセス可能性である、
請求項9〜12のいずれか一項に記載の方法。 - 前記第1のクラス内の前記メソッド及び前記アクセス可能性の情報が前記先祖階層のスーパークラス内にも存在するかどうかの判定は、前記メソッド及びアクセス可能性の情報が見出されなかった場合の第1の状態から、前記メソッド及びアクセス可能性の情報が見出された場合の第2の状態へ変化することを示すインデックスを用いて実行される、
請求項9に記載の方法。 - 前記コンピュータが、前記ディスパッチテーブルをメモリに割り当てるために該ディスパッチテーブルのサイズを判定するステップを更に含む、
請求項9〜14のいずれか一項に記載の方法。 - 前記コンピュータが、割り当てられた各エントリに対応する前記ディスパッチテーブルの少なくとも一つのエントリを割り当てるステップを更に含む、
請求項15に記載の方法。 - 前記コンピュータが前記ディスパッチテーブルを前記メモリに書き込むステップを更に含む、
請求項15又は16に記載の方法。 - スーパークラスから継承する第1のクラス内のメソッドのためのディスパッチテーブルの構築方法をコンピュータに実行させるためのプログラムを記録したコンピュータ可読記憶媒体であって、
前記構築方法が
クラス内のメソッドへのポインタを格納するエントリを有する構造体であるディスパッチテーブルを前記第1のクラスの直属の親スーパークラスからコピーするステップであって、該メソッドには他のクラスからアクセスできるか否かを示すアクセス可能性の情報が関連付けられている、該ステップと、
前記第1のクラス内のメソッドがクラス階層内の前記第1のクラスの先祖スーパークラス内にも存在するかどうかを判定するステップと、
前記メソッドが前記先祖スーパークラス内にも存在することが判定された場合に、前記ディスパッチテーブルに含まれているポインタで示される前記メソッドの前記先祖スーパークラスバージョンに対応する前記アクセス可能性の情報に基づいて、前記第1のクラスから該メソッドの該先祖スーパークラスバージョンへのアクセスが可能かどうかを判定するステップと、
前記メソッドの前記先祖スーパークラスバージョンへアクセスできないと判定された場合に、前記第1のクラス内の前記メソッドへのポインタを格納する新規エントリを前記ディスパッチテーブル内に作成するステップと、
前記メソッドの前記先祖スーパークラスバージョンへアクセスできると判定された場合に、前記ディスパッチテーブル内にある、該メソッドの該先祖スーパークラスバージョンへのポインタを格納しているエントリに、前記第1のクラス内のメソッドへのポインタを格納することで、該エントリを上書きするステップと、を含む、
コンピュータ可読記憶媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/299,946 US6393491B1 (en) | 1999-04-26 | 1999-04-26 | Method and apparatus for dispatch table construction |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000126183A Division JP2000347864A (ja) | 1999-04-26 | 2000-04-26 | ディスパッチテーブル構造のための方法と装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010170585A true JP2010170585A (ja) | 2010-08-05 |
JP4571710B2 JP4571710B2 (ja) | 2010-10-27 |
Family
ID=23156997
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000126183A Pending JP2000347864A (ja) | 1999-04-26 | 2000-04-26 | ディスパッチテーブル構造のための方法と装置 |
JP2010107436A Expired - Lifetime JP4571710B2 (ja) | 1999-04-26 | 2010-05-07 | ディスパッチテーブル構造のための方法と装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000126183A Pending JP2000347864A (ja) | 1999-04-26 | 2000-04-26 | ディスパッチテーブル構造のための方法と装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6393491B1 (ja) |
EP (1) | EP1049009A3 (ja) |
JP (2) | JP2000347864A (ja) |
CN (1) | CN1183447C (ja) |
AU (1) | AU773769B2 (ja) |
CA (1) | CA2306533A1 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668285B1 (en) * | 1999-05-12 | 2003-12-23 | Koninklijke Philips Electronics N.V. | Object oriented processing with dedicated pointer memories |
US6725280B1 (en) * | 1999-08-13 | 2004-04-20 | Sun Microsystems, Inc. | Method and apparatus for constructing dispatch tables which enable transitive method override |
DE10030988A1 (de) * | 2000-06-30 | 2002-01-10 | Bosch Gmbh Robert | Elektronisches System zur Entwicklung von Software und ein Verfahren zum Eingriff auf interne Daten der Software |
US6978456B1 (en) | 2000-10-31 | 2005-12-20 | Sun Microsystems, Inc. | Methods and apparatus for numeric constant value inlining in virtual machines |
US6901591B1 (en) * | 2000-10-31 | 2005-05-31 | Sun Microsystems, Inc. | Frameworks for invoking methods in virtual machines |
US6996813B1 (en) | 2000-10-31 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for loading and execution of object-based programs |
US7020874B2 (en) * | 2001-03-26 | 2006-03-28 | Sun Microsystems, Inc. | Techniques for loading class files into virtual machines |
US7096466B2 (en) * | 2001-03-26 | 2006-08-22 | Sun Microsystems, Inc. | Loading attribute for partial loading of class files into virtual machines |
US7543288B2 (en) | 2001-03-27 | 2009-06-02 | Sun Microsystems, Inc. | Reduced instruction set for Java virtual machines |
US6996830B1 (en) | 2001-05-07 | 2006-02-07 | Microsoft Corporation | System determining whether to activate public and private components operating within multiple applications of a component-based computing system |
US7305658B1 (en) | 2001-05-07 | 2007-12-04 | Microsoft Corporation | Method and system for application partitions |
US6941550B1 (en) * | 2001-07-09 | 2005-09-06 | Microsoft Corporation | Interface invoke mechanism |
US7228533B2 (en) * | 2001-08-24 | 2007-06-05 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for performing programming loops |
US7058934B2 (en) * | 2001-08-24 | 2006-06-06 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for instantiating Java objects |
US7039904B2 (en) | 2001-08-24 | 2006-05-02 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for storing values into local variables |
US6988261B2 (en) | 2001-08-24 | 2006-01-17 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions in Java computing environments |
US7010791B2 (en) * | 2001-09-20 | 2006-03-07 | Intel Corporation | Method for implementing multiple type hierarchies |
US7457796B2 (en) * | 2004-07-08 | 2008-11-25 | International Business Machines Corporation | Method using virtual replicated tables in a cluster database management system |
US20070257715A1 (en) * | 2005-12-30 | 2007-11-08 | Semerdzhiev Krasimir P | System and method for abstract configuration |
US8201189B2 (en) | 2005-12-30 | 2012-06-12 | Sap Ag | System and method for filtering components |
US8843918B2 (en) | 2005-12-30 | 2014-09-23 | Sap Ag | System and method for deployable templates |
US8838750B2 (en) * | 2005-12-30 | 2014-09-16 | Sap Ag | System and method for system information centralization |
US9477495B2 (en) * | 2006-08-17 | 2016-10-25 | International Business Machines Corporation | Conservative class preloading for real time Java execution |
US8127284B2 (en) * | 2007-10-16 | 2012-02-28 | Microsoft Corporation | On-demand loading of types of software code of a program executing on a computing device |
US20090249311A1 (en) * | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment |
US20090319982A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation | Multiple Code Inheritance with Explicit Base Calling |
US8793671B2 (en) * | 2008-06-28 | 2014-07-29 | Microsoft Corporation | Interface optimization in a closed system |
US8316350B2 (en) * | 2008-11-20 | 2012-11-20 | Sap Aktiengesellschaft | Interface versioning |
US8578352B1 (en) * | 2011-03-31 | 2013-11-05 | Google, Inc. | Optimizing object oriented programs using limited customization |
US8910127B2 (en) * | 2012-09-20 | 2014-12-09 | Identify Software Ltd. (IL) | Estimating indirect interface implementation before load time based on directly implemented methods |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08320790A (ja) * | 1995-05-25 | 1996-12-03 | Mitsubishi Electric Corp | メソッド呼び出し方法及びメソッド追加・削除方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525780A (en) * | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
US5345587A (en) * | 1988-09-14 | 1994-09-06 | Digital Equipment Corporation | Extensible entity management system including a dispatching kernel and modules which independently interpret and execute commands |
US5515536A (en) | 1992-11-13 | 1996-05-07 | Microsoft Corporation | Method and system for invoking methods of an object through a dispatching interface |
US5546586A (en) * | 1993-05-06 | 1996-08-13 | Apple Computer, Inc. | Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code |
US5481713A (en) * | 1993-05-06 | 1996-01-02 | Apple Computer, Inc. | Method and apparatus for patching code residing on a read only memory device |
US5615400A (en) | 1993-06-30 | 1997-03-25 | Apple Computer, Inc. | System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers |
US5600838A (en) * | 1994-01-18 | 1997-02-04 | Sybase, Inc. | Object oriented dispatch and supercall process and arrangement |
JP3019915B2 (ja) * | 1995-11-20 | 2000-03-15 | 日本電気株式会社 | 手続き呼出し方法 |
JPH09282167A (ja) * | 1996-04-10 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | メソッド起動方法及びメソッド起動制御装置 |
US5889995A (en) | 1996-05-20 | 1999-03-30 | Sun Microsystems, Inc. | Using constant selectors for method identification |
CA2236064A1 (en) * | 1998-04-28 | 1999-10-28 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for constructing hybrid virtual function tables |
US6256752B1 (en) * | 1998-07-24 | 2001-07-03 | International Business Machines Corporation | Method and apparatus for dynamic swappable bytecode loop in java virtual machines |
US6260187B1 (en) * | 1998-08-20 | 2001-07-10 | Wily Technology, Inc. | System for modifying object oriented code |
-
1999
- 1999-04-26 US US09/299,946 patent/US6393491B1/en not_active Expired - Lifetime
-
2000
- 2000-04-20 AU AU28918/00A patent/AU773769B2/en not_active Expired
- 2000-04-25 EP EP00303420A patent/EP1049009A3/en not_active Withdrawn
- 2000-04-25 CA CA002306533A patent/CA2306533A1/en not_active Abandoned
- 2000-04-26 JP JP2000126183A patent/JP2000347864A/ja active Pending
- 2000-04-26 CN CNB001188135A patent/CN1183447C/zh not_active Expired - Lifetime
-
2002
- 2002-03-19 US US10/103,310 patent/US6643711B2/en not_active Expired - Lifetime
-
2010
- 2010-05-07 JP JP2010107436A patent/JP4571710B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08320790A (ja) * | 1995-05-25 | 1996-12-03 | Mitsubishi Electric Corp | メソッド呼び出し方法及びメソッド追加・削除方法 |
Also Published As
Publication number | Publication date |
---|---|
US20020107996A1 (en) | 2002-08-08 |
EP1049009A3 (en) | 2005-02-09 |
CA2306533A1 (en) | 2000-10-26 |
AU2891800A (en) | 2000-11-02 |
US6643711B2 (en) | 2003-11-04 |
CN1183447C (zh) | 2005-01-05 |
EP1049009A2 (en) | 2000-11-02 |
AU773769B2 (en) | 2004-06-03 |
JP2000347864A (ja) | 2000-12-15 |
US6393491B1 (en) | 2002-05-21 |
CN1274886A (zh) | 2000-11-29 |
JP4571710B2 (ja) | 2010-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4571710B2 (ja) | ディスパッチテーブル構造のための方法と装置 | |
US7543309B2 (en) | Efficient linking and loading for late binding and platform retargeting | |
US8434099B2 (en) | Efficient linking and loading for late binding and platform retargeting | |
EP3143500B1 (en) | Handling value types | |
US7565665B2 (en) | Efficient linking and loading for late binding and platform retargeting | |
US7143421B2 (en) | Highly componentized system architecture with a demand-loading namespace and programming model | |
US6799173B2 (en) | Method and apparatus for sharing code containing references to non-shared objects | |
US5535390A (en) | Method for reusing temporaries and reclaiming shared memory | |
US5303392A (en) | Accessing current symbol definitions in a dynamically configurable operating system | |
US6093216A (en) | Method of run-time tracking of object references in Java programs | |
US7225438B2 (en) | Lazy compilation of template-generated classes in dynamic compilation execution environments | |
US6446254B1 (en) | Packaging memory image files | |
US6728963B1 (en) | Highly componentized system architecture with a loadable interprocess communication manager | |
US7882198B2 (en) | Shared JAVA JAR files | |
EP1657644A2 (en) | System, method and medium for efficiently obtaining the addresses of thread local variables | |
US8650537B2 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
US20090133042A1 (en) | Efficient linking and loading for late binding and platform retargeting | |
US7406687B1 (en) | Sharing runtime representation of software component methods across component loaders | |
US8464226B2 (en) | System and method for interoperating with foreign objects from a host computing environment | |
US7159222B1 (en) | Highly componentized system architecture with object mutation | |
Baker et al. | The Systems Programming Annex of the proposed Ada 9X standard |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100507 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100713 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100812 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130820 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4571710 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |