<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ext/objspace/objspace.c, branch v3_0_4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) c0f4e4ca6d0f76985bca79314b232b787c8f008e: [Backport #18007]</title>
<updated>2021-09-05T05:55:14+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@ruby-lang.org</email>
</author>
<published>2021-09-05T05:55:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c42208f8e24402fe1aa8747901fba275bfb0d56b'/>
<id>c42208f8e24402fe1aa8747901fba275bfb0d56b</id>
<content type='text'>
	undefine alloc functions for C extensions

	per guidance in doc/extension.rdoc, these classes now undefine their
	alloc functions:

	- ObjectSpace::InternalObjectWrapper
	- Socket::Ifaddr
	---
	 ext/objspace/objspace.c | 1 +
	 ext/socket/ifaddr.c     | 1 +
	 2 files changed, 2 insertions(+)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	undefine alloc functions for C extensions

	per guidance in doc/extension.rdoc, these classes now undefine their
	alloc functions:

	- ObjectSpace::InternalObjectWrapper
	- Socket::Ifaddr
	---
	 ext/objspace/objspace.c | 1 +
	 ext/socket/ifaddr.c     | 1 +
	 2 files changed, 2 insertions(+)
</pre>
</div>
</content>
</entry>
<entry>
<title>enable constant cache on ractors</title>
<updated>2021-01-13T08:06:16+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2021-01-04T09:08:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b93e16dc0f45069d4a5fcce20d5c4437e151f0a8'/>
<id>b93e16dc0f45069d4a5fcce20d5c4437e151f0a8</id>
<content type='text'>
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.

This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]

Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.

`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.

This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]

Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.

`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prevent objects from moving while iterating the heap</title>
<updated>2020-10-06T23:22:01+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-10-06T20:17:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cdc4084b0a947b87a794394b9cc8cbdb10537146'/>
<id>cdc4084b0a947b87a794394b9cc8cbdb10537146</id>
<content type='text'>
This iterator uses an st_table, but if objects move the references in
the st table won't be updated.  This patch just changes the st table to
an identity hash.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This iterator uses an st_table, but if objects move the references in
the st table won't be updated.  This patch just changes the st table to
an identity hash.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor common heap iteration code</title>
<updated>2020-09-28T15:20:23+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-09-25T23:25:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0b0e2d88cebc0b546b75234321fa31a1f3a0be3f'/>
<id>0b0e2d88cebc0b546b75234321fa31a1f3a0be3f</id>
<content type='text'>
We have code common to all heap iteration paths in this file.  Refactor
such that we keep ASAN checks and flags checks in one place
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We have code common to all heap iteration paths in this file.  Refactor
such that we keep ASAN checks and flags checks in one place
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix ASAN support when invalidating CCs</title>
<updated>2020-09-28T15:20:23+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-09-25T22:01:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b9488accf9e2cbf5f7c47b42b3eb23469f0aa58d'/>
<id>b9488accf9e2cbf5f7c47b42b3eb23469f0aa58d</id>
<content type='text'>
Again, this code is walking the heap.  Empty slots can be poisoned, so
we need to unpoison before checking the type
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Again, this code is walking the heap.  Empty slots can be poisoned, so
we need to unpoison before checking the type
</pre>
</div>
</content>
</entry>
<entry>
<title>Make ext/objspace ASAN friendly</title>
<updated>2020-09-28T15:20:23+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2020-09-25T21:50:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=18b3f0f54c66632b1039a27634a8a449a7812e34'/>
<id>18b3f0f54c66632b1039a27634a8a449a7812e34</id>
<content type='text'>
ext/objspace iterates over the heap, but some slots in the heap are
poisoned, so we need to take care of that when running with ASAN
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ext/objspace iterates over the heap, but some slots in the heap are
poisoned, so we need to take care of that when running with ASAN
</pre>
</div>
</content>
</entry>
<entry>
<title>Return nil when argument to ObjectSpace.internal_class_of is T_IMEMO</title>
<updated>2020-09-25T16:27:49+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2020-09-02T03:13:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=24820d508bc89775e10e4e3e6e07e192540cb4a2'/>
<id>24820d508bc89775e10e4e3e6e07e192540cb4a2</id>
<content type='text'>
The added test case crashes the interpreter because it makes
ObjectSpace.internal_class_of return the second VALUE slot of an AST
imemo object. The second VALUE slot of `struct rb_ast_struct` is
not a VALUE and not a pointer to a Ruby object.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The added test case crashes the interpreter because it makes
ObjectSpace.internal_class_of return the second VALUE slot of an AST
imemo object. The second VALUE slot of `struct rb_ast_struct` is
not a VALUE and not a pointer to a Ruby object.
</pre>
</div>
</content>
</entry>
<entry>
<title>RHASH_TBL: is now ext-only</title>
<updated>2020-08-19T06:10:53+00:00</updated>
<author>
<name>卜部昌平</name>
<email>shyouhei@ruby-lang.org</email>
</author>
<published>2020-08-17T02:12:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=99093e1600ccef17ab99356b689573fcfd336ecc'/>
<id>99093e1600ccef17ab99356b689573fcfd336ecc</id>
<content type='text'>
It seems almost no internal codes use RHASH_TBL any longer.  Why not
just eliminate it entirely, so that the macro can be purely ext-only.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It seems almost no internal codes use RHASH_TBL any longer.  Why not
just eliminate it entirely, so that the macro can be purely ext-only.
</pre>
</div>
</content>
</entry>
<entry>
<title>[DOC] Clarify ObjectSpace return values are in bytes [ci skip]</title>
<updated>2020-07-28T03:13:40+00:00</updated>
<author>
<name>Simon Perepelitsa</name>
<email>sema@sema.in</email>
</author>
<published>2020-07-10T19:38:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=09e9f7cf7a1e882c9bd199f93b8dcf933a6ae631'/>
<id>09e9f7cf7a1e882c9bd199f93b8dcf933a6ae631</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce find pattern [Feature #16828]</title>
<updated>2020-06-14T00:24:36+00:00</updated>
<author>
<name>Kazuki Tsujimoto</name>
<email>kazuki@callcc.net</email>
</author>
<published>2020-06-14T00:24:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ddded1157a90d21cb54b9f07de35ab9b4cc472e1'/>
<id>ddded1157a90d21cb54b9f07de35ab9b4cc472e1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
