Permalink
Commits on Oct 2, 2012
  1. Install man pages.

    voxik committed Oct 2, 2012
  2. Teach the JIT about fixnum_mul

    dbussink committed Oct 2, 2012
    We have to work around a bug in LLVM here which makes smul.with.overflow
    not work correctly. It will not properly detect overflows if we use the
    i63 / i31 integer types as described here:
    
    http://llvm.org/bugs/show_bug.cgi?id=13991
    
    We work around it by do multiplication with overflow detection for i64
    and i32 which does work and manually do a bounds check for Fixnum::MIN
    and Fixnum::MAX.
  3. Use better descriptive name for comparison operations

    dbussink committed Oct 2, 2012
    float_compare and fixnum_compare are actually the comparators for the
    Float#<=> and Fixnum#<=> behavior, so this name makes it less ambiguous
    what these wrappers are for.
Commits on Oct 1, 2012
  1. Add missing file

    dbussink committed Oct 1, 2012
  2. Use a block around OnStack with setjmp / longjmp for C-API exceptions

    dbussink committed Oct 1, 2012
    This way we ensure that the destructor for OnStack is executed, even
    when we encounter an exception. We use setjmp / longjmp in the C-API but
    that means we can't depend on RAII behavior here.
    
    By moving this into a separate block we make sure the destructor part of
    RAII runs before we do the longjmp.
  3. OnStack can mark a location on the stack that contains NULL

    dbussink committed Oct 1, 2012
    When we use OnStack, we might mark a location that holds the return
    value of a call. This return value can be NULL to indicate an exception
    so if we see a NULL here, that is a valid value and we just shouldn't do
    anything with it.
    
    Before this would cause a segmentation fault because we would deference
    a NULL pointer.
  4. Only try to remove a GC root if it's actually used

    dbussink committed Oct 1, 2012
    These are initialized with cUndef. We already guard the cases for adding
    them so we don't add cUndef, so we should also guard this case when
    trying to remove it.
Commits on Sep 29, 2012
  1. Merge pull request #1935 from ryoqun/thread-kill-lock

    dbussink committed Sep 29, 2012
    Fix newly-introduced Thread#kill deadlock
  2. Fix newly-introduced Thread#kill deadlock

    ryoqun committed Sep 29, 2012
    The following commit introduced another deadlock. Threads MUST be
    Rubinius.synchronize-d, but they weren't in Thread#kill.
    
      ba7667b Correctly implement Thread#kill
    
    Previously, Thread#kill internally used Thread#raise, which had gotten
    completely deadlock-free. And there is no problem.
    
    But, the commit made Thread#kill use a primitive for its function. That must be
    inside Rubinius.synchronize as was before.
Commits on Sep 28, 2012
  1. Use Iconv extension from MRI

    dbussink committed Sep 28, 2012
    Fixes #1924
  2. Implement rb_make_backtrace

    dbussink committed Sep 28, 2012
  3. Implement rb_enc_nth

    dbussink committed Sep 28, 2012
  4. Add spec for rb_enc_nth

    dbussink committed Sep 28, 2012
  5. Add rb_str_equal

    dbussink committed Sep 28, 2012
  6. Add specs for rb_str_equal

    dbussink committed Sep 28, 2012
  7. Add rb_str_length

    dbussink committed Sep 28, 2012
  8. Move helper functions into Encoding namespace

    dbussink committed Sep 28, 2012
    This allows them to be used outside the C++ String, for example for
    certain methods that are in the C-API.
  9. Merge pull request #1932 from pwnall/crash_fix

    dbussink committed Sep 28, 2012
    Fix typo in CallFrame::print_backtrace.
  10. Fix typo in CallFrame::print_backtrace.

    xiw authored and pwnall committed Sep 28, 2012
Commits on Sep 27, 2012
  1. Merge pull request #1882 from ryoqun/thread-kill

    dbussink committed Sep 27, 2012
    Correctly implement Thread#kill
  2. Implement rb_block_call

    dbussink committed Sep 27, 2012
    Fixes #1787
  3. Correctly implement Thread#kill

    ryoqun committed Sep 3, 2012
    Re-implement Thread#kill by adding new RaiseReason rather than complicating the
    existing ad-hoc way of raising Exceptions.
    
    Conceputually, Thread#kill isn't quite like exceptions. If the exception approach
    wasn't replaced, it would be neccesary to really specially handle Thread::Die.
    
    Make some failing specs pass. Also, Fix #864.