2006-04-01から1ヶ月間の記事一覧

Parametrized symbol concatenation

あれーー? これって OK なのか。これが使えるんなら misc の実装は 10 倍ぐらい単純かつ柔軟にできる。 #define CAT(x, y) x##y #define IFACE(arg) INTERM(CAT(arg, _), arg) -- CAT(arg, Y) #define INTERM(a, b) FIN(a, (a), b, (b)) #define FIN(a, b, c…

言えん

firendly rivalry 追記: 練習したら言えた。

"On the Electrodynamics of Moving Bodies" 熟読中。時間を表す symbol が t になってるけど、Einstein 自身は z (Zeit) 使ったんじゃないんだろうか。などと詳細に気を取られてなかなか進まないのはいつも通り。

これはどうなのか

#define SCM_OTHERS_SET_CAR_VAL(a, type, val) \ do { \ SCM_CELL_SET_CAR((a), (SCM_STRIP_GCBIT(val) \ | SCM_GCBIT(SCM_CELL_CAR(a)))); \ ← \ if (SCM_OTHERS_CAR_VAL_ALIGN_NONEP(type)) { \ /* store val's GCBIT to the CDR */ \ SCM_CELL_SET_CDR((…

ぶつくさぶつくさ

C

ったく…これだから健全じゃない macro は…

↓でだらだらと書いてる裏で何をやってるのか簡単に説明しときます。storage-compact.h に macro support を追加しようとしたところ、諸々の理由によりこのまま使うのは良くないと判断したので、自分で別のを書き直してます。後で merge するか差し替えるかは…

今ごろ気づいた

( ゚д゚)…? SCM_USE_COMPACT 1 するとぜーんぜん build できないんですが、これって完成してるはずなんですか? >太田さん 追記: 全然てこたないか…数箇所壊れてるだけぽ。

( ゚д゚)ハッ! いつのまにか手段が目的に…orz

符号つき整数の拡張

C

むう? 規格にこれの規定って無かった? 見当たらんけど… uint32_t x = (int8_t)-1;6.3.1.8 (Usual Arithmetic Conversion) には "[...]the operand with signed integer type is converted to the type of the operand with unsigned integer type." とあるだ…

はへ?

/* * FIXME: Support 64-bit data models * [...] * - (low priority) change ScmObj definition to the union below to support * ILP32 with 64-bit long long */ #if 0 /* FIXME: adapt to this to support ILP32 with 64-bit long long */ /* To allow s…

STklos

Pair に 3 word 使っちょる。しかも本当に 64-bit で動くのかこの code?

知らんかった

C

enum ex{ X };としたとき、X という expression の型は int。しかし enum ex は整数系のどれでもいい。 まあ当り前といえば当り前か。

そういえば

SYM_ELLIPSIS が scm_intern("...") のままだよ… Compiler にこれが純粋関数 (i.e. 副作用無し) だと見抜けるわけはないので、FOR_EACH() とかの loop 内で毎回 hash lookup 呼んでる事に… Compaction 終わったら速さを測り直してみよう。(まあそれが非常に…

stress test

STklos は (require "full-syntax") したら通った。16 秒。実装は scheme っぽいので、scheme で書くと高くつくかもと言ったのはちょっと早まったか。まだ order が一つ違うけど Scheme48 のように悲惨な結果にはなってない。この場合 16 倍を多いと見るか、…

これも無駄だなあ… #define SCM_SAL_EQ(a, b) (SCM_STRIP_GCBIT(a) == SCM_STRIP_GCBIT(b))ちっとも performance (memory/speed 両方) を追求する姿勢が伺えない。階層を強く分離する姿勢はいいと思うんだけど、performance-critical な部分で分離に固執して…

↓Memory 使用量も調べたいなあ…。Shell の `time' builtin みたいに手軽にできるんだろうか。

この expander なかなか優秀ではないか。Transcribe した後の symbol lookup はちょっと遅いけど、expansion そのものは Oleg Kiselyov の stress test を基準に言えば高速な部類に入るらしい。試してみた範囲では Guile, Gauche, Bigloo, STklos → error (b…

&& は & より遅い

Compiler に面倒見てもらえないのかと言ったやつ。とりあえずの解釈として、&& は & や % などとの組合せの代数的性質がよくないので compiler が reduce しにくい/しようとしないのかと考えてみた。つまり、&& などの条件演算子はあくまで独立条件を加味し…

反応が無い…

言いすぎたんかしら。そんなヤワだとも思えないけど。

面倒見てもらえないのか…

jun@debian /tmp $ cat tmp.c int f(int o) { return (o & 6) == 6 && (o & 8) == 0; } jun@debian /tmp $ gcc -O3 -S -o - tmp.c .file "tmp.c" .text .p2align 4,,15 .globl f .type f, @function f: pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl …

The Feynman Lectures on Physics with workbooks

くそう、落札失敗。Workbook の中身が気になって仕方ないけど、しょうがないから本体だけのを狙う。

compaction support 進行中

んー、なんか色々効率悪 *そうな* 箇所があるなあ。Compiler の最適化がどれぐらい効くかで評価が思い切り変わるけど。 その1 (確実) #define SCM_CONS_CAR_VAL(a) ((ScmObj)(SCM_CELL_CAR(a)))Cons の tag 00 にしてる意味ないしそれ。orz 2 #define SCM_SA…

assiduous disciple

SCM_ASSERT()

#define TRL_EXECUTE(foo) (SCM_ASSERT(bar), baz) としていたので、非 debug 時には (, baz) と展開されてしまい、error になる。他にも #define SCM_ENCODING_ASSERT(cond) (SCM_ASSERT(cond)) も SCM_ENCODING_ASSERT(foo); が (); と展開されてしまい、e…

orz

↓すっげーアホな bug だった。手元の処理系全部 fail させて結構 maniac な test も揃ったかなとか天狗になってたら、どれも maniac 過ぎて基本的な部分が test できてなかったオチ。

件の stress test が何故 fail するのかまだわからず。っていうかこれ追うんですか…マジですかそうですか。

The best interface is no interface

Some light and some shadow 自分の頭の中身をそのまま書き出されたような気分。私は最近の X で走る desktop environment の発展は、仕方ないかとは思いつつも冷やかな気分で見守っている。何故なら Unix 系本来の柔軟性と versatility が失われて、Mac を…

前から気になってたけど…

scm_add_environment() て正しくは scm_add_*to*_environment() だよね。

A dark, under-specified corner of R5RS: VCELL を使う限り 3 を出すのは無理だな…あるいは farsymbol が 2 cell 使うか。気色悪い事したら 3 出せるね。 (define sym val)Top-level define に渡される symbol についてる wrapper は高々 1 個 (のはず) な…

どひー

本当の stress test。Gauche と STklos は error, Guile は stack overflow, Scheme48 は返ってこない + ^C して止めたらバグた。 Sigscheme は何故か macro の引数を評価しようとして error を出す。マジで? その下の dark under-specified corner も asser…