JP4994580B2 - 動的ランタイム環境でタグ付き型を用いるシステム及び方法 - Google Patents

動的ランタイム環境でタグ付き型を用いるシステム及び方法 Download PDF

Info

Publication number
JP4994580B2
JP4994580B2 JP2004148158A JP2004148158A JP4994580B2 JP 4994580 B2 JP4994580 B2 JP 4994580B2 JP 2004148158 A JP2004148158 A JP 2004148158A JP 2004148158 A JP2004148158 A JP 2004148158A JP 4994580 B2 JP4994580 B2 JP 4994580B2
Authority
JP
Japan
Prior art keywords
tagged
class
type
language
computer
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.)
Expired - Fee Related
Application number
JP2004148158A
Other languages
English (en)
Other versions
JP2005004737A (ja
Inventor
メイジャー エリック
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005004737A publication Critical patent/JP2005004737A/ja
Application granted granted Critical
Publication of JP4994580B2 publication Critical patent/JP4994580B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/4492Inheritance

Description

本発明は、一般的にコンピュータシステムに関し、より詳細には、動的ランタイム環境における動的言語の操作及び実行を容易にするシステム及び方法に関する。
コンピュータ科学が発展するにつれて、オブジェクト指向プログラミングは、設計者やプログラマーがコンピュータシステム内の機能を実行するために利用する数多くの良く知られたモデルの中の一つとなっている。オブジェクトモデルは、一般的に、メソッドとクラスに属する関連付けられたデータ要素とを提供するクラスメンバーを含んだクラス構造によって定義される。クラスメンバーは、コンピュータプログラム内部に所望の機能を提供/定義し、そこで、オブジェクトは特定のクラスのインスタンスとして宣言される。よく知られたように、オブジェクトは、頻繁にデータ交換を行い、及び/又は、同じプラットフォーム上で動作する他のオブジェクトを呼び出し、及び/又は、遠隔プラットフォームに属するオブジェクトと通信をする。オブジェクト間で通信を行うために、インタフェースシステム及びインタフェース規格は、発展して、オブジェクトがどのように相互に通信をし、及び/又は、どのように相互に作用しあうかを定義してきた。
オブジェクト間で通信を行い、インタフェースをとる著名なシステムは、コンポーネント・オブジェクト・モデル(COM)として知られており、そこでは、別の類似システムがコモン・オブジェクト・リクエスト・ブローカー・アーキテクチャ(CORBA)として参照されている。その他の通信インタフェースは、例えば、Java(登録商標)仮想マシンのオペレーティングフレームワーク内部のJAVA(登録商標)等の言語の中で定義される。これらのシステム及び他のシステムが発展するにつれて、2つの共通オブジェクトアーキテクチャ又はモデルは一般に現れて、例えば、一般にマネージド及びアンマネージドのオブジェクトシステムの観点から定義される。
マネージドオブジェクトは、マネージドソフトウェア環境内部のヒープ(heap)から割り当てられ、一般的にマネージング関連オブジェクトライフタイムに対して責任をもたない。マネージドオブジェクトは、データ型(例えば、メタデータ)という形で記述され、オブジェクトがもはやアクセスされない場合にはメモリからオブジェクトを除去するマネージド環境「不要データ収集器」(ガーベッジコレクター)によって自動的に収集(回収)される。これとは対照的に、アンマネージドオブジェクトは、標準的なオペレーティングシステムヒープから割り当てられ、そこで、オブジェクト自身は、オブジェクトへの参照がもはや存在しない場合に、オブジェクトが使用するメモリを開放すること(freeing memory)に対して責任をもつ。このことは、参照計数(reference counting)等のよく知られた技法により達成され得る。
上述した通り、マネージドオブジェクトは、マネージドヒープから割り当てられ、不要データは自動的に収集される。これを達成するために、マネージドオブジェクトに対する参照が追跡(trace)される。オブジェクトに対する最後の参照が除去される場合、ガーベッジコレクターは、オブジェクトによって占有されるメモリを回収し、マネージドオブジェクトを参照計数する必要性を軽減する。したがって、マネージド環境は、基本的に内部で参照計数を処理する。マネージド環境はオブジェクトに存在する未解決の参照の記録をとるため、追跡はマネージドコード内部で起こり得る。新しいオブジェクト参照がマネージドコード内部で各々宣言されると、マネージド環境は、ライブ参照のリストにその参照を加える。
所定の時間に、オブジェクト自身ではなくマネージド環境が、所定のオブジェクトに存在するライブ参照を認識する。参照がスコープからはずれるか又は値を変更すると、ライブ参照のリストは更新される。そして、参照がマネージドコード内にとどまる限り、マネージド環境はそれを追跡可能である。上述のオブジェクトライフタイムの課題のほかに、マネージドオブジェクトシステムとアンマネージドオブジェクトシステムは、一般的に、他の多くの重要な面で相違する。これらの相違には、例えば、オブジェクトシステムによる各オブジェクトシステム内部のオブジェクトインタフェースの提供の方法、データの構造化の方法及び/又は定義の方法、及び、エラーや例外の処理の方法が含まれる。
オブジェクト実行環境に関しては、動的プログラミング言語は、複数のアプリケーションを開発するための多種多様なコード型を提示する。Perl、Scheme、Ruby、Python、Smalltalk等の動的に型付けされた言語は、伝統的に様々なタグ付けスキーマを利用して、ヒープ上に小さな(通常は語長の)オブジェクトを割り当てるオーバーヘッドを克服するが、今もなおパラメータ操作に対する数値データの統一的表現の利益を持ち続けている。例えば、ポインターが4バイト境界で位置合わせされていると仮定すると、共通的手法は、32ビット数値の最下位ビットを用いて、ポインターと即時値とを区別する。ウィンドウベースのシステムでは、例えば、ポインターが最高のメモリーセグメントの中でポイントすることは想定されないため、2つの最上位ビットを1に設定することが考えられる。
コード化(例えば、ポインターと整数値を区別するコード化)を使用するプログラムは、共通言語ランタイム(Common Language Runtime)又はJava(登録商標)仮想マシン等のマネージド実行環境で実行される場合は検証されないことが、多くのシステム設計者にとって明白である。現在のところ、統一的表現を実現する1つの検証手法は、ボクシング(boxing)(例えば、ボクシングは、整数とオブジェクトとを関連付ける。)を利用することである。しかしながら、ボックス値(boxed values)上の動作は、内在する数値に直接取り組むことよりもプロセッサ実行性能の面で非常に遅い。
発明の幾つかの態様を基本的に理解させるため、以下に発明の要旨を簡略化して示す。この要旨は、発明の概要ではない。主要で重要な要素を識別すること又は発明の範囲を線引きすることを意図しない。唯一の目的は、後述する詳細な説明の前置きとして、単純化された形式で発明の概念を示すことにある。
本発明は、マネージドオブジェクト環境の動的プログラミング言語から生成されるタグ付き型の数値を処理するシステム及び方法に関する。タグ付き型の数値には、例えば、実行エンジンがポインターと即時データ数値とを区別できるようにする32ビット数値の最下位ビット等の特別に符号化されたデータの一部が含まれる。本発明は、仮想マシンによって提供されるマネージドオブジェクト環境で実行可能な動的プログラミング言語に対する抽象ルート型クラスを定義する。この型のクラスは、クラスのトップポーションの下に定義されるデータ要素のオパーク(opaque)でナチュラルサイズの数値を表すクラス階層でトップポーションを有することとして定義される。
一例として、分岐ツリーは、クラスのトップポーション又はルートの下に作り出され、そこで、システムオブジェクト階層(例えば、非タグ付け要素)は、ツリーの一つの側に作り出され、タグ付け数値を表すシールド型は、ツリーの他の側に作り出される。次に、様々なルールが抽象ルート型クラスに適用されることにより、タグ付き型を使用する動的プログラミング言語の正常実行を容易化する(例えば、ユーザ定義型からタグ付き型へのデータアクセスをふさぐか止める)。より詳細には、実行ルールは、ユーザ定義の型と関連する数値又はデータを、抽象クラスのタグ付きメンバーからプロパティーを導くこと又は引き継ぐことから緩める。この手法によれば、タグ付き型数値は、型セーフ実行環境で実行できる。さらに、抽象クラスを定義し、クラスのメンバーへのアクセスを制限することによって、コード実行性能は、上述のボクシングプロトコルを介してタグ付き数値を使用する従来のアルゴリズム上で強化される。
本発明の一態様によると、タグ付けされた型の要素と型トップの要素は定義され、トップは、ツリーの1つの枝にタグ付けされた特殊型データを有し、ツリーの別の枝に非タグ付けメンバーに関する特殊型データを有するツリーの最上位メンバーを定義する。メタデータルールを拡張することにより、非タグ付け枝のメンバーが、タグ付けされる特殊型又は型トップの要素からプロパティーを導かず、あるいは、引き出さないことを保証するのを助ける。ルールを拡張し、算術演算又はその他の型の演算をタグ付き数値に適用するような演算をサポートする。ルールは、スタック実行手続きの間に適用され、オブジェクトをトップエレメント型、及び/又は、タグ付き型にキャスティングするような演算を含む。これは、数値が個別クラスのメンバーか特殊型かを判定するテスト演算を含む。その他の実行ルールは、データの一つの型(例えば整数)をタグ付き型に変換すること及びその逆を含む。タグ付き数値と非タグ付き数値の両方を包含する抽象クラスを定義し、クラス特殊型間の継承を分離するルールを提供することによって、本発明は、動的プログラミング言語を実行する速くて安全な環境を提供する。
以下の説明及び添付の図面を使って本発明の一態様を解説する。これらの態様は、発明が実施される様々な方法を表し、それらの全ての方法を本発明でカバーするつもりである。図面を考慮することにより、発明のその他の利点及び新規な特徴は、以下に述べる発明の詳細な説明から明白であろう。
本発明は、マネージドコード環境における動的プログラミング言語の実行を容易化するシステム及び方法に関する。動的プログラミング言語と関係する1又は複数のタグ付き数値の継承階層を宣言するクラスコンポーネントを提供する。タグ付き数値を実行する間に、ルールコンポーネントは、型セーフ・ランタイム・環境をサポートするためにタグ付き数値からプロパティーを引き継ぐ又は導くことからユーザ定義の型を緩和する。ツリーの一つの側に非タグ付き型の要素を定義し、ツリーの別の枝にタグ付きの型の要素数値を定義する分岐クラスツリーを提供する。ルールコンポーネントは、ツリーの別のコンポーネントからプロパティーを導く又は引き継ぐツリーの1コンポーネントからのデータを阻止するのを助けるランタイム拡張を分析する。ランタイム拡張は、キャストクラス拡張、テストクラス拡張、及び、1クラス特殊型から別の型へデータ型を変換する変換クラス拡張(例えば、タグ付き要素の非タグ付き要素への変換及びその逆)のような態様を含む。
本願では、「コンポーネント」、「クラス」、「階層」、「システム」等の用語は、コンピュータに関する構成要素、すなわち、ハードウェア、ハードウェアとソフトウェアの結合、ソフトウェア、実行中のソフトウェアを指す。例えば、コンポーネントは、限定はされず、プロセッサ上を走るプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、及び/又はコンピュータである。実例として、サーバ上を走るアプリケーション及びそのサーバは、いずれもコンポーネントであり得る。1又は複数のコンポーネントは、実行プロセス又は/及び実行スレッドの内部に常駐し、コンポーネントは、1つのコンピュータ上に集中して置かれてもよいし、及び/又は、2又はそれより多いコンピュータ間で分散されてもよい。
最初に図1を参照すると、システム100は、本発明の態様によるタグ付き型処理を示す。1又は複数の動的言語110は、仮想マシン130により実行される中間言語命令124を生成するコンパイラー120(例えば、タイムコンパイラー(Time compiler)の中)に入力される。動的言語110には、例えばコンパイラー120によってコンパイルされ仮想マシン130によって実行されるPerl、Scheme、Ruby、Python及びSmalltalk等のあらゆる種類のコンピュータ言語が実質的には含まれる。そのようなマシンには、例えば、仮想実行システム(Virtual Execution System; VES)、共通言語ランタイム(Common Language Runtime; CLR)、又は、Java(登録商標)仮想マシン等が含まれる。仮想マシン130は、中間言語コードを実行すると、(ローカル及び/又はリモートネットワークシステムであり得る)単一コンピュータシステム又は複数のコンピュータシステム上で1又は複数のコンピュータアプリケーション134を動かす。本発明の1態様においては、動的言語110は、宣言し、そして、コンパイルされ次に仮想マシン130上で実行される1又は複数のタグ付き型140を生成する。タグ付き型140は、ポインター数値と中間データ数値等のその他の数値とを区別し、動的言語110によって頻繁に使用されるコード化を示す。
タグ付き型140は、クラス構造の片側又はルートにタグ付き数値を備え、もう片側又はルートに非タグ付き数値又はユーザ定義数値を備える分岐クラス構造の中で宣言され、この型クラス構造は、図2を参照して以下により詳細に説明する。中間命令124及びタグ付き型140を処理するために、仮想マシン130及び/又はコンパイラー120は、1組の検証ルールを使用して、ユーザ定義データ型がタグ付きデータ型から導かれず又は継承されないことを保証するのを助ける。(以下に説明する)各種スタック実行ルール160は、タグ付き数値及び非タグ付き数値を処理するために、スタック例外ハンドラーによって修正され、実行される。新しいクラス型フレームワーク、検証ルール150及び/又はスタック例外ハンドリング160を備えることによって、本発明は、仮想マシン130の実行性能を改善する。このことは、「ボックス」変数としてタグ付き数値を扱う手法を軽減する代わりにクラスフレームワーク及びルールにしたがってタグ付き数値を処理することによって達成される。
これらの変数は、共通言語インフラストラクチャ(Common Language Infrastructure ;CLI).を定義する「ECMA標準」のような標準の中に記述される。
一般に、システム100は、ECMAスタンダードと共通言語インフラストラクチャに準拠し、そこでは、複数高レベル言語で記述されるアプリケーションを、アプリケーションを書き換えることで異なるシステム環境の固有の特徴を考慮する必要性なく、これらの環境において実行することができる。動的言語及び/又は仮想実行環境を処理する他の標準を、同様に、本発明に従って適用できると理解できる。ECMA標準は、幾つかの節から構成され、別々の節の中にこれらのコンポーネントを記述することによって様々なコンポーネントの理解を容易にするために、これらの節はインターネット上で簡単に入手できる。これらの節は、
パーティション I:アーキテクチャ
パーティション II:メタデータ定義及びセマンティックス
パーティション III:CIL命令セット
パーティション IV:プロファイル及びライブラリー
パーティション V:付録
である。
共通言語インフラストラクチャ(CLI)は、実行コード及びそれが実行される実行環境(仮想実行システム又はVES)を提供する。実行コードは、モジュールとしてVESに渡される。モジュールは、通常、実行コンテンツを指定の形式で含んだ単一のファイルである。一般的には、コンパイラー、ツール及びCLI自体によって共有されるシングル型システム、すなわち共通型システム(Common Type System ;CTS)は、共通言語インフラストラクチャの中心に位置する。それは、型を宣言、使用及び管理するときにCLIが従うルールを定義するモデルである。CTSは、クロス−ラングエッジ(cross−language)統合、型セーフティ及び高性能コード実行を可能にするフレームワークを確立する。CLIは、以下に示す基本コンポーネントを含む。
(共通型システム(Common Type System))
共通型システム(CTS)は、多くのプログラミング言語の中に見出される型及びオペレーションを支援するリッチ型システムを提供する。共通型システムは、広範囲のプログラミング言語を完全に実行することをサポートすることを目的とする。
(メタデータ(Metadata))
CLIは、メタデータを用いて、共通型システムによって定義される型を記述し、参照する。メタデータは、特定のプログラミング言語とは独立して記憶(「持続」)される。メタデータは、プログラムを操るツール(コンパイラー、デバッカー等)間及びこれらツールと仮想実行システムとの間で使用される共通的な交換機構を提供する。
(共通言語仕様(Common Language Specification))
共通言語仕様は、言語設計者とフレームワーク(クラスライブラリー)設計者との間の取り決めである。それは、CTS型システムのサブセットとユーセージ取り決めのセットを指定する。言語は、CLSの一部であるCTSのこれらの部分を少なくとも実行することによってフレームワークにアクセスする最大能力をこれらのユーザに提供する。同様に、フレームワークは、公表された態様(クラス、インタフェース、方法、フィールド等)がCLSの一部である型を用いて、そして、CLS取り決めに従う場合に、最も広く用いられるであろう。
(仮想実行システム(Virtual Execution System))
仮想実行システムは、CTSモデルを実装し、実行する。VESは、CLIのために書かれたプログラムをロードし走せる役割を担う。それは、メタデータを使用して別々に生成されたモジュールをランタイム(遅い結合)に一緒に結合して、マネージドコード及びデータを実行するために必要とされるサービスを提供する。
CLIのこれらの態様は共に、分散型のコンポーネント及びアプリケーションの設計、開発、展開及び実行のための統一フレームワークを形成する。共通型システム(Common Type System)の適切なサブセットは、CLIをターゲットとする各プログラミング言語から利用可能である。言語ベースツールは、メタデータを使用してアプリケーションを構築するために用いられる型を定義し参照して、お互いに及び仮想実行システムと通信を行う。仮想実行システムは、メタデータを用いて、必要に応じて型のインスタンスを生成し、データ型情報をインフラストラクチャの他の部分(遠隔サービス、アセンブリダウンロード、セキュリティ等)に提供する。
図2を参照すると、ダイアグラム200は、本発明の態様によるタグ付き型階層を示す。型セーフ方法でタグ付き数値をサポートするために、本発明は、トップ210として記される新しい(抽象)ルート型をオパキュー(opaque)でナチュラルサイズの数値を表す継承階層に提供する。この新しいルート210の下位において、現行のシステムオブジェクト階層220は、片側に宣言され、(密閉された)タグ付き型230は、もう一方の側に宣言される。型トップ210は、一般的に、ECMAパーティションIIIで提供されるオブジェクト参照型Oの概念に対応する。本発明の主題は、Oを第一のクラス型に提供し、新しいタグ付き特殊型230を加える。240では、トップ210及びタグ付き型230として定義される要素への継承を許可しない1又は複数のメタデータ妥当性ルールが提供される。これらのルールを以下により詳細に説明する。トップ210の下位に2つの枝が描かれているが、他の枝を同じように備えることができることが理解されるであろう(例えば、システムオブジェクト及びタグ付き型の近傍又は下で定義される複数の枝)。
ECMAパーティションIIIにおいて定義されるオブジェクト参照(型O)は、通常、完全にオパークであると考えられる。本発明は、以下に記述するように、タグ付き型の算術演算を提供するが、オブジェクト参照をオペランドとして認める算術命令は通常存在しない。許可される比較操作は、テストクラス命令を提供する本発明を備えるオブジェクト参照間の等式(および不等式)である。ECMAパーティションIIIのオブジェクト参照上で定義される変換操作はない。しかし、本発明は、タグ付き数値及び非タグ付き数値間の変換を提供する。オブジェクト参照は、通常、所定のCILオブジェクト命令(例えば、newobj及びnewarr)によって作成される。これらの参照は、例えば、引数として渡され、ローカル変数として格納され、数値として返され、配列内に及びオブジェクトのフィールドとして格納される。本発明は、CLRの使用を実質的に容易にする共通ランタイム言語(CLR)を真のマルチ言語ランライムとして明白にサポートすることを提供する。発明の一特殊態様は、拡張(例えば、算術操作、検証ルール)の追加を提供し、同様に動的言語をサポートする(例えば、オープンソースアプリケーション)。本発明は、オパークでナチュラルサイズの数値を表す継承階層を備える抽象ルート型(例えば、トップ)の使用を介して型セーフ手法におけるタグ付き数値をサポートする。本発明は、各種タグ化手法の使用の必要性と関連する従来の問題を軽減し、小さな(例えば、文字サイズ)のオブジェクトをヒープ上に割り当てるオーバーヘッドを克服するが、パラメータ操作に関する数値の統一表示の利点を依然として維持する。
図3、図4及び図6〜図9は、本発明による各種方法論を示す。説明を簡単化するため本方法論を一続きの動作として図示し説明するが、本発明によると一部の動作が違う順序で起き、及び/又は、他の動作と同時に起きるため、本発明が動作の順番によって限定されないことが本明細書に図示され記述されたことから理解されるであろう。例えば、方法論は、もう一つの方法として一連の相関する状態又はイベントとして状態図等に表現され得る、ということを当業者は理解するであろう。さらに、本発明による方法論を実行するために、図示した動作が全て必要とされるわけではない。
さて図3を参照すると、ダイアグラム300は、本発明の一態様にしたがったタグ付き型処理を示す。310と320を進める前に、これらの動作がECMAパーティションIIへの変更として提供され得ることに留意する。310においては、少なくとも2つの新しい要素型であるELEMENT_TYPE_TAGGEDとELEMENT_TYPE_TOPを、タグ付き数値を処理する階層クラス構造の一部として定義する。320においては、メタデータ検証ルールは拡張され、ユーザ定義型がトップ(TOP)又はタグ付き(TAGGED)型要素から得ることができないことが保証される。上記の通り、CLIはメタデータを使用して、共通型システムによって定義される型を記述及び参照する。メタデータは、個々のプログラミング言語から独立した方法で保存(「持続」)される。したがって、メタデータは、プログラム(コンパイラー、デバッカー等)を操るツール間及びこれらのツールと仮想実行システム(Virtual Execution System)の間で使われる共通交換機構を提供する。メタデータトークンは、通常、例えば、メターデータテーブルの行を指定する4バイト数値、又はユーザーストリングヒープ(User String heap)の開始バイトオフセットを記述する。
処理を行う前に、以下のことをECMAパーティションIIIへの変更の一部として提供できる。330においては、通常、 .ref接尾部を有する全ての命令バリアント(variant)は、タグ付き型数値を処理するために、型トップの数値をスタックにロードする。340において、本発明の別の態様では、算術演算を再定義し、タグ付き数値に取り組む。これを実現するために、パーティションIIIのセクション1.5の表を拡張(例えば、オペランドを変更し、型トップ及びタグで演算をし、算術演算の間に検証ルールを拡張する。)。以下の表は、タグ付き型数値上で演算するために拡張されるECMAパーティションIIIからの様々な命令を示す。
Figure 0004994580
Figure 0004994580
Figure 0004994580
Figure 0004994580
Figure 0004994580
Figure 0004994580
Figure 0004994580
Figure 0004994580
尚、表1は2進数値演算、表2は単項数値演算、表3は2進比較又は分岐演算、表4は整数演算、表5はシフト演算、表6はオーバーフロー算術演算を表す。
図4を参照すると、ダイアグラム400は、本発明の態様によるタグ付き型命令実行の例を示す。以下に記述する命令は、「加算」命令と関連するが、ECMAと関連する命令又はその他の標準は、同様に拡張され、タグ付き型処理、又は、タグ付き処理及び非タグ付き処理の組み合わせに適用されることが理解できるであろう。410においては、クラス又は関数要素が宣言される。例えば、加算命令(又は他のオペランド)を有するリスト関数は、
Figure 0004994580
として書くことができる。
420においては、タグ付き型及び非タグ付き型を宣言できる。例えば、
Figure 0004994580
である。
430においては、タグ付き型演算が実行される。例えば、
Figure 0004994580
である。
440に進み、スタック演算がタグ付き型処理の前、間、及び/又は後に実行される。450においては、タグ付き型演算又は関数は終了する。したがって、この例では、最後の例のリスト関数が、
Figure 0004994580
として現れる場合がある。
図5は、本発明の態様にしたがった1又は複数の実行ルール500を示す。一態様においては、キャストクラス命令又はルールを520に備えることができる。この種類の命令は、オブジェクトをクラスにキャストし、より詳細には図6に関して記述される。別の態様においては、テストクラス命令又はルールを524に備えることができる。この種類の命令は、オブジェクト上でテストを実行し、オブジェクトがクラスのインスタンス又はインタフェースであるかどうかを判断し、より詳細には図7に関して記述される。さらに別の態様においては、整数をオブジェクト参照に変換する命令又はルールを530に備えることができる。この種類の命令(例えば、タグ命令)は、整数値をオブジェクト参照に変換し、より詳細には図8に関して記述される。さらにもう一つの態様においては、オブジェクト参照を整数に変換する命令又はルールを534に備えることができる。この種類の命令(例えば、非タグ命令)は、オブジェクト参照を整数値に変換し、より詳細には図9に関して説明される。その他の命令又はルールを同様に定義できることが理解されよう(例えば、算術命令)。
図6から図9の説明に進む前に、以下のことを提供して、本明細書に記載されたスタック概念を説明するために次のことを示す。
(スタック遷移図)
スタック遷移図は、命令が実行される前後の評価スタックの状態を示す。以下は、代表的なスタック遷移図である。
Figure 0004994580
このダイアグラム例は、スタックが少なくとも2つの要素をスタックにもたなければならないことを示す。定義上、最高の数値(「スタックの最上部」又は「直前にプッシュされた」)はvalue 2と呼ばれ、(value2の前にプッシュされた)真下の数値は、value 1と呼ばれる。(このようなダイアグラムでは、スタックはページに沿って右に増大する。)命令は、スタックからこれらの数値を追い出し、この記述ではresultと呼ばれる別の数値にそれらを置き換える。
図6は、本発明の態様にしたがったキャストクラスルールを示す。
Figure 0004994580
castclass ― オブジェクトをクラスにキャスト
610では、スタック遷移は、キャストクラスのために、以下のように定義される。
Figure 0004994580
620では、キャストクラスは、以下のように定義され、“ ”で囲った項目はECMAパーティションIIIへの変更を示す。
キャストクラス命令は、オブジェクト(例えば、トップ)をクラスにキャストすることを試みる。クラスは、所望のクラスを示すメタデータトークン(typeref or typedef)である。“クラスのトップのオブジェクトがタグ付きされておらず、Tがタグ付きされている場合には、無効例外が投じられる。”スタックのトップのオブジェクトのクラスが、クラスを実行しない場合(クラスがインターフェースである場合)及びクラスのサブクラスでない場合(クラスがレギュラークラスである場合)、無効キャスト例外(Invalid Cast Exception)が投じられる。
1. 配列は、システム配列(System Array)から継承される。
2. FooをBarにキャストできる場合、Foo[ ]をBar[ ]にキャストできる。
3. 上記2の目的のために、enumsは、それらの内在する型として扱われる。したがって、E1とE2が、内在する型を共有するならば、E1[ ]を、E2[ ]にキャストできる。
オブジェクトがヌルならば、キャストクラスは成功しヌルを返す。この動きは、以下に記載のisinstとは異なる。
630においては、キャストクラスの例外を以下に記載する。
オブジェクトがクラスにキャストできない場合には、無効キャスト例外が投じられる。
クラスを発見できない場合は、型ロード例外(Type Load Exception)が投じられる。通常、これは、ランタイムにおいてではなく、CILがネイティブコードに変換されるときに検出される。
640において、キャストクラスの検証可能性を記述する。
コレクトCILは、クラスが有効なTypeRef又はTypeDefトークンであること、及び、objがヌル、オブジェクト参照又はタグ付き即時値であることを保証する。
図7は、本発明の態様によるテストクラスルールを示すダイアグラム700である。
Figure 0004994580
insist ― オブジェクトがクラス又はインタフェースのインスタンスかどうかをテスト
710において、以下のように、スタック遷移はキャストクラスのために定義される。
Figure 0004994580
720において、キャストクラスは以下のように定義され、“ ”で囲まれた事項は、ECMAパーティションIIIへの変更を示す。
isinst命令は、obj(型トップ)がクラスのインスタンスかどうかをテストする。クラスは、所望のクラスを示すメタデータトークン(typeref又はtypedef)である。“スタックのトップにあるオブジェクトがタグなしで、Tがタグ付きである場合に、ヌルがスタックにプッシュされる。”スタックのトップにあるオブジェクトのクラスがクラスを実行し(クラスがインタフェースの場合)、又は、クラスのサブクラスである(クラスがレギュラークラスの場合)場合、あたかもキャストクラスがコールされていたかのように、それは、型クラスにキャストされ、結果は、スタック上にプッシュされる。さもなければ、ヌルは、スタック上にプッシュされる。objがヌルの場合、isinstがヌルを返す。
1. 配列は、システム配列から継承する。
2. FooをBarにキャストできる場合、Foo[]をBarにキャストできる。
3. 2の目的のため、enumsは、内在する型として扱われる。したがって、E1とE2が、内在する型を共有する場合、E1[]を、E2[]にキャストできる。
730において、テストクラスに対する例外は、以下のように記述される。
クラスを発見できない場合は、型ロード例外(Type Load Exception)が投じられる。通常、これは、ランタイムにおいてではなく、CILがネイティブコードに変換されるときに検出される。
740において、キャストクラスの検証可能性を記述する。
コレクトCILは、クラスが、クラスを示す有効なTypeRef又はTypeDefトークンであること、及び、objは常に、ヌルまたは、オブジェクト参照のいずれか一方であることを保証する。
図8は、本発明の態様による整数からタグ付き型への変換ルールを示すダイアグラム800である。
Figure 0004994580
tag[.ovf] ― 整数をオブジェクト参照に変換
810において、スタック遷移は、タグクラスに対して以下のように定義される。
Figure 0004994580
820において、タグは、以下のように定義される。
タグ命令は、タグなし数値i(ネイティブ整数)を(型Oの)型トップのインスタンスに変換する。これは、特別タグビットをiにセットすることによって達成される。
830において、タグに対する例外は、以下のように記述される。
数値タグビットが既にセットされている場合に、オーバーフロー例外(Overflow Exception)が投じられる。
840において、タグに対する検証可能性を記述する。
コレクトCILは、iが型ネイティブintから出ていることを保証する。
図9は、本発明の態様によるタグ型から整数への変換ルールを示すダイアグラム900である。
Figure 0004994580
untag[.ovf] ― オブジェクト参照を整数に変換
尚、opcodes OPCODE_TAGとOPCODE_UNTAGは、有効なCLI opcodesの範囲から割り当てられるであろう(ECMAパーティションIII、セクション1.2.1を参照)。
910において、スタック遷移は、タグなしクラスに対して以下のように定義される。
Figure 0004994580
920において、タグなしは、以下のように定義される。
タグなし(untag)命令は、タグ付きオブジェクト参照をネイティブ整数に変換する。これは、特別タグビットをobjにアンセット(un−setting)することによって達成される。
930において、タグなしに対する例外は、以下のように記述される。
objがタグ付き数値でない場合に、無効キャスト例外が投じられる。
objがヌルの場合に、ヌル参照例外が投じられる。
940において、タグなしに対する検証可能性が記述される。
コレクトCILは、objが型トップのオブジェクト参照等であり、タグ付き整数を表すことを保証する。
図10を参照すると、本発明の様々な態様を実行する例示的環境1010は、コンピュータ1012を含む。コンピュータ1012は、処理ユニット1014、システムメモリ1016及びシステムバス1018を備える。システムバス1018は、限定はされないが、システムメモリ1016を備えるシステムコンポーネントを処理ユニット1014に結合する。処理ユニット1014は、各種利用可能なプロセッサのいずれかであり得る。デュアルマイクロプロセッサ及びその他のマルチプロセッサアーキテクチャもまた、処理ユニット1014として使用され得る。
システムバス1018は、メモリバス、メモリコントローラ、周辺バス又は外部バス、及び/又は、ローカルバスを備える。ローカルバスは、限定はされないが、11−ビットバス、インダストリアル・スタンダード・アーキテクチャ(Industrial Standard Architecture(ISA))、マイクロチャネル・アーキテクチャ(Micro−Channel Architecture(MSA))、イクステンドアイエスエー(Extend ISA(EISA))、インテリジェント・ドライブ・エレクトロニクス(Intelligent Drive Electronics(IDE))、ベサローカルバス(VESA Local Bus(VLB))、周辺コンポーネントインターコネクタ(Peripheral Component Interconnect(PCI))、ユニバーサ・シリアル・バス(Universal Serial Bus(USB))、アドバンスド・グラフィクス・ポート(Advanced Graphics Port(AGP))、パーソナル・カード・インターナショナル・アソシエーション(Personal Card International Association bus(PCMCIA))及びスモール・コンピュータ・システム・インタフェース(Small Computer System Interface(SCSI))を含む各種の有用なバスアーキテクチャを使用する。
システムメモリ1016は、揮発性メモリ1020と不揮発性メモリ1022とを備える。起動時等にコンピュータ1012内の要素間で情報を転送する基本ルーティンを含む基本入出力システム(BIOS)は、不揮発性メモリ1022に記憶される。図によると、制限はないが、不揮発性メモリ1022は、リードオンリーメモリ(ROM)、プログラマブルROM(PROM)、エレクトロリカリ・プログラマブルROM(EPROM)、エレクトロリカリ・イレーサブルROM(EEPROM)又はフラッシュメモリを含むことができる。揮発性メモリ1020は、外部キャッシュメモリとして動作するランダムアクセスメモリ(RAM)を含む。図によると、制限はないが、RAMは、シンクロナウスRMA(SRAM)、ダイナミックRAM(DRAM)、シンクロナウスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンスドSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)及びディレクト・ランバスRAM(DRRAM)等の多くの形式で得られる。
コンピュータ1012は、着脱式/非着脱式、揮発性/不揮発性のコンピュータ記憶媒体をも備える。図10は、例として、ディスク記憶装置1024を示す。ディスク記憶装置1024は、制限はないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、ジャズドライブ(Jaz drive)、ジップドライブ(Zip drive)、LS−100ドライブ、フラッシュメモリカード又はメモリスティックのような装置を備える。さらに、ディスク記憶装置1024は、記憶メディアを単独で備えるか、制限はないが、コンパクト・ディスクROMデバイス(CD−ROM)、CDレコーダブルドライブ(CD−R Drive)、CDリライタブルドライブ(CD−RW Drive)、ディジタル・バーサタイル・ディスク・ROMドライブ(DVD−ROM)等の光ディスクドライブを含むその他の記憶媒体と組み合わせて備える。ディスク記憶装置1024のシステムバス1018への接続を容易にするために、インタフェース1026等の着脱式又は非着脱式インタフェースが通常用いられる。図10は、ユーザと、好適なオペレーティング環境1010に記述される基本コンピュータリソースとの間を媒介として動作するソフトウェアを記述する。ディスク記憶装置1024に記憶されるオペレーティングシステム1028は、制御及びコンピュータシステム1012のリソース割り当てのために動作する。システムアプリケーション1030は、システムメモリ1016内に又はディスク記憶装置1024上のどちらかに格納されるプログラムモジュール1032及びプログラムデータ1034を使ってオペレーティングシステム1028によってリソース管理をうまく行う。本発明が各種オペレーティングシステム又はオペレーティングシステムの組み合わせによって実行されることが理解できる。
ユーザは、入力装置1036を介してコマンド又は情報をコンピュータ1012に入力する。入力装置1036には、制限はないが、マウス等のポインティング装置、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、サテライトディシュ、スキャナー、TVチューナーカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラ等が含まれる。これら及びその他の入力装置は、インタフェースポート1038を介してシステムバス1018を使って処理ユニット1014に接続される。インタフェースポート1038には、例えば、シリアルポート、パラレルポート、ゲームポート及びユニバーサルシリアルバス(USB)が含まれる。出力装置1040は、入力装置1036として幾つか同じ種類のポートを使用する。したがって、例えば、USBポートは、入力をコンピュータ1012に与えるために使用され、コンピュータ1012からの情報を出力装置1040に出力するために使用される。出力アダプター1042は、その他の出力装置1040の中に、特別なアダプターを必要とするモニター、スピーカー及びプリンターのような出力装置1040が幾つかあることを示すために備えられる。
出力アダプター1042には、図に示すように、制限はないが、出力装置1040とシステムバス1018との間の接続手段を備えるビデオカード及びサウンドカードが含まれる。その他の装置、及び/又は、装置のシステムは、リモートコンピュータ1044等の入出力機能を備える。
コンピュータ1012は、リモートコンピュータ1044等の1又は複数のリモートコンピュータとの間の論理的接続を用いてネットワーク環境で動作する。リモートコンピュータ1044は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの装置、ピアー装置又は他の共通ネットワークノード等であり、通常、コンピュータ1012と関連して説明された多くの要素又は全ての要素を含む。簡潔にするために、メモリ記憶装置1046だけをリモートコンピュータ1044とともに図示する。リモートコンピュータ1044は、ネットワークインタフェース1048を介して論理的にコンピュータ1012に接続され、次に、通信接続1050を介して接続される。ネットワークインタフェース1048には、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)等の通信ネットワークを包含する。LAN技術は、FDDI、CDDI、Ethernet(登録商標)/IEEE 1102.3、Token Ring/IEEE1102.5等が含まれる。WAN技術には、ポイントツーポイントリンク、ISDNのような回路スイッチングネットワーク及び変形例、パケットスイッチングネットワーク及びDSLが含まれる。
通信接続1050は、ネットワークインタフェース1048をバス1018に接続するために使用されるハードウェア/ソフトウェアを参照する。通信接続1050は、図を明快にするために、コンピュータ1012内部に示されるが、それは、コンピュータの外部にあってもよい。単に例示目的であるが、ネットワークインタフェース1048に接続するために必要なハードウェア/ソフトウェアには、標準電話機グレードのモデム、ケーブルモデル及びDSLモデム、ISDNアダプター及びイーサネット(登録商標)カードが含まれる。
図11は、本発明と相互に作用し合う例示的なコンピュータ環境1100の概略ブロック図である。このシステム1100は、1又は複数のクライアント1110を含む。クライアント1110は、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)であり得る。システム1100は、1又は複数のサーバ1130も含む。サーバ1130は、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピューティング装置)であり得る。例えば、サーバ1130は、スレッドを格納し、例えば、本発明を使用することによって変換を実行する。クライアント1110とサーバ1130間で見込まれる一つの通信は、2又は3以上のコンピュータプロセス間で伝送されるように適合化されたデータパケットの形式で行われ得る。システム1100は、クライアント1110とサーバ1130との間の通信を容易にするために使用される通信フレームワーク1150を含む。クライアント1110は、クライアント1110の情報を保存するために使用される1又は複数のクライアントデータ格納部1160に接続される。同様に、サーバ1130は、サーバ1130の情報を保存するために使用される1又は複数のサーバデータ格納部1140に接続される。
上述した内容は、本発明の例を含む。言うまでもなく、本発明を説明する目的で考え付く全てのコンポーネントの組み合わせ又は方法論を記述することはできないが、当業者であれば、さらに多くの本発明の組み合わせ及び置換が可能であることを認識する。したがって、本発明は、添付する特許請求の範囲の精神及び範囲に含まれる全てのそのような変更、改良及び変形を包括的にとらえるつもりである。
本発明の態様によるタグ付き型処理システムを示すブロック図である。 本発明の態様によるタグ付き階層を示すブロック図である。 本発明の態様によるタグ付き型処理を示すフローチャートである。 本発明の態様によるタグ付き型命令実行を示すフローチャートである。 本発明の態様による実行ルールを示す図である。 本発明の態様によるキャストクラスルールを示すフローチャートである。 本発明の態様によるテストクラスルールを示すフローチャートである。 本発明の態様による整数からタグ付き型への変換ルールを示すフローチャートである。 本発明の態様によるタグ付き型から整数への変換ルールを示すフローチャートである。 本発明の態様に適したオペレーティング環境を示すブロック図である。 本発明と相互作用するコンピュータ環境の例を示すブロック図である。
符号の説明
110 動的言語
120 コンパイラー
124 CIL命令
130 仮想マシン
134 アプリケーション
140 タグ付き型
150 検証ルール
160 スタック例外ハンドラー
210 トップ
220 システムオブジェクト
230 タグ付き型
240 これらの型への継承を却下するランタイムルール
500 実行ルール
520 キャストクラス
524 テストクラス
530 整数をオブジェクト参照に変換
534 オブジェクト参照を整数に変換
1028 オペレーティングシステム
1030 アプリケーション
1032 モジュール
1034 データ
1014 処理ユニット
1016 システムメモリ
1020 揮発性
1022 不揮発性
1026 インタフェース
1024 ディスクストレージ
1042 出力アダプター
1038 インタフェースポート
1050 通信接続
1040 出力デバイス
1036 入力デバイス
1048 ネットワークインタフェース
1044 リモートコンピュータ
1046 メモリストレージ
1110 クライアント
1130 サーバ
1140 サーバデータ格納部
1150 通信フレームワーク
1160 クライアントデータ格納部

