[Gauche-devel-jp] Re: port-current-lineについて

Back to archive index

HIRAUCHI Hideyuki hira****@verys*****
2004年 2月 20日 (金) 22:40:55 JST


> いえ、コードサイズよりは性能重視です。
> その上でコードが綺麗になるなら言うこと無しです。
あ、そうでしたか。なんとなく、組み込み屋さんへの配慮なのかなー?とか思っ
てました。>サイズ

> ネックは、port処理中にエラーが発生した場合に必ずportのロックが
> consistentになることを保証しなければならないってところです。
> そのために、今はエラーを投げる可能性のある部分を全てPORT_SAFE_CALLで
> 覆っているので、単純に関数の中身だけinlineで括り出すことが難しくなっています。
ううう、すぐに理解できない。
一度自分で書いてみないと理解できないだろうなぁ。

> 今のコードは自分でも満足していないので、なんかうまい解決法があればぜひ
> 採り入れたいです。
うまく行けばいいですけど、もしダメでも「これじゃダメだった」という例にな
れば良いというスタンスで、気楽にやってみます。

あと、さっきのパッチは無しでお願いします。
無駄を発見してしまった。

--hira

--- portapi.c.org	2004-02-20 20:10:50.579500000 +0900
+++ portapi.c	2004-02-20 22:10:29.063875000 +0900
@@ -301,12 +301,15 @@
 ScmChar Scm_PeekcUnsafe(ScmPort *p)
 #endif
 {
+    int line;
     ScmChar ch;
     VMDECL;
     SHORTCUT(p, return Scm_PeekcUnsafe(p));
     LOCK(p);
     if ((ch = SCM_PORT_UNGOTTEN(p)) == SCM_CHAR_INVALID) {
+        line = p->src.buf.line;
         ch = Scm_GetcUnsafe(p);
+        p->src.buf.line = line;
         SCM_PORT_UNGOTTEN(p) = ch;
     }
     UNLOCK(p);




Gauche-devel-jp メーリングリストの案内
Back to archive index