<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/method.h, branch ruby_1_9_2</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>* vm_method.c (rb_unlink_method_entry, rb_sweep_method_entry):</title>
<updated>2010-05-05T17:51:21+00:00</updated>
<author>
<name>ko1</name>
<email>ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2010-05-05T17:51:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=833cade2dce8ee8a9dd2091fcc84880030a51d54'/>
<id>833cade2dce8ee8a9dd2091fcc84880030a51d54</id>
<content type='text'>
  added.  Unlinked method entries are collected to
  vm-&gt;unlinked_method_entry_list.  On the GC timing, mark all method
  entries which are on all living threads.  Only non-marked method
  entries are collected.  This hack prevents releasing living method
  entry.
  [Performance Consideration] Since this Method Entry GC (MEGC)
  doesn't occuer frequently, MEGC will not be a performance bottleneck.
  However, to traverse living method entries, every control frame push
  needs to clear cfp-&gt;me field.  This will be a performance issue
  (because pushing control frame is occurred frequently).
  Bug #2777 [ruby-dev:40457]
* cont.c (fiber_init): init cfp-&gt;me.
* gc.c (garbage_collect): kick rb_sweep_method_entry().
* method.h (rb_method_entry_t): add a mark field.
* vm.c (invoke_block_from_c): set passed me.
* vm.c (rb_thread_mark): mark cfp-&gt;me.
* vm_core.h (rb_thread_t): add a field passed_me.
* vm_core.h (rb_vm_t): add a field unlinked_method_entry_list.
* vm_insnhelper.c (vm_push_frame): clear cfp-&gt;me at all times.
* vm_insnhelper.c (vm_call_bmethod): pass me.
* bootstraptest/test_method.rb: add a test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  added.  Unlinked method entries are collected to
  vm-&gt;unlinked_method_entry_list.  On the GC timing, mark all method
  entries which are on all living threads.  Only non-marked method
  entries are collected.  This hack prevents releasing living method
  entry.
  [Performance Consideration] Since this Method Entry GC (MEGC)
  doesn't occuer frequently, MEGC will not be a performance bottleneck.
  However, to traverse living method entries, every control frame push
  needs to clear cfp-&gt;me field.  This will be a performance issue
  (because pushing control frame is occurred frequently).
  Bug #2777 [ruby-dev:40457]
* cont.c (fiber_init): init cfp-&gt;me.
* gc.c (garbage_collect): kick rb_sweep_method_entry().
* method.h (rb_method_entry_t): add a mark field.
* vm.c (invoke_block_from_c): set passed me.
* vm.c (rb_thread_mark): mark cfp-&gt;me.
* vm_core.h (rb_thread_t): add a field passed_me.
* vm_core.h (rb_vm_t): add a field unlinked_method_entry_list.
* vm_insnhelper.c (vm_push_frame): clear cfp-&gt;me at all times.
* vm_insnhelper.c (vm_call_bmethod): pass me.
* bootstraptest/test_method.rb: add a test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* gc.c (rb_mark_method_entry): renamed.</title>
<updated>2010-05-04T22:27:18+00:00</updated>
<author>
<name>nobu</name>
<email>nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2010-05-04T22:27:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=62d7a30a769e0fb90233a9b1d6ff18cc1409ead0'/>
<id>62d7a30a769e0fb90233a9b1d6ff18cc1409ead0</id>
<content type='text'>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* method.h (rb_gc_mark_method_entry): fixed typo.</title>
<updated>2010-05-04T22:24:00+00:00</updated>
<author>
<name>nobu</name>
<email>nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2010-05-04T22:24:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=208e43b3feeece3b363af1f7426ec7df4a788e73'/>
<id>208e43b3feeece3b363af1f7426ec7df4a788e73</id>
<content type='text'>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* method.h, vm_method.c: rename some internal functions related to</title>
<updated>2010-05-04T20:25:09+00:00</updated>
<author>
<name>ko1</name>
<email>ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2010-05-04T20:25:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b4d7d616d9ad8d94df0563f06318c7b9a6a80269'/>
<id>b4d7d616d9ad8d94df0563f06318c7b9a6a80269</id>
<content type='text'>
  rb_method_entry_t.
  rb_add_method_me()        -&gt; rb_method_entry_set().
  rb_get_method_entry()     -&gt; rb_method_entry_without_cache().
  rb_gc_mark_method_entry() -&gt; rb_mark_method_entry().
