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);