[#43610] Re: [ruby-list:48149] Re: requireが配列を取れたら便利だと思うんだけど.. — Hiroshi Nakamura <nakahiro@...>

cnVieS1saXN0GyRCJCskaTt9JEMkRk1oJF4kNyQ/ISMkRyRiQjMkKyRKJD0kJiEjGyhCCgoyMDEx

12 messages 2011/06/02

[#43643] DateTime.new! and DateTime.jd — Aaron Patterson <aaron.patterson@...>

こんにちは、アーロンです。

25 messages 2011/06/07
[#43647] Re: DateTime.new! and DateTime.jd — Tadayoshi Funaba <tadf@...> 2011/06/07

blocker はお前だろ。

[#43648] Re: DateTime.new! and DateTime.jd — Yukihiro Matsumoto <matz@...> 2011/06/07

まつもと ゆきひろです

[#43651] Re: DateTime.new! and DateTime.jd — Tadayoshi Funaba <tadf@...> 2011/06/07

> うーん、ただでさえ日英のコミュニケーション障壁があるのに、よ

[#43653] Re: DateTime.new! and DateTime.jd — Aaron Patterson <aaron.patterson@...> 2011/06/07

2011/6/7 Tadayoshi Funaba <[email protected]>:

[#43657] Re: DateTime.new! and DateTime.jd — Tadayoshi Funaba <tadf@...> 2011/06/07

皆さんってのに俺は入ってないみたいだな。

[#43661] Re: DateTime.new! and DateTime.jd — Yukihiro Matsumoto <matz@...> 2011/06/07

まつもと ゆきひろです

[#43662] Re: DateTime.new! and DateTime.jd — Tadayoshi Funaba <tadf@...> 2011/06/07

> Aaronが言ってる「リリース」は1.9.3のことだと思いますよ。

[#43645] Re: [ruby-core:36778] Re: 1.8.7 release next month — Urabe Shyouhei <shyouhei@...>

Moving to ruby-dev to understand strategies of backporting the Tk

13 messages 2011/06/07

[#43787] [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Kenta Murata <muraken@...>

24 messages 2011/06/13
[#43788] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Yukihiro Matsumoto <matz@...> 2011/06/13

まつもと ゆきひろです

[#43789] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/13

もう結論が出てしまったようですが、これは、元々 lib/complex.rb にあった

[#43794] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Kenta Murata <muraken@...> 2011/06/13

=E3=82=80=E3=82=89=E3=81=9F=E3=81=A7=E3=81=99=E3=80=82

[#43795] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/13

> complex.rb をロードすると Math が CMath 相当に置き換わりますから、

[#43797] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Kenta Murata <muraken@...> 2011/06/14

=E3=82=80=E3=82=89=E3=81=9F=E3=81=A7=E3=81=99=E3=80=82

[#43799] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Yukihiro Matsumoto <matz@...> 2011/06/14

まつもと ゆきひろです

[#43800] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Kenta Murata <muraken@...> 2011/06/14

=E3=82=80=E3=82=89=E3=81=9F=E3=81=A7=E3=81=99=E3=80=82

[#43803] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/14

> これに相当する事をやっているのが complex.rb なので、

[#43806] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Yusuke ENDOH <mame@...> 2011/06/14

遠藤です。

[#43807] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/14

> 定義域を増やすだけにしよう、ということですよね。賛成です。

[#43809] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Yusuke ENDOH <mame@...> 2011/06/14

2011年6月14日22:17 Tadayoshi Funaba <[email protected]>:

[#43810] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/14

> 互換性がないという点では同じ話だと思うのですが……。

[#43811] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Yusuke ENDOH <mame@...> 2011/06/14

2011年6月14日23:02 Tadayoshi Funaba <[email protected]>:

[#43812] Re: [Ruby 1.9 - Feature #4878][Open] CMath に frexp, ldexp, hypot の3関数は不要ではないか — Tadayoshi Funaba <tadf@...> 2011/06/14

> いやあ、5 月末の feature freeze 時点では -2 を返していたはずなんですが、

[#43852] [Ruby 1.9 - Bug #4909][Open] trapハンドラは再入されてはいけないのではないか? — Motohiro KOSAKI <kosaki.motohiro@...>

11 messages 2011/06/20

[ruby-dev:43910] [Ruby 1.9 - Bug #4926] --gc-stress付きtest/ruby/enc/test_emoji.rbが失敗する

From: Kazuki Tsujimoto <kazuki@...>
Date: 2011-06-26 07:19:13 UTC
List: ruby-dev #43910
Issue #4926 has been updated by Kazuki Tsujimoto.


=begin
辻本です。

すみません、vm_clear_all_inline_method_cacheの動きについては勘違いしていました。

ちなみに、ポストしたパッチはキャッシュヒット率を向上させる面もあるので
別途取り込みを検討していただければと思います。

現在の実装では、以下のコードでのm呼び出しによる@ivへのアクセスはいずれもキャッシュミスしますが、
パッチを当てると初回のo0.m以外はキャッシュヒットするようになります。

 class C
   def initialize
     @iv = 0
   end
   def m
     @iv
   end
 end
 
 o0 = C.new
 o1 = C.new; class <<o1; end
 o2 = C.new; class <<o2; end

 100000000.times {
   o0.m
   o1.m
   o2.m
 }

手元の環境ではパッチ適用前後の所要時間は以下の通りでした。

 # パッチ適用前
 $ time ./ruby bench.rb
 ./ruby bench.rb  63.15s user 0.03s system 72% cpu 1:27.33 total
 
 # パッチ適用後
 $ time ./ruby bench.rb
 ./ruby bench.rb  58.29s user 0.03s system 71% cpu 1:21.22 total
=end

----------------------------------------
Bug #4926: --gc-stress付きtest/ruby/enc/test_emoji.rbが失敗する
http://redmine.ruby-lang.org/issues/4926

Author: Kazuki Tsujimoto
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 
ruby -v: -


=begin
辻本です。

--gc-stressオプションをつけてtest/ruby/enc/test_emoji.rbを実行するとテストに失敗します。

 $ make RUBYOPT=-W TESTS='ruby/enc/test_emoji.rb --gc-stress' test-all
 /home/k_tsj/work/ruby-trunk/test/ruby/enc/test_emoji.rb:154: warning: instance variable @aiueo_sjis not initialized
   1) Failure:
 test_from_iso2022jp(Emoji::TestKDDI) [/home/k_tsj/work/ruby-trunk/test/ruby/enc/test_emoji.rb:154]:
 Exception raised:
 <#<NoMethodError: undefined method `force_encoding' for nil:NilClass>>.
 (全ログは長いので添付します。)

この時の流れは以下の通りです。

(1) vm_setivarにてic->ic_classにRBASIC(obj)->klass(Emoji::TestDoCoMoオブジェクトの特異クラス)が代入される。
(2) 1.の特異クラスがGCで解放される。
(3) Emoji::TestKDDIオブジェクトの特異クラスが1.の特異クラスと同じアドレスで作成される。
(4) icのindexとklassのindexが不一致を起こしてインスタンス変数の参照に失敗する。

ivar_get/rb_ivar_setではRBASIC(obj)->klassではなくrb_obj_class(obj)を使ってIV_INDEX_TBLを扱っており、
そちらに揃えれば問題は起きなくなります。以下のパッチでどうでしょうか。

 diff --git a/vm_insnhelper.c b/vm_insnhelper.c
 index 366ac4a..3736055 100644
 --- a/vm_insnhelper.c
 +++ b/vm_insnhelper.c
 @@ -1259,7 +1259,7 @@ vm_getivar(VALUE obj, ID id, IC ic)
  #if USE_IC_FOR_IVAR
      if (TYPE(obj) ==  T_OBJECT) {
  	VALUE val = Qundef;
 -	VALUE klass = RBASIC(obj)->klass;
 +	VALUE klass = rb_obj_class(obj);
  
  	if (ic->ic_class == klass) {
  	    long index = ic->ic_value.index;
 @@ -1311,7 +1311,7 @@ vm_setivar(VALUE obj, ID id, VALUE val, IC ic)
      rb_check_frozen(obj);
  
      if (TYPE(obj) == T_OBJECT) {
 -	VALUE klass = RBASIC(obj)->klass;
 +	VALUE klass = rb_obj_class(obj);
  	st_data_t index;
  
  	if (ic->ic_class == klass) {
=end


-- 
http://redmine.ruby-lang.org

In This Thread