cdecl_thunk on x64

__cdecl呼び出し規約用メソッドサンクcdecl_thunkをx64に対応させました。 <hamigaki/detail/x64/cdecl_thunk.hpp> x64呼び出し規約に関してはMSDNに記載されています。 http://msdn.microsoft.com/ja-jp/library/7kcdt6fy(VS.80).aspx 概要だけ書くと、 引数は可能な限りレジスタ渡し、乗らない場</hamigaki/detail/x64/cdecl_thunk.hpp>…

Hamigaki.Coroutine on x64

手始めにHamigaki.Coroutineをx64に移植しました。 差分 Win32ではファイバーデータのポインタがfs:[0x10]に入っていましたが、Win64ではgs:[0x20]になるようです。 また、ファイバーでないスレッド用のダミーポインタ値は0x00001E00のままで動いているので…

make_project

trunkのBBv2でHamigakiライブラリをビルドできなくなっていたので、jamファイルを修正しました。 差分 project.initializeが__binding__変数を要求するようになったようです。

BBv2 on x64

とりあえずBoostのビルドが出来る環境だけ整えました。 Boostの退行テストを見る限り、 VC++は「address-model=64」でx64用ビルドができるようです。 ちなみにbjam自体の64ビット版は64ビットコンパイラにパスを通した状態でbjamをビルドすれば出来ます。

VAIO買いました

急に一週間ほど休みが入って暇だったので新しいマシンを買ってみました。 条件は 休み中に使いたい→持ち帰り可能なノート 64ビット Windows 7 (プリインストール or 選択可能) オンボードでないグラフィックボード Blu-rayドライブ Intel VT対応 SSD あたり…

1.39.0対応

Boost 1.39.0が出てたのでSVN trunkで再テストしました。 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/hamigaki/trunk/status/cs-win32.html?revision=1748&root=hamigaki 修正なしで全てpassしました。

stop()後のノイズ削除

direct_sound_sinkでstop()した後ノイズが再生されるとのバグ報告を受け、close()を修正しました。 差分 ↓バグはこういう状況でした。 // 現在のバッファが書き込み中だったら if (offset_ % buffer_size_ != 0) { // 残りを0で埋める std::streamsize amt =…

DirectInput8対応

久々にDirectX SDKを更新したところ、dinput.libがなくなっていたのでDirectInput8に対応しました。 差分 CygwinとMinGWはlibdinput8.aだけあってヘッダがないので、SDL用の古いバージョンのままです。 Jamfileでは、gccだけDIRECTINPUT_VERSION=0x0500を定…

Boost 1.38 devel対応

ようやく遅い夏休みです。 昨日は一日中ぼーとしてましたが、今日は少しコーディングできました。 サボってる間にBoost 1.37も出てしまったので、SVN trunkの1.38系に対応しました。 差分 cs-win32.html というか、Boost.Date_Time内のインクルードが足りて…

tar_replace_test

フォーラムで質問があったtarファイルの部分書き換えのテストを追加しました。 libs/archivers/test/tar_replace_test.cpp lzh_replace_test.cppを書き換えただけなので、実質作業時間は2〜3分程度です。 なかなか作業時間がとれない、、、。

回線速度

USENのヤツで調べて52.263Mbps。これ、下りでしょうね。 実家より少し遅いけど、まぁこんなもんでしょう。

Compiler Status 更新

ネットが復活したところで、Win32だけRegression Testsを走らせてみました。 http://hamigaki.sourceforge.jp/status/ BoostのSVN trunkは既に1.37に移行していて、 一部コンパイルが通らなくなっていたのでついでに修正しました。 <boost/strong_typedef.hpp>を<boost/serialization/strong_typedef.hpp>に変更 gcc 3.4.5でL"\u</boost/serialization/strong_typedef.hpp></boost/strong_typedef.hpp>…

光開通

やっとつながったー! 時間がないので速度のチェックはまた後で。

Boost 1.36.0対応

光開通は来週末になりそうですが、 ここ1週間ほどはD4の通信が安定しているので、Boost 1.36.0対応差分をコミットしました。 差分 Boost.Filesystemで関数名が変更された箇所の対応が主なので、 http://svn.boost.org/trac/boost/wiki/ReleasePractices/Hot…

光開通延期

えー、今日回線引き込み工事があったんですが、繋がりませんでした。 途中のインフラの設定ミスっぽいです。 Bフレッツ申し込んだのにいつのまにかフレッツ光ネクストになってたり、 OCN側とNTT側の申し込みが重複していたりで、 嫌な予感はしていたんですが…

光もうすぐ開通

