JP2002318696A - プログラム実行装置および方法 - Google Patents

プログラム実行装置および方法

Info

Publication number
JP2002318696A
JP2002318696A JP2001124824A JP2001124824A JP2002318696A JP 2002318696 A JP2002318696 A JP 2002318696A JP 2001124824 A JP2001124824 A JP 2001124824A JP 2001124824 A JP2001124824 A JP 2001124824A JP 2002318696 A JP2002318696 A JP 2002318696A
Authority
JP
Japan
Prior art keywords
native code
compressed
code
storage unit
compression
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.)
Withdrawn
Application number
JP2001124824A
Other languages
English (en)
Inventor
Masato Hagiwara
正人 萩原
Toyohiko Yoshida
豊彦 吉田
Mamoru Sakamoto
守 坂本
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001124824A priority Critical patent/JP2002318696A/ja
Priority to US10/073,215 priority patent/US7065751B2/en
Publication of JP2002318696A publication Critical patent/JP2002318696A/ja
Withdrawn 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/445Program loading or initiating
    • 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
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 必要なメモリの容量が小さいプログラム実行
装置を提供する。 【解決手段】 上位のモジュールよりあるメソッドの呼
出しがあった場合には、呼出されたメソッドのバイトコ
ードが、伸張されており、伸張済みバイトコード格納領
域に格納されているか否かを調べる(S2)。バイトコ
ードが伸張されていなければ(S2でNO)、圧縮バイ
トコード格納領域に格納されたバイトコードが伸張され
(S4)、伸張後のバイトコードが伸張済みバイトコー
ド格納領域に格納される(S6)。このメソッドの圧縮
バイトコードが伸張済みであることを表わすため、伸張
済みフラグの値がオンに変更される(S8)。インタプ
リタを用いて、伸張済みのバイトコードが1命令ずつ解
釈されながら実行される(S10)。その後、呼出し側
のモジュールへ復帰するための処理を行なう(S1
2)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム実行装
置および方法に関し、特に、データを格納するメモリの
容量が小さいプログラム実行装置および方法に関する。
【0002】
【従来の技術】Java(R)(米国サンマイクロシス
テムズ社の登録商標)言語で記述されたプログラムは、
実行に先だってバイトコードと呼ばれるプラットフォー
ムに依存しないコードにコンパイルされ、配布される。
Java(R)仮想マシンは、インタプリタを用いてバ
イトコードを1命令ずつ解釈しながら実行することによ
り、プログラムの実行を行なう。最近では、バイトコー
ドをそのまま実行するのではなく、JIT(Just-in-ti
me Compiler)を用いて、バイトコードをネイティブコ
ードに変換し、プログラムを高速に実行できるようにし
たものもある。
【0003】このような、Java(R)言語で記述さ
れたプログラムは、携帯電話機、PDA(Personal Dig
ital Assistants)または情報家電などの組込み機器に
おいても広く用いられている。
【0004】
【発明が解決しようとする課題】しかし、組込み機器で
は、使用できるROM(Read Only Memory)またはRA
M(Random Access Memory)の容量が通常のコンピュー
タに比べて低い。このため、ステップ数の大きなプログ
ラムを実行できないという問題がある。
【0005】本発明は上述の課題を解決するためになさ
れたもので、その目的は、必要なメモリの容量が小さい
プログラム実行装置および方法を提供することである。
【0006】
【課題を解決するための手段】本発明のある局面に従う
プログラム実行装置は、所定の言語で記述されたプログ
ラムを実行する。プログラム実行装置は、前記プログラ
ムの、所定の単位毎に圧縮されたコードを格納する圧縮
コード格納部と、前記圧縮コード格納部に接続され、前
記圧縮コード格納部から前記圧縮されたコードを読出し
て伸張するための伸張手段と、前記伸張手段に接続さ
れ、前記伸張手段により伸張されたコードを格納するコ
ード格納部と、前記コード格納部に接続され、伸張され
た前記コードを解釈し、実行するためのインタープリタ
手段とを含む。
【0007】所定の単位毎にコードが圧縮されて圧縮コ
ード格納部に格納されている。このため、圧縮コード格
納部の容量を小さくすることができ、プログラム実行装
置で必要とするメモリの容量を小さくすることができ
る。
【0008】好ましくは、前記所定の言語はオブジェク
ト指向言語であり、前記所定の単位は、メソッドであ
る。
【0009】さらに好ましくは、前記所定の単位は、プ
ログラム中で分岐を含まない一連の命令である。
【0010】コード格納部には、分岐を含まない一連の
命令のコードが格納される。このため、メソッドのコー
ドを格納する場合に比べ、コード格納部の容量を小さく
することができ、プログラム実行装置で必要とするメモ
リの容量を小さくすることができる。
【0011】さらに好ましくは、前記所定の単位は、命
令である。コード格納部には、命令のコードが格納され
る。このため、メソッドのコードを格納する場合に比
べ、コード格納部の容量を小さくすることができ、プロ
グラム実行装置で必要とするメモリの容量を小さくする
ことができる。
【0012】さらに好ましくは、プログラム実行装置
は、さらに、前記圧縮コード格納部に接続され、圧縮さ
れた前記コードに基づいて、前記コードの圧縮方式を判
定するための圧縮方式判定手段を含む。前記伸張手段
は、前記圧縮コード格納部、前記コード格納部および前
記圧縮方式判定手段に接続され、前記圧縮方式判定手段
の出力に基づいて、圧縮された前記コードを伸張し、前
記コード格納部に格納するための手段を含む。
【0013】メソッド毎にコードの圧縮方式をユーザが
選択することができ、最適な圧縮方式を採用することが
できる。このため、圧縮コード格納部の容量を小さくす
ることができ、プログラム実行装置で必要とするメモリ
の容量を小さくすることができる。
【0014】本発明の他の局面に従うプログラム実行装
置は、オブジェクト指向言語で記述されたプログラムを
実行する。前記プログラムは前記プログラム実行装置に
とってネイティブなコード以外のコードで記述されてい
る。プログラム実行装置は、メソッド毎に圧縮された前
記プログラムのコードを格納する圧縮コード格納部と、
前記圧縮コード格納部に接続され、圧縮された前記コー
ドを伸張するための伸張手段と、前記伸張手段に接続さ
れ、伸張された前記コードをネイティブコードに変換す
るための変換手段と、前記変換手段に接続され、前記変
換手段により出力されるネイティブコードを格納するネ
イティブコード格納部と、前記ネイティブコード格納部
に接続され、前記ネイティブコードを実行するためのネ
イティブコード実行手段とを含む。
【0015】メソッドのコードが圧縮されて圧縮コード
格納部に格納されている。このため、圧縮コード格納部
の容量を小さくすることができ、プログラム実行装置で
必要とするメモリの容量を小さくすることができる。
【0016】好ましくは、前記ネイティブコード格納部
は、キャッシュメモリよりなる。ネイティブコードをキ
ャッシュメモリ内に格納することにより、プログラムの
実行速度を向上させることができる。
【0017】本発明のさらに他の局面に従うプログラム
実行装置は、オブジェクト指向言語で記述されたプログ
ラムを実行する。プログラム実行装置は、前記プログラ
ムのメソッドのコードを格納するコード格納部と、メソ
ッドのネイティブコードを格納するネイティブコード格
納部と、メソッドのネイティブコードを圧縮した圧縮ネ
イティブコードを格納する圧縮ネイティブコード格納部
と、前記ネイティブコード格納部に接続され、前記ネイ
ティブコード格納部に所望のメソッドのネイティブコー
ドが格納されているか否かを判断するための第1の判断
手段と、前記圧縮ネイティブコード格納部に接続され、
前記圧縮ネイティブコード格納部に前記所望のメソッド
の圧縮ネイティブコードが格納されているか否かを判断
する第2の判断手段と、前記第1および第2の判断手
段、前記圧縮ネイティブコード格納部、前記コード格納
部および前記ネイティブコード格納部に接続され、前記
第1および第2の判断手段の出力に基づいて、前記圧縮
ネイティブコード格納部に格納された圧縮ネイティブコ
ードの伸張または前記コード格納部に格納されたコード
のネイティブコードへの変換を選択的に実行し、得られ
たネイティブコードを前記ネイティブコード格納部へ格
納するための、ネイティブコード格納制御手段と、前記
ネイティブコード格納部に接続され、前記ネイティブコ
ード格納部に格納されたネイティブコードを実行するた
めのネイティブコード実行手段と、前記第2の判断手
段、前記ネイティブコード格納部および前記圧縮ネイテ
ィブコード格納部に接続され、前記第2の判断手段の出
力に基づいて、実行されたネイティブコードを圧縮し、
前記圧縮ネイティブコード格納部へ格納するためのネイ
ティブコード圧縮格納手段とを含む。
【0018】コードがネイティブコードに変換された
後、圧縮されて圧縮ネイティブコード格納部に格納され
る。このため、JITを用いた従来の装置に比べ、ネイ
ティブコード格納部の容量を小さくすることができる。
【0019】好ましくは、プログラム実行装置は、さら
に、前記圧縮ネイティブコード格納部に格納されている
圧縮ネイティブコードの圧縮方式をメソッド毎に格納す
る圧縮方式格納部を含む。前記ネイティブコード格納制
御手段は、前記第1および第2の判断手段、前記圧縮ネ
イティブコード格納部、前記コード格納部、前記ネイテ
ィブコード格納部および前記圧縮方式格納部に接続さ
れ、前記第1および第2の判断手段の出力に基づいて、
前記圧縮方式格納部に格納された圧縮方式に従った前記
圧縮ネイティブコード格納部に格納された圧縮ネイティ
ブコードの伸張または前記コード格納部に格納されたコ
ードのネイティブコードへの変換を選択的に実行し、得
られたネイティブコードを前記ネイティブコード格納部
へ格納するための手段を含む。前記ネイティブコード圧
縮格納手段は、前記第2の判断手段、前記ネイティブコ
ード格納部、前記圧縮ネイティブコード格納部および前
記圧縮方式格納部に接続され、前記第2の判断手段の出
力に基づいて、実行されたネイティブコードを予め定め
られた方法に従い定められる圧縮方式により圧縮し、圧
縮ネイティブコードを前記圧縮ネイティブコード格納部
へ格納し、前記圧縮方式を前記圧縮方式格納部へ格納す
るための手段を含む。
【0020】メソッド毎に最適な圧縮方式を用いてネイ
ティブコードの圧縮が行なわれる。このため、圧縮ネイ
ティブコード格納部の容量を小さくすることができる。
【0021】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、前記ネイティブコード格納部に格納さ
れているメソッドのネイティブコードのうち、最も古く
ネイティブコードに変換されたものから優先的に圧縮す
る。
【0022】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、前記ネイティブコード格納部に格納さ
れているメソッドのネイティブコードのうち、実行頻度
の低いものから優先的に圧縮する。
【0023】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、前記ネイティブコード格納部に格納さ
れているメソッドのネイティブコードのうち、サイズの
大きいものから優先的に圧縮する。
【0024】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、前記ネイティブコード格納部に格納さ
れているメソッドのネイティブコードのうち、最も圧縮
率が大きいものから優先的に圧縮する。
【0025】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、圧縮ネイティブコードの格納領域に空
きがない場合には、前記圧縮ネイティブコード格納領域
に格納されているメソッドの圧縮ネイティブコードのう
ち、最も実行頻度が低い圧縮ネイティブコードを削除す
る。
【0026】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、圧縮ネイティブコードの格納領域に空
きがない場合には、前記圧縮ネイティブコード格納領域
に格納されているメソッドの圧縮ネイティブコードのう
ち、最もサイズが大きい圧縮ネイティブコードを削除す
る。
【0027】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、圧縮ネイティブコードの格納領域に空
きがない場合には、前記圧縮ネイティブコード格納領域
に格納されているメソッドの圧縮ネイティブコードのう
ち、最も圧縮率が低い圧縮ネイティブコードを削除す
る。
【0028】さらに好ましくは、前記ネイティブコード
圧縮格納手段は、圧縮ネイティブコードの格納領域に空
きがない場合には、前記圧縮ネイティブコード格納領域
に格納されているメソッドの圧縮ネイティブコードのう
ち、最も古くに圧縮された圧縮ネイティブコードを削除
する。
【0029】本発明のさらに他の局面に従うプログラム
実行方法は、オブジェクト指向言語で記述されたプログ
ラムを実行する。プログラム実行方法は、所定の単位毎
に圧縮されたコードを伸張するステップと、伸張された
コードを解釈し、実行するステップとを含む。
【0030】圧縮されたコードを伸張してから、コード
の解釈および実行が行われる。このようにコードは予め
圧縮されているため、小さなメモリ容量の装置において
も、プログラムを実行することができる。
【0031】好ましくは、前記所定の単位は、メソッド
である。さらに好ましくは、前記所定の単位は、プログ
ラム中で分岐を含まない一連の命令である。
【0032】分岐を含まない一連の命令単位でコードが
圧縮される。このため、メソッド単位でコードが圧縮さ
れる場合に比べ、伸張されたコードを記憶するメモリの
容量が少なくてすむ。
【0033】さらに好ましくは、前記所定の単位は、命
令である。命令単位でコードが圧縮される。このため、
メソッド単位でコードが圧縮される場合に比べ、伸張さ
れたコードを記憶するメモリの容量が少なくてすむ。
【0034】さらに好ましくは、プログラム実行方法
は、さらに、所定の単位毎に圧縮されたコードの圧縮方
式を判定するステップを含む。前記伸張するステップ
は、判定された圧縮方式に基づいて、所定の単位毎に圧
縮されたコードを伸張するステップを含む。
【0035】メソッド毎にコードの圧縮方式をユーザが
選択することができ、最適な圧縮方式を採用することが
できる。このため、圧縮されたコードを格納するメモリ
の容量を小さくすることができる。
【0036】本発明のさらに他の局面に従うプログラム
実行方法は、オブジェクト指向言語で記述されたプログ
ラムを実行する。プログラム実行方法は、メソッド毎に
圧縮されたコードを伸張するステップと、伸張された前
記コードをネイティブコードに変換するステップと、前
記ネイティブコードを実行するステップとを含む。
【0037】メソッドのコードが圧縮されている。この
ため、メソッドのコードを格納するメモリの容量を小さ
くすることができる。
【0038】本発明のさらに他の局面に従うプログラム
実行方法は、オブジェクト指向言語で記述されたプログ
ラムを実行するプログラム実行装置で用いられる。前記
プログラム実行装置は、前記プログラムのメソッドのコ
ードを格納するコード格納部と、メソッドのネイティブ
コードを格納するネイティブコード格納部と、メソッド
のネイティブコードを圧縮した圧縮ネイティブコードを
格納する圧縮ネイティブコード格納部とを含む。プログ
ラム実行方法は、前記ネイティブコード格納部に所望の
メソッドのネイティブコードが格納されているか否かを
判断するステップと、前記圧縮ネイティブコード格納部
に前記所望のメソッドの圧縮ネイティブコードが格納さ
れているか否かを判断するステップと、前記ネイティブ
コードの格納結果および前記圧縮ネイティブコードの格
納結果に基づいて、前記圧縮ネイティブコード格納部に
格納された圧縮ネイティブコードの伸張または前記コー
ド格納部に格納されたコードのネイティブコードへの変
換を選択的に実行し、得られたネイティブコードを前記
ネイティブコード格納部へ格納するステップと、前記ネ
イティブコード格納部に格納されたネイティブコードを
実行するステップと、前記圧縮ネイティブコードの格納
結果に基づいて、実行されたネイティブコードを圧縮
し、前記圧縮ネイティブコード格納部へ格納するステッ
プとを含む。
【0039】コードがネイティブコードに変換された
後、圧縮されて圧縮ネイティブコード格納部に格納され
る。このため、JITを用いた従来の装置に比べ、ネイ
ティブコード格納部の容量を小さくすることができる。
【0040】好ましくは、前記プログラム実行装置は、
さらに、前記圧縮ネイティブコード格納部に格納されて
いる圧縮ネイティブコードの圧縮方式をメソッド毎に格
納する圧縮方式格納部を含む。前記ネイティブコードを
前記ネイティブコード格納部へ格納する前記ステップ
は、前記ネイティブコードの格納結果および前記圧縮ネ
イティブコードの格納結果に基づいて、前記圧縮方式格
納部に格納された圧縮方式に従った前記圧縮ネイティブ
コード格納部に格納された圧縮ネイティブコードの伸張
または前記コード格納部に格納されたコードのネイティ
ブコードへの変換を選択的に実行し、得られたネイティ
ブコードを前記ネイティブコード格納部へ格納するステ
ップを含む。前記圧縮ネイティブコード格納部へ格納す
る前記ステップは、前記圧縮ネイティブコードの格納結
果に基づいて、実行されたネイティブコードを予め定め
られた方法に従い定められる圧縮方式により圧縮し、圧
縮ネイティブコードを前記圧縮ネイティブコード格納部
へ格納し、前記圧縮方式を前記圧縮方式格納部へ格納す
るステップを含む。
【0041】メソッド毎に最適な圧縮方式を用いてネイ
ティブコードの圧縮が行なわれる。このため、圧縮ネイ
ティブコード格納部の容量を小さくすることができる。
【0042】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、前記ネイティブ
コード格納部に格納されているメソッドのネイティブコ
ードのうち、最も古くネイティブコードに変換されたも
のから優先的に圧縮する。
【0043】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、前記ネイティブ
コード格納部に格納されているメソッドのネイティブコ
ードのうち、実行頻度の低いものから優先的に圧縮す
る。
【0044】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、前記ネイティブ
コード格納部に格納されているメソッドのネイティブコ
ードのうち、サイズの大きいものから優先的に圧縮す
る。
【0045】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、前記ネイティブ
コード格納部に格納されているメソッドのネイティブコ
ードのうち、最も圧縮率が大きいものから優先的に圧縮
する。
【0046】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、圧縮ネイティブ
コードの格納領域に空きがない場合には、前記圧縮ネイ
ティブコード格納領域に格納されているメソッドの圧縮
ネイティブコードのうち、最も実行頻度が低い圧縮ネイ
ティブコードを削除する。
【0047】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、圧縮ネイティブ
コードの格納領域に空きがない場合には、前記圧縮ネイ
ティブコード格納領域に格納されているメソッドの圧縮
ネイティブコードのうち、最もサイズが大きい圧縮ネイ
ティブコードを削除する。
【0048】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、圧縮ネイティブ
コードの格納領域に空きがない場合には、前記圧縮ネイ
ティブコード格納領域に格納されているメソッドの圧縮
ネイティブコードのうち、最も圧縮率が低い圧縮ネイテ
ィブコードを削除する。
【0049】さらに好ましくは、前記圧縮ネイティブコ
ード格納部へ格納する前記ステップは、圧縮ネイティブ
コードの格納領域に空きがない場合には、前記圧縮ネイ
ティブコード格納領域に格納されているメソッドの圧縮
ネイティブコードのうち、最も古くに圧縮された圧縮ネ
イティブコードを削除する。
【0050】
【発明の実施の形態】[実施の形態1]本発明の第1の
実施の形態に係るJava(R)仮想マシンは、組込み
機器を用いて実現される。
【0051】図1を参照して、組込み機器は、プログラ
ムを解釈、実行するCPU(Central Processing Uni
t)2と、CPU2で実行されるプログラムのバイトコ
ードを記憶するROM(Read Only Memory)4と、その
プログラムを実行するための各種データを記憶するRA
M(Random Access Memory)8と、ユーザとの間でデー
タの入出力を行なうためのユーザインタフェース6と、
CPU2、ROM4、ユーザインタフェース6およびR
AM8を相互に接続するバスとを含む。
【0052】図2を参照して、ROM4は、Java
(R)言語で記述されたプログラムのバイトコードを圧
縮したもの(以下「圧縮バイトコード」と言う。)を格
納する圧縮バイトコード格納領域12と、その他のクラ
ス情報を格納する領域14とを含む。
【0053】図3を参照して、RAM8は、オペレーテ
ィングシステムを格納するオペレーティングシステム格
納領域16と、バーチャルマシン(VM)モジュールを
格納するVMモジュール格納領域18と、データを圧縮
するためのプログラムである圧縮モジュールを格納する
ための圧縮モジュール格納領域24と、圧縮されたデー
タを伸張するためのプログラムである伸張モジュールを
格納するための伸張モジュール格納領域26と、バイト
コードおよびネイティブコード等を格納するためのコー
ド格納領域28と、メソッドの状態を表わすメソッドス
テータスを格納するためのメソッドステータス格納領域
36とを含む。メソッドステータス格納領域36はメソ
ッド毎に設けられる。
【0054】VMモジュール格納領域18は、インタプ
リタを格納するためのインタプリタ格納領域20と、J
ITを格納するためのJIT格納領域22とを含む。
【0055】コード格納領域28は、伸張済みバイトコ
ードを格納する伸張済みバイトコード格納領域30と、
ネイティブコードを格納するネイティブコード格納領域
32と、ネイティブコードを圧縮したもの(以下「圧縮
ネイティブコード」と言う。)を格納する圧縮ネイティ
ブコード格納領域34とを含む。
【0056】メソッドステータス格納領域36は、メソ
ッドが実行された回数を格納する回数格納領域38と、
メソッドのサイズを格納するサイズ格納領域40と、ネ
イティブコードが存在するか否かを示すネイティブコー
ド有無フラグを格納するネイティブコード有無フラグ格
納領域42と、バイトコードがコンパイルされた時刻ま
たは順番を格納するコンパイル時刻(順番)格納領域4
4と、圧縮に関する情報を格納する圧縮情報格納領域4
6とを含む。
【0057】圧縮情報格納領域46は、メソッドが圧縮
されているか否かを示す圧縮フラグを格納する圧縮フラ
グ格納領域48と、圧縮されたメソッドが伸張されてい
るか否かを示す伸張済みフラグを格納する伸張済みフラ
グ格納領域50と、メソッドの圧縮方式を格納する圧縮
方式格納領域52と、圧縮の際の圧縮率を格納する圧縮
率格納領域54と、圧縮された時刻または順番を格納す
る圧縮時刻(順番)格納領域56と、圧縮ネイティブコ
ードのサイズを格納する圧縮サイズ格納領域58とを含
む。
【0058】図4を参照して、本実施の形態では、Ja
va(R)言語で記述されたプログラムは、メソッド1
〜4の4つのメソッドより構成されるものとして説明を
行なう。プログラムがそれ以外の個数のメソッドより構
成されている場合であっても、同様の動作を行なう。
【0059】すべてのメソッドは、メソッド毎に圧縮さ
れ、圧縮バイトコード格納領域12に格納されている。
【0060】図5を参照して、上位のモジュールよりあ
るメソッドの呼出しがあった場合には、CPU2は、呼
出されたメソッドの伸張済みフラグ格納領域50に格納
されている伸張済みフラグを参照し、呼出されたメソッ
ドのバイトコードが、伸張されており、伸張済みバイト
コード格納領域30に格納されているか否かを調べる
(S2)。
【0061】バイトコードが伸張されていなければ(S
2でNO)、圧縮バイトコード格納領域12に格納され
たバイトコードが伸張され(S4)、伸張後のバイトコ
ードが伸張済みバイトコード格納領域30に格納される
(S6)。次に、このメソッドの圧縮バイトコードが伸
張済みであることを表わすため、伸張済みフラグの値が
オンに変更される(S8)。
【0062】S8の処理の後、またはメソッドのバイト
コードが伸張済みバイトコード格納領域30に格納され
ている場合には(S2でYES)、CPU2はインタプ
リタを用いて、伸張済みのバイトコードを1命令ずつ解
釈しながら実行する(S10)。その後、呼出し側のモ
ジュールへ復帰するための処理を行なう(S12)。
【0063】なお、伸張済みバイトコード格納領域30
に書込まれていた伸張済みのバイトコードが削除または
他のバイトコードの上書き等により失われる場合には、
そのバイトコードに対応したメソッドの伸張済みフラグ
がオフに設定される。
【0064】上述の4つのメソッドがメソッド1、メソ
ッド2、メソッド3、メソッド1、メソッド2、メソッ
ド4、メソッド4、メソッド4の順に呼出されて、実行
される場合を想定する。また、伸張済みバイトコード格
納領域30には、1つ分のメソッドのバイトコードしか
格納できないとする。このとき、図6を参照して、CP
U2は以下の順序で処理を実行する。
【0065】メソッド1の圧縮バイトコードを伸張し、
伸張済みフラグをオンにする(S22)。メソッド1の
バイトコードを1命令ずつ解釈しながら実行する(S2
4)。メソッド2の圧縮バイトコードを伸張し、伸張済
みフラグをオンにする(S26)。メソッド2のバイト
コードを1命令ずつ解釈しながら実行する(S28)。
メソッド3の圧縮バイトコードを伸張し、伸張済みフラ
グをオンにする(S30)。メソッド3のバイトコード
を1命令ずつ解釈しながら実行する(S32)。メソッ
ド1の圧縮バイトコードを伸張し、伸張済みフラグをオ
ンにする(S34)。メソッド1のバイトコードを1命
令ずつ解釈しながら実行する(S36)。
【0066】メソッド2の圧縮バイトコードを伸張し、
伸張済みフラグをオンにする(S38)。メソッド2の
バイトコードを1命令ずつ解釈しながら実行する(S4
0)。メソッド4の圧縮バイトコードを伸張し、伸張済
みフラグをオンにする(S42)。メソッド4のバイト
コードを1命令ずつ解釈しながら実行する(S44)。
2つめのメソッド4は伸張済みであるため、メソッド4
のバイトコードを1命令ずつ解釈しながら実行する(S
46)。3つめのメソッド4は伸張済みであるため、メ
ソッド4のバイトコードを1命令ずつ解釈しながら実行
する(S48)。
【0067】以上説明したように、本実施の形態による
と、バイトコードが圧縮されてROMに記憶されてい
る。このため、ROMの容量を小さくすることができ
る。
【0068】[実施の形態2]本実施の形態は、第1の
実施の形態と異なり、圧縮するバイトコードの単位がメ
ソッド単位ではなく基本ブロック単位である。基本ブロ
ックとは、その中に分岐命令を含まない一連の命令のこ
とをいう。
【0069】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0070】また、ROM4に記憶されている情報は図
2を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0071】なお、圧縮バイトコード格納領域12に
は、基本ブロック単位でバイトコードが圧縮され、記憶
されているものとする。
【0072】図7を参照して、RAM8は、オペレーテ
ィングシステムを格納するオペレーティングシステム格
納領域16と、バーチャルマシン(VM)モジュールを
格納するVMモジュール格納領域18と、データの圧縮
するためのプログラムである圧縮モジュールを格納する
ための圧縮モジュール格納領域24と、圧縮されたデー
タを伸張するためのプログラムである伸張モジュールを
格納するための伸張モジュール格納領域26と、バイト
コードおよびネイティブコード等を格納するためのコー
ド格納領域28と、基本ブロックの状態を表わす基本ブ
ロックステータスを格納するための基本ブロックステー
タス格納領域60とを含む。基本ブロックステータス格
納領域60は基本ブロック毎に設けられる。
【0073】基本ブロックステータス格納領域60は、
基本ブロックが実行された回数を格納する回数格納領域
62と、基本ブロックのサイズを格納するサイズ格納領
域64と、ネイティブコードが存在するか否かを示すネ
イティブコード有無フラグを格納するネイティブコード
有無フラグ格納領域66と、バイトコードがコンパイル
された時刻または順番を格納するコンパイル時刻(順
番)格納領域68と、圧縮に関する情報を格納する圧縮
情報格納領域70とを含む。
【0074】圧縮情報格納領域70は、基本ブロックが
圧縮されているか否かを示す圧縮フラグを格納する圧縮
フラグ格納領域72と、圧縮された基本ブロックが伸張
されているか否かを示す伸張済みフラグを格納する伸張
済みフラグ格納領域74と、基本ブロックの圧縮方式を
格納する圧縮方式格納領域76と、圧縮の際の圧縮率を
格納する圧縮率格納領域78と、圧縮された時刻または
順番を格納する圧縮時刻(順番)格納領域80と、圧縮
ネイティブコードのサイズを格納する圧縮サイズ格納領
域82とを含む。
【0075】図8を参照して、上位のモジュールよりあ
る基本ブロックの呼出しがあった場合には、CPU2
は、呼出された基本ブロックの伸張済みフラグ格納領域
74に格納されている伸張済みフラグを参照し、呼出さ
れた基本ブロックのバイトコードが伸張されており、伸
張済みバイトコード格納領域30に格納されているか否
かを調べる(S52)。
【0076】バイトコードが伸張されていなければ(S
52でNO)、圧縮バイトコード格納領域12に格納さ
れたバイトコードが伸張され(S54)、伸張後のバイ
トコードが伸張済みバイトコード格納領域30に格納さ
れる(S56)。次に、この基本ブロックのバイトコー
ドが伸張済みであることを表わすため、伸張済みフラグ
の値がオンに変更される(S58)。
【0077】S58の処理の後、または基本ブロックの
バイトコードが伸張済みバイトコード格納領域30に格
納されている場合には(S52でYES)、CPU2は
インタプリタを用いて、伸張済みのバイトコードを1命
令ずつ解釈しながら実行する(S60)。その後、呼出
し側のモジュールへ復帰するための処理を行なう(S6
2)。
【0078】なお、伸張済みバイトコード格納領域30
に書込まれていた伸張済みのバイトコードが削除または
他のバイトコードの上書き等により失われる場合には、
そのバイトコードに対応した基本ブロックの伸張済みフ
ラグがオフに設定される。
【0079】以上説明したように、本実施の形態による
と、バイトコードが圧縮されてROMに記憶されてい
る。このため、ROMの容量を小さくすることができ
る。
【0080】また、伸張済みバイトコード格納領域に
は、基本ブロックの圧縮バイトコードを伸張したバイト
コードが格納される。このため、第1の実施の形態に比
べて伸張済みバイトコード格納領域の容量が少なくてす
み、RAMの容量を小さくすることができる。
【0081】[実施の形態3]本実施の形態は、第1の
実施の形態と異なり、圧縮するバイトコードの単位がメ
ソッド単位ではなく命令単位である。
【0082】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0083】また、ROM4に記憶されている情報は図
2参照して説明したものと同様である。このため、その
詳細な説明はここでは繰返さない。
【0084】なお、圧縮バイトコード格納領域12に
は、命令単位でバイトコードが圧縮され、記憶されてい
るものとする。
【0085】図9を参照して、RAM8は、オペレーテ
ィングシステムを格納するオペレーティングシステム格
納領域16と、バーチャルマシン(VM)モジュールを
格納するVMモジュール格納領域18と、データの圧縮
するためのプログラムである圧縮モジュールを格納する
ための圧縮モジュール格納領域24と、圧縮されたデー
タを伸張するためのプログラムである伸張モジュールを
格納するための伸張モジュール格納領域26と、バイト
コードおよびネイティブコード等を格納するためのコー
ド格納領域28と、命令の状態を表わす命令ステータス
を格納するための命令ステータス格納領域90とを含
む。命令ステータス格納領域90は命令毎に設けられ
る。
【0086】命令ステータス格納領域90は、命令が実
行された回数を格納する回数格納領域92と、命令のサ
イズを格納するサイズ格納領域94と、ネイティブコー
ドが存在するか否かを示すネイティブコード有無フラグ
を格納するネイティブコード有無フラグ格納領域96
と、バイトコードがコンパイルされた時刻または順番を
格納するコンパイル時刻(順番)格納領域98と、圧縮
に関する情報を格納する圧縮情報格納領域100とを含
む。
【0087】圧縮情報格納領域100は、命令が圧縮さ
れているか否かを示す圧縮フラグを格納する圧縮フラグ
格納領域102と、圧縮された命令が伸張されているか
否かを示す伸張済みフラグを格納する伸張済みフラグ格
納領域104と、命令の圧縮方式を格納する圧縮方式格
納領域106と、圧縮の際の圧縮率を格納する圧縮率格
納領域108と、圧縮された時刻または順番を格納する
圧縮時刻(順番)格納領域110と、圧縮ネイティブコ
ードのサイズを格納する圧縮サイズ格納領域112とを
含む。
【0088】図10を参照して、上位のモジュールより
ある命令の呼出しがあった場合には、CPU2は、呼出
された命令の伸張済みフラグ格納領域104に格納され
ている伸張済みフラグを参照し、呼出された命令のバイ
トコードが伸張されており、伸張済みバイトコード格納
領域30に格納されているか否かを調べる(S72)。
【0089】バイトコードが伸張されていなければ(S
72でNO)、圧縮バイトコード格納領域12に格納さ
れたバイトコードが伸張され(S74)、伸張後のバイ
トコードが伸張済みバイトコード格納領域30に格納さ
れる(S76)。次に、この命令のバイトコードが伸張
済みであることを表わすため、伸張済みフラグの値がオ
ンに変更される(S78)。
【0090】S78の処理の後、または命令のバイトコ
ードが伸張済みバイトコード格納領域30に格納されて
いる場合には(S72でYES)、CPU2はインタプ
リタを用いて、伸張済みのバイトコードを解釈し、実行
する(S80)。その後、呼出し側のモジュールへ復帰
するための処理を行なう(S82)。
【0091】なお、伸張済みバイトコード格納領域30
に書込まれていた伸張済みのバイトコードが削除または
他のバイトコードの上書き等により失われる場合には、
そのバイトコードに対応した命令の伸張済みフラグがオ
フに設定される。
【0092】以上説明したように、本実施の形態による
と、バイトコードが圧縮されてROMに記憶されてい
る。このため、ROMの容量を小さくすることができ
る。
【0093】また、伸張済みバイトコード格納領域に
は、命令の圧縮バイトコードを伸張したバイトコードが
格納される。このため、第1および第2の実施の形態に
比べて伸張済みバイトコード格納領域の容量が少なくて
すみ、RAMの容量を小さくすることができる。
【0094】[実施の形態4]本実施の形態では、圧縮
バイトコード格納領域に格納されている圧縮バイトコー
ドの圧縮方法として、複数の圧縮方法がサポートされて
いる。
【0095】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0096】また、ROM4およびRAM8に記憶され
ている情報も図2および図3をそれぞれ参照して説明し
たものと同様である。このため、その詳細な説明はここ
では繰返さない。
【0097】なお、圧縮バイトコード格納領域12に
は、メソッド単位でバイトコードが圧縮され、記憶され
ているものとする。
【0098】図11を参照して、上位のモジュールより
あるメソッドの呼出しがあった場合には、CPU2は、
呼出されたメソッドの伸張済みフラグ格納領域50に格
納されている伸張済みフラグを参照し、呼出されたメソ
ッドのバイトコードが、伸張されており、伸張済みバイ
トコード格納領域30に格納されているか否かを調べる
(S92)。
【0099】バイトコードが格納されていなければ(S
92でNO)、圧縮バイトコード格納領域12に格納さ
れたバイトコードの圧縮方式が判定される(S94)。
圧縮方式の判定は圧縮バイトコードのヘッダ部分を参照
することにより行なわれる。圧縮バイトコード格納領域
12に格納されたバイトコードがS94で求められた圧
縮方式に基づいて伸張され(S96)、伸張後のバイト
コードが伸張済みバイトコード格納領域30格納される
(S98)。次に、このメソッドのバイトコードが伸張
済みであることを表わすため、伸張済みフラグの値がオ
ンに変更される(S100)。
【0100】S100の処理の後、またはメソッドのバ
イトコードが伸張済みバイトコード格納領域30に格納
されている場合には(S92でYES)、CPU2はイ
ンタプリタを用いて、伸張済みのバイトコードを1命令
ずつ解釈しながら実行する(S102)。その後、呼出
し側のモジュールへの復帰をするための処理を行なう
(S104)。
【0101】なお、伸張済みバイトコード格納領域30
に書込まれていた伸張済みのバイトコードが削除または
他のバイトコードの上書き等により失われる場合には、
そのバイトコードに対応したメソッドの伸張済みフラグ
がオフに設定される。
【0102】以上説明したように、本実施の形態による
と、バイトコードが圧縮されてROMに記憶されてい
る。このため、ROMの容量を小さくすることができ
る。
【0103】また、メソッド毎に圧縮方式をユーザが選
択することができ、最適な圧縮方式を採用することがで
きるため、ROMの容量を小さくすることができる。
【0104】[実施の形態5]本実施の形態ではJIT
を用いて、圧縮バイトコードを伸張後、ネイティブコー
ドにコンパイルし、実行するものである。
【0105】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0106】また、ROM4およびRAM8に記憶され
ている情報も図2および図3をそれぞれ参照して説明し
たものと同様である。このため、その詳細な説明はここ
では繰返さない。
【0107】なお、圧縮バイトコード格納領域12に
は、メソッド単位でバイトコードが圧縮され、記憶され
ているものとする。
【0108】図12を参照して、上位のモジュールより
あるメソッドの呼出しがあった場合には、CPU2は、
呼出されたメソッドの伸張済みフラグ格納領域50に格
納されている伸張済みフラグを参照し、呼出されたメソ
ッドのバイトコードが回答されており、かつネイティブ
コードに変換され、ネイティブコード格納領域32に格
納されているか否かを調べる(S112)。
【0109】バイトコードが伸張されていなければ(S
112でNO)、圧縮バイトコード格納領域12に格納
されたバイトコードが伸張され(S114)、伸張後の
バイトコードがJIT格納領域22に格納されたJIT
によりコンパイルされ、ネイティブコードに変換される
(S116)。ネイティブコードは、ネイティブコード
格納領域32に格納される(S118)。このメソッド
の圧縮バイトコードが伸張済みおよびコンパイル済みで
あることを表わすため、伸張済みフラグの値がオンに設
定される(S120)。
【0110】S120の処理の後、またはメソッドのネ
イティブコードがネイティブコード格納領域32に格納
されている場合には(S112でYES)、CPU2
は、プログラムカウンタの値をネイティブコードの先頭
アドレスに設定し、ネイティブコードを実行する(S1
22)。その後、呼出し側のモジュールへ復帰するため
の処理を行なう(S124)。
【0111】なお、ネイティブコード格納領域32に格
納されていたネイティブコードが削除または他のネイテ
ィブコードの上書き等により失われる場合には、そのネ
イティブコードに対応したメソッドの伸張済みフラグが
オフに設定される。
【0112】図4を参照して、Java(R)言語で記
述されたプログラムが、メソッド1〜4の4つのメソッ
ドにより構成されるものとし、メソッド1、メソッド
2、メソッド3、メソッド1、メソッド2、メソッド
4、メソッド4、メソッド4の順に呼出されて、実行さ
れるものとする。なお、ネイティブコード格納領域32
には、4つのメソッドのネイティブコードを一度にすべ
て格納することができるものとする。このとき、図13
を参照して、CPU2は以下の順序で処理を実行する。
【0113】メソッド1の圧縮バイトコードを伸張し、
伸張後のバイトコードをネイティブコードに変換すると
ともに、伸張済みフラグをオンにする(S132)。メ
ソッド1のネイティブコードが1命令ずつ実行される
(S134)。
【0114】メソッド2の圧縮バイトコードを伸張し、
伸張後のバイトコードをネイティブコードに変換すると
ともに、伸張済みフラグをオンにする(S136)。メ
ソッド2のネイティブコードが1命令ずつ実行される
(S138)。
【0115】メソッド3の圧縮バイトコードを伸張し、
伸張後のバイトコードをネイティブコードに変換すると
ともに、伸張済みフラグをオンにする(S140)。メ
ソッド3のネイティブコードが1命令ずつ実行される
(S142)。
【0116】メソッド1のネイティブコードが1命令ず
つ実行される(S144)。メソッド2のネイティブコ
ードが1命令ずつ実行される(S146)。
【0117】メソッド4の圧縮バイトコードを伸張し、
伸張後のバイトコードをネイティブコードに変換すると
ともに、伸張済みフラグをオンにする(S148)。メ
ソッド4のネイティブコードが1命令ずつ実行される
(S150)。メソッド4のネイティブコードが1命令
ずつ実行される(S152)。メソッド4のネイティブ
コードが1命令ずつ実行される(S154)。
【0118】以上説明したように、本実施の形態による
と、バイトコードが圧縮されてROMに記憶されてい
る。このため、ROMの容量を小さくすることができ
る。
【0119】なお、ネイティブコード格納領域32をC
PU2とRAM8との間に設けられたキャッシュメモリ
(図示せず)に設けることも可能である。このようにす
れば、処理の実行速度を向上させることができる。
【0120】[実施の形態6]本実施の形態では、JI
Tを用いてバイトコードを、ネイティブコードにコンパ
イルし、実行するものである。その際、不要になったネ
イティブコードを圧縮して保存しておく。
【0121】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0122】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0123】図14を参照して、ROM4は、Java
(R)言語で記述されたプログラムのバイトコードを格
納するバイトコード格納領域122と、その他のクラス
情報を格納する領域124とを含む。
【0124】図15を参照して、上位のモジュールより
あるメソッドの呼出しがあった場合には、CPU2は、
ネイティブコード有無フラグ格納領域42に格納されて
いるそのメソッドのネイティブコード有無フラグを参照
し、ネイティブコード格納領域32に呼出されたネイテ
ィブコードが格納されているか否かを判断する(S16
2)。
【0125】ネイティブコード格納領域32にネイティ
ブコードが格納されていなければ(S162でNO)、
ネイティブコード格納領域32にネイティブコードを追
加格納するだけの空きがあるか否か判断する(S16
4)。
【0126】ネイティブコード格納領域32に空きがな
ければ(S164でNO)、現在、ネイティブコード格
納領域32に存在するメソッドのネイティブコード有無
フラグをオフにし、ネイティブコード格納領域32に空
きを作る(S166)。
【0127】ネイティブコード格納領域32に空きがあ
るか(S164でYES)、ネイティブコード格納領域
32に空きを作った場合には(S166)、圧縮ネイテ
ィブコード格納領域34に呼出されたメソッドの圧縮ネ
イティブコードが格納されているか否かを調べる(S1
68)。すなわち、そのメソッドの圧縮フラグ格納領域
48に格納された圧縮フラグがオンになっているか否か
を調べる。
【0128】圧縮ネイティブコード格納領域34に呼出
されたメソッドの圧縮ネイティブコードが格納されてい
れば(S168でYES)、圧縮ネイティブコードを伸
張した後(S170)、ネイティブコード格納領域32
に格納する(S174)。
【0129】圧縮ネイティブコード格納領域34に呼出
されたメソッドの圧縮ネイティブコードが格納されてい
なければ、そのメソッドのバイトコードをROM4のバ
イトコード格納領域122より読出し、ネイティブコー
ドに変換した後(S172)、ネイティブコード格納領
域32に格納する(S174)。
【0130】S174の処理の後、呼出されたメソッド
のネイティブコード有無フラグをオンする。S176の
処理の後、またはネイティブコード格納領域32に呼出
されたメソッドのネイティブコードが格納されている場
合には(S162でYES)、CPU2は、ネイティブ
コードを実行する(S178)。
【0131】呼出されたメソッドの圧縮ネイティブコー
ドが圧縮ネイティブコード格納領域34に格納されてい
るか否か判断される(S180)。圧縮ネイティブコー
ドが圧縮ネイティブコード格納領域34に格納されてい
なければ、ネイティブコード格納領域32に格納されて
いる、呼出されたメソッドのネイティブコードを圧縮
し、圧縮ネイティブコード格納領域34に格納する(S
182)。また、圧縮フラグ格納領域48に格納されて
いるこのメソッドの圧縮フラグをオンにする(S18
4)。
【0132】圧縮ネイティブコードが圧縮ネイティブコ
ード格納領域34に格納されているか(S180でYE
S)、圧縮ネイティブコード格納領域34に格納した場
合には(S184)、呼出し側のモジュールへ復帰する
ための処理を行なう(S186)。
【0133】図4を参照して、Java(R)言語で記
述されたプログラムが、メソッド1〜4の4つのメソッ
ドにより構成されるものとし、メソッド1、メソッド
2、メソッド3、メソッド1、メソッド2、メソッド
4、メソッド4、メソッド4の順に呼出されて、実行さ
れるものとする。
【0134】なお、ネイティブコード格納領域32に
は、1つのメソッドのネイティブコードしか格納するこ
とができないものとし、圧縮ネイティブコード格納領域
34にはすべてのメソッドの圧縮ネイティブコードを格
納できるものとする。
【0135】このとき、図16および図17を参照し
て、CPU2は以下の順序で処理を実行する。
【0136】メソッド1をネイティブコード1に変換
し、ネイティブコード格納領域32に格納する(S19
2)。ネイティブコード1を実行する(S194)。ネ
イティブコード1を圧縮し、圧縮ネイティブコード格納
領域34に格納する(S196)。
【0137】メソッド2をネイティブコード2に変換
し、ネイティブコード格納領域32に格納する(S19
8)。ネイティブコード2を実行する(S200)。ネ
イティブコード2を圧縮し、圧縮ネイティブコード格納
領域34に格納する(S202)。
【0138】メソッド3をネイティブコード3に変換
し、ネイティブコード格納領域32に格納する(S20
4)。ネイティブコード3を実行する(S206)。ネ
イティブコード3を圧縮し、圧縮ネイティブコード格納
領域34に格納する(S208)。
【0139】圧縮ネイティブコード格納領域34に格納
されているメソッド1の圧縮ネイティブコードを伸張
し、実行する(S210)。圧縮ネイティブコード格納
領域34に格納されているメソッド2の圧縮ネイティブ
コードを伸張し、実行する(S212)。
【0140】メソッド4をネイティブコード4に変換
し、ネイティブコード格納領域32に格納する(S21
4)。ネイティブコード4を実行する(S216)。ネ
イティブコード4を圧縮し、圧縮ネイティブコード格納
領域34に格納する(S218)。ネイティブコード格
納領域32に格納されているネイティブコード4を2回
連続して実行する(S220)。
【0141】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0142】[実施の形態7]本実施の形態では、第6
の実施の形態と異なり、ネイティブコードを圧縮するた
めの圧縮方式として複数種類の圧縮方式が用意されてい
るものとする。
【0143】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0144】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0145】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0146】図18を参照して、上位モジュールよりあ
るメソッドの呼出しがあった場合のCPU2の行う処理
について説明する。CPU2の行なう処理は、図15を
参照して説明した処理においてS170の処理の代わり
にS222の処理を実行し、S182およびS184の
処理の代わりに、S224〜S228の処理を実行する
ものである。
【0147】S222では、呼出されたメソッドの伸張
を行なうが、どのような方式で圧縮されているかを圧縮
方式格納領域52に格納された値から調べ、その方式に
基づいたメソッドのネイティブコードの伸張を行なう。
【0148】S224では、所定の規則に基づいて、呼
出されたメソッドのネイティブコードの圧縮に最適な方
式を判定する。S226では、選択された圧縮方式でネ
イティブコードを圧縮し、圧縮ネイティブコード格納領
域34に格納する。S228では、圧縮フラグ格納領域
48に格納されているこのメソッドの圧縮フラグをオン
にするとともに、圧縮方式を圧縮方式格納領域52に格
納する。
【0149】図4を参照して、Java(R)言語で記
述されたプログラムが、メソッド1〜4の4つのメソッ
ドにより構成されるものとし、メソッド1、メソッド
2、メソッド3、メソッド1、メソッド2、メソッド
4、メソッド4、メソッド4の順に呼出されて、実行さ
れるものとする。
【0150】なお、ネイティブコード格納領域32に
は、1つのメソッドのネイティブコードしか格納するこ
とができないものとし、圧縮ネイティブコード格納領域
34にはすべてのメソッドの圧縮ネイティブコードを格
納できるものとする。
【0151】また、圧縮方式には圧縮方式AおよびBの
2種類があるものとし、メソッド1のネイティブコード
の圧縮には圧縮方式Aが適しており、メソッド2〜4の
ネイティブコードの圧縮には圧縮方式Bが適しているも
のとする。
【0152】このとき、図19、図20および図21を
参照して、CPU2は以下の順序で処理を実行する。
【0153】メソッド1をネイティブコード1に変換
し、ネイティブコード格納領域32に格納する(S23
2)。ネイティブコード1を実行する(S234)。ネ
イティブコード1を圧縮するのに最適な圧縮方式Aを選
択し、ネイティブコード1を圧縮した後、圧縮ネイティ
ブコード格納領域34に格納する(S236)。ネイテ
ィブコード1が圧縮方式Aで圧縮されたことを圧縮方式
格納領域52に格納する(S238)。
【0154】メソッド2をネイティブコード2に変換
し、ネイティブコード格納領域32に格納する(S24
0)。ネイティブコード2を実行する(S242)。ネ
イティブコード2を圧縮するのに最適な圧縮方式Bを選
択し、ネイティブコード2を圧縮した後、圧縮ネイティ
ブコード格納領域34に格納する(S244)。ネイテ
ィブコード2が圧縮方式Bで圧縮されたことを圧縮方式
格納領域52に格納する(S246)。
【0155】メソッド3をネイティブコード3に変換
し、ネイティブコード格納領域32に格納する(S24
8)。ネイティブコード3を実行する(S250)。ネ
イティブコード3を圧縮するのに最適な圧縮方式Bを選
択し、ネイティブコード3を圧縮した後、圧縮ネイティ
ブコード格納領域34に格納する(S252)。ネイテ
ィブコード3が圧縮方式Bで圧縮されたことを圧縮方式
格納領域52に格納する(S254)。
【0156】圧縮ネイティブコード格納領域34に格納
されているメソッド1の圧縮ネイティブコードの圧縮方
式を圧縮方式格納領域52に記憶されている値より調べ
る(S256)。その結果、圧縮方式は、圧縮方式Aで
あることがわかる。圧縮ネイティブコード格納領域34
に格納されているメソッド1の圧縮ネイティブコードを
圧縮方式Aに対応した方式で伸張し、実行する(S25
8)。
【0157】圧縮ネイティブコード格納領域34に格納
されているメソッド2の圧縮ネイティブコードの圧縮方
式を圧縮方式格納領域52に記憶されている値より調べ
る(S260)。その結果、圧縮方式は、圧縮方式Bで
あることがわかる。圧縮ネイティブコード格納領域34
に格納されているメソッド2の圧縮ネイティブコードを
圧縮方式Bに対応した方式で伸張し、実行する(S26
2)。
【0158】メソッド4をネイティブコード4に変換
し、ネイティブコード格納領域32に格納する(S26
4)。ネイティブコード4を実行する(S266)。ネ
イティブコード4を圧縮するのに最適な圧縮方式Bを選
択し、ネイティブコード4を圧縮した後、圧縮ネイティ
ブコード格納領域34に格納する(S268)。ネイテ
ィブコード4が圧縮方式Bで圧縮されたことを圧縮方式
格納領域52に格納する(S270)。ネイティブコー
ド格納領域32に格納されているネイティブコード4を
2回連続して実行する(S272)。
【0159】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0160】また、メソッド毎に最適な圧縮方式を用い
てネイティブコードの圧縮が行なわれる。このため、圧
縮ネイティブコード格納領域34の容量を第6の実施の
形態よりも小さくすることができる。
【0161】[実施の形態8]本実施の形態では、第6
および第7の実施の形態と異なり、ネイティブコード格
納領域32および圧縮ネイティブコード格納領域34の
格納できるメソッドの数に制限が設けられているものと
する。
【0162】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0163】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0164】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0165】図22および図23を参照して、上位モジ
ュールよりあるメソッドNの呼出しがあった場合のCP
U2の行う処理について説明する。CPU2は、ネイテ
ィブコード有無フラグ格納領域42に格納されているメ
ソッドNのネイティブコード有無フラグを参照し、ネイ
ティブコード格納領域32にメソッドNのネイティブコ
ードが格納されているか否かを判断する(S282)。
【0166】ネイティブコード格納領域32にメソッド
Nのネイティブコードが格納されていなければ(S28
2でNO)、ネイティブコード格納領域32にネイティ
ブコードを追加格納するだけの空きがあるか否か判断す
る(S284)。
【0167】ネイティブコード格納領域32に空きがな
ければ(S284でNO)、コンパイル時刻(順番)格
納領域44の値を調べ、ネイティブコード格納領域32
内で最も古いメソッドを調べ、そのメソッドをメソッド
Aとする(S286)。
【0168】メソッドAの圧縮ネイティブコードが圧縮
ネイティブコード格納領域34に格納されているか否か
を判断する(S288)。メソッドAの圧縮ネイティブ
コードが圧縮ネイティブコード格納領域34に格納され
ていなければ(S288でNO)、圧縮ネイティブコー
ド格納領域34の空きが十分か否かを調べる(S29
0)。圧縮ネイティブコード格納領域34の空きが十分
でなければ(S290でNO)、回数格納領域38に格
納された回数に基づいて、圧縮ネイティブコード格納領
域34内で最も実行頻度の低いメソッドを調べ、そのメ
ソッドをメソッドBとする(S292)。メソッドBの
圧縮ネイティブコードを解放、すなわち削除し(S29
4)、圧縮フラグ格納領域48に格納されたメソッドB
の圧縮フラグをオフにする(S296)。その後、S2
90に戻る。
【0169】圧縮ネイティブコード格納領域34の空き
が十分であれば(S290でYES)、メソッドAのネ
イティブコードを圧縮し、圧縮ネイティブコード格納領
域34に格納する(S298)。また、圧縮フラグ格納
領域48に格納されているメソッドAの圧縮フラグをオ
ンにする(S300)。
【0170】メソッドAの圧縮ネイティブコードが圧縮
ネイティブコード格納領域34に格納されている場合
(S288でYES)、またはS300の処理の後、ネ
イティブコード格納領域32のうち、メソッドAのネイ
ティブコードが格納されている領域を解放し(S30
2)、ネイティブコード有無フラグ格納領域42に格納
されたメソッドAのネイティブコード有無フラグをオフ
にする(S304)。その後、S284に戻る。
【0171】ネイティブコード格納領域32にメソッド
Nのネイティブコードを追加格納するだけの空きがあれ
ば(S284でYES)、メソッドNのバイトコードを
ネイティブコードに変換した後(S306)、ネイティ
ブコード格納領域32に格納する(S308)。その
後、メソッドNのネイティブコード有無フラグをオンに
し、メソッドNがコンパイルされた順番または時刻をコ
ンパイル時刻(順番)格納領域44に記憶する(S31
0)。
【0172】ネイティブコード格納領域32にメソッド
Nのネイティブコードが格納されている場合(S282
でYES)、またはS310の処理の後、CPU2は、
メソッドNのネイティブコードを実行する(S31
2)。また、回数格納領域38に格納されたメソッドN
の実行回数を1つインクリメントする(S314)。そ
の後、メソッドNの呼出し側へ戻るための処理を行なう
(S316)。
【0173】図24を参照して、Java(R)言語で
記述されたプログラムがメソッド1〜7の7つのメソッ
ドにより構成されるものとし、メソッド1、メソッド
2、メソッド3、メソッド1、メソッド2、メソッド
4、メソッド5、メソッド6、メソッド7の順に呼出さ
れて、実行されるものとする。
【0174】なお、ネイティブコード格納領域32に格
納できるメソッドの数は3つであり、圧縮ネイティブコ
ード格納領域34に格納できるメソッドの数は3つであ
るものとする。
【0175】このとき、図25、図26および図27を
参照して、CPU2は以下の順序で処理を実行する。
【0176】メソッド1をネイティブコード1に変換
し、ネイティブコード格納領域32に格納する(S32
2)。ネイティブコード1を実行する(S324)。メ
ソッド2をネイティブコード2に変換し、ネイティブコ
ード格納領域32に格納する(S326)。ネイティブ
コード2を実行する(S328)。メソッド3をネイテ
ィブコード3に変換し、ネイティブコード格納領域32
に格納する(S330)。メソッド3を実行する(S3
32)。この時点で、ネイティブコード格納領域32に
は3つのメソッドのネイティブコードが記憶されてい
る。このため、ネイティブコード1〜3以外のネイティ
ブコードを格納するためには、いずれかのネイティブコ
ードが確保している領域を解放しなければならない。
【0177】CPU2は、ネイティブコード1を実行し
(S334)、ネイティブコード2を実行する(S33
6)。
【0178】メソッド4を実行するに際し、CPU2
は、ネイティブコード格納領域32に格納されているネ
イティブコードの中で最も古いネイティブコード1を圧
縮し、圧縮ネイティブコード格納領域34に格納する。
それとともに、ネイティブコード格納領域32のネイテ
ィブコード1が格納されていた領域を解放する(S33
8)。メソッド4をネイティブコードに変換し、ネイテ
ィブコード格納領域32のネイティブコード1が格納さ
れていた領域に格納する(S340)。ネイティブコー
ド4を実行する(S342)。
【0179】メソッド5を実行するに際し、CPU2
は、ネイティブコード格納領域32に格納されているネ
イティブコードの中で最も古いネイティブコード2を圧
縮し、圧縮ネイティブコード格納領域34に格納する。
それとともに、ネイティブコード格納領域32のネイテ
ィブコード2が格納されていた領域を解放する(S34
4)。メソッド5をネイティブコードに変換し、ネイテ
ィブコード格納領域32のネイティブコード2が格納さ
れていた領域に格納する(S346)。ネイティブコー
ド5を実行する(S348)。
【0180】メソッド6を実行するに際し、CPU2
は、ネイティブコード格納領域32に格納されているネ
イティブコードの中で最も古いネイティブコード3を圧
縮し、圧縮ネイティブコード格納領域34に格納する。
それとともに、ネイティブコード格納領域32のネイテ
ィブコード3が格納されていた領域を解放する(S35
0)。メソッド6をネイティブコードに変換し、ネイテ
ィブコード格納領域32のネイティブコード3が格納さ
れていた領域に格納する(S346)。ネイティブコー
ド6を実行する(S348)。
【0181】図27を参照して、ここまでの時点でネイ
ティブコード格納領域32には、ネイティブコード4〜
7が格納されており、圧縮ネイティブコード格納領域3
4には、ネイティブコード1〜3が格納されている。
【0182】図26を参照して、CPU2は、メソッド
7のバイトコードをネイティブコードに変換する前にネ
イティブコード格納領域32に空き領域があるか否かを
調べる(S356)。ネイティブコード格納領域32に
は空き領域がないため、ネイティブコード格納領域32
に格納されているネイティブコードのうち、最も古いネ
イティブコード4を圧縮対象とする(S358)。
【0183】CPU2は、ネイティブコード4を圧縮す
る前に、圧縮ネイティブコード格納領域34に空きがあ
るか否かを調べる(S360)。圧縮ネイティブコード
格納領域34に空きがないため、圧縮ネイティブコード
格納領域34に格納されている圧縮ネイティブコードの
うち実行頻度の最も低い圧縮ネイティブコード3の領域
を解放する(S362)。CPU2は、ネイティブコー
ド4を圧縮し、圧縮ネイティブコード格納領域34の圧
縮ネイティブコード3が格納されていた領域に格納す
る。それとともに、ネイティブコード格納領域32のネ
イティブコード4が格納されていた領域を解放する(S
364)。
【0184】CPU2は、メソッド7のバイトコードを
ネイティブコード7に変換し、ネイティブコード格納領
域32のメソッド7が格納されていた領域に格納する
(S366)。CPU2は、ネイティブコード7を実行
する(S368)。
【0185】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0186】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0187】[実施の形態9]本実施の形態は、第8の
実施の形態と異なり、ネイティブコード格納領域32に
格納しきれなくなったネイティブコードを圧縮する際の
ネイティブコードの選択基準として、最も実行頻度の低
いネイティブコードを選択するものである。
【0188】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0189】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0190】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0191】図28および図29を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS286の代わりに、図28のS372の
処理を実行し、図23のS310の処理の代わりに、図
29のS374の処理を実行するものである。その他の
処理は、図22および図23を参照して説明したものと
同様である。このため、その詳細な説明はここでは繰返
さない。
【0192】図28のS372では、回数格納領域38
に格納されたネイティブコードの実行回数を調べ、ネイ
ティブコード格納領域32内で最も実行頻度の低いメソ
ッドを調べ、そのメソッドAとする。
【0193】図29のS374では、メソッドNのネイ
ティブコード有無フラグをオンにする。
【0194】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0195】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0196】[実施の形態10]本実施の形態は、第8
の実施の形態と異なり、ネイティブコード格納領域32
に格納しきれなくなったネイティブコードを圧縮する際
のネイティブコードの選択基準として、最もサイズの大
きいネイティブコードを選択するものである。
【0197】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0198】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0199】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0200】図30および図31を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS286の代わりに、図30のS382の
処理を実行し、図23のS310の処理の代わりに、図
31のS384の処理を実行するものである。その他の
処理は、図22および図23を参照して説明したものと
同様である。このため、その詳細な説明はここでは繰返
さない。
【0201】図30のS382では、サイズ格納領域4
0に格納されたネイティブコードのサイズを調べること
により、ネイティブコード格納領域32内で最も大きい
サイズのネイティブコードを有するメソッドを調べ、メ
ソッドAとする。
【0202】図31のS384では、メソッドNのネイ
ティブコード有無フラグをオンにし、メソッドNのネイ
ティブコードのサイズをサイズ格納領域40に格納す
る。
【0203】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0204】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0205】[実施の形態11]本実施の形態は、第8
の実施の形態と異なり、ネイティブコード格納領域32
に格納しきれなくなったネイティブコードを圧縮する際
のネイティブコードの選択基準として、最も圧縮率の大
きいネイティブコードを選択するものである。
【0206】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0207】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0208】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0209】図32および図33を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS286の代わりに、図32のS392の
処理を実行し、図23のS310の処理の代わりに、図
33のS394の処理を実行するものである。その他の
処理は、図22および図23を参照して説明したものと
同様である。このため、その詳細な説明はここでは繰返
さない。
【0210】図32のS392では、圧縮率格納領域5
4に格納されたネイティブコードを圧縮した際の圧縮率
を調べることにより、ネイティブコード格納領域32内
で最も圧縮率の大きいネイティブコードを有するメソッ
ドを調べ、メソッドAとする。
【0211】図33のS394では、メソッドNのネイ
ティブコード有無フラグをオンにし、メソッドNのネイ
ティブコードを圧縮した際の圧縮率を圧縮率格納領域5
4に格納する。
【0212】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0213】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0214】[実施の形態12]本実施の形態は、第8
の実施の形態と異なり、圧縮ネイティブコード格納領域
34に格納しきれなくなった圧縮ネイティブコードを解
放する際の圧縮ネイティブコードの選択基準として、最
もサイズの大きい圧縮ネイティブコードを選択するもの
である。
【0215】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0216】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0217】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0218】図34および図35を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS292の処理の代わりに、図34のS4
02の処理を実行し、図23のS314の処理の代わり
に、図35のS404の処理を実行するものである。そ
の他の処理は、図22および図23を参照して説明した
ものと同様である。このため、その詳細な説明はここで
は繰返さない。
【0219】図34のS402では、圧縮サイズ格納領
域58に格納された圧縮ネイティブコードのサイズを調
べることにより、圧縮ネイティブコード格納領域34内
で最もサイズの大きい圧縮ネイティブコードを有するメ
ソッドを調べ、メソッドAとする。
【0220】図35のS404では、メソッドNのネイ
ティブコードを圧縮した際のサイズを調べ、そのサイズ
を圧縮サイズ格納領域58に格納する。
【0221】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0222】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0223】[実施の形態13]本実施の形態は、第8
の実施の形態と異なり、圧縮ネイティブコード格納領域
34に格納しきれなくなった圧縮ネイティブコードを解
放する際の圧縮ネイティブコードの選択基準として、圧
縮率が最も低い圧縮ネイティブコードを選択するもので
ある。
【0224】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0225】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0226】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0227】図36および図37を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS292の処理の代わりに、図36のS4
12の処理を実行し、図23のS314の処理の代わり
に、図37のS414の処理を実行するものである。そ
の他の処理は、図22および図23を参照して説明した
ものと同様である。このため、その詳細な説明はここで
は繰返さない。
【0228】図36のS412では、圧縮率格納領域5
4に格納されたネイティブコードの圧縮率を調べること
により、圧縮ネイティブコード格納領域34内で最も圧
縮率の低い圧縮ネイティブコードを有するメソッドを調
べ、メソッドAとする。
【0229】図37のS414では、メソッドNのネイ
ティブコードを圧縮した際の圧縮率を調べ、圧縮率格納
領域54に格納する。
【0230】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0231】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0232】[実施の形態14]本実施の形態は、第8
の実施の形態と異なり、圧縮ネイティブコード格納領域
34に格納しきれなくなった圧縮ネイティブコードを解
放する際の圧縮ネイティブコードの選択基準として、最
も古く圧縮された圧縮ネイティブコードを選択するもの
である。
【0233】本実施の形態に係るJava(R)仮想マ
シンは、図1を参照して説明した組込み機器を用いて実
現される。このため、その詳細な説明はここでは繰返さ
ない。
【0234】また、RAM8に記憶されている情報は図
3を参照して説明したものと同様である。このため、そ
の詳細な説明はここでは繰返さない。
【0235】さらに、ROM4に記憶されている情報は
図14を参照して説明したものと同様である。このた
め、その詳細な説明はここでは繰返さない。
【0236】図38および図39を参照して、上位モジ
ュールよりメソッドNの呼出しがあった場合のCPU2
の行なう処理について説明する。CPU2の行なう処理
は、図22のS292およびS298の処理の代わり
に、図38のS422およびS424の処理をそれぞれ
行なうものである。また、図23のS314の処理を省
略したもの(図39の処理)である。その他の処理は、
図22および図23を参照して説明したものと同様であ
る。このため、その詳細な説明はここでは繰返さない。
【0237】図38のS422では、圧縮時刻(順番)
格納領域56に格納された圧縮時刻を調べることによ
り、圧縮ネイティブコード格納領域34内で最初に圧縮
された圧縮ネイティブコードを有するメソッドを調べ、
メソッドAとする。
【0238】図38のS424では、メソッドAのネイ
ティブコードを圧縮し、圧縮ネイティブコード格納領域
34に格納する。その際、圧縮した時刻を圧縮時刻(順
番)格納領域56に格納する。
【0239】以上説明したように、本実施の形態による
と、バイトコードがネイティブコードに変換された後、
圧縮されて記憶される。このため、JITを用いた従来
のJava(R)VMに比べ、RAMの使用容量を削減
することが可能になる。
【0240】また、ネイティブコード格納領域32に複
数のメソッドのネイティブコードを格納することができ
るため、第7の実施の形態に比べて、処理が高速であ
る。
【0241】なお、実施の形態1〜14に記載の発明
は、Java(R)言語以外のオブジェクト指向言語で
記載され、かつ中間言語にコンパイルされたプログラム
にも適用可能である。
【0242】今回開示された実施の形態はすべての点で
例示であって制限的なものではないと考えられるべきで
ある。本発明の範囲は上記した説明ではなくて特許請求
の範囲によって示され、特許請求の範囲と均等の意味お
よび範囲内でのすべての変更が含まれることが意図され
る。
【0243】
【発明の効果】オブジェクト指向言語のプログラムを実
行する際に必要なメモリの容量を小さくすることができ
る。
【図面の簡単な説明】
【図1】 本発明の実施の形態に係る組込み機器のハー
ドウェア構成を示すブロック図である。
【図2】 ROMに格納されているデータを説明するた
めの図である。
【図3】 RAMに格納されているデータを説明するた
めの図である。
【図4】 Java(R)言語で記述されたプログラム
の構成を示す図である。
【図5】 実施の形態1において、メソッドが呼出され
た場合の処理のフローチャートである。
【図6】 実施の形態1において、メソッドが呼出され
た場合の処理のフローチャートである。
【図7】 RAMに格納されているデータを説明するた
めの図である。
【図8】 実施の形態2において、基本ブロックが呼出
された場合の処理のフローチャートである。
【図9】 RAMに格納されるデータを説明するための
図である。
【図10】 実施の形態3において、命令が呼出された
場合の処理のフローチャートである。
【図11】 実施の形態4において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図12】 実施の形態5において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図13】 実施の形態5において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図14】 ROMに格納されているデータを説明する
ための図である。
【図15】 実施の形態6において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図16】 実施の形態6において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図17】 実施の形態6において、メソッドが呼出さ
れた場合の処理を説明するための図である。
【図18】 実施の形態7において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図19】 実施の形態7において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図20】 実施の形態7において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図21】 実施の形態7において、メソッドが呼出さ
れた場合の処理を説明するための図である。
【図22】 実施の形態8において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図23】 実施の形態8において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図24】 Java(R)言語で記述されたプログラ
ムの構成を示す図である。
【図25】 実施の形態8において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図26】 実施の形態8において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図27】 実施の形態8において、メソッドが呼出さ
れた場合の処理を説明するための図である。
【図28】 実施の形態9において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図29】 実施の形態9において、メソッドが呼出さ
れた場合の処理のフローチャートである。
【図30】 実施の形態10において、メソッドが呼出
された場合の処理のフローチャートである。
【図31】 実施の形態10において、メソッドが呼出
された場合の処理のフローチャートである。
【図32】 実施の形態11において、メソッドが呼出
された場合の処理のフローチャートである。
【図33】 実施の形態11において、メソッドが呼出
された場合の処理のフローチャートである。
【図34】 実施の形態12において、メソッドが呼出
された場合の処理のフローチャートである。
【図35】 実施の形態12において、メソッドが呼出
された場合の処理のフローチャートである。
【図36】 実施の形態13において、メソッドが呼出
された場合の処理のフローチャートである。
【図37】 実施の形態13において、メソッドが呼出
された場合の処理のフローチャートである。
【図38】 実施の形態14において、メソッドが呼出
された場合の処理のフローチャートである。
【図39】 実施の形態14において、メソッドが呼出
された場合の処理のフローチャートである。
【符号の説明】
2 CPU、4 ROM、6 ユーザインタフェース、
12 圧縮バイトコード格納領域、14,124 領
域、16 オペレーティングシステム格納領域、18
モジュール格納領域、20 インタプリタ格納領域、2
2 JIT格納領域、24 圧縮モジュール格納領域、
26 伸張モジュール格納領域、28 コード格納領
域、30 バイトコード格納領域、32 ネイティブコ
ード格納領域、34 圧縮ネイティブコード格納領域、
36 メソッドステータス格納領域、38,62,92
回数格納領域、40,64,94 サイズ格納領域、
42,66,96 ネイティブコード有無フラグ格納領
域、44,68,98 コンパイル時刻(順番)格納領
域、46,70,100 圧縮情報格納領域、48,7
2,102 圧縮フラグ格納領域、50,74,104
伸張済みフラグ格納領域、52,76,106 圧縮
方式格納領域、54,78,108 圧縮率格納領域、
56,80,110 圧縮時刻(順番)格納領域、5
8,82,112圧縮サイズ格納領域、60 基本ブロ
ックステータス格納領域、90 命令ステータス格納領
域、122 バイトコード格納領域。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坂本 守 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 Fターム(参考) 5B076 BA04 5B081 AA09 DD01 5J064 AA04 BC01 BC29 BD04

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】 所定の言語で記述されたプログラムを実
    行するプログラム実行装置であって、 前記プログラムの、所定の単位毎に圧縮されたコードを
    格納する圧縮コード格納部と、 前記圧縮コード格納部に接続され、前記圧縮コード格納
    部から前記圧縮されたコードを読出して伸張するための
    伸張手段と、 前記伸張手段に接続され、前記伸張手段により伸張され
    たコードを格納するコード格納部と、 前記コード格納部に接続され、伸張された前記コードを
    解釈し、実行するためのインタープリタ手段とを含む、
    プログラム実行装置。
  2. 【請求項2】 前記所定の言語はオブジェクト指向言語
    であり、前記所定の単位は、メソッドである、請求項1
    に記載のプログラム実行装置。
  3. 【請求項3】 前記所定の単位は、プログラム中で分岐
    を含まない一連の命令である、請求項1に記載のプログ
    ラム実行装置。
  4. 【請求項4】 前記所定の単位は、命令である、請求項
    1に記載のプログラム実行装置。
  5. 【請求項5】 さらに、前記圧縮コード格納部に接続さ
    れ、圧縮された前記コードに基づいて、前記コードの圧
    縮方式を判定するための圧縮方式判定手段を含み、 前記伸張手段は、前記圧縮コード格納部、前記コード格
    納部および前記圧縮方式判定手段に接続され、前記圧縮
    方式判定手段の出力に基づいて、圧縮された前記コード
    を伸張し、前記コード格納部に格納するための手段を含
    む、請求項1に記載のプログラム実行装置。
  6. 【請求項6】 オブジェクト指向言語で記述されたプロ
    グラムを実行するプログラム実行装置であって、前記プ
    ログラムは前記プログラム実行装置にとってネイティブ
    なコード以外のコードで記述されており、 メソッド毎に圧縮された前記プログラムのコードを格納
    する圧縮コード格納部と、 前記圧縮コード格納部に接続され、圧縮された前記コー
    ドを伸張するための伸張手段と、 前記伸張手段に接続され、伸張された前記コードをネイ
    ティブコードに変換するための変換手段と、 前記変換手段に接続され、前記変換手段により出力され
    るネイティブコードを格納するネイティブコード格納部
    と、 前記ネイティブコード格納部に接続され、前記ネイティ
    ブコードを実行するためのネイティブコード実行手段と
    を含む、プログラム実行装置。
  7. 【請求項7】 前記ネイティブコード格納部は、キャッ
    シュメモリよりなる、請求項6に記載のプログラム実行
    装置。
  8. 【請求項8】 オブジェクト指向言語で記述されたプロ
    グラムを実行するプログラム実行装置であって、 前記プログラムのメソッドのコードを格納するコード格
    納部と、 メソッドのネイティブコードを格納するネイティブコー
    ド格納部と、 メソッドのネイティブコードを圧縮した圧縮ネイティブ
    コードを格納する圧縮ネイティブコード格納部と、 前記ネイティブコード格納部に接続され、前記ネイティ
    ブコード格納部に所望のメソッドのネイティブコードが
    格納されているか否かを判断するための第1の判断手段
    と、 前記圧縮ネイティブコード格納部に接続され、前記圧縮
    ネイティブコード格納部に前記所望のメソッドの圧縮ネ
    イティブコードが格納されているか否かを判断する第2
    の判断手段と、 前記第1および第2の判断手段、前記圧縮ネイティブコ
    ード格納部、前記コード格納部および前記ネイティブコ
    ード格納部に接続され、前記第1および第2の判断手段
    の出力に基づいて、前記圧縮ネイティブコード格納部に
    格納された圧縮ネイティブコードの伸張または前記コー
    ド格納部に格納されたコードのネイティブコードへの変
    換を選択的に実行し、得られたネイティブコードを前記
    ネイティブコード格納部へ格納するための、ネイティブ
    コード格納制御手段と、 前記ネイティブコード格納部に接続され、前記ネイティ
    ブコード格納部に格納されたネイティブコードを実行す
    るためのネイティブコード実行手段と、 前記第2の判断手段、前記ネイティブコード格納部およ
    び前記圧縮ネイティブコード格納部に接続され、前記第
    2の判断手段の出力に基づいて、実行されたネイティブ
    コードを圧縮し、前記圧縮ネイティブコード格納部へ格
    納するためのネイティブコード圧縮格納手段とを含む、
    プログラム実行装置。
  9. 【請求項9】 さらに、前記圧縮ネイティブコード格納
    部に格納されている圧縮ネイティブコードの圧縮方式を
    メソッド毎に格納する圧縮方式格納部を含み、 前記ネイティブコード格納制御手段は、前記第1および
    第2の判断手段、前記圧縮ネイティブコード格納部、前
    記コード格納部、前記ネイティブコード格納部および前
    記圧縮方式格納部に接続され、前記第1および第2の判
    断手段の出力に基づいて、前記圧縮方式格納部に格納さ
    れた圧縮方式に従った前記圧縮ネイティブコード格納部
    に格納された圧縮ネイティブコードの伸張または前記コ
    ード格納部に格納されたコードのネイティブコードへの
    変換を選択的に実行し、得られたネイティブコードを前
    記ネイティブコード格納部へ格納するための手段を含
    み、 前記ネイティブコード圧縮格納手段は、前記第2の判断
    手段、前記ネイティブコード格納部、前記圧縮ネイティ
    ブコード格納部および前記圧縮方式格納部に接続され、
    前記第2の判断手段の出力に基づいて、実行されたネイ
    ティブコードを予め定められた方法に従い定められる圧
    縮方式により圧縮し、圧縮ネイティブコードを前記圧縮
    ネイティブコード格納部へ格納し、前記圧縮方式を前記
    圧縮方式格納部へ格納するための手段を含む、請求項8
    に記載のプログラム実行装置。
  10. 【請求項10】 前記ネイティブコード圧縮格納手段
    は、前記ネイティブコード格納部に格納されているメソ
    ッドのネイティブコードのうち、最も古くネイティブコ
    ードに変換されたものから優先的に圧縮する、請求項8
    に記載のプログラム実行装置。
  11. 【請求項11】 前記ネイティブコード圧縮格納手段
    は、前記ネイティブコード格納部に格納されているメソ
    ッドのネイティブコードのうち、実行頻度の低いものか
    ら優先的に圧縮する、請求項8に記載のプログラム実行
    装置。
  12. 【請求項12】 前記ネイティブコード圧縮格納手段
    は、前記ネイティブコード格納部に格納されているメソ
    ッドのネイティブコードのうち、サイズの大きいものか
    ら優先的に圧縮する、請求項8に記載のプログラム実行
    装置。
  13. 【請求項13】 前記ネイティブコード圧縮格納手段
    は、前記ネイティブコード格納部に格納されているメソ
    ッドのネイティブコードのうち、最も圧縮率が大きいも
    のから優先的に圧縮する、請求項8に記載のプログラム
    実行装置。
  14. 【請求項14】 前記ネイティブコード圧縮格納手段
    は、圧縮ネイティブコードの格納領域に空きがない場合
    には、前記圧縮ネイティブコード格納領域に格納されて
    いるメソッドの圧縮ネイティブコードのうち、最も実行
    頻度が低い圧縮ネイティブコードを削除する、請求項8
    に記載のプログラム実行装置。
  15. 【請求項15】 前記ネイティブコード圧縮格納手段
    は、圧縮ネイティブコードの格納領域に空きがない場合
    には、前記圧縮ネイティブコード格納領域に格納されて
    いるメソッドの圧縮ネイティブコードのうち、最もサイ
    ズが大きい圧縮ネイティブコードを削除する、請求項8
    に記載のプログラム実行装置。
  16. 【請求項16】 前記ネイティブコード圧縮格納手段
    は、圧縮ネイティブコードの格納領域に空きがない場合
    には、前記圧縮ネイティブコード格納領域に格納されて
    いるメソッドの圧縮ネイティブコードのうち、最も圧縮
    率が低い圧縮ネイティブコードを削除する、請求項8に
    記載のプログラム実行装置。
  17. 【請求項17】 前記ネイティブコード圧縮格納手段
    は、圧縮ネイティブコードの格納領域に空きがない場合
    には、前記圧縮ネイティブコード格納領域に格納されて
    いるメソッドの圧縮ネイティブコードのうち、最も古く
    に圧縮された圧縮ネイティブコードを削除する、請求項
    8に記載のプログラム実行装置。
  18. 【請求項18】 オブジェクト指向言語で記述されたプ
    ログラムを実行するプログラム実行方法であって、 所定の単位毎に圧縮されたコードを伸張するステップ
    と、 伸張されたコードを解釈し、実行するステップとを含
    む、プログラム実行方法。
  19. 【請求項19】 前記所定の単位は、メソッドである、
    請求項18に記載のプログラム実行方法。
  20. 【請求項20】 前記所定の単位は、プログラム中で分
    岐を含まない一連の命令である、請求項18に記載のプ
    ログラム実行方法。
  21. 【請求項21】 前記所定の単位は、命令である、請求
    項18に記載のプログラム実行方法。
  22. 【請求項22】 さらに、所定の単位毎に圧縮されたコ
    ードの圧縮方式を判定するステップを含み、 前記伸張するステップは、判定された圧縮方式に基づい
    て、所定の単位毎に圧縮されたコードを伸張するステッ
    プを含む、請求項18に記載のプログラム実行方法。
  23. 【請求項23】 オブジェクト指向言語で記述されたプ
    ログラムを実行するプログラム実行方法であって、 メソッド毎に圧縮されたコードを伸張するステップと、 伸張された前記コードをネイティブコードに変換するス
    テップと、 前記ネイティブコードを実行するステップとを含む、プ
    ログラム実行方法。
  24. 【請求項24】 オブジェクト指向言語で記述されたプ
    ログラムを実行するプログラム実行装置で用いられるプ
    ログラム実行方法であって、 前記プログラム実行装置は、前記プログラムのメソッド
    のコードを格納するコード格納部と、メソッドのネイテ
    ィブコードを格納するネイティブコード格納部と、メソ
    ッドのネイティブコードを圧縮した圧縮ネイティブコー
    ドを格納する圧縮ネイティブコード格納部とを含み、 前記ネイティブコード格納部に所望のメソッドのネイテ
    ィブコードが格納されているか否かを判断するステップ
    と、 前記圧縮ネイティブコード格納部に前記所望のメソッド
    の圧縮ネイティブコードが格納されているか否かを判断
    するステップと、 前記ネイティブコードの格納結果および前記圧縮ネイテ
    ィブコードの格納結果に基づいて、前記圧縮ネイティブ
    コード格納部に格納された圧縮ネイティブコードの伸張
    または前記コード格納部に格納されたコードのネイティ
    ブコードへの変換を選択的に実行し、得られたネイティ
    ブコードを前記ネイティブコード格納部へ格納するステ
    ップと、 前記ネイティブコード格納部に格納されたネイティブコ
    ードを実行するステップと、 前記圧縮ネイティブコードの格納結果に基づいて、実行
    されたネイティブコードを圧縮し、前記圧縮ネイティブ
    コード格納部へ格納するステップとを含む、プログラム
    実行方法。
  25. 【請求項25】 前記プログラム実行装置は、さらに、
    前記圧縮ネイティブコード格納部に格納されている圧縮
    ネイティブコードの圧縮方式をメソッド毎に格納する圧
    縮方式格納部を含み、 前記ネイティブコードを前記ネイティブコード格納部へ
    格納する前記ステップは、前記ネイティブコードの格納
    結果および前記圧縮ネイティブコードの格納結果に基づ
    いて、前記圧縮方式格納部に格納された圧縮方式に従っ
    た前記圧縮ネイティブコード格納部に格納された圧縮ネ
    イティブコードの伸張または前記コード格納部に格納さ
    れたコードのネイティブコードへの変換を選択的に実行
    し、得られたネイティブコードを前記ネイティブコード
    格納部へ格納するステップを含み、 前記圧縮ネイティブコード格納部へ格納する前記ステッ
    プは、前記圧縮ネイティブコードの格納結果に基づい
    て、実行されたネイティブコードを予め定められた方法
    に従い定められる圧縮方式により圧縮し、圧縮ネイティ
    ブコードを前記圧縮ネイティブコード格納部へ格納し、
    前記圧縮方式を前記圧縮方式格納部へ格納するステップ
    を含む、請求項24に記載のプログラム実行方法。
  26. 【請求項26】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、前記ネイティブコード格納部に
    格納されているメソッドのネイティブコードのうち、最
    も古くネイティブコードに変換されたものから優先的に
    圧縮する、請求項24に記載のプログラム実行方法。
  27. 【請求項27】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、前記ネイティブコード格納部に
    格納されているメソッドのネイティブコードのうち、実
    行頻度の低いものから優先的に圧縮する、請求項24に
    記載のプログラム実行方法。
  28. 【請求項28】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、前記ネイティブコード格納部に
    格納されているメソッドのネイティブコードのうち、サ
    イズの大きいものから優先的に圧縮する、請求項24に
    記載のプログラム実行方法。
  29. 【請求項29】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、前記ネイティブコード格納部に
    格納されているメソッドのネイティブコードのうち、最
    も圧縮率が大きいものから優先的に圧縮する、請求項2
    4に記載のプログラム実行方法。
  30. 【請求項30】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、圧縮ネイティブコードの格納領
    域に空きがない場合には、前記圧縮ネイティブコード格
    納領域に格納されているメソッドの圧縮ネイティブコー
    ドのうち、最も実行頻度が低い圧縮ネイティブコードを
    削除する、請求項24に記載のプログラム実行方法。
  31. 【請求項31】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、圧縮ネイティブコードの格納領
    域に空きがない場合には、前記圧縮ネイティブコード格
    納領域に格納されているメソッドの圧縮ネイティブコー
    ドのうち、最もサイズが大きい圧縮ネイティブコードを
    削除する、請求項24に記載のプログラム実行方法。
  32. 【請求項32】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、圧縮ネイティブコードの格納領
    域に空きがない場合には、前記圧縮ネイティブコード格
    納領域に格納されているメソッドの圧縮ネイティブコー
    ドのうち、最も圧縮率が低い圧縮ネイティブコードを削
    除する、請求項24に記載のプログラム実行方法。
  33. 【請求項33】 前記圧縮ネイティブコード格納部へ格
    納する前記ステップは、圧縮ネイティブコードの格納領
    域に空きがない場合には、前記圧縮ネイティブコード格
    納領域に格納されているメソッドの圧縮ネイティブコー
    ドのうち、最も古くに圧縮された圧縮ネイティブコード
    を削除する、請求項24に記載のプログラム実行方法。
