JPH04115328A - 関数処理方式 - Google Patents

関数処理方式

Info

Publication number
JPH04115328A
JPH04115328A JP23453590A JP23453590A JPH04115328A JP H04115328 A JPH04115328 A JP H04115328A JP 23453590 A JP23453590 A JP 23453590A JP 23453590 A JP23453590 A JP 23453590A JP H04115328 A JPH04115328 A JP H04115328A
Authority
JP
Japan
Prior art keywords
function
evaluation
frame
stack
heap
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
JP23453590A
Other languages
English (en)
Inventor
Kazuki Yasumatsu
一樹 安松
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP23453590A priority Critical patent/JPH04115328A/ja
Publication of JPH04115328A publication Critical patent/JPH04115328A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野] 本発明は、プログラミング言語の実行装置における記憶
手段のデータ領域割り付けに係り、特にSmallta
lk、Li5p等の関数型言語の遅延評価の実行におい
て変数の結合情報を伴う関数を処理する関数処理方式に
関する。
〔従来の技術〕
5salltalkやLi5pなどの関数型言語で遅延
評価機能を実現する方法においては、ランダムアクセス
可能な記憶手段(以下、メモリという)であるヒープ上
にフレームを作成し、関数はそのフレームへのポインタ
をもつようにしたものが一般的である。
なお、関数の式の計算を行って結果を求める「評価」は
、関数呼出しが起きた場合の通常の引数の引渡し時、ま
ず実引数を評価しその評価値を渡すという値呼び(ca
ll by value)によって行われる。これに対
し、値の呼出し時には評価しなし)で、関数本体の評価
時に実引数の値が必要になった時点で評価を実行する機
能を「遅延評価」と称している。
第4図は従来技術における遅延評価を実行するためのメ
モリ構成の説明図であって、2はスタック、3はヒープ
である。
ここで、スタックとは、関数処理実行中にデータである
変数の領域を順番に確保し開放する「後入れ一先出し」
メモリで、最も新しく記憶されたデータの項目を保持し
ている記憶場所のアドレスをスタックポインタで指定す
る。
また、ヒープとは、スタックと同様にデータの領域は順
番に確保されるが、次に取り出される(開放される)デ
ータの領域はランダムであるようなメモリをいう。
一般に、アクセス速度はヒープの方が遅く、スタックは
高速である。
そして、通常は、ヒープの上位にスタックを階層構造と
したメモリ構成をとる。
第4図において、関数を遅延評価するときには、変数名
とその値の結合情報(関数呼出しに対する変数名の対応
を示す情報)をヒープ3上のフレーム31から得ること
ができる。関数(ここでは、その関数内容が式の実行コ
ード[y 4− X + y 、  ↑y])から非局
所ジャンプ、すなわち遅延評価実行時にそのジャンプ先
が決定される動的ジャンプを行うときは、ヒープ3上に
あるフレーム31の前フレームリンクが指すフレーム3
2に制御を戻しく矢印42口)、そのフレーム32に格
納されている変数名、結合情報を取り出す。
第5図はLi5pで遅延評価機能を実現する従来技術の
説明図であって、2はスタック、21はフレームである
同図において、スタック2上にフレーム21を作成し、
関数(その関数内容は上記と同様の式である実行コード
[y =x +y、↑y])を遅延評価するのに必要な
変数名とその値の結合情報(図では「変数結合」と記す
)をヒープ3上に持たせている。変数x、  yの領域
にはその値であるデータが格納される。
関数はその結合情報をもち、フレームをスタ・ンク上に
とる(作成する)ことができるので、スタックの動作特
性から、第4図に示したヒープ上にフレームをとる構成
に比べて実行速度が速い。
関数を遅延評価するときには、変数名とその値の結合情
報をヒープ3上から得ることができる(イ)。
なお、これに関連する従来技術を開示したものとしては
、特開昭63−78239号公報を挙げることができる
[発明が解決しようとする課題] 上記従来の技術に示したように、フレームをヒープ上に
作成した場合には、それをスタック上に作成した場合に
比べて実行速度が遅くなっていまうという問題があった
また、フレームをヒープ上に作成したことによって、関
数から非局所ジャンプを行うことができないという致命
的な欠点があった。
本発明の目的は、上記従来技術の欠点を解消し、実行速
度を向上させると共に、関数からの非局所ジャンプを可
能とすることにある。
[課題を解決するための手段] 上記目的は、関数処理実行中に変数の領域を順番に確保
し開放するスタックおよび上記変数の領域を任意の順序
で確保し開放するヒープを持つ記憶手段と、関数定義部
、関数評価部、関数遅延評価部および関数からの非局所
ジャンプを行う非局所ジャンプ実行部を備える関数処理
制御装置とから成る関数処理方式において、上記スタッ
クは、その上にフレームを有すると共に、上記ヒープは
、その上に変数名とその結合情報および非局所ジャンプ
すべきスタック上のフレームへのポインタ情報を有し、
関数の遅延評価時は、変数名とその値の結合情報をヒー
プ上から得、関数からの非局所ジャンプ時はスタック上
のフレームの前フレームリンクが指示するフレームに制
御を戻す構成としたことによって達成される。
[作用] ヒープ上に作成した非局所ジャンプすべきスタック上の
フレームへのポインタ情報によって、スタック上のフレ
ームの前フレームリンクが指すフレームに制御を戻すた
め、ヒープ上の関数から非局所ジャンプを実行でき、し
かもスタック上にフレームを作成したことによる処理の
高速化を妨げない。
[実施例] 以下、本発明の実施例を図面を参照して説明する。
第1図は本発明による関数処理方式を適用する関数処理
装置の全体構成を説明するブロック図であって、1は記
憶手段(メモリ)、2はスタック、3はヒープ、4は関
数処理制御手段、5は関数定義部、6は関数評価部、7
は関数遅延評価部、8は非局所ジャンプ実行部である。
そして、メモリ1はスタック2とヒープ3とから構成さ
れ、関数処理制御手段4は関数定義部5゜関数評価部6
.関関数遅延価部7.および非局所ジャンプ実行部8と
から構成される。
関数定義部5は評価を実行する関数を定義する機能部分
であり、入れ子構造で記述した式(例えば、上記した実
行コード[y 4−X−1−y、↑y])を定義する。
関数評価部6は定義した関数の評価を実行する機能部分
、関数遅延評価部7は遅延評価を実行する機能部分、非
局所ジャンプ実行部8は評価の実行時にジャンプ先を決
定する機能部分である。
同図において、関数処理制御手段4はメモリ1に階層化
構造で設けたスタック2とヒープ3を用いて関数の評価
、同遅延評価を実行する。
第2図は第1図のメモリを構成するスタックとヒープの
構造を示す構成図である。
また、第3図は関数処理制御装置に入力する関数すの一
例の説明図である。
以下、第2図と第3図により本発明の詳細な説明する。
関数処理制御手段4に第3図に示した関数すを入力する
と、スタック第2図のスタック2上にフレーム21が作
成され、ヒープ3上に関数すの内容(関数内容二式すな
わち実行コード[y ”x +y。
↑y])と関数結合情報およびフレームポインタとが作
成される。
この時点では、関数すの評価、遅延評価は実行されない
ここでは、本発明の対象である非局所ジャンプを要する
遅延評価についてのみ説明する。
関数すを遅延評価するときには、変数名(x。
y)とその値(データ)の結合情報をヒープ3から得る
ことができる(矢印イ)。
関数すから非局所ジャンプを行うときは、バックポイン
タであるフレームポンタにより(矢印口)、スタック2
上にあるフレーム21の前フレームリンクが指すフレー
ム22に制御を戻しく矢印ハ)、遅延評価を実行する。
このように、スタック上にフレームを作成するので、遅
延評価の実行速度が速(、かつスタック上にフレームを
作成することことで、フレームがメモリ管理の対象とな
らないため、メモリ管理に負荷がかからない。
[発明の効果] 以上説明したように、本発明によれば、ヒープ上に作成
した非局所ジャンプすべきスタック上のフレームへのポ
インタ情報によって、スタック上のフレームの前フレー
ムリンクが指すフレームに制御を戻すため、ヒープ上の
関数から非局所ジャンプを実行でき、しかも前記従来技
術における問題点であるスタック上にフレームを作成し
たことによる処理の高速化を妨げることはない。
【図面の簡単な説明】
第1図は本発明による関数処理方式を適用する関数処理
装置の全体構成を説明するブロック図、第2図は第1図
のメモリを構成するスタックとヒープの構造を示す構成
図、第3図は関数処理制御手段に入力する関数の一例の
説明図、第4図は従来技術における遅延評価を実行する
ためのメモリ構成の説明図、第5図はLi5pで遅延評
価機能を実現する従来技術の説明図である。 1・・・・記憶手段(メモリ)、2・・・・スタック、
3・・・・ヒープ、4・・・・関数処理制御手段、5・
・・・関数定義部、6・・・・関数評価部、 ・関数遅延評価部、 ・非局所ジャンプ実行部。

Claims (1)

  1. 【特許請求の範囲】 関数処理実行中に変数の領域を順番に確保し開放するス
    タックおよび上記変数の領域を任意の順序で確保し開放
    するヒープを持つ記憶手段と、関数定義部、関数評価部
    、関数遅延評価部および関数からの非局所ジャンプを行
    う非局所ジャンプ実行部を備える関数処理制御手段とか
    ら成る関数処理方式において、 上記スタックは、その上にフレームを有すると共に、 上記ヒープは、その上に変数名とその結合情報および非
    局所ジャンプすべきスタック上のフレームへのポインタ
    情報を有し、 関数の遅延評価時は、変数名とその値の結合情報をヒー
    プ上から得、関数からの非局所ジャンプ時はスタック上
    のフレームの前フレームリンクが指示するフレームに制
    御を戻すことを特徴とする関数処理方式。
JP23453590A 1990-09-06 1990-09-06 関数処理方式 Pending JPH04115328A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23453590A JPH04115328A (ja) 1990-09-06 1990-09-06 関数処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23453590A JPH04115328A (ja) 1990-09-06 1990-09-06 関数処理方式

Publications (1)

Publication Number Publication Date
JPH04115328A true JPH04115328A (ja) 1992-04-16

Family

ID=16972551

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23453590A Pending JPH04115328A (ja) 1990-09-06 1990-09-06 関数処理方式

Country Status (1)

Country Link
JP (1) JPH04115328A (ja)

Similar Documents

Publication Publication Date Title
US5586328A (en) Module dependency based incremental compiler and method
US6363522B1 (en) Method and apparatus for handling exceptions as normal control flow
US6408433B1 (en) Method and apparatus for building calling convention prolog and epilog code using a register allocator
JPH04245543A (ja) サブプログラム呼び出しを実行する方法および装置と            コンパイラ装置
JP2000347876A (ja) スタック・スロット割当て方法および装置
CN104965687B (zh) 基于指令集生成的大数据处理方法及装置
JP5048949B2 (ja) 非同期プログラムフローのモデリングを含むソフトウェアツール
EP0708940B1 (en) Multiple entry point method dispatch
EP0240108A2 (en) A data processing system
JP2752094B2 (ja) 論理型言語におけるバックトラック処理方式
JPH04115328A (ja) 関数処理方式
JP2000122876A (ja) 情報処理装置
JP3309810B2 (ja) プログラムリンクシステム、方法及び記録媒体
JP2001134443A (ja) インタフェース呼出し高速化方法
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JP2601541B2 (ja) Fortran入出力並び処理方式
JPS62137641A (ja) 高級言語のコンパイラ
JP2633918B2 (ja) メソド検索方法及びメソド検索手続き生成方法
JPH0293947A (ja) 電子計算機
JPS6324422A (ja) セグメント方式計算機における2種以上の呼出し手順の共存方式
JPH02206838A (ja) 共通サブル―チンリンク方法
JPH09311792A (ja) レジスタ割り付け方法
JPH03119472A (ja) ベクトルレジスタ割付け方式
JPH0619721A (ja) 機械語翻訳最適化方式
JPS61115138A (ja) プログラム内のリスト形式のデ−タ構造のコピ−方法