Skip to content
Commits on Apr 26, 2013
  1. Add specs tags for 1.8 specs

    committed Apr 12, 2013
Commits on Mar 29, 2013
  1. Add spec for require after $LOAD_PATH change

    When developer add something to $LOAD_PATH and require once again the
    same file ruby should not require it once again.
    
    Example:
    
    Rubinius have lib/racc/parser.rb file. And this file will require after
    bootstrap.
    
      require 'racc/parser'
    
    After require 'rubygems' $LOAD_PATH will change and now we have access
    to two version on 'racc/parser' (from Rubinius /lib and /gems/racc).
    When user try to require once again rubinius will search via $LOAD_PATH
    and hit racc/parser from _RUBYGEMS_. In ruby 1.9 mode all paths are
    expanded so rubinius will require once again 'racc/parser'. This is
    because in $LOADED_FEATURES we can find only
    "[rubinius_path]/lib/racc/parser.rb". When CodeLoader will find file in
    $LOAD_PATH ([rubygems]/racc/parser.rb) and full path is not part of
    $LOADED_FEATURES this file will be load once again.
    committed Aug 31, 2012
  2. @dbussink

    Merge pull request #2244 from ryoqun/dibuilder-memory-leak

    Plug memory leaks of DIBuilder
    dbussink committed Mar 29, 2013
  3. @ryoqun

    Plug memory leaks of DIBuilder

    Checked with LLVM 3.0, 3.1, 3.2, 3.3
    ryoqun committed Mar 29, 2013
Commits on Mar 28, 2013
  1. @dbussink

    Use set inflated header helper where appropriate

    We can use the set_inflated_header method in these two places instead of
    writing the same code manually.
    dbussink committed Mar 28, 2013
  2. @dbussink

    Use inflation functions consistently

    We don't pass down the objectmemory to other similar methods, so don't
    do it for this one either. Also move find_index to the header so it can
    be inlined in places where it's used.
    dbussink committed Mar 28, 2013
  3. @dbussink

    Make error message more explicit about what the problem is

    Apparently it still wasn't clear what the issue was, given we still got
    issues opened on this problem. Make it even more explicit so people
    hopefully read it all now and know how to solve it.
    dbussink committed Mar 28, 2013
  4. @dbussink

    Switch to LLVM 3.2 as the default for prebuilts

    There are now prebuilt LLVM images for OS X 10.6, 10.7, 10.8 and Linux
    versions based on GCC 4.1, 4.2, 4.3, 4.4, 4.5, 4.6 and 4.7, both for
    i686 and x86_64 architectures. This should cover most of the systems
    that people use.
    dbussink committed Mar 28, 2013
  5. @dbussink

    Fix building for LLVM from source

    Also removes old unused debugging tasks and uses system() like Daedalus
    does.
    dbussink committed Mar 28, 2013
  6. @ryoqun
  7. @ryoqun

    Don't include llvm/Module.h twice

    ryoqun committed Mar 28, 2013
Commits on Mar 27, 2013
  1. @dbussink

    Increase default IOBuffer size to 32k

    Results in another significant performance increase for File.read, since
    it has to flush the buffer fewer times.
    dbussink committed Mar 27, 2013
  2. @dbussink

    Introduce ByteArray::create_dirty and use where safe

    This allocates a ByteArray without zero'ing all the memory. This is for
    example useful when used in String::create, where the memory will be
    overwritten anyway. Other cases are where ByteArray used as backing
    store for Bignum and Regexp.
    dbussink committed Mar 27, 2013
  3. @dbussink

    Use a larger stack buffer when filling IOBuffer

    Increases performance of reading IO, for example for File.read
    dbussink committed Mar 27, 2013
  4. @dbussink

    Clear all allocated bytes in ByteArray::create

    This makes sure there are no non zero bytes in the resulting memory,
    which could result in information leakage for example that people would
    not expect.
    dbussink committed Mar 27, 2013
  5. @dbussink

    Ensure that the saved TZ is actually 0 terminated

    Valgrind caught this by marking it as an uninitialized jump, because
    strcmp was used later on.
    dbussink committed Mar 27, 2013
  6. @dbussink

    Remove unneeded OnStack in VariableScope

    The original problem was not due to the variable not being marked
    OnStack, but because of another initialization ordering issue. This was
    added during debugging, but should have been removed before committing
    the code.
    dbussink committed Mar 27, 2013
  7. @dbussink
  8. @dbussink
  9. @dbussink

    Merge pull request #2232 from YorickPeterse/master

    Fix for retrieving UnboundMethod parameters
    dbussink committed Mar 27, 2013
  10. @dbussink

    Use a general reference check, not only cTrue

    There shouldn't be any other immediates set than cTrue, but using a
    reference check is a better match for the needed behavior and would
    prevent a crash if anyone manages to set another immediate.
    dbussink committed Mar 27, 2013
  11. @ryoqun

    Merge pull request #2239 from ryoqun/finalizer-gc-crash

    Fix Crash with ObjectSpace.define_finalizer(obj)
    ryoqun committed Mar 26, 2013
Commits on Mar 26, 2013
  1. @carlosgaldino

    Merge pull request #2238 from stouset/getbyte-gets-bytes-not-chars

    StringIO#getbyte should work in terms of bytes rather than characters
    carlosgaldino committed Mar 26, 2013
  2. @ryoqun

    Fix Crash with ObjectSpace.define_finalizer(obj)

    This code produces a crash:
    
        class Foo
          def __finalize__
          end
        end
        foo = Foo.new
    
        ObjectSpace.define_finalizer(foo)
        GC.run(true)
    
    When run:
    
        ---------------------------------------------
        CRASH: A fatal error has occurred.
    
        Backtrace:
        ./bin/rbx[0x4a5370]
        /lib/x86_64-linux-gnu/libc.so.6(+0x364a0)[0x7f5ab242e4a0]
        ./bin/rbx(_ZN8rubinius7BakerGC15walk_finalizersEv+0x69)[0x619bd9]
        ./bin/rbx(_ZN8rubinius7BakerGC7collectERNS_6GCDataEPNS_17YoungCollectStatsE+0x3a1)[0x61a031]
        ./bin/rbx(_ZN8rubinius12ObjectMemory13collect_youngERNS_6GCDataEPNS_17YoungCollectStatsE+0x66)[0x549de6]
        ./bin/rbx(_ZN8rubinius12ObjectMemory13collect_maybeEPNS_5StateERNS_11GCTokenImplEPNS_9CallFrameE+0x160)[0x54a170]
        ./bin/rbx(_ZN8rubinius2VM13collect_maybeERNS_11GCTokenImplEPNS_9CallFrameE+0x3f)[0x57f2ff]
        ./bin/rbx(_ZN8rubinius6System11vm_gc_startEPNS_5StateERNS_11GCTokenImplEPNS_6ObjectEPNS_9CallFrameE+0x31)[0x5e5091]
        ./bin/rbx(_ZN8rubinius10Primitives11vm_gc_startEPNS_5StateEPNS_9CallFrameEPNS_10ExecutableEPNS_6ModuleERNS_9ArgumentsE+0xcf)[0x50e20f]
        ...
    
    ObjectSpace.define_finalizer stores cTrue as a finalizer placeholder in this
    case. And when GC runs, it doesn't consider there may be immediates and
    dereferences that cTrue. Thereby, a crash is waiting for you. :p
    ryoqun committed Mar 27, 2013
  3. @stouset

    Define getbyte in terms of bytes

    stouset committed Mar 26, 2013
  4. @stouset

    Add failing specs for issue #2215

    stouset committed Mar 26, 2013
  5. @dbussink

    Don't return before waking up condition

    Fixes #2220
    dbussink committed Mar 26, 2013
  6. @dbussink

    Don't setup GC state around waiting for JIT requests in sync mode

    The JIT thread itself managed the GC state of LLVMState, so we shouldn't
    interfere with that logic from the compile_soon logic that actually gets
    executed by another thread.
    
    Fixes #2226
    dbussink committed Mar 26, 2013
  7. @dbussink

    Make StringIO operations byte based

    StringIO works like an IO object and basically operates on strings as
    them being byte arrays without encodings. This fixes a bunch of test
    failures on Nokogiri as well, which uses a StringIO internally and got
    results back with the wrong encoding.
    
    Also fixes #2163 because the wrong encoding came out, because the
    encoding aware methods used in StringIO before would change the encoding
    if a ASCII-8BIT string was written to the StringIO. With this change,
    they retain the original encoding, so things come out in the right
    encoding from Nokogiri.
    dbussink committed Mar 26, 2013
  8. @dbussink
  9. @dbussink
  10. @dbussink

    Prevent having to search twice when adding handle to slow handle set

    This uses the return value of the insert to determine if the value was
    already in the set or not, so we only reference it if it was newly
    added.
    dbussink committed Mar 26, 2013
  11. @dbussink

    Use std::set since it never invalidates on insert()

    When flushing handles, it can happen that new handles are added to the
    set. This mainly happens for cases where we flush an RArray handle,
    because that also gets handles for all elements in the array.
    
    std::tr1::unordered_set doesn't give the insert guarantees we need,
    namely:
    
    Iterator validity
    
    On most cases, all iterators in the container remain valid after the
    insertion. The only exception being when the growth of the container
    forces a rehash. In this case, all iterators in the container are
    invalidated.
    
    So if a rehash is forced, all iterators are invalid. This means we have
    undefined behavior that can result for example in crashes (which was
    happening in the Nokogiri test suite for example).
    
    std::set explicitly states it doesn't affect iterator validity, so it
    doesn't suffer from this problem. The downside is less performant
    insert() but there isn't really another option without redoing this
    completely.
    dbussink committed Mar 26, 2013
  12. @dbussink

    Merge pull request #2235 from ryoqun/valgrind-error-hits

    Set hits to 0 for inline block's JITMethodInfo
    dbussink committed Mar 26, 2013
Something went wrong with that request. Please try again.