JP2001124824A 2001-04-23 2001-04-23 プログラム実行装置および方法 Withdrawn JP2002318696A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001124824A JP2002318696A (ja) 2001-04-23 2001-04-23 プログラム実行装置および方法
US10/073,215 US7065751B2 (en) 2001-04-23 2002-02-13 Program execution device operating based on compressed code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001124824A JP2002318696A (ja) 2001-04-23 2001-04-23 プログラム実行装置および方法

Publications (1)

Publication Number Publication Date
JP2002318696A true JP2002318696A (ja) 2002-10-31

Family

ID=18974146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001124824A Withdrawn JP2002318696A (ja) 2001-04-23 2001-04-23 プログラム実行装置および方法

Country Status (2)

Country Link
US (1) US7065751B2 (ja)
JP (1) JP2002318696A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005101210A1 (ja) * 2004-04-09 2005-10-27 Sharp Kabushiki Kaisha データ解析装置、データ解析方法、データ解析プログラム、およびデータ解析プログラムを記録した記録媒体
WO2006082878A1 (ja) 2005-02-03 2006-08-10 Mitsubishi Denki Kabushiki Kaisha プログラムコード生成支援装置及び方法、プログラム実行装置及び方法並びにプログラムコード圧縮処理装置及び方法並びにそれらのプログラム
WO2006107095A1 (ja) * 2005-03-31 2006-10-12 Nec Corporation 計算機システム、メモリ管理方法、およびそのプログラム
JP2008225818A (ja) * 2007-03-13 2008-09-25 Nec Corp 情報処理装置及びプロセス圧縮方法並びにプログラム
US8448158B2 (en) 2005-02-03 2013-05-21 Mitsubishi Electric Corporation Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004214828A (ja) * 2002-12-27 2004-07-29 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理用コンピュータプログラム、及びこの画像処理用コンピュータプログラムを記憶する記憶媒体
US20040225747A1 (en) * 2003-05-09 2004-11-11 Zafer Kadi Providing compiled bytecode applications to a wireless device
US7784041B2 (en) * 2006-03-30 2010-08-24 Oracle America, Inc. Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation
US9081588B2 (en) * 2012-01-31 2015-07-14 Mentor Graphics Corporation Execution time profiling for interpreted programming languages
JP6428936B2 (ja) * 2015-06-10 2018-11-28 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768597A (en) * 1996-05-02 1998-06-16 Starfish Software, Inc. System and methods for improved installation of compressed software programs
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US5859982A (en) 1996-06-05 1999-01-12 Sun Microsystems, Inc. Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
US6083279A (en) * 1996-10-10 2000-07-04 International Business Machines Corporation Platform independent technique for transferring software programs over a network
US6513156B2 (en) * 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US6654954B1 (en) * 1998-02-17 2003-11-25 International Business Machines Corporation Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute
US6289506B1 (en) * 1998-06-30 2001-09-11 Intel Corporation Method for optimizing Java performance using precompiled code
US6631515B1 (en) * 1998-09-24 2003-10-07 International Business Machines Corporation Method and apparatus to reduce code size and runtime in a Java environment
US6637025B1 (en) * 1998-12-03 2003-10-21 International Business Machines Corporation Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
US6336216B1 (en) * 1998-12-10 2002-01-01 International Business Machines Corporation Objects oriented programming system with objects for storing compressed data files and self-extracting the data files
JP2000347936A (ja) 1999-06-04 2000-12-15 Mitsubishi Electric Corp プログラム実行システム
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
US6549995B1 (en) * 2000-01-06 2003-04-15 International Business Machines Corporation Compressor system memory organization and method for low latency access to uncompressed memory regions
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005101210A1 (ja) * 2004-04-09 2005-10-27 Sharp Kabushiki Kaisha データ解析装置、データ解析方法、データ解析プログラム、およびデータ解析プログラムを記録した記録媒体
JPWO2005101210A1 (ja) * 2004-04-09 2008-03-06 シャープ株式会社 データ解析装置およびデータ解析プログラム
WO2006082878A1 (ja) 2005-02-03 2006-08-10 Mitsubishi Denki Kabushiki Kaisha プログラムコード生成支援装置及び方法、プログラム実行装置及び方法並びにプログラムコード圧縮処理装置及び方法並びにそれらのプログラム
EP2330502A1 (en) 2005-02-03 2011-06-08 Mitsubishi Denki Kabushiki Kaisha Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof
US8448158B2 (en) 2005-02-03 2013-05-21 Mitsubishi Electric Corporation Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof
US8527967B2 (en) 2005-02-03 2013-09-03 Mitsubishi Electric Corporation Program code compression processing device and method and program thereof
US8572557B2 (en) 2005-02-03 2013-10-29 Mitsubishi Electric Corporation Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof
WO2006107095A1 (ja) * 2005-03-31 2006-10-12 Nec Corporation 計算機システム、メモリ管理方法、およびそのプログラム
JP5071798B2 (ja) * 2005-03-31 2012-11-14 日本電気株式会社 計算機システム,メモリ管理方法,およびそのプログラム
US8930659B2 (en) 2005-03-31 2015-01-06 Nec Corporation Computer system, memory management method and program thereof
US9678862B2 (en) 2005-03-31 2017-06-13 Nec Corporation Computer system, memory management method and program thereof
JP2008225818A (ja) * 2007-03-13 2008-09-25 Nec Corp 情報処理装置及びプロセス圧縮方法並びにプログラム

Also Published As

Publication number Publication date
US20040015895A1 (en) 2004-01-22
US7065751B2 (en) 2006-06-20

Similar Documents

Publication Publication Date Title
JP3585800B2 (ja) 情報処理装置
JP2002318696A (ja) プログラム実行装置および方法
CN105302663B (zh) 一种镜像开机方法和终端设备
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
US7817154B1 (en) Graphics system with state transition caching
CN102521312B (zh) 一种文件索引的存储方法及文件系统
JP2024508129A (ja) オリジナルシステムに基づく派生ソフトウェアの構築方法、システム及び装置
JP2004038404A (ja) 圧縮コードを処理するマイクロコントローラ
JPWO2012039143A1 (ja) Dmaコントローラ及びデータ読出装置
JP2009021928A (ja) 情報処理装置及びプログラム
JPH0628150A (ja) プログラム容量圧縮方法
JP3191857B2 (ja) シミュレーション実行装置及びそのデータ圧縮方法
JP4813823B2 (ja) テストシステム及びテスト方法
KR100353814B1 (ko) 확장된 램 억세스 명령어를 억세스하는 시간을 향상시킨램 억세스 장치
JP2002245104A (ja) 論理縮小機能を備えたマッピング装置、マッピング方法、及びそのプログラム。
RU27719U1 (ru) Устройство формирования информационного поля от разнородных источников данных
JP2000231494A (ja) ソフトウェア実行システム及びソフトウェア実行方法
JP3644614B2 (ja) 動的中間コード処理装置
KR20070092021A (ko) 자바 어플리케이션을 실행하는 장치 및 방법
JP3146197B2 (ja) データ転送装置及び記憶装置
JPH11331567A (ja) 印刷装置
JPH0241526A (ja) ディジタル信号プロセッサ
KR20190059412A (ko) 스크래치패드 메모리의 코드 관리 성능 향상을 위한 함수 인라이닝 및 아웃라이닝 방법
JPH07160512A (ja) コンパイル方式
JPH08272606A (ja) ラダー命令処理装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080701