* error.c (rb_assert_failure): assertion with stack dump.
* ruby_assert.h (RUBY_ASSERT): new header for the assertion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Keys of GC::INTERNAL_CONSTANTS are also renamed.
* test/ruby/test_gc.rb: catch up this fix.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
`page_length' is not clear (we may understand with length of
a page).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
whether a page is in a tomb or not. Instead of this field,
heap_page:🎏:in_tomb (1 bit field) is added.
Also type of heap_page::(total|free|final)_slots are changed from
int to short. 2B is enough for them.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c (internal_object_p): should not expose singleton classes
without a metaclass. based on patches by ko1 and shugo.
[Bug #11740]
* class.c (rb_singleton_class_object_p): added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Suppress "syntax error: empty declaration" warnings by
Oracle Solaris Studio 12.x on Solaris. [Bug #11821]
* hash.c: ditto, after NOINSERT_UPDATE_CALLBACK().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
NULL checking is finished Before call of memsize functions.
See r52979.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c (rb_objspace_data_type_memsize): consider NULL data uses no
memory without calling dsize function as well as other functions.
fix SEGV in test/objspace with RUBY_ISEQ_DUMP_DEBUG=to_binary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
even if it is GC.disable'd.
* test/ruby/test_gc.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
for performance.
On my laptop, 'N.times{x = []}' (where N = 29_000_000) is
1.86 sec -> 1.74 sec.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c (newobj_init): separate event hook call and remove the
argument for it.
* gc.c (newobj_slowpath): call event hook after initialized the
new object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
rb_wb_protected_newobj_of(), pass the WB_PROTECTED
information explicitly.
* internal.h: use introduced functions by NEWOBJ_OF().
`flag' is immediate value, so that C compilers can
solve them at compile time.
* include/ruby/ruby.h: add a commnent about that.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c (gc_event_hook_needed_p): UNLIKELY makes no sense for
boolean flag value.
* gc.c (gc_event_hook, newobj_init): use in conditions instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Pointed out by Yukihiro Matsumoto <matz@ruby-lang.org>.
* gc.c (newobj_of_...): `of' is unnecessary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
https://github.com/ruby/ruby/pull/1050
by Kazuho Oku <kazuho@natadeco.co>.
This pull request has the following commits.
* gc.c: reduce # of args to 6 (max. of register args on x86-64) so
that the `newobj_of_slowpass` can be called via TCO.
* gc.c (newobj_of), string.c (str_duplicate): for performance,
the hot functions must be inlined.
* gc.c: for performance, preceding arguments of `.*newobj_of.*`
must be same, so that the arg registers can be reused in case of
TCO.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
to avoid register savings for fast path.
This idea is given by Kazuho Oku <kazuho@natadeco.co>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
before marking. This fixes the following test failure
introduced in r51126:
make test-all TESTOPTS='--gc-stress ruby/test_refinement.rb'
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(such as ST_CONTINUE) for enum rb_id_table_iterator_result.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e