YamaKen
yamak****@bp*****
2006年 4月 20日 (木) 19:10:23 JST
At Wed, 19 Apr 2006 18:36:14 -0700, jun.l****@gmail***** wrote: > > YamaKen <yamak****@bp*****> writes: > > SCM_ENTYPE()はfatty固有のマクロですが、公開APIに見えてもおかしく > > ありません。やはり機械的に判別できる必要があると思います。 > > ではやはり ENTYPE は SAL_ から降格ということで。 > ;; これが SAL_ になってたのは仕様だと思ってました。 いやここで言ってるのはfattyだけで定義されてるSCM_ENTYPE()であっ て、SALになってるSCM_ENTYPE_*()の事じゃないっす。せめてこれだけ でもと思ってSALから消した気が。 SCM_ENTYPE_*()の方はcompactで不要になり次第SALから消しましょう。 > ;; ていうか VALUECONS 周りで使われてるんですが。 大丈夫、把握してます。valueconsはfatty専用なんでSCM_ENTYPE(o, ScmValuePacket)に置き換えれば大丈夫のはずっす。 > >> > 私からの希望としては、[Anthy-dev 2532]とstorage-compact.hの > >> > SCM_INT_MSB付近のコメントに書いたように、元の実装ではstringや > >> > vectorのlengthがintegerより無駄に広かったり符号ビットが未使用だっ > >> > たりすところを最適化して欲しいです。 > 1 bit か…難しいな。STRING と VECTOR の L1 tag を同一にしてそれの一つ > 上の bit で識別するようにする…とか? Level の概念で対応しきれなくなり > ますが (元々あんまり長続きするとは思ってないけど)。そうやって 3-bit > tag を一つ空けると far symbol の tag を 3 bit にして、*un*hygienic > macro 有効時に任意の env を保存する cost が安くなるので、ほんのちょっ > とだけウマー…とか…。意味薄そうな気も。 考えてたのはこう↓ですが、tag幅が減ってもあんまり嬉しくないオブ ジェクトが多いですね。むしろstringとvectorの判別が複雑になるだけ 損か。imm5とかimm7を持つアーキテクチャならいい事あるかもしれない ですが、マイナーなんで無視して構わないでしょう。どうするかはおま かせします。 .......|00|1 : Symbol : symbol name ....|00|01|1 : String : string length ....|10|01|1 : String (const) : string length ....|01|01|1 : Vector : vector length ....|11|01|1 : Vector (const) : vector length ....|00|10|1 : Values : all 0 (for efficiency) ....|01|10|1 : Func : ScmFuncTypeCode and LSB of stored Func address ....|10|10|1 : Port : ScmPortDirection ....|11|10|1 : Continuation : tag ....|00|11|1 : Pointer : pointer type id ..00|00|11|1 : - C Ptr : ..01|00|11|1 : - C FuncPtr : ..10|00|11|1 : - Reserved : ..11|00|11|1 : - Reserved : ....|01|11|1 : Wrapper : depends on type ..00|01|11|1 : subpat : metainformation about the wrapped object ..01|01|11|1 : far symbol : [#if !SCM_USE_UNHYGIENIC_MACRO] env depth ..10|01|11|1 : macro : [#if !SCM_USE_UNHYGIENIC_MACRO] env depth ..11|01|11|1 : Reserved : ....|10|11|1 : Reserved6 : ....|11|11|1 : FreeCell : all 0 (for efficiency) ------------------------------- ヤマケン yamak****@bp*****