Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 158:d2be76d48b00 default tip
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Feb 2021 14:37:21 +0900 |
parents | 0178949dcc7d |
children | |
files | paper/chapter/05-perl.tex paper/final.pdf |
diffstat | 2 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/05-perl.tex Tue Feb 16 16:00:32 2021 +0900 +++ b/paper/chapter/05-perl.tex Wed Feb 17 14:37:21 2021 +0900 @@ -287,7 +287,7 @@ pop2で取り出したデータは、 上記で確認した通りContext中のStack Interfaceのデータ格納場所に書き込まれる。 しかしソースコード\ref{src:pop2stub-origin}の例では\texttt{Gearef(context, StackTest)}でContext中の\texttt{StackTest} Interfaceのdataの置き場所から値を取得している。 これはInterfaceのImplのCodeGearは、Interfaceから値を取得するというGearsOSのルールの為である。 -現状ではpop2でせっかく取り出した値をStubCodeGearで取得できない。 +現状ではpop2で取り出した値をStubCodeGearで取得できない。 ここで必要となってくるのは、 実装しているInterface以外の呼び出し元のInterfaceからの値の取得である。 今回の例ではStackTest InterfaceではなくStack Interfaceからdata、 data1を取得したい。 @@ -310,7 +310,7 @@ Contextから値を取り出すのはメタ計算であるStub CodeGearで行われる。 別Interfaceから値を取り出そうとする場合、 すでにPerlトランスパイラが生成しているStubを書き換える方法も取れる。 しかしStubCodeGearそのものを、 別Interfaceから値を取り出すように書き換えてはいけない。 -これは別Interfaceの継続として渡されるケースと、 次のgoto先として遷移するケースがあるためである。 +これは別Interfaceの継続として渡されるケースと、 次のgoto先として遷移するケースが存在するためである。 前者のみの場合は書き換えで問題ないが、 後者のケースで書き換えを行ってしまうとStubで値を取り出す先が異なってしまう。 どのような呼び出し方をしても対応できるようにするには、 Stubを別に別ける必要がある。