Switch branches/tags
Commits on Mar 25, 2013
Commits on Mar 24, 2013
  1. Cleaned up code for retrieving method parameters.

    YorickPeterse committed Mar 24, 2013
    The use of Array#map would require the use of Array#compact to get rid of
    NilClass values in the parameters collection. An easier (and probably a bit
    faster way) of doing this is to simply use Array#each and push values into
    another Array.
    Signed-off-by: Yorick Peterse <>
  2. Tests for correctly retrieving block arguments.

    YorickPeterse committed Mar 24, 2013
    Signed-off-by: Yorick Peterse <>
  3. Fix for retrieving UnboundMethod parameters.

    YorickPeterse committed Mar 24, 2013
    Before this commit the code tasked with retrieving method parameters would
    produce incorrect results. For example, take the following method definition:
        def example(number, &block)
          another_number = 20
    This would lead to the following output:
        [[:req, :number], [:block, :block], [:block, :another_number]]
    This was caused due to everything that remains (after processing other argument
    types) being assigned as block arguments.
    This patch fixes this issue by keeping track of the index of the block argument
    and comparing this to the list of local variables similar to how splat
    arguments are handled.
    Signed-off-by: Yorick Peterse <>
Commits on Mar 23, 2013
  1. Fix typos.

    carlosgaldino committed Mar 23, 2013
  2. Fixed Range#last for 1.9.

    brixen committed Mar 23, 2013
Commits on Mar 22, 2013
  1. Setup type guards for reading and writing ivars

    dbussink committed Mar 22, 2013
    We must ensure that the self object we see is actually of the same class
    that we optimized for. These types can be different, for example for
    subclasses of a certain class that might end up with a different memory
    layout for variables.
Commits on Mar 21, 2013
  1. Regen'd website.

    brixen committed Mar 21, 2013
  2. Merge pull request #2216 from ryoqun/oprofile-blog-post-final

    ryoqun committed Mar 21, 2013
    Add a blog post for profiling JIT-ted code with OProfile
  3. Remove unused extra_ field

    dbussink committed Mar 21, 2013
  4. Allow for compiled blocks to also have a receiver class

    dbussink committed Mar 21, 2013
    Before the additional data was either a block environment or a receiver
    class, but having a receiver class is also useful for compiling blocks.
    This matters for example for inlining instance variable reads if just a
    block is compiled.
    Improves benchmark/tiers/0/bm_vm1_ivar.rb significantly:
    === bin/rbx ===
      ivar read 58492061.6 (±3.0%) i/s -  289205872 in   4.948913s
       ivar set 41165744.5 (±2.6%) i/s -  204915000 in   4.982051s
    === bin/rbx ===
      ivar read 266371814.2 (±5.6%) i/s - 1283690000 in   4.836606s
       ivar set 224551559.4 (±4.0%) i/s - 1110346272 in   4.953298s
  5. Setup self class for block based on creator info

    dbussink committed Mar 21, 2013
    This allows the JIT to inline ivar reads inside inlined blocks, for
    example in cases like this:
    def foo
      ary.each {|e| e == @bar }
  6. Print class name we read ivar from in JIT debugging

    dbussink committed Mar 21, 2013
    Make it easier to see what the class is we guard the ivar read against.
Commits on Mar 20, 2013
  1. Remove exports for symbols that are available for libc_nonshared

    dbussink committed Mar 20, 2013
    Apperently on RHEL / CentOS 5.9 this breaks the compile since these
    symbols are exported there. Also checked against Ubuntu and the symbols
    are available there too.
    Fixes #2217
  2. Merge pull request #2218 from adzankich/io19_typo

    r-obert committed Mar 20, 2013
    Fix typo in io19.rb
  3. Fix typo

    zankich committed Mar 20, 2013
  4. Regen'd website.

    brixen committed Mar 20, 2013
  5. Blog post: PDX Summit Recap.

    brixen committed Mar 20, 2013
  6. Use a special update method for updating GC references in inline caches

    dbussink committed Mar 20, 2013
    Problem here was that using assign() also resets the hit counters,
    leading to wrong heuristics on whether a method is called often or not.
    In certain cases this could lead to hot methods not being inlined.
  7. Compiled code only needs to be on stack if internalized

    dbussink committed Mar 20, 2013
    We only need to mark this as on stack when internalizing, since only
    internalize could cause a lock and needs the compiled code object to be
  8. Remove unused Ruby Agent side

    dbussink committed Mar 20, 2013
    We don't have anything of this at the Ruby side atm, so removing it for
    now. We should see how we want to handle this in the future and set it
    up properly.
    Fixes the hang mentioned in #2197