2006-07-30から1日間の記事一覧

Concurrent Clean : CleanJ : Generics -> eqD_b

この勢いで、Genericsライブラリまでportingできるかと思って試してみた。 GenParseとGenPrintは、ファイル操作系がまだできていないので変換できないが、それ以外はエラーなく変換ができた。 で、Genericsライブラリにあるgentestを実行してみたら・・・、…

Concurrent Clean : CleanJ : push_r_args_a, push_r_args_b, repl_r_args_a, repl_r_args_b

これらの命令は、レコード型から指定したフィールドだけを取り出す命令なのだけれど、 void code_push_r_args_a (int a_offset,int a_size,int b_size,int argument_number,int n_arguments)とあるうちの、argument_numberが当初、aとbの両方をあわせたイン…

Concurrent Clean : CleanJ : Generics

GenCompressとGenFMap以外はクリア。 GenCompressは、謎のエラーで落ちる。 GenFMapは、一つ結果が合わないものがある。 とりあえず、GenFMapからつぶしていこう。 --> select命令の修正 - GenCompressは・・・ StackOverflowErrorでした。あー。末尾再帰の…

Concurrent Clean : CleanJ : List Comprehension -> select命令

の動作がおかしくなっていることに気づいた。 Start = (fc "abc", fi {1,2,3}, gc ['abc'], gi [1,2,3]) fc :: {#Char} -> [Char] fc t = [x\\x<-:t] fi :: {#Int} -> [Int] fi t = [x\\x<-:t] gc :: [Char] -> {#Char} gc t = {x\\x<-t} gi :: [Int] -> {#I…

Concurrent Clean : CleanJ : Java : 末尾再帰とスタックサイズ

GenCompressで、StackOverflowになるということで、末尾再帰にできるところを探して、できる限り末尾再帰になるように修正しました。 しかし、やはりStackOverflow。 Javaのオプションで、-Xssを指定することで、スタックサイズを変更できるということで、40…

Concurrent Clean : CleanJ : GenCompress

GenCompressは、もともとメモリを消費しがちなモジュールだったようです。 Start = test [1 .. 100] where test x = case uncompress (compress x) of Nothing -> False Just y -> x === yというテストがcleanjでStackOverflowになっていたのですが、「test …

Concurrent Clean : CleanJ : Generics移植完了

というわけで、File関連のGenParseとGenPrintを除いて、Genericsライブラリの移植を完了しました。 - テストも全部回しました。テスト中、一箇所、修正漏れを見つけたので、修正しました。

Concurrent Clean : CleanJ : メモリ効率

それにしても、cleanjは、だいぶメモリ効率が悪いようです。 これは、まだABCマシン命令の調査が主眼なので、ほとんど効率改善を行っていないということもあるのですが・・・ どこまでが、JavaVMの問題で、どこまでがcleanjの実装効率の問題なのか。どういう…