Permalink
Switch branches/tags
Commits on Feb 6, 2013
  1. Implement rb_method_boundp

    dbussink committed Feb 6, 2013
  2. Merge pull request rubinius#2142 from ryoqun/proc-new-comment

    jc00ke committed Feb 6, 2013
     Add a comment to the assembly of Proc.new
  3. Fixed Kernel.chop[!].

    brixen committed Feb 5, 2013
  4. Remove trailing white space

    ryoqun committed Feb 6, 2013
Commits on Feb 5, 2013
  1. Handle signals after pthread_cond_wait is interrupted

    dbussink committed Feb 5, 2013
    There might be signals that need to be run if pthread_cond_wait is
    interrupted. Fixes rubinius#2093
Commits on Feb 4, 2013
  1. Fixed Encoding::Converter#primitive_convert. Fixes rubinius#2139.

    brixen committed Feb 4, 2013
    The transcoders are restartable. Also removed the buffers for doing piece-wise
    conversions. The code had a latent GC bug in that at any ByteArray creation, a
    GC could occur and the Ruby objects on the stack (sourc, src, target) could move,
    leading to a segfault.
  2. Spec for round-trip encoding.

    brixen committed Feb 4, 2013
  3. Exit LLVM thread when stop is set

    dbussink committed Feb 4, 2013
    When we are paused, a stop might be requested. This makes sure we check
    the stop_ and exit the thread if we have to. This prevents a deadlock /
    race for example if a just forked process exits immediately.
  4. Move static definition outside function call

    dbussink committed Feb 4, 2013
    Only in C++-03 this isn't defined as being thread safe, only in C++11.
    We should prefer using the style where we define these outside the
    functions so they are setup during load and not first execution of the
    function.
    
    For cases that we should not use static, we remove these so the
    functions are properly reentrant.
Commits on Feb 3, 2013
  1. Remove peep hole optimization on JIT

    dbussink committed Feb 3, 2013
    This optimization was problematic, since it assumed the called block was
    unpacking the block. This logic wasn't properly handled in at least 1.9
    mode, so removing this for now so we can design for a better version of
    this.
    
    Running the specs for datamapper/dm-core in 1.9 mode exposed this:
    
    datamapper/dm-core@3cb3f05
Commits on Feb 2, 2013
  1. Setup Ruby side object for ThreadState

    dbussink committed Feb 2, 2013
    For code that heavily uses ensure blocks, creating these thread state
    objects had quite a big overhead. We were abusing the Rubinius::Internal
    exception for this behavior and spend a lot of time for that code in
    symbol lookup for the instance variables.
    
    This solution removes the need for any symbol lookup and this also helps
    in concurrent scenarios since symbol lookup needs a lock around the
    symbol table.
  2. Fix additional deadlocks when trying to pause

    dbussink committed Feb 2, 2013
    The finalizer thread might have paused in a gc_dependent call so it
    might not be running. Therefore when we pause, if a thread state is not
    eRunning, we can also safely pause.
    
    This is safe because we also change to stop the world before trying to
    stop the auxiliary threads. This is also needed because other threads
    might actually be restarting stuff when they just did a fork after
    stopping auxiliary threads and before stopping all other threads.
    
    We also remove the gc_independent in the JIT, because it LLVM might have
    internal structures locked at that point and if we fork then, the new
    jit thread in the sub process can hang because of this locked thread.