Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Feb 18, 2015
  1. @brixen

    Fixed Console plumbing.

    brixen authored
    Also fixes finalizer and immix mark thread so that the associated
    Ruby thread is initialized. This needs to be refactored.
Commits on Feb 13, 2015
  1. @brixen

    Deref Thread from VM when function exits.

    brixen authored
    VM shouldn't reference Thread but that's a bigger task.
Commits on Feb 10, 2015
  1. @brixen
Commits on Feb 4, 2015
  1. @brixen
Commits on Jan 30, 2015
  1. @brixen
Commits on Jan 27, 2015
  1. @jemc

    Decrement Metrics VM thread count before VM delete.

    jemc authored
    This avoids an invalid read error when `vm == state->vm()`
Commits on Nov 1, 2014
  1. @brixen

    Fixed --disable-llvm.

    brixen authored
Commits on Oct 2, 2014
  1. @brixen

    Added start of Rubinius::JIT.

    brixen authored
Commits on Aug 31, 2014
  1. @brixen

    Restructured some metrics.

    brixen authored
  2. @brixen

    Reworked MetricsData location.

    brixen authored
  3. @brixen

    Added more Metrics support.

    brixen authored
Commits on May 30, 2014
  1. @dbussink

    Fix deadlock with lock inflation wakeups

    dbussink authored
    This fixes a deadlock found running #3043. The deadlock occured when an
    inflated header was being woken up and locked on the mutex_. This didn't
    set the GC state properly so it would deadlock when a stop the world was
    requested simultanuously.
    This also fixes the hard_lock logic to retry if the locking sequence
    gets interrupted. This is needed because we should not have interrupts
    around that and have to defer the interrupt handling until after the
    hard lock block.
Commits on Feb 10, 2014
  1. @southerngs
  2. @dbussink

    Move destroying tooling env to destructor

    dbussink authored
    This is also set up in the constructor, so mimic deallocation in the
Commits on Oct 2, 2013
  1. @brixen
Commits on Jul 29, 2013
  1. @dbussink

    Only clear fields when object allocation succeeds

    dbussink authored
    This makes sure we get a no memory exception when we exhaust memory.
    Fixes #2498
Commits on Jul 15, 2013
  1. @dbussink

    Improve performance of string_dup

    dbussink authored
    This is used for all the string literals we store so we don't modify the
    === bin/rbx ===
             dup strings 13946320.9 (±9.3%) i/s -   68551854 in   4.971159s
           clone strings   711332.0 (±3.6%) i/s -    3572237 in   5.028634s
      create new strings   409099.0 (±3.7%) i/s -    2061216 in   5.045702s
    === bin/rbx ===
             dup strings 23067534.1 (±1.8%) i/s -  114813105 in   4.979302s
           clone strings  5617171.9 (±1.6%) i/s -   28206080 in   5.022906s
      create new strings  5840208.4 (±1.1%) i/s -   29184750 in   4.997792s
Commits on Jun 8, 2013
  1. @dbussink
Commits on Jun 7, 2013
  1. @dbussink

    Revert "Generate global symbol names for primitives"

    dbussink authored
    This reverts commit e9d6f2a.
    This creates very long compile times for shared_state.cpp because of the
    large number of globals.
Commits on Jun 3, 2013
  1. @dbussink

    Return of tracking the fiber data explicitly

    dbussink authored
    This mostly reverts 1e19933 and
    introduces a separate mechanism for marking fiber data's. This marking
    is used so we can clean up inactive fibers that are unreachable.
    The reason for reverting the original change is not because it's wrong,
    but because it makes concurrent gc much harder. The problem is that it
    was scanning stacks inside the fiber marking, which is a problem with
    concurrent marking.
    Therefore we now use a mechanism where we can scan the not running but
    still active fibers in the final phase of the mature GC, so we can do
    that in the stop the world phases of concurrent GC.
    The downside of this approach compared to the previous one is that
    inactive young fibers will be scanned during young gc cycles and kept
    active until promoted. Only after that will they be cleaned up. This
    only happens for fibers that haven't finished and are not reachable
    anymore, so this is not a huge issue.
Commits on May 27, 2013
  1. @dbussink

    Add RBX_GC_STRESS compile time flag to enable GC stress testing

    dbussink authored
    This allows for defining stress testing of the young and / or mature GC.
    This means that the given GC will run as often as possible on every
    possible GC checkpoint. This makes it easier to flush out issues due
    to for example the GC moving objects.
