Code Review: IronRuby Thread fixes


#1

Affects: Microsoft.Scripting.Core.dll and IronRuby

tfpt review “/shelveset:Thread;REDMOND\sborde”

Comment :

Fixes to all the currently disabled Thread tests

Thread#stop/Kernel#sleep use an Event which can be signalled from
other threads, instead of using Thread.Sleep

ThreadOps.CreateThread catches and ignores ThreadAbortException
instead of publishing it as RubyThreadInfo.Exception

Thread#main - its per ScriptRuntime, mainly because that was easier to
implement, and also there is no good answer to how Thread#main should
function in hosted scenarios

Adds lock to RubyModule.EnsureInitialized to prevent use of
uninitialized modules in multi-thread scenarios.

Changes RunRSpec.cmd to match the flags used by “rake why_regression”

Microsoft.Scripting.Core:

Fixes ExpressionWriter to deal with GotoExpression.Value being null in
VisitGoto


#2

Test changes look good. I’d like to see the RunRSpec.cmd use ruby to run
mspec with args of ci and -t “path to ir”, which is what the rakefile
sets up as a command line.

JD

From: Shri B.
Sent: Tuesday, December 16, 2008 2:39 PM
To: IronRuby External Code R.; Rowan Code R.; DLR Code
Reviews
Cc: removed_email_address@domain.invalid
Subject: Code Review: IronRuby Thread fixes

Affects: Microsoft.Scripting.Core.dll and IronRuby

tfpt review “/shelveset:Thread;REDMOND\sborde”

Comment :

Fixes to all the currently disabled Thread tests

Thread#stop/Kernel#sleep use an Event which can be signalled from
other threads, instead of using Thread.Sleep

ThreadOps.CreateThread catches and ignores ThreadAbortException
instead of publishing it as RubyThreadInfo.Exception

Thread#main - its per ScriptRuntime, mainly because that was easier to
implement, and also there is no good answer to how Thread#main should
function in hosted scenarios

Adds lock to RubyModule.EnsureInitialized to prevent use of
uninitialized modules in multi-thread scenarios.

Changes RunRSpec.cmd to match the flags used by “rake why_regression”

Microsoft.Scripting.Core:

Fixes ExpressionWriter to deal with GotoExpression.Value being null in
VisitGoto


#3

DLR change looks great!

From: Shri B.
Sent: Tuesday, December 16, 2008 2:39 PM
To: IronRuby External Code R.; Rowan Code R.; DLR Code
Reviews
Cc: removed_email_address@domain.invalid
Subject: Code Review: IronRuby Thread fixes

Affects: Microsoft.Scripting.Core.dll and IronRuby

tfpt review “/shelveset:Thread;REDMOND\sborde”

Comment :

Fixes to all the currently disabled Thread tests

Thread#stop/Kernel#sleep use an Event which can be signalled from
other threads, instead of using Thread.Sleep

ThreadOps.CreateThread catches and ignores ThreadAbortException
instead of publishing it as RubyThreadInfo.Exception

Thread#main - its per ScriptRuntime, mainly because that was easier to
implement, and also there is no good answer to how Thread#main should
function in hosted scenarios

Adds lock to RubyModule.EnsureInitialized to prevent use of
uninitialized modules in multi-thread scenarios.

Changes RunRSpec.cmd to match the flags used by “rake why_regression”

Microsoft.Scripting.Core:

Fixes ExpressionWriter to deal with GotoExpression.Value being null in
VisitGoto


#4

Ruby changes are good.

From: Shri B.
Sent: Tuesday, December 16, 2008 2:39 PM
To: IronRuby External Code R.; Rowan Code R.; DLR Code
Reviews
Cc: removed_email_address@domain.invalid
Subject: Code Review: IronRuby Thread fixes

Affects: Microsoft.Scripting.Core.dll and IronRuby

tfpt review “/shelveset:Thread;REDMOND\sborde”

Comment :

Fixes to all the currently disabled Thread tests

Thread#stop/Kernel#sleep use an Event which can be signalled from
other threads, instead of using Thread.Sleep

ThreadOps.CreateThread catches and ignores ThreadAbortException
instead of publishing it as RubyThreadInfo.Exception

Thread#main - its per ScriptRuntime, mainly because that was easier to
implement, and also there is no good answer to how Thread#main should
function in hosted scenarios

Adds lock to RubyModule.EnsureInitialized to prevent use of
uninitialized modules in multi-thread scenarios.

Changes RunRSpec.cmd to match the flags used by “rake why_regression”

Microsoft.Scripting.Core:

Fixes ExpressionWriter to deal with GotoExpression.Value being null in
VisitGoto