Claims (11)

  1. 実行時に動的に型付けされる動的プログラミング言語を実行するコンピュータシステムであって、
    前記動的プログラミング言語によって宣言され、ポインター数値とその他の数値とを区別する1又は2以上のタグ付き数値の継承階層を宣言するクラスコンポーネントであって、前記継承階層が、分岐ツリーの一方に非タグ付き型のシステムオブジェクト階層を含み、もう一方に前記タグ付き数値を表すシールドされた型であるタグ付き型を含む抽象ルート型を有し、前記タグ付き数値が、算術演算を実行するために変換されるクラスコンポーネントと、
    ランタイム拡張を含む1つまたは複数の実行ルールを提供し、前記システムオブジェクト階層に含まれるユーザ定義の型が、前記抽象ルート型または前記タグ付き数値からプロパティを継承ないようにする少なくとも1つのメタデータ検証ルールを備えるルールコンポーネントと
    を備え、
    前記コンピュータシステムの記憶装置に記憶されたコンピュータ可読命令が、該コンピュータシステムの処理装置によって実行されると、
    前記クラスコンポーネントおよび前記ルールコンポーネントを使用して、前記ユーザ定義の型が前記抽象ルート型または前記タグ付き数値からはプロパティを継承ないようにして、実行時に動的に型付けされる前記動的プログラミング言語を実行することを特徴とするシステム。
  2. 前記動的プログラミング言語は、仮想マシンによって実行される中間言語命令を生成するコンパイラーに供給されることを特徴とする請求項1記載のシステム。
  3. 前記動的プログラミング言語は、パール(Perl)、スキーム(Scheme)、ラビー(Ruby)、ピーソン(Python)及びスモールトーク(Smalltalk)のうちの一つを少なくとも含むことを特徴とする請求項1記載のシステム。
  4. 前記仮想マシンは、仮想実行システム(VES)、共通言語ランライム(CLR)及びジャバ仮想マシンのうちの一つを少なくとも含むことを特徴とする請求項2記載のシステム。
  5. 前記タグ付き数値は、共通言語インフラストラクチャ(CLI)を定義する「ECMA標準」にしたがうことを特徴とする請求項1記載のシステム。
  6. 前記ECMA標準は、少なくとも5つのパーティションを含み、前記パーティションは、パーティションI:アーキテクチャ、パーティションII:メタデータ定義及びセマンティクス、パーティションIII:CIL命令セット、パーティションIV:プロファイル及びライブラリー及びパーティションV:アネックスを含むことを特徴とする請求項5記載のシステム。
  7. 前記共通言語インフラストラクチャ(CLI)は、共通型システム、メタデータ記述、共通言語仕様及び仮想実行システムのうちの少なくとも一つを含むことを特徴とする請求項5記載のシステム。
  8. 前記抽象ルート型は、ECMAパーティションIIIで提供される型Oのオブジェクト参照に対応することを特徴とする請求項1記載のシステム。
  9. 前記抽象ルート型と関連する数値を「.ref」接尾辞を備える命令バリアントのスタックにロードするコンポーネントを更に備えることを特徴とする請求項1記載のシステム。
  10. 前記タグ付き数値を操作する少なくとも1つの命令をさらに備え、前記命令は、キャストクラス、テストクラス、整数値をオブジェクト参照に変換するタグ命令、及びオブジェクト参照を整数値に変換するアンタグ命令を少なくとも一つ含むことを特徴とする請求項1記載のシステム。
  11. 請求項1記載の前記クラスコンポーネントと前記ルールコンポーネントとを使用して、コンピュータ上で、実行時に動的に型付けされる動的プログラミング言語を実行するための前記コンピュータ可読命令を格納したことを特徴とするコンピュータ記憶媒体。
