* thread.c (RB_GC_SAVE_MACHINE_CONTEXT): start GC

by switching the thread if gc_stress == true 

* gc.c (ruby_gc_stress_start): dotto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tarui 2010-05-29 16:32:59 +00:00
Родитель 2c1a7dc85e
Коммит d0914b3552
3 изменённых файлов: 18 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,10 @@
Sun May 30 01:25:48 2010 Masaya Tarui <tarui@ruby-lnag.org>
* thread.c (RB_GC_SAVE_MACHINE_CONTEXT): start GC
by switching the thread if gc_stress == true
* gc.c (ruby_gc_stress_start): dotto.
Sun May 30 00:02:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
* gc.c (force_chain_object, rb_objspace_call_finalizer): delete

8
gc.c
Просмотреть файл

@ -517,6 +517,14 @@ gc_stress_get(VALUE self)
return ruby_gc_stress ? Qtrue : Qfalse;
}
void
ruby_gc_stress_start(void)
{
rb_objspace_t *objspace = &rb_objspace;
if(ruby_gc_stress)
rb_gc();
}
/*
* call-seq:
* GC.stress = bool -> bool

Просмотреть файл

@ -99,10 +99,13 @@ static void reset_unblock_function(rb_thread_t *th, const struct rb_unblock_call
static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region);
void ruby_gc_stress_start(void);
#define RB_GC_SAVE_MACHINE_CONTEXT(th) \
do { \
rb_gc_save_machine_context(th); \
SET_MACHINE_STACK_END(&(th)->machine_stack_end); \
ruby_gc_stress_start(); \
} while (0)
#define GVL_UNLOCK_BEGIN() do { \