月末にマンションの工事が決まり、光開通予定になりました。 ネットから離れている間にBoost1.36がリリースされちゃってますし、 1.36対応辺りから開発再開しようかなと思っています。 BoostはMLも止めていたので、全く知らないうちのリリースでした。 現在…

マックでCygwinインストール

D4

えー、紛らわしいタイトルですが、ファーストフードの方のマックです。 PHSでの通信が遅すぎなので、近所のマックに行ってホットスポット借りてCygwinをインストールしてきました。 電池が1時間しか持たない上に、本体の無線LANオフになっていることに気付…

とりあえずネット復帰

光ファイバーがなかなか開通しないので、WILLCOM D4を買ってしまいました。 まぁ、これまでも近所のネットカフェからメールチェックとWebの巡回はしていたわけですが、、、。さすがに通信速度は遅く、WindowsUpdateで6時間ぐらいかかりました。 ちと作業は…

お休み

再び東京に戻ることになりました。 明日荷物を送ってしまうのでしばらく作業できません。 こっちにいる間はネットを使えますが、引越し先で使えるようになるまで少し時間がかかるので、しばらくネットなし生活になりそうです。 まぁ、携帯から更新できなくも…

optional_iteratorの除去

逆アセンブルリストを比較しているとインライン化の妨げになっているようだったので、optional_iteratorを使わないようにしました。 差分 COWベースのstring_list(注:名前はlistだけど実体はvector)で、リストが空でvectorが作成されていない状態のbegin()/e…

BOOST_SPIRIT_USE_LIST_FOR_TREES

マクロBOOST_SPIRIT_USE_LIST_FOR_TREESを定義した場合にコンパイルできない問題だけ修正しました。 差分 通常、Boost.Spiritの構文木は、 template<class T> struct tree_node { typedef std::vector<tree_node<T> > children_t; T value; children_t children; }; のような構造体</tree_node<t></class>…

続々 ドキュメントのビルド方法

FOPの説明を追加しました。 http://hamigaki.sourceforge.jp/doc/html/installation/documents.html ついでにindex.htmlにWeb上の「ドキュメントのビルド方法」へリンクを張っておきました。 これでビルド方法を調べるためにビルドしなければいけない問題も…

続 ドキュメントのビルド方法

ツールセットのオプションについての説明を追加しました。 http://hamigaki.sourceforge.jp/doc/html/installation/documents.html あとFOPの説明が抜けてます。

ドキュメントのビルド方法

ドキュメントのビルド方法について、必要最低限のことだけドキュメントに追加しました。 http://hamigaki.sourceforge.jp/doc/html/installation/documents.html あー、これを読むためにはドキュメントのビルドが必要でした、、、。 TODO: 設定の詳細追加 re…

パースエラー

今日は全然縮まなかったので、以前デバッグ中に見つけたクラッシュするパターンを調査しました。 原因はデバッガで覗くとすぐに判明。include文で読み込んだjamファイルのパースが成功したかどうかチェックしていないだけでした。 とりあえず適当な例外を投…

Re: bjam高速化 その5

string_listの要素アクセスで、 const std::string& string_list::operator[](size_type n) const { if (n < size()) return (*pimpl_)[n]; else return dummy; } みたいなことをしていると勘違いして、ループ内部でアクセスする場合にサイズチェックが無駄…

bjam高速化 その8

今日も測定に時間がかかってあまり進んでません。 ローカル変数は「値の設定時に古い値を取っておいて、後で元に戻す」ことで実装しているのですが、元に戻す際にmapを探索するのが無駄なのでポインタを覚えて置くようにしました。 差分 実行時間はこうなり…

bjam高速化 その7

TICKを仕込む範囲を狭めていって、コードを調べていたところ、変数の展開処理に明らかな無駄があったので修正しました。 差分 jam言語の変数展開では修飾子によって変数の値を加工できるため、変数展開の度に文字列リストを生成していたのですが、 X = $(HOG…

bjam高速化 その6

Hamigaki.Bjamでは組み込みルールを自分で追加できるので、これを使ってjamファイルの計測をしてみました。 namespace bjam = hamigaki::bjam2; bjam::string_list tick(bjam::context& ctx) { std::cout << ::GetTickCount() << std::endl; return bjam::st…

bjam高速化 その5

今日は単純なループの手抜きを直しました。 差分 for (std::size_t i = 0; i < vec.size(); ++i) ... を for (std::size_t i = 0, size = vec.size(); i < size; ++i) ... に変えただけです。 「STLアルゴリズムを使え!」という感じですが、途中で抜ける条…