On 2018/05/01 17:46, Eric Wong wrote:
> Individual patches available at:
> https://80x24.org/spew/20180501080844.22751-2-e / 80x24.org/raw
> https://80x24.org/spew/20180501080844.22751-3-e / 80x24.org/raw
> https://80x24.org/spew/20180501080844.22751-4-e / 80x24.org/raw
> https://80x24.org/spew/20180501080844.22751-5-e / 80x24.org/raw

I'm not sure how to see all of diffs in one patch. Do you have?

Anyway, small comments:

 > https://80x24.org/spew/20180501080844.22751-3-e / 80x24.org/raw

 > +    /* TODO: should this check is_incremental_marking() ? */

Any problem to check it?

 > +rb_gc_step(const rb_execution_context_t *ec)

How about to add assertion that rb_gc_inprogress() returns true?

--- a/internal.h
+++ b/internal.h
@@ -1290,6 +1290,10 @@ void rb_gc_writebarrier_remember(VALUE obj);
  void ruby_gc_set_params(int safe_level);
  void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);

+struct rb_execution_context_struct;
+int rb_gc_inprogress(const struct rb_execution_context_struct *);
+int rb_gc_step(const struct rb_execution_context_struct *);
+

How about to add them into gc.h?

https://80x24.org/spew/20180501080844.22751-4-e / 80x24.org/raw

I have no enough knowledge to review it.
Nobu?

https://80x24.org/spew/20180501080844.22751-5-e / 80x24.org/raw

 > @@ -288,8 +294,17 @@ rb_mutex_lock(VALUE self)

I can't understand why GC at acquiring (and restarting) timing is 
needed. Why?

For other functions, I have a same question.happen.

-- 
// SASADA Koichi at atdot dot net

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>