File tree Expand file tree Collapse file tree 5 files changed +25
-8
lines changed Expand file tree Collapse file tree 5 files changed +25
-8
lines changed Original file line number Diff line number Diff line change
1
+ Mon Jan 5 11:14:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2
+
3
+ * eval.c (rb_thread_schedule): runs deferred finalizers.
4
+
5
+ * gc.c (gc_sweep): sets rb_thread_pending to run deferred finalizers.
6
+
7
+ * rubysig.h (CHECK_INTS): now checks rb_thread_pending even on
8
+ platforms where setitimer is not available. [ruby-core:18045]
9
+
10
+ Mon Jan 5 11:14:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
11
+
12
+ * rubysig.h (CHECK_INTS): gives the chance to perform to deferred
13
+ finalizers before explicit GC.start or the process termination.
14
+ [ruby-core:18045]
15
+
1
16
Sun Jan 4 04:49:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2
17
3
18
* win32/win32.c (rb_w32_telldir): just returns loc.
Original file line number Diff line number Diff line change @@ -10948,6 +10948,7 @@ rb_thread_schedule()
10948
10948
}
10949
10949
#endif
10950
10950
rb_thread_pending = 0 ;
10951
+ rb_gc_finalize_deferred ();
10951
10952
if (curr_thread == curr_thread -> next
10952
10953
&& curr_thread -> status == THREAD_RUNNABLE )
10953
10954
return ;
Original file line number Diff line number Diff line change @@ -1187,6 +1187,7 @@ gc_sweep()
1187
1187
/* clear finalization list */
1188
1188
if (final_list ) {
1189
1189
deferred_final_list = final_list ;
1190
+ rb_thread_pending = 1 ;
1190
1191
return ;
1191
1192
}
1192
1193
free_unused_heaps ();
Original file line number Diff line number Diff line change @@ -78,12 +78,12 @@ RUBY_EXTERN rb_atomic_t rb_trap_pending;
78
78
void rb_trap_restore_mask _ ((void ));
79
79
80
80
RUBY_EXTERN int rb_thread_critical ;
81
+ RUBY_EXTERN int rb_thread_pending ;
81
82
void rb_thread_schedule _ ((void ));
82
83
#if defined(HAVE_SETITIMER ) || defined(_THREAD_SAFE )
83
- RUBY_EXTERN int rb_thread_pending ;
84
84
# define CHECK_INTS do {\
85
85
if (!(rb_prohibit_interrupt || rb_thread_critical)) {\
86
- if (rb_thread_pending) rb_thread_schedule();\
86
+ if (rb_thread_pending) rb_thread_schedule();\
87
87
if (rb_trap_pending) rb_trap_exec();\
88
88
}\
89
89
} while (0)
@@ -93,9 +93,9 @@ RUBY_EXTERN int rb_thread_tick;
93
93
#define THREAD_TICK 500
94
94
#define CHECK_INTS do {\
95
95
if (!(rb_prohibit_interrupt || rb_thread_critical)) {\
96
- if (rb_thread_tick-- <= 0) {\
96
+ if (rb_thread_pending || rb_thread_tick-- <= 0) {\
97
97
rb_thread_tick = THREAD_TICK;\
98
- rb_thread_schedule();\
98
+ rb_thread_schedule();\
99
99
}\
100
100
}\
101
101
if (rb_trap_pending) rb_trap_exec();\
Original file line number Diff line number Diff line change 1
1
#define RUBY_VERSION "1.8.7"
2
- #define RUBY_RELEASE_DATE "2009-01-04 "
2
+ #define RUBY_RELEASE_DATE "2009-01-05 "
3
3
#define RUBY_VERSION_CODE 187
4
- #define RUBY_RELEASE_CODE 20090104
5
- #define RUBY_PATCHLEVEL 76
4
+ #define RUBY_RELEASE_CODE 20090105
5
+ #define RUBY_PATCHLEVEL 77
6
6
7
7
#define RUBY_VERSION_MAJOR 1
8
8
#define RUBY_VERSION_MINOR 8
9
9
#define RUBY_VERSION_TEENY 7
10
10
#define RUBY_RELEASE_YEAR 2009
11
11
#define RUBY_RELEASE_MONTH 1
12
- #define RUBY_RELEASE_DAY 4
12
+ #define RUBY_RELEASE_DAY 5
13
13
14
14
#ifdef RUBY_EXTERN
15
15
RUBY_EXTERN const char ruby_version [];
You can’t perform that action at this time.
0 commit comments