Code Review: Fixes for setting/getting backtraces

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

Comment :
Exception backtracesL:

  • minitest was failing while reporting a test failure because
    .backtrace was returning null. This was because “raise
    existingExceptionObject” was setting backtrace to nil. Fixed this and
    added tests for it.
  • Overridden versions of set_trace were also not being called. Fixed
  • The model now is that RubyExceptionData.SetBacktrace manages the
    case of firing (the most override version of) Exception#set_backtrace
    for the case of an exception being raised. ExceptionOps.SetBacktrace
    handles the generic case of the user calling the base implmenetation of
    Exception#set_backtrace (ie. it is the normal library API which does not
    have to worry about the complications of exception handling).
    RubyExceptionData.SetBacktrace now eagerly creates the Ruby backtrace in
    most cases, but this should not affect perf since an exception is being
    thrown which is much more expensive.
    Added RubySpec project to Ruby.sln as a placeholder to make it easy to
    get to the rubyspec files. It contains a link to just a couple of files.
    Once these are opened, Ctrl-O will open a File Open dialog box in the
    same folder as that file.
    Added all the supported command-line options to ir.exe help