tarui
4b18db6a2f
* gc.c: refactoring bitmaps. introduce bits_t type and some Consts.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 23:15:18 +00:00
ko1
8b80ce3a53
* gc.c: fix to support USE_RGENGC == 0 (disable RGenGC).
...
If USE_RGENGC==0, it caused compilation error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 23:10:34 +00:00
tarui
fcd5cc93c9
* gc.c (lazy_sweep): Use is_lazy_sweeping()
...
* gc.c (rest_sweep): Ditto.
* gc.c (gc_prepare_free_objects): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 23:08:30 +00:00
nobu
2c79a46764
* remove trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 22:41:07 +00:00
ko1
8ab7d0e4c3
* gc.c (gc_profile_record::oldgen_objects): added.
...
* gc.c (gc_profile_dump_on): print the following infomation:
* Living object counts
* Free object counts
If RGENGC_PROFILE > 0 then
* Oldgen object counts
* Remembered normal object counts
* Remembered shady object counts
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 22:38:08 +00:00
ko1
d1c518d416
* gc.c (gc_prof_sweep_timer_stop): accumulate sweep time only when
...
record->gc_time > 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 20:39:20 +00:00
ko1
bf017de1f3
* gc.c (rgengc_rememberset_mark): record
...
(1) normal objects count in remember set
(2) shady objects count in remember set
each GC timing.
* gc.c (gc_profile_record_get): enable to access above information
and REMOVING_OBJECTS, EMPTY_OBJECTS.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 12:20:27 +00:00
nobu
16f36b6322
gc.c: adjust indent
...
* gc.c (gc_marks): adjust indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 00:29:13 +00:00
tarui
88927b04ae
* gc.c (rb_gc_writebarrier): give up rescan A and register B directly
...
if A has huge number of children.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 22:48:03 +00:00
ko1
65ad154e2a
* gc.c (gc_profile_total_time): check objspace->profile.next_index > 0.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 21:21:16 +00:00
ko1
efc53c496e
* gc.c (gc_prof_sweep_timer_start): fix merge miss.
...
* gc.c (GC_PROFILE_MORE_DETAIL): set it 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 20:49:28 +00:00
ko1
6622ab2049
* gc.c: Accumulate sweep time to GC time.
...
Now [GC time] is [mark time] + [sweep time] + [misc].
([GC time] >= [mark time] + [sweep time])
* gc.c (gc_prof_sweep_slot_timer_start/stop): rename to
gc_prof_sweep_timer_start/stop and locate at lazy_sweep().
* gc.c (elapsed_time_from): add a utility function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 20:43:33 +00:00
ko1
21b0705c18
* gc.c (gc_marks): fix wrong option. FALSE means major/full GC.
...
It should be TRUE (minor marking).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 20:09:59 +00:00
nobu
a30d9f9e1e
gc.c: refine macros
...
* gc.c (MARKED_IN_BITMAP, FL_TEST2): return boolean value since always
used as boolean value.
* gc.c (MARK_IN_BITMAP, CLEAR_IN_BITMAP): evaluate bits once.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 16:07:41 +00:00
nobu
67edbe19ee
gc.c: gc_stress is a VALUE
...
* gc.c (ruby_initial_gc_stress_ptr): now gc_stress is a VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 16:01:16 +00:00
nagachika
291c1bc314
* gc.c (gc_free_stored_bitmaps): fix indent.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 15:27:58 +00:00
ko1
ce7c13ef4d
* gc.c (RVALUE_PROMOTED): fix type.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 15:06:27 +00:00
ko1
50214475a9
* gc.c (garbage_collect_test): rewrite checking code.
...
When RGENGC_CHECK_MODE >= 2, all minor marking, run normal minor
marking *and* major/full marking. After that, compare the results
and shows BUG if a object living with major/full marking but dead
with minor marking.
After detecting bugs, print references information.
(RGENGC_CHECK_MODE == 2, show references to dead object)
(RGENGC_CHECK_MODE == 3, show all references)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 14:59:35 +00:00
ko1
745263abb9
* gc.c (RVALUE_PROMOTED): check consistency between oldgen flag and
...
oldgen bitmap if RGENGC_CHECK_MODE > 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 14:34:11 +00:00
ko1
a1acb395a2
* gc.c (rb_gc_force_recycle): clear oldgen bitmap, too.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 14:30:13 +00:00
kazu
28945ea146
* gc.c (gc_stress_get): GC.stress can be Fixnum.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 11:53:07 +00:00
ko1
9b47ec04a8
* include/ruby/ruby.h (struct rb_data_type_struct), gc.c: add
...
rb_data_type_struct::flags. Now, this flags is passed
at T_DATA object creation. You can specify FL_WB_PROTECTED
on this flag.
* iseq.c: making non-shady iseq objects.
* class.c, compile.c, proc.c, vm.c: add WB for iseq objects.
* vm_core.h, iseq.h: constify fields to detect WB insertion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 06:26:01 +00:00
nobu
541bdd29ba
gc.c: more info
...
* gc.c (gc_mark_children): show more info for broken object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 06:11:15 +00:00
ko1
97dd259df5
* gc.c (garbage_collect_body): use FIX2INT for ruby_gc_stress.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:49:19 +00:00
ko1
bfac961bed
* gc.c (rb_objspace::gc_stress): int -> VALUE to store Fixnum object.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:45:41 +00:00
ko1
d879849b6e
* gc.c (make_deferred): clear flags to T_ZOMBIE.
...
* gc.c (slot_sweep_body): fix indent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:26:57 +00:00
ko1
54d04073d7
* gc.c (rgengc_remember): fix output level.
...
* gc.c (rgengc_rememberset_mark): fix to output clear count.
(shady_object_count + clear_count = count of remembered objects)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:12:39 +00:00
ko1
65791846a6
* gc.c (rgengc_remember): check T_NONE and T_ZOMBIE
...
if RGENGC_CHECK_MODE > 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:07:09 +00:00
ko1
5455b7e72e
* gc.c (RGENGC_CHECK_MODE): add new check mode `3'.
...
In this mode, show all references if there is
a miss-corrected object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:04:30 +00:00
ko1
81ed2d3c4a
* gc.c (gc_stress_set): add special option of GC.stress.
...
`GC.stress=(flag)' accepts integer to control behavior of GC.
See code for details. Of course, this feature is only for MRI.
You can debug RGenGC (WB) using `GC.stress = 1'.
Using this option, do minor marking at all possible places.
GC::STRESS_MINOR_MARK = 1 and GC::STRESS_LAZY_SWEEP = 2
seem good to add.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 21:35:40 +00:00
tarui
0a3f79310f
* gc.c (gc_profile_record_flag): reason seems like one-hot encoding.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 13:37:09 +00:00
zzak
62de1e66f7
* gc.c: Rename rb_mObSpace -> rb_mObjSpace
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 12:59:02 +00:00
ko1
1d7966f5b4
* gc.c (gc_stat): add `generated_normal_object_count_types' for
...
RGENGC_PROFILE >= 2.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 02:27:37 +00:00
ko1
17cd5ac4af
* gc.c (gc_mark_maybe): check to skip T_NONE.
...
* gc.c (markable_object_p): do not need to check (flags == 0) here.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 02:17:59 +00:00
ko1
7a460d2d1d
* gc.c (gc_mark_children): don't need to care about T_ZOMBIE here.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-17 19:21:36 +00:00
eregon
089dd1a1ca
* gc.c (ObjectSpace): is a module not a class.
...
* ext/objspace/objspace.c: try to include overview in rdoc,
see #8537 .
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-17 08:44:56 +00:00
eregon
abfcded30c
* gc.c: fix example of ObjectSpace.define_finalizer in overview
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-17 08:39:39 +00:00
ko1
17be9e9719
* gc.c (gc_mark_maybe): added. check `is_pointer_to_heap()' and
...
type is not T_ZOMBE.
* gc.c: use `gc_mark_maybe()'. T_ZOMBIE objects should not be pushed
to the mark stack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-17 02:54:25 +00:00
tarui
3a0a69fec4
* gc.c: Fixup around GC by MALLOC.
...
Add allocate size to malloc_increase before GC
for updating limit in after_gc_sweep.
Reset malloc_increase into garbage_collect()
for preventing GC again soon.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 20:53:01 +00:00
tarui
994ed8dbd5
* gc.c : add some colums to more detail profile.
...
new colums: Allocated size, Prepare Time, Removing Objects, Empty Objects
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 20:18:11 +00:00
tarui
6477616c3b
* gc.c (gc_prof_timer_stop): Merge function codes of GC_PROFILE_MORE_DETAIL and !GC_PROFILE_MORE_DETAIL.
...
* gc.c (gc_prof_mark_timer_start): Ditto.
* gc.c (gc_prof_mark_timer_stop): Ditto.
* gc.c (gc_prof_sweep_slot_timer_start): Ditto.
* gc.c (gc_prof_sweep_slot_timer_stop): Ditto.
* gc.c (gc_prof_set_malloc_info): Ditto.
* gc.c (gc_prof_set_heap_info): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 17:06:15 +00:00
shugo
1f828497d1
* safe.c (rb_set_safe_level, safe_setter): raise an ArgumentError
...
when $SAFE is set to 4. $SAFE=4 is now obsolete.
[ruby-core:55222] [Feature #8468 ]
* object.c (rb_obj_untrusted, rb_obj_untrust, rb_obj_trust):
Kernel#untrusted?, untrust, and trust are now deprecated.
Their behavior is same as tainted?, taint, and untaint,
respectively.
* include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
respectively.
* array.c, class.c, debug.c, dir.c, encoding.c, error.c, eval.c,
ext/curses/curses.c, ext/dbm/dbm.c, ext/dl/cfunc.c,
ext/dl/cptr.c, ext/dl/dl.c, ext/etc/etc.c, ext/fiddle/fiddle.c,
ext/fiddle/pointer.c, ext/gdbm/gdbm.c, ext/readline/readline.c,
ext/sdbm/init.c, ext/socket/ancdata.c, ext/socket/basicsocket.c,
ext/socket/socket.c, ext/socket/udpsocket.c,
ext/stringio/stringio.c, ext/syslog/syslog.c, ext/tk/tcltklib.c,
ext/win32ole/win32ole.c, file.c, gc.c, hash.c, io.c, iseq.c,
load.c, marshal.c, object.c, proc.c, process.c, random.c, re.c,
safe.c, string.c, thread.c, transcode.c, variable.c,
vm_insnhelper.c, vm_method.c, vm_trace.c: remove code for
$SAFE=4.
* test/dl/test_dl2.rb, test/erb/test_erb.rb,
test/readline/test_readline.rb,
test/readline/test_readline_history.rb, test/ruby/test_alias.rb,
test/ruby/test_array.rb, test/ruby/test_dir.rb,
test/ruby/test_encoding.rb, test/ruby/test_env.rb,
test/ruby/test_eval.rb, test/ruby/test_exception.rb,
test/ruby/test_file_exhaustive.rb, test/ruby/test_hash.rb,
test/ruby/test_io.rb, test/ruby/test_method.rb,
test/ruby/test_module.rb, test/ruby/test_object.rb,
test/ruby/test_pack.rb, test/ruby/test_rand.rb,
test/ruby/test_regexp.rb, test/ruby/test_settracefunc.rb,
test/ruby/test_struct.rb, test/ruby/test_thread.rb,
test/ruby/test_time.rb: remove tests for $SAFE=4.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 14:20:51 +00:00
ko1
a8aaf13392
* gc.c (rgengc_remember): permit promoted object.
...
(rb_gc_writebarrier -> remember)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 08:21:08 +00:00
ko1
a03ac78b2c
* gc.c (RVALUE_PROMOTE): fix parameter name (x' to
obj')
...
and make it inline function (like RVALUE_PROMOTE).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 08:15:31 +00:00
ko1
dd96561f76
* gc.c (wmap_mark): check allocation of `w->obj2wmap'.
...
(no-allocation `w->obj2wmap' will be NULL pointer reference)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-10 07:12:14 +00:00
akr
bd15d4ca78
* internal.h (numberof): Gathered from various files.
...
* array.c, math.c, thread_pthread.c, iseq.c, enum.c, string.c, io.c,
load.c, compile.c, struct.c, eval.c, gc.c, parse.y, process.c,
error.c, ruby.c: Remove the definitions of numberof.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 10:01:19 +00:00
naruse
b309a3698d
* gc.c (before_gc_sweep): noinline can also avoid the segv instead of
...
-O0 of r41084. this way is expected less slow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 04:25:20 +00:00
nobu
83db393e48
adjust style
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 02:52:42 +00:00
nobu
0b87f8d4cf
* gc.c (gc_clear_slot_bits): used only if no RGenGC.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 02:49:53 +00:00
nobu
432321d780
* remove trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-07 02:36:07 +00:00