Commits on May 26, 2013
  1. @dbussink

    Define methods as const where appropriate

    dbussink authored
    This makes them explicit about not modifying the current receiving
    object. Also removes a few unused pieces of code that were still
    lingering in here.
  2. @dbussink

    Cleanup headers for builtin types

    dbussink authored
    This makes header inclusion more consistent and loads less headers for
    cases where they aren't needed.
Commits on May 15, 2013
  1. @dbussink

    Remove FiberData handling from FiberStacks

    dbussink authored
    By using FiberStacks as the point to GC FiberData structures, this was
    keeping Fibers alive that went out of scope and would never resume
    anymore. This would result in an effective memory leak since this data
    would never be cleaned up.
    Take for example the following code:
    def foo
      fiber = { Fiber.yield }
    The fiber local here goes out of scope and should be GC'ed. But since it
    never finished, the previous logic would keep this alive and the fiber
    would never be garbage collected.
    Moving the logic to Fiber itself makes this much more simple and also
    GC's this fiber properly for this case.
  2. @dbussink

    Use consistent naming in #include directives

    dbussink authored
    We don't prefix includes with vm/ in most places since that's in the
    include path, so use these consistent by removing this prefix where it
    was still used.
  3. @dbussink

    Add additional GC debugging that is disabled by default

    dbussink authored
    This is some very basic GC debugging that I've been using. It basically
    scans the current call frames after a GC to see if the values referenced
    there and on the interpreter scan are updated properly.
    This was mainly used to debug world halting issues before, still had it
    around and thought it would be useful to add so other can enable this as
    well for certain cases. The overhead is fairly minimal, only adding a
    small time to GC time and no overhead when not GC'ing.
Commits on May 7, 2013
  1. @dbussink

    Also use computed offset for Tuple

    dbussink authored
    Same reasoning applies here as to ByteArray, alignment can result in
    different layouts so using computed layouts works around this.
Commits on Apr 30, 2013
  1. @dbussink

    Use different way of storing call site information

    dbussink authored
    When we update the call site with a new object object, we need to be
    able to through the write barrier for storing the new call site. The
    easiest way is to store the compiled code object and the instruction
    pointer, so we can use that for storing a new object on the machine code
  2. @dbussink

    Add support for custom call sites for respond_to

    dbussink authored
    This sets up a new type of call site for respond_to? calls at the place
    where respond_to? is called. Currently it only stores the last symbol
    and visibility tag that is has seen and returns the cached value if they
Commits on Apr 29, 2013
  1. @dbussink

    Generate global symbol names for primitives

    dbussink authored
    Before the primitive hookup logic actually took around 0.2s on my system
    of the startup time. This was due to how the algorithm works, basically
    resulting in number of primitives squared symbol lookups.
    With generating these names like this, we remove the string to symbol
    lookup needed, resulting in 0.2s faster startup on my system.
Commits on Apr 14, 2013
  1. @dbussink

    Use symbol() on state everywhere

    dbussink authored
    Also adds the specific length for generated code where we know the
    length of the symbol anyway, so it doesn't have to be calculated. This
    also prevents the need for the original method in VM to setup a State
Commits on Apr 9, 2013
  1. @dbussink

    Pass down CallFrame into methods that might GC

    dbussink authored
    This ensures that we always have the proper call_frame passed down, so
    we never see an old call frame when doing a GC. This style also prevents
    issues like this for the future.
Commits on Jan 23, 2013
  1. @dbussink

    Cleanup of using stack attention

    dbussink authored
    The previous change still had the stack check at the beginning of a
    compiled code which caused the problems with the debugger. This change
    properly removes all these checks.
  2. @brixen

    Revert db8ab9a. Fixes #2130.

    brixen authored
    There may be a refactoring possible here but for now it's best to
    have the debugger functioning.
Commits on Jan 11, 2013
  1. @dbussink

    Introduce new data structure that the JIT needs access to

    dbussink authored
    The JIT needs to be told about certain fields so we can do faster checks
    for whether we have any interrupts scheduled or the stack overflows.
    This refactor allows for teaching the JIT about this structure without
    having to know the total VM layout, which is fairly complicated.
Something went wrong with that request. Please try again.