* class.c, proc.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  rb_method_entry_t.
  rb_add_method_me()        -&gt; rb_method_entry_set().
  rb_get_method_entry()     -&gt; rb_method_entry_without_cache().
  rb_gc_mark_method_entry() -&gt; rb_mark_method_entry().
* class.c, proc.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* proc.c (rb_method_location): return attr's location if it is setup.</title>
<updated>2010-03-22T11:44:01+00:00</updated>
<author>
<name>wanabe</name>
<email>wanabe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2010-03-22T11:44:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c46f71399ae54967e7247ac4df0c26adeddbffd6'/>
<id>c46f71399ae54967e7247ac4df0c26adeddbffd6</id>
<content type='text'>
  [Feature #2084]

* NEWS: follow above.

* vm_method.c (rb_add_method): save attr's location.

* gc.c (mark_method_entry): mark attr's location.

* method.h (rb_method_definition_t): add member to save attr's location.

* vm_eval.c (vm_call0): follow above.

* vm_insnhelper.c (vm_call_method): ditto.

* vm_method.c (rb_method_definition_eq): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  [Feature #2084]

* NEWS: follow above.

* vm_method.c (rb_add_method): save attr's location.

* gc.c (mark_method_entry): mark attr's location.

* method.h (rb_method_definition_t): add member to save attr's location.

* vm_eval.c (vm_call0): follow above.

* vm_insnhelper.c (vm_call_method): ditto.

* vm_method.c (rb_method_definition_eq): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* vm_method.c (basic_obj_respond_to): should not call</title>
<updated>2009-10-04T17:05:59+00:00</updated>
<author>
<name>matz</name>
<email>matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2009-10-04T17:05:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e3fc29a71baf7282f6cb9c197ea4beb4e91ad670'/>
<id>e3fc29a71baf7282f6cb9c197ea4beb4e91ad670</id>
<content type='text'>
  #respond_to_missing? for not implemented methods.
  [ruby-core:25909]

* vm_method.c (rb_method_boundp): returns exceptional value 2 for
  not-implemented methods when called from #respond_to? (specifies
  by new contant NOEX_RESPONDS).

* method.h (enum): new constant NOEX_RESPONDS added.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  #respond_to_missing? for not implemented methods.
  [ruby-core:25909]

* vm_method.c (rb_method_boundp): returns exceptional value 2 for
  not-implemented methods when called from #respond_to? (specifies
  by new contant NOEX_RESPONDS).

* method.h (enum): new constant NOEX_RESPONDS added.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* method.h (rb_method_type_t): remove a comma at end of</title>
<updated>2009-10-02T15:45:09+00:00</updated>
<author>
<name>naruse</name>
<email>naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2009-10-02T15:45:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7054856938ad771b32e612f480e4767977dcab3f'/>
<id>7054856938ad771b32e612f480e4767977dcab3f</id>
<content type='text'>
  enumerator list.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  enumerator list.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e</title>
<updated>2009-09-28T03:09:16+00:00</updated>
<author>
<name>matz</name>
<email>matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2009-09-28T03:09:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=102918a3ee06b30023e1b7c7fe1103179049c1d9'/>
<id>102918a3ee06b30023e1b7c7fe1103179049c1d9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* vm_eval.c (rb_call0): gets rid of checking method cache twice.</title>
<updated>2009-08-29T11:42:53+00:00</updated>
<author>
<name>yugui</name>
<email>yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2009-08-29T11:42:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3c65e0262b6b14b0a6dc901128df4c45bd547c2f'/>
<id>3c65e0262b6b14b0a6dc901128df4c45bd547c2f</id>
<content type='text'>
* method.h (rb_get_method_entry): added a prototype of the function.
  (rb_method_entry_without_cache): more friendly name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* method.h (rb_get_method_entry): added a prototype of the function.
  (rb_method_entry_without_cache): more friendly name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
<entry>
<title>* method.h (rb_method_definition_t): split from rb_method_entry_t</title>
<updated>2009-08-28T02:45:41+00:00</updated>
<author>
<name>nobu</name>
<email>nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e</email>
</author>
<published>2009-08-28T02:45:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fcf88c1b8df49ba0c4db026f2b17066ea66d3de2'/>
<id>fcf88c1b8df49ba0c4db026f2b17066ea66d3de2</id>
<content type='text'>
  to deal aliases.  [ruby-dev:39165]

* proc.c (struct METHOD): contains rb_method_entry_t copy.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  to deal aliases.  [ruby-dev:39165]

* proc.c (struct METHOD): contains rb_method_entry_t copy.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
</pre>
</div>
</content>
</entry>
</feed>
