トップ «前の日記(2010-06-25) 最新 次の日記(2010-06-27)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2010-06-26

_ HAVE_NATIVETHREAD

1.8.7-p299にしたらvrswinのmakeが失敗した。

1.9対応の定義が有効になって1.8では未定義の定数(RUBY_UBF_IO 多分、unblock functionの頭語で、グローバルロックを解除可能な待ち状態に入る場合に指定する)を参照したからだ。

とりあえずその定数を&& !defindしてしのいだ。

が、HAVE_NATIVETHREADでは1.8と1.9が区別できないので、RUBY_UBF_IOを見たほうが意図的にも良さそうに思う。

diff -u -p swin.c~ swin.c
*** swin.c~	Sat Feb 07 23:52:50 2009
--- swin.c	Sat Jun 26 22:35:02 2010
*************** swin_call_threadblocking(DWORD chk_th, i
*** 1000,1006 ****
      }
      va_end(args);
  
! #ifdef HAVE_NATIVETHREAD
      if(chk_th!=GetCurrentThreadId()){  // another thread from current
          r = (DWORD)rb_thread_blocking_region((VALUE(*)())Swin_WinAPI_Call,
                          &calldata,RUBY_UBF_IO,0);
--- 1000,1006 ----
      }
      va_end(args);
  
! #if defined(RUBY_UBF_IO)
      if(chk_th!=GetCurrentThreadId()){  // another thread from current
          r = (DWORD)rb_thread_blocking_region((VALUE(*)())Swin_WinAPI_Call,
                          &calldata,RUBY_UBF_IO,0);

追記:今まで気づかなかったのはASRに含めていたSwinが1.9対応前のバージョンだったからでした。

追記2:Ruby-1.8のHAVE_NATIVETHREADの役割は、GCやシグナル、tkutilなどで、クロススレッド呼び出しの判定をする必要性からのようで、Ruby-1.9のように積極的なジャイアントロック外しのためではありません。

_ ASR-1.8.7.299

Ruby-1.8.7-p299を元にActiveRuby 1.8.7.299をリリースします

関係諸氏に感謝します。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|

ジェズイットを見習え