JP2004148158A 2003-06-10 2004-05-18 動的ランタイム環境でタグ付き型を用いるシステム及び方法 Expired - Fee Related JP4994580B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/458,460 US7168063B2 (en) 2003-06-10 2003-06-10 Systems and methods for employing tagged types in a dynamic runtime environment
US10/458,460 2003-06-10

Publications (2)

Publication Number Publication Date
JP2005004737A JP2005004737A (ja) 2005-01-06
JP4994580B2 true JP4994580B2 (ja) 2012-08-08

Family

ID=33299639

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004148158A Expired - Fee Related JP4994580B2 (ja) 2003-06-10 2004-05-18 動的ランタイム環境でタグ付き型を用いるシステム及び方法

Country Status (5)

Country Link
US (2) US7168063B2 (ja)
EP (1) EP1486870B1 (ja)
JP (1) JP4994580B2 (ja)
KR (1) KR101046035B1 (ja)
CN (1) CN100507837C (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US8566806B2 (en) * 2005-03-04 2013-10-22 Microsoft Corporation Command-line data-type discovery and conversion
US7571153B2 (en) * 2005-03-28 2009-08-04 Microsoft Corporation Systems and methods for performing streaming checks on data format for UDTs
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
US8176469B2 (en) * 2006-05-04 2012-05-08 Oracle International Corporation Inter language interoperability using a variant type
CN100403260C (zh) * 2006-08-24 2008-07-16 上海科泰世纪科技有限公司 一种构件的继承方法
US8190661B2 (en) * 2007-01-24 2012-05-29 Microsoft Corporation Using virtual repository items for customized display
US8850414B2 (en) * 2007-02-02 2014-09-30 Microsoft Corporation Direct access of language metadata
US8145673B2 (en) * 2007-02-16 2012-03-27 Microsoft Corporation Easily queriable software repositories
US20080201330A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Software repositories
US8490051B2 (en) * 2007-02-28 2013-07-16 Microsoft Corporation Generic interface for numeric types
US20080250325A1 (en) * 2007-04-03 2008-10-09 Feigenbaum Barry A Integrated Development Environment with Object-Oriented GUI Rendering Feature
US20080282238A1 (en) * 2007-05-10 2008-11-13 Microsoft Corporation Static type for late binding
US7831625B2 (en) * 2007-05-16 2010-11-09 Microsoft Corporation Data model for a common language
US8918772B1 (en) 2007-07-25 2014-12-23 Google Inc. Statically analyzing program correctness for a dynamic programming language
US8387020B1 (en) * 2007-07-25 2013-02-26 Google Inc. Verifying that a method has been implemented for a program written in a dynamic programming language
US8261248B2 (en) * 2007-11-05 2012-09-04 Sap Ag System and method of executing a dynamic program in a structured environment
US8011008B2 (en) * 2007-11-13 2011-08-30 Microsoft Corporation Application security model
US8601448B2 (en) * 2007-12-05 2013-12-03 Microsoft Corporation Representing pointers and boxing in environments using only reference types
US8140963B2 (en) * 2007-12-19 2012-03-20 Yahoo! Inc. Tag aggregator
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9032374B2 (en) * 2008-04-03 2015-05-12 International Business Machines Corporation Metadata-integrated debugger
US20090271765A1 (en) * 2008-04-29 2009-10-29 Microsoft Corporation Consumer and producer specific semantics of shared object protocols
US8095963B2 (en) 2008-04-30 2012-01-10 Microsoft Corporation Securing resource stores with claims-based security
US9164737B2 (en) * 2008-05-16 2015-10-20 Microsoft Technology Licensing, Llc Augmenting programming languages with a type system
US8336035B2 (en) * 2008-12-16 2012-12-18 Microsoft Corporation Customizable dynamic language expression interpreter
US8782607B2 (en) 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
US8095571B2 (en) * 2009-06-22 2012-01-10 Microsoft Corporation Partitioning modeling platform data
GB2486965B (en) * 2009-10-21 2016-08-03 Ibm Method and system for improving software execution time by optimizing a performance model
US8417800B2 (en) * 2010-07-16 2013-04-09 Broadcom Corporation Method and system for network configuration and/or provisioning based on open virtualization format (OVF) metadata
US8572574B2 (en) * 2010-07-16 2013-10-29 Fujitsu Limited Solving hybrid constraints to validate specification requirements of a software module
US8862640B2 (en) * 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
US8978007B2 (en) 2011-06-30 2015-03-10 Microsoft Technology Licensing, Llc Static metadata in dynamic programs
US9342450B2 (en) * 2011-11-29 2016-05-17 Red Hat Israel, Ltd. On-demand hypervisor memory mapping
KR20140052459A (ko) * 2012-10-24 2014-05-07 삼성에스디에스 주식회사 Odbc프로그램 자동 코딩 방법
CN103605543B (zh) * 2013-11-19 2017-06-06 北京国双科技有限公司 验证属性转换方法和装置
US10642903B2 (en) 2014-09-29 2020-05-05 International Business Machines Corporation Tagging and querying system objects
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
CN107748749A (zh) * 2017-08-18 2018-03-02 平安科技(深圳)有限公司 一种内存数据的更新方法、终端、设备以及可读存储介质
US11360976B2 (en) 2017-08-31 2022-06-14 Oracle International Corporation Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10684873B2 (en) * 2018-06-12 2020-06-16 Oracle International Corporation Efficient data decoding using runtime specialization
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
CN112114862B (zh) * 2019-06-20 2023-12-22 普天信息技术有限公司 spring boot实例并发处理方法及装置
US11307837B2 (en) 2020-08-24 2022-04-19 International Business Machines Corporation Runtime type identification of an object utilizing class inheritance relationships
CN112333256B (zh) * 2020-10-28 2022-02-08 常州微亿智造科技有限公司 一种工业物联网下网络传输时数据转化框架系统及其方法
CN113377638B (zh) * 2021-06-11 2023-10-27 北京百度网讯科技有限公司 性能测试工具的生成方法和装置
CN115686888B (zh) * 2022-12-30 2023-03-21 浙江城云数字科技有限公司 一种基于规则的处置行为流程编排方法、装置及应用

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519868A (en) * 1993-12-30 1996-05-21 International Business Machines Corporation Compilation of information contained in GDMO name bindings
GB2351370A (en) * 1999-06-25 2000-12-27 Ibm Data processing with policed object union
GB0023570D0 (en) * 2000-09-26 2000-11-08 Volantis Systems Ltd Web server
US6834301B1 (en) * 2000-11-08 2004-12-21 Networks Associates Technology, Inc. System and method for configuration, management, and monitoring of a computer network using inheritance
US7496892B2 (en) * 2003-05-06 2009-02-24 Andrew Nuss Polymorphic regular expressions

Also Published As

Publication number Publication date
CN100507837C (zh) 2009-07-01
CN1573688A (zh) 2005-02-02
US20070067372A1 (en) 2007-03-22
JP2005004737A (ja) 2005-01-06
KR20040111020A (ko) 2004-12-31
EP1486870B1 (en) 2016-04-13
KR101046035B1 (ko) 2011-07-01
EP1486870A3 (en) 2005-05-25
US20040255267A1 (en) 2004-12-16
US8024704B2 (en) 2011-09-20
EP1486870A2 (en) 2004-12-15
US7168063B2 (en) 2007-01-23

Similar Documents

Publication Publication Date Title
JP4994580B2 (ja) 動的ランタイム環境でタグ付き型を用いるシステム及び方法
US20170228223A1 (en) Unified data type system and method
US6738968B1 (en) Unified data type system and method
US6381737B1 (en) Automatic adapter/stub generator
CN106663019B (zh) 处理值类型
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
US7536682B2 (en) Method and apparatus for performing interpreter optimizations during program code conversion
JP4562918B2 (ja) インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
US7627594B2 (en) Runtime support for nullable types
US20070028210A1 (en) Dynamically typed unsafe variance
US7730465B2 (en) Mixed types
US7496889B2 (en) Whitespace keywords
Pichler et al. Hybrid Execution: Combining Ahead-of-Time and Just-in-Time Compilation
Turas Gradual C Programming for Typed Lua
Mascarenhas et al. Running Lua Scripts on the CLR through Bytecode Translation.
WO2006059248A2 (en) Mixed-mode code generation and execution
Kastinger Piero Ploner (pploner@ cosy. sbg. ac. at), Michael Wallner (mwallner@ cosy. sbg. ac. at) University of Salzburg, Department of Computer Sciences
Cortonesi Objective-C frameworks to Eiffel converter
Cook et al. Java and C/C++ Language Features in Terms of Network Programming
Schmidt An Overview of C+
Back Parallelization of General Purpose Programs Using Optimistic Techniques from Parallel Discrete Event Simulation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100514

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100812

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110104

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110105

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110131

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20111201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120405

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: 20120509

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4994580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees