Commits on Mar 26, 2013
  1. Set hits to 0 for inline block's JITMethodInfo

    This fixes the following valgrind error:
        ==13303== Thread 4:
        ==13303== Conditional jump or move depends on uninitialised value(s)
        ==13303==    at 0x7826ED: rubinius::Inliner::inline_for_class(rubinius::Class*, int) (inline.cpp:159)
        ==13303==    by 0x782312: rubinius::Inliner::consider_mono() (inline.cpp:35)
        ==13303==    by 0x7A9EFE: rubinius::JITVisit::visit_send_stack(unsigned long, unsigned long) (jit_visit.hpp:1481)
        ==13303==    by 0x7A1CD6: rubinius::VisitInstructions<rubinius::JITVisit>::dispatch(int) (jit_visit.hpp:1565)
        ==13303==    by 0x7A1426: rubinius::jit::Walker::call(rubinius::OpcodeIterator&) (jit_builder.cpp:554)
        ==13303==    by 0x7A11B4: void rubinius::jit::ControlFlowWalker::run<rubinius::jit::Walker>(rubinius::jit::Walker&) (control_flow.hpp:49)
        ==13303==    by 0x79FB30: rubinius::jit::Builder::generate_body() (jit_builder.cpp:591)
        ==13303==    by 0x788576: rubinius::Inliner::emit_inline_block(rubinius::JITInlineBlock*, llvm::Value*) (inline.cpp:648)
        ==13303==    by 0x78809A: rubinius::Inliner::inline_block(rubinius::JITInlineBlock*, llvm::Value*) (inline.cpp:284)
        ==13303==    by 0x7AD231: rubinius::JITVisit::visit_yield_stack(unsigned long) (jit_visit.hpp:2709)
        ==13303==    by 0x7A1E55: rubinius::VisitInstructions<rubinius::JITVisit>::dispatch(int) (instruction_visitors.hpp:62)
        ==13303==    by 0x7A1426: rubinius::jit::Walker::call(rubinius::OpcodeIterator&) (jit_builder.cpp:554)
    This valgrind error is introduced by this commit:
        Don't inline calls for not often called methods
    committed Mar 25, 2013
Commits on Mar 25, 2013
  1. Fix File.basename and File.extname

    Makes sure we treat the strings here as all binary, since we only have
    to search for direct matches and work with those. Prevents having to
    convert back and forth to character vs. byte indexes all the time and we
    already have the helpers for working with this byte based.
    Fixes #2227
    dbussink committed Mar 25, 2013
  2. Add spec for File.basename and File.extname

    Verifies the behavior when filenames have names with multibyte
    dbussink committed Mar 25, 2013
  3. Fix indent

    committed Mar 25, 2013
  4. Fix thread safety issue for flushing variable scopes

    There was a race condition when flushing the variable scope, because
    another thread might already see isolated set to true, before the heap
    locals were properly initialized.
    This result in this other thread seeing nil as the local value instead
    of the proper value. This commit changes the flushing strategy to be
    both safe for reads and writes of the locals.
    The first step is to delay the allocation of the heap locals tuple. We
    then atomically indicate that this scope uses heap locals. If any other
    thread also wants to use the scope, it will spin until the heap locals
    have been allocated. Spinning for both the read and write ensures that
    we don't see any intermediate state during the move from stack to heap
    locals. This means no writes are lost and no stale reads occur.
    We then create the heap locals and only store then in the heap_locals_
    ivar after initializing them, so any reads or writes will see the proper
    locals and write to the correct slots.
    Fixes #2124
    dbussink committed Mar 25, 2013
Commits on Mar 24, 2013
  1. Merge pull request #2231 from kachick/update-spec-tags

    Remove disused tags in String for 1.9+
    jc00ke committed Mar 24, 2013
  2. Merge pull request #2230 from kachick/fix-array-delete

    Fix Array#delete for 1.9
    jc00ke committed Mar 24, 2013
  3. Fix Array#delete for 1.9

    kachick committed Mar 24, 2013
  4. Remove disused tags

    kachick committed Mar 24, 2013
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

    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.
    dbussink committed Mar 22, 2013
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

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

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

    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
    dbussink committed Mar 21, 2013
  5. Setup self class for block based on creator info

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

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

    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
    dbussink committed Mar 20, 2013
  2. Merge pull request #2218 from adzankich/io19_typo

    Fix typo in io19.rb
    Robert Gleeson committed Mar 20, 2013
  3. Fix typo

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

    brixen committed Mar 20, 2013