[#38782] [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

15 messages 2009/07/14
[#38784] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — Hidetoshi NAGAI <nagai@...> 2009/07/14

永井@知能.九工大です.

[#38790] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — "U.Nakamura" <usa@...> 2009/07/15

こんにちは、なかむら(う)です。

[#38791] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — Hidetoshi NAGAI <nagai@...> 2009/07/15

永井@知能.九工大です.

[#38792] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — "U.Nakamura" <usa@...> 2009/07/15

こんにちは、なかむら(う)です。

[#38793] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — Hidetoshi NAGAI <nagai@...> 2009/07/15

永井@知能.九工大です.

[#38794] Re: [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — "U.Nakamura" <usa@...> 2009/07/15

こんにちは、なかむら(う)です。

[#38843] 複素数リテラルについて — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

32 messages 2009/07/21
[#38855] Re: 複素数リテラルについて — Yusuke ENDOH <mame@...> 2009/07/22

遠藤です。

[#38857] Re: 複素数リテラルについて — Tadayoshi Funaba <tadf@...> 2009/07/22

> は十分検討されたのでしょうか。積極的に反対なわけではないですが、

[#38912] String#valid_encoding?にオプションが欲しい — Fujioka <fuj@...>

xibbarこと藤岡です。(なぜか届かないので再送します)

19 messages 2009/07/27
[#38918] Re: String#valid_encoding?にオプションが欲しい — "NARUSE, Yui" <naruse@...> 2009/07/27

成瀬です。

[#38925] Re: String#valid_encoding?にオプションが欲しい — Fujioka <fuj@...> 2009/07/27

xibbarです。

[#38927] Re: String#valid_encoding?にオプションが欲しい — Fujioka <fuj@...> 2009/07/28

xibbarです。

[#38914] [Bug #1819] Ruby-1.9.1を使用しDB(MySQL)接続時にエラー — Ryouhei Saita 斉田 <redmine@...>

Bug #1819: Ruby-1.9.1を使用しDB(MySQL)接続時にエラー

11 messages 2009/07/27

[#38932] Enumerator#peek — Tanaka Akira <akr@...>

Enumerator#peek を新設するのはどうでしょうか。

16 messages 2009/07/28

[ruby-dev:38940] Re: thread switch hook for RubyCocoa

From: kimura wataru <kimuraw@...>
Date: 2009-07-29 13:26:39 UTC
List: ruby-dev #38940
木村(わ)です。

RubyCocoaのほうのパッチですが、#ifと#endifの数が一致しません。
私のかんちがいなのかもしれませんが、確認していただけないでしょうか?

On Tue, 28 Jul 2009 07:36:21 +0900, Nobuyoshi Nakada wrote:
> なかだです。
> 
> Mac OS X用のruby 1.8には、RubyCocoa向けにApple独自のthread_hook
> パッチというものが入っています。これは1.8標準のEVENT_HOOKと事実
> 上同じ機能であり、フックのタイミングを追加するだけです。
> RubyKaigiのときにちょっとknuさんや、高尾さん、MacPortsメンテナの
> 木村わさんとも話したんですが、標準に追加してはどうでしょうか。
> 

> --- framework/src/objc/RBRuntime.m.orig	2009-02-18 06:46:15.000000000 +0900
> +++ framework/src/objc/RBRuntime.m	2009-07-28 07:27:20.000000000 +0900
> @@ -487,29 +487,13 @@
>  static int rb_cocoa_thread_debug = 1;
>  
> -#ifndef RUBY_THREADSWITCH_INIT
> -/* The declarations immediately below come from the patched ruby.h.
> -   Since they are not available here (determined by the lack of 
> definition for 
> -   RUBY_THREADSWITCH_INIT) we define them manually, so that a patched 
> -   libruby.dylib can still be used at runtime.
> -*/
> -
> -typedef unsigned int rb_threadswitch_event_t;
> -
> -#define RUBY_THREADSWITCH_INIT 0x01
> -#define RUBY_THREADSWITCH_FREE 0x02
> -#define RUBY_THREADSWITCH_SAVE 0x04
> -#define RUBY_THREADSWITCH_RESTORE 0x08
> -
> -typedef void (*rb_threadswitch_hook_func_t) 
> _((rb_threadswitch_event_t,VALUE));
> +#ifdef RUBY_EVENT_THREAD_ALL
> +#define RUBY_EVENT_THREAD_INIT    0x0100
> +#define RUBY_EVENT_THREAD_FREE    0x0200
> +#define RUBY_EVENT_THREAD_SAVE    0x0400
> +#define RUBY_EVENT_THREAD_RESTORE 0x0800
> +#define RUBY_EVENT_THREAD_ALL     0x0f00
>  #endif
>  
> -/* The following two functions are marked as weak imports so that 
> RubyCocoa 
> -   will still load without thread switching hooks support in the ruby 
> -   interpreter.
> -*/
> -extern void *rb_add_threadswitch_hook(rb_threadswitch_hook_func_t func) 
> -  __attribute__ ((weak_import));
> -extern void rb_remove_threadswitch_hook(void *handle) 
> -  __attribute__ ((weak_import));
> +extern rb_event_t rb_event_all __attribute__ ((weak_import));
>  
>  /* Cached values for direct call to +[NSThread currentThread] (not 
> clear if 
> @@ -850,8 +834,8 @@
>    This function is registered with the ruby core as a threadswitch 
> event hook.
>  */
> -static void rb_cocoa_thread_schedule_hook(rb_threadswitch_event_t event, 
> -  VALUE thread)
> +static void rb_cocoa_thread_schedule_hook(rb_event_t event, NODE 
> *node, VALUE thread,
> +  ID methodid, VALUE klass)
>  {
> -  void *context;
> +  st_data_t context, key = (st_data_t)thread;
>    NSThread *nsthread;
>  
> @@ -864,17 +848,16 @@
>    }
>    switch (event) {
> -    case RUBY_THREADSWITCH_INIT:
> -      context = rb_cocoa_thread_init_context(nsthread, 
> +    case RUBY_EVENT_THREAD_INIT:
> +      context = (st_data_t)rb_cocoa_thread_init_context(nsthread, 
>          rb_cocoa_did_install_thread_hooks || thread == rb_thread_main() 
>            ? thread : Qnil);
> -      DLOG("Created context %p for thread %p\n", context, (void*)thread);
> -      st_insert(rb_cocoa_thread_state, (st_data_t)thread, 
> (st_data_t)context);
> +      DLOG("Created context %p for thread %p\n", (void*)context, 
> (void*)thread);
> +      st_insert(rb_cocoa_thread_state, key, context);
>        break;
>              
> -    case RUBY_THREADSWITCH_FREE:
> -      if (st_delete(rb_cocoa_thread_state, (st_data_t*)&thread, 
> -        (st_data_t *)&context)) {
> +    case RUBY_EVENT_THREAD_FREE:
> +      if (st_delete(rb_cocoa_thread_state, &key, &context)) {
>  
> -        DLOG("Freeing context %p for thread %p\n", context, (void*)thread);
> +        DLOG("Freeing context %p for thread %p\n", (void*)context, 
> (void*)thread);
>          rb_cocoa_thread_free_context(nsthread,thread, 
>            (struct rb_cocoa_thread_context*) context);
> @@ -882,23 +865,21 @@
>        break;
>  
> -    case RUBY_THREADSWITCH_SAVE:
> -      if (!st_lookup(rb_cocoa_thread_state, (st_data_t)thread, 
> -        (st_data_t *)&context)) {
> +    case RUBY_EVENT_THREAD_SAVE:
> +      if (!st_lookup(rb_cocoa_thread_state, key, &context)) {
>  
> -        DLOG("Created context before save %p for thread %p\n", context, 
> +        DLOG("Created context before save %p for thread %p\n", 
> (void*)context, 
>            (void*)thread);
>          context = rb_cocoa_thread_init_context(nsthread, thread);
> -        st_insert(rb_cocoa_thread_state, (st_data_t)thread, 
> (st_data_t)context);
> +        st_insert(rb_cocoa_thread_state, key, context);
>        }
> -      DLOG("Saving context %p for thread %p\n", context, (void*)thread);
> +      DLOG("Saving context %p for thread %p\n", (void*)context, 
> (void*)thread);
>        rb_cocoa_thread_save_context(nsthread,
>          (struct rb_cocoa_thread_context*) context);
>        break;
>              
> -    case RUBY_THREADSWITCH_RESTORE:
> -      if (st_lookup(rb_cocoa_thread_state, (st_data_t)thread, 
> -        (st_data_t *)&context)) {
> +    case RUBY_EVENT_THREAD_RESTORE:
> +      if (st_lookup(rb_cocoa_thread_state, key, &context)) {
>          
> -        DLOG("Restoring context %p for thread %p\n", context, 
> (void*)thread);
> +        DLOG("Restoring context %p for thread %p\n", (void*)context, 
> (void*)thread);
>          rb_cocoa_thread_restore_context(nsthread,
>            (struct rb_cocoa_thread_context*) context);
> @@ -919,23 +900,11 @@
>    rb_cocoa_thread_debug = getenv("RUBYCOCOA_THREAD_DEBUG") != NULL;
>    
> -  if (rb_add_threadswitch_hook == NULL) {
> +  if (&rb_event_all == NULL || !(rb_event_all & RUBY_EVENT_THREAD_ALL)) {
>      if (rb_cocoa_thread_debug) {
> -      NSLog(@"RBCocoaInstallRubyThreadSchedulerHooks: warning: 
> rb_set_cocoa_thread_hooks not present in ruby core");
> +      NSLog(@"RBCocoaInstallRubyThreadSchedulerHooks: warning: 
> RUBY_EVENT_THREAD_ALL not present in ruby core");
>      }
>      return;
>    }
>    
> -  NSSymbol threadswitch_symbol = 
> -    NSLookupAndBindSymbol("_rb_add_threadswitch_hook");
> -  NSSymbol ruby_init_symbol = 
> -    NSLookupAndBindSymbol("_ruby_init");
> -  
> -  if (NSModuleForSymbol(threadswitch_symbol) 
> -      != NSModuleForSymbol(ruby_init_symbol)) {
> -    NSLog(@"RBCocoaInstallRubyThreadSchedulerHooks: warning: 
> rb_set_cocoa_thread_hooks is linked from a different library (%s) 
> than ruby_init (%s)",
> -      NSNameOfModule(NSModuleForSymbol(threadswitch_symbol)), 
> NSNameOfModule(NSModuleForSymbol(ruby_init_symbol)));
> -    return;
> -  }
> -
>    rb_cocoa_thread_state = st_init_numtable();  
>    rb_cocoa_main_nsthread = [NSThread currentThread];
> @@ -978,9 +947,10 @@
>  
>    /* Finally, register the hook with the ruby core */
> -  rb_add_threadswitch_hook(rb_cocoa_thread_schedule_hook);
> +  rb_add_event_hook(rb_cocoa_thread_schedule_hook, RUBY_EVENT_THREAD_ALL);
>    rb_cocoa_did_install_thread_hooks = YES;
>  
>    DLOG("Thread hooks done, main Ruby thread is %p\n", 
>      (void *)rb_thread_current());
> +#endif
>  }
>  
> 
> 
> -- 
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
>     中田 伸悦
> 

In This Thread