JP2003140908A - コード変換装置並びにコード変換プログラム - Google Patents

コード変換装置並びにコード変換プログラム

Info

Publication number
JP2003140908A
JP2003140908A JP2001334824A JP2001334824A JP2003140908A JP 2003140908 A JP2003140908 A JP 2003140908A JP 2001334824 A JP2001334824 A JP 2001334824A JP 2001334824 A JP2001334824 A JP 2001334824A JP 2003140908 A JP2003140908 A JP 2003140908A
Authority
JP
Japan
Prior art keywords
code
redundant
intermediate code
shortened
processing
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.)
Pending
Application number
JP2001334824A
Other languages
English (en)
Inventor
Tetsuyuki Kobayashi
哲之 小林
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.)
Aplix Corp
Original Assignee
Aplix 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 Aplix Corp filed Critical Aplix Corp
Priority to JP2001334824A priority Critical patent/JP2003140908A/ja
Publication of JP2003140908A publication Critical patent/JP2003140908A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 コードの実行時に無駄な処理を行うことを回
避して、コードの実行速度を向上させること。 【解決手段】 情報の記憶手段11と、情報の処理手段
10とを備え、前記記憶手段10が記憶したコードを変
換するコード変換装置1において、前記処理手段10
は、a)前記記憶手段から前記コードを読み出す処理
と、b)当該コードの中から冗長コードを検出する処理
と、c)検出された冗長コードを短縮コードに変換する
処理と、d)前記c)の処理で変換した短縮コードを含
むコードを前記記憶手段11に格納する処理と、を実行
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、仮想計算機または
計算機上で実行されるコードを変換するコード変換装置
およびコード変換プログラムに関する。
【0002】
【従来の技術】例えば、仮想計算機が用いられるプログ
ラム言語では、Java(登録商標)言語などが一般に
良く知られている。Java(登録商標)言語で記述さ
れたプログラム(ソースコード)は、クラスと呼ばれる
ソースコードのまとまりを呼び出して様々な機能を実現
させている。
【0003】このクラスとは、メソッドと呼ばれる関数
を複数含むものであり、どのようなプログラムにも組み
込み可能なように、汎用的につくられている。また、メ
ソッドとはいくつかの処理命令をまとめたものであり、
各メソッド毎に、特定の機能を実現させることが可能で
ある。
【0004】上記プログラム(ソースコード)は、コン
パイラによってコンパイルされ、バイトコードと呼ばれ
る中間コードからなるクラスファイルに変換され、その
状態で仮想計算機上にて実行される。
【0005】
【発明が解決しようとする課題】しかしながら、上述し
たように、クラスの中には複数のメソッドが含まれてお
り、クラスが行う処理の種類によっては、必要のないメ
ソッドや、単純な処理しか行わないメソッドが出てく
る。例えば、何も行わないメソッド(リターンのみ、ま
たは、ノップおよびリターンのみ)、単に特定の変数か
ら特定の値を読み出したり、書き込んだりするだけのメ
ソッドなどである。
【0006】このようなメソッドが中間コードに変換さ
れると、その中間コードは無駄な命令を含んでいること
になるので、そのようなクラスファイルを実行する際に
実行速度が遅くなるという不都合があった。このような
問題は、Java(登録商標)におけるメソッドに限ら
れず、C言語における関数等においても同様である。
【0007】
【発明の目的】本発明は上記の事情に鑑みてなされたも
のであって、コードの実行時に無駄な処理を行うことを
回避して、コードの実行速度を向上させることを目的と
する。
【0008】
【課題を解決するための手段】上記課題を解決するた
め、本発明の第1の観点では、情報の記憶手段と、情報
の処理手段とを備え、前記記憶手段が記憶したコードを
変換するコード変換装置において、前記処理手段は、
a)前記記憶手段から前記コードを読み出す処理と、
b)当該コードの中から冗長コードを検出する処理と、
c)検出された冗長コードを短縮コードに変換する処理
と、d)前記c)の処理で変換した短縮コードを含むコ
ードを前記記憶手段に格納する処理と、を実行すること
を特徴としたコード変換装置を提供する。
【0009】上記本発明の第1の観点においては、前記
記憶手段は、さらに、コードに含まれる冗長コードと、
当該冗長コードと同等機能を奏する短縮コードとを関連
付けたテーブルを記憶しており、前記処理手段が実行す
る冗長コードを検出する処理、および、検出された冗長
コードを短縮コードに変換する処理は、前記テーブルに
基づいて行われることが好適である。
【0010】本発明の第2の観点では、情報の記憶手段
と、情報の処理手段とを備え、前記記憶手段が記憶した
コードを変換するコード変換装置で用いられ、前記処理
手段に、a)前記記憶手段からコードを読み出す手順
と、b)当該コードの中から冗長コードを検出する手順
と、c)検出した冗長コードを短縮コードに変換する手
順と、d)前記c)の処理で変換した短縮コードを含む
コードを前記記憶手段に格納する手順と、を実行させる
ためのコード変換プログラムを提供する。
【0011】本発明の第1および第2のいずれの観点に
おいても、前記冗長コードとしては、何も行わないコー
ド、特定の変数から特定の値を読み出すコード、特定の
変数に特定の値を書き込むコードが例示される。
【0012】本発明によれば、コードの中から冗長コー
ドを検出し、検出された冗長コードを短縮コードに変換
するので、プログラムを記述したコードに含まれる不要
なコードを短縮することができ、これにより実行時に無
駄な処理を行うことを回避して、コードの実行速度を向
上させることができる。
【0013】
【発明の実施の形態】以下に、図面を参照して本発明に
ついて詳細を説明する。
【0014】図1は、本発明の中間コード変換装置の概
略を示すブロック図であり、図2は、本発明の中間コー
ド変換プログラムのフローチャートであり、図3は後述
する変換テーブル15のデータ構造の一例を示す図であ
る。
【0015】図1に示す本発明の中間コード変換装置1
は、処理手段であるCPU10と、記憶手段であるメモ
リ11を有するものである。
【0016】ここで図1では、処理手段であるCPU1
0は、便宜上1つしか記載されていないが、1つに限ら
れるものではなく、複数のCPUや複数種類の演算装置
により分散処理をさせるものであっても良い。記憶手段
であるメモリ11も同様で、複数の記憶手段を分散配置
しても良い。
【0017】このメモリ11には、Java(登録商
標)言語で書かれたプログラムをコンパイルすることに
より生成される、中間コードからなるクラスファイル1
2が格納されている。
【0018】また、メモリ11には、クラスファイル1
2中に存在する冗長中間コード13と関連付けられて記
憶されている短縮中間コード14及び変換テーブル15
が格納されている。
【0019】ここで述べる冗長中間コード13とは、ク
ラスが行う処理の種類によって、不要となったメソッド
や単純な処理しか行わないメソッドが中間コードに変換
されたものを示す。
【0020】不要なメソッドや単純な処理しか行わない
メソッドとは、具体的に述べると、例えば、リターンの
み、またはリターンおよびノップのみで構成され、何も
行わないメソッド、単に特定の変数から特定の値を読み
出したり、書き込んだりするだけのメソッドなどであ
る。このようなメソッドが中間コードに変換されると、
不要な命令を含んだ中間コードが生成されることにな
る。
【0021】また、短縮中間コード14とは、冗長中間
コード13と関連付けられてメモリ11に記憶されてい
て、冗長中間コード13と同等の機能を奏するものであ
り、且つ、そのコードサイズが冗長中間コード13のサ
イズ以下の中間コードをいう。
【0022】以下に、中間コード変換装置1の動作につ
いて、中間コード変換装置1を動作させる中間コード変
換プログラムのフローチャートである図2を参照しつつ
説明する。
【0023】まず、CPU10はメモリ11からクラス
ファイル12を構成している中間コードを読み出す(S
T20)。そして、CPU10は、読み出した中間コー
ドから、冗長中間コード13を検出する(ST21)。
ここで、冗長中間コード13を検出したら、その冗長中
間コード13と関連付けられた短縮中間コード14をメ
モリ11から読み出し、冗長中間コード13を短縮中間
コード14に変換するインライン展開を行う(ST2
2)。
【0024】このST21及びST22における動作に
ついて、さらに詳細に説明する。例えば図3に示すよう
なデータ構造を有する変換テーブル15がメモリ11に
格納されており、上記した冗長中間コード13は、変換
テーブル15上で短縮中間コード14と1対1の関係で
関連付けられている。
【0025】ここでは、CPU10がクラスファイル1
2から中間コードを読み出す際に、変換テーブル15上
に記憶された冗長中間コードAを検出したとする。する
とCPU10は、インライン展開を行う。すなわち、C
PU10は、変換テーブル15に問い合わせ、冗長中間
コードAに対応した短縮中間コードAを呼び出し、冗長
中間コードAを短縮中間コードAに変換する。
【0026】例えば、冗長中間コードAが、何も行わな
い不要なメソッドを中間コードに変換したものであった
場合には、それに対応する短縮中間コードAは、冗長中
間コードAを削除させる中間コードとしても良い。
【0027】また、図3に示すように、変換テーブル1
5には、冗長中間コードB、冗長中間コードCについて
も同様に、1対1で関連付けられた短縮中間コードB、
短縮中間コードCが記憶されていている。そして、CP
U10が、冗長中間コードB、冗長中間コードCを検出
した場合に、それぞれを短縮中間コードB、短縮中間コ
ードCに変換するインライン展開を行う。
【0028】例えば冗長中間コードBが、特定の変数か
ら特定の値を読み出すメソッドを中間コードに変換した
ものであったとする。このような場合、冗長中間コード
Bに対応する短縮中間コードBは、上記したメソッドを
呼び出すコードや変数及び値を特定するコードなどが削
除された、直接特定の変数から特定の値を読み込むコー
ドとしておけばよい。
【0029】同様に、例えば冗長中間コードCが、特定
の変数に特定の値を書き込むメソッドを中間コードに変
換したものであったする。このときも、そのメソッドを
呼び出すコードや、変数及び値を特定するコードなどを
削除し、冗長中間コードCに対応する短縮中間コードC
を、あらかじめ、直接特定の変数に特定の値が書き込ま
れたコードとすればよい。
【0030】このように、冗長中間コードを、それと同
じ機能を奏し、且つコードサイズが当該冗長中間コード
以下の短縮中間コードに変換することで、冗長中間コー
ドにしたがってメソッドを呼び出して、メソッド中の全
ての処理を実行させる手間を省くことができる。しか
も、このような変換を行ってもクラスファイル12のフ
ァイルサイズが大きくなることはない。
【0031】よって、メモリを浪費することなく、不要
な処理を行う時間を削減することができ、実行時にその
実行速度を向上させることができる。
【0032】以上のように、ST22にてクラスファイ
ル12中の冗長中間コード13が短縮中間コード14に
変換された後、この変換後のクラスファイルは再度メモ
リ11に保存される(ST23)。ここで、クラスファ
イルを保存する際には変換前のクラスファイルに上書き
保存することが好ましい。以上で全ての処理が終了す
る。
【0033】以上に説明した処理により、短縮中間コー
ドに変換した後のクラスファイルは、そのファイルサイ
ズが小さくなるため、仮想計算機で実行する場合に、そ
の実行時間を短縮することができる。
【0034】この中間コード変換装置1は、例えば携帯
電話やネットワークを介した通信端末などに組み込まれ
ていても良いし、スタンドアロン型の機器に組み込まれ
ていても良い。
【0035】また、中間コード変換プログラムは、中間
コード変換装置1のメモリ11に格納されていても良い
し、CPU10が独自で有するメモリ内に書き込まれて
いても良い。さらには、ネットワークを介して、仮想計
算機を有する各種通信端末にダウンロードされても良
い。
【0036】また、この中間コード変換プログラムは、
各種通信端末で読み取り可能な記録媒体に記録されてい
ることが好ましい。
【0037】なお、本発明は、上述の実施形態に限定さ
れるものではない。例えば、上記の実施形態ではJav
a(登録商標)言語におけるクラスファイルにおいて冗
長中間コードを短縮中間コードに変換する構成とした
が、本発明はC言語の関数等についても適用することが
可能である。具体的には、C言語における冗長コードを
短縮コードに変換する処理などにおいても好適に実施で
き、この場合にも実行時に無駄な処理を回避することに
より実行速度を速くすることができる。
【0038】また、冗長中間コードは、上記した、何も
行わないメソッド、単に特定の変数から特定の値を読み
出したり、書き込んだりするだけのメソッドを中間コー
ドに変換したものだけでなく、その他の処理を行うメソ
ッドを中間コードに変換したものであっても良い。
【0039】加えて、冗長中間コードと短縮中間コード
の関連付けは、必ずしも1対1に限定されるものではな
い。例えば、ある冗長中間コードに対して、複数の短縮
中間コードが関連付けられて記憶されていても良い。こ
の場合には、複数の短縮中間コードのいずれのコードサ
イズもほぼ同様であることが好ましい。
【0040】さらに、冗長中間コードと短縮中間コード
の関連付けを動的に更新するようにしてもよい。例え
ば、ある中間コードを逐次的に解釈して実行する際に、
メソッドが冗長であるか否かを動的に判断し、新たに冗
長であると判断されたメソッドを前記関連付けに追加す
るようにしても構わない。
【0041】
【発明の効果】以上詳細に説明したように、本発明の中
間コード変換装置においては、クラスファイルを構成す
る中間コードのうち、冗長中間コードをそれと同等機能
を奏する短縮中間コードに変換することで、冗長中間コ
ードのサイズを小さくすることが可能となる。また、本
発明の中間コード変換プログラムにおいては、クラスフ
ァイルを構成する中間コードのうち、冗長中間コードを
それと同等機能を奏する短縮中間コードに変換させるこ
とで、中間コードに含まれる無駄な命令を省くことがで
き、これにより中間コードの実行を高速化することがで
きる。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる中間コード変換装
置の概略を示すブロック図。
【図2】本発明における中間コード変換プログラムのフ
ローチャート。
【図3】変換テーブルのデータ構造の一例を示す図。
【符号の説明】
1 中間コード変換装置 10 CPU 11 メモリ 12 クラスファイル 13 冗長中間コード 14 短縮中間コード 15 変換テーブル

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 情報の記憶手段と、情報の処理手段とを
    備え、前記記憶手段が記憶したコードを変換するコード
    変換装置において、 前記処理手段は、 a)前記記憶手段から前記コードを読み出す処理と、 b)当該コードの中から冗長コードを検出する処理と、 c)検出された冗長コードを短縮コードに変換する処理
    と、 d)前記c)の処理で変換した短縮コードを含むコード
    を前記記憶手段に格納する処理と、 を実行することを特徴としたコード変換装置。
  2. 【請求項2】 前記記憶手段は、さらに、コードに含ま
    れる冗長コードと、当該冗長コードと同等機能を奏する
    短縮コードとを関連付けたテーブルを記憶しており、前
    記処理手段が実行する冗長コードを検出する処理、およ
    び、検出された冗長コードを短縮コードに変換する処理
    は、前記テーブルに基づいて行われることを特徴とする
    請求項1に記載のコード変換装置。
  3. 【請求項3】 前記冗長コードは、何も行わないコー
    ド、特定の変数から特定の値を読み出すコード、特定の
    変数に特定の値を書き込むコードを含むことを特徴とす
    る請求項1または請求項2に記載のコード変換装置。
  4. 【請求項4】 情報の記憶手段と、情報の処理手段とを
    備え、前記記憶手段が記憶したコードを変換するコード
    変換装置で用いられ、 前記処理手段に、 a)前記記憶手段からコードを読み出す手順と、 b)当該コードの中から冗長コードを検出する手順と、 c)検出した冗長コードを短縮コードに変換する手順
    と、 d)前記c)の処理で変換した短縮コードを含むコード
    を前記記憶手段に格納する手順と、を実行させるための
    コード変換プログラム。
JP2001334824A 2001-10-31 2001-10-31 コード変換装置並びにコード変換プログラム Pending JP2003140908A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001334824A JP2003140908A (ja) 2001-10-31 2001-10-31 コード変換装置並びにコード変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001334824A JP2003140908A (ja) 2001-10-31 2001-10-31 コード変換装置並びにコード変換プログラム

Publications (1)

Publication Number Publication Date
JP2003140908A true JP2003140908A (ja) 2003-05-16

Family

ID=19149898

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001334824A Pending JP2003140908A (ja) 2001-10-31 2001-10-31 コード変換装置並びにコード変換プログラム

Country Status (1)

Country Link
JP (1) JP2003140908A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101112697B1 (ko) 2010-04-14 2012-03-16 주식회사 인프라웨어테크놀러지 에스케이브이엠 및 위피자바 응용프로그램을 안드로이드 응용프로그램으로 변환하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101112697B1 (ko) 2010-04-14 2012-03-16 주식회사 인프라웨어테크놀러지 에스케이브이엠 및 위피자바 응용프로그램을 안드로이드 응용프로그램으로 변환하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Similar Documents

Publication Publication Date Title
CN111176791B (zh) 一种基于多虚拟机区块链平台跨虚拟机调用方法
CA2306519A1 (en) Method and apparatus for handling exceptions as normal control flow
JP4086791B2 (ja) コンパイラプログラム、動的コンパイラプログラム、再現コンパイラプログラム、再現コンパイラ、コンパイル方法、及び記録媒体
CN112783558A (zh) 一种加快Linux内核启动的自解压阶段的方法
CN116521181B (zh) 基于游戏系统的脚本数据处理方法、装置、设备及介质
JP2000276450A (ja) エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体
CN111596970A (zh) 动态库延迟加载方法、装置、设备和存储介质
JP4864287B2 (ja) 識別方法、記録媒体及びコンピュータシステム
JP2003140908A (ja) コード変換装置並びにコード変換プログラム
JP5186802B2 (ja) マイクロプロセッサ
JP3863544B1 (ja) 演算処理装置及び演算処理方法
CN113641643A (zh) 文件写入方法及装置
JP2004078604A (ja) 情報処理方法とその方法を実現するプログラム及び記録媒体
JP2010140233A (ja) エミュレーションシステム及びエミュレーション方法
JP2005202614A (ja) 動的変換方式のエミュレータ向けメモリ管理方法
CN117289913A (zh) 编译器源文件处理方法、电子设备和介质
JP2001236243A (ja) デバッグ方法、および、デバッグ用プログラムを記録した記録媒体
JPH03282935A (ja) コンパイル処理装置及びコンパイル処理方式
JP2000231494A (ja) ソフトウェア実行システム及びソフトウェア実行方法
CN114510301A (zh) 数据处理方法、装置、存储介质和电子装置
JP2004334436A (ja) 大規模データ取扱装置
JP2004302840A (ja) データベースアクセス方法
JP2004240802A (ja) データ処理システム及びデータ処理方法、並びにコンピュータ・プログラム
JP2007219724A (ja) メモリダンプファイルシステム、メモリダンプファイル方法及びコンピュータプログラム
JPH11134202A (ja) タスク切替え装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070418

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070810