Are any methods in RubyOps Exceptions #region (including those added by this 
shelveset) emitted to IL? If not they should rather be in RubyUtils class.

On the other hand, SourceUnitTree.CheckForAsyncRaiseViaThreadAbortshould should 
be marked as [Emitted], be in RubyOps.cs and 
SourceUnitTree.GenerateCheckForAsyncException should use 
Methods.CheckForAsyncRaiseViaThreadAbort to get the method.

Could we add a public helper that calls thread.Abort(new ThreadExitMarker()); 
move the private ThreadExitMarker class and IsRubyThreadExit to RubyUtils? Then 
we won't need to duplicate the marker class in ThreadOps?

Other than that, looks good.

Tomas

-----Original Message-----
From: Shri Borde 
Sent: Friday, January 09, 2009 3:33 PM
To: IronRuby External Code Reviewers
Cc: ironruby-core@rubyforge.org
Subject: Code Review: Issues with Thread#kill and raising exception from ensure 
clause

  tfpt review "/shelveset:kill;REDMOND\sborde"

  Comment  : 
  Added more tests for Thread#kill, and fixed bugs that were exposed. Throwing 
an exception from the ensure clause exposes new code paths.
  
  Ruby allows Thread#kill to be completely subverted (not just deferred as an 
infinite loop in an ensure clause would do) by raising an exception from a 
ensure clause. I have not matched that behavior, and left it as a IronRuby bug 
for now.


_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to