Skip to content
Commits on Mar 27, 2013
  1. dlclose

    committed Mar 27, 2013
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)
        ==13303==
    
    This valgrind error is introduced by this commit:
    
    a787d83
        Don't inline calls for not often called methods
    committed Mar 25, 2013
Commits on Mar 25, 2013
  1. @dbussink

    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. @dbussink

    Add spec for File.basename and File.extname

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

    committed Mar 25, 2013
  4. @dbussink

    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. @dbussink
  2. @jc00ke

    Merge pull request #2231 from kachick/update-spec-tags

    Remove disused tags in String for 1.9+
    jc00ke committed Mar 24, 2013
  3. @jc00ke

    Merge pull request #2230 from kachick/fix-array-delete

    Fix Array#delete for 1.9
    jc00ke committed Mar 24, 2013
  4. @kachick

    Fix Array#delete for 1.9

    kachick committed Mar 25, 2013
  5. @kachick

    Remove disused tags

    kachick committed Mar 25, 2013
Commits on Mar 23, 2013
  1. @carlosgaldino

    Fix typos.

    carlosgaldino committed Mar 23, 2013
  2. @carlosgaldino
  3. @carlosgaldino
  4. @brixen

    Fixed Range#last for 1.9.

    brixen committed Mar 22, 2013
  5. @brixen
  6. @brixen
Commits on Mar 22, 2013
  1. @dbussink

    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
  2. @dbussink
Commits on Mar 21, 2013
  1. @brixen

    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. @dbussink
  4. @dbussink
  5. @dbussink

    Remove unused extra_ field

    dbussink committed Mar 21, 2013
  6. @dbussink

    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:
    
    Before:
    === 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
    
    After:
    === 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
  7. @dbussink

    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 }
    end
    dbussink committed Mar 21, 2013
  8. @dbussink

    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
  9. @dbussink
  10. @brixen
Commits on Mar 20, 2013
  1. @brixen
  2. @dbussink

    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
  3. Merge pull request #2218 from adzankich/io19_typo

    Fix typo in io19.rb
    Robert Gleeson committed Mar 20, 2013
  4. @zankich

    Fix typo

    zankich committed Mar 20, 2013
Something went wrong with that request. Please try again.