Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Sep 1, 2013
  1. @dbussink

    Use primitive for signbit

    dbussink authored
    The FFI approach would lead to Valgrind erroring with jumps on
    uninitialized values. This was due to GCC optimizations that would be
    done with the signbit macro.
    
    With this approach we don't get these errors and don't have to add the
    ffi_util method.
Commits on May 22, 2013
  1. @dbussink
  2. @dbussink

    Introduce File::Stat as a primitive

    dbussink authored
    This was previously implemented using FFI which has some inherent
    performance problems. The problem is that FFI allocates the used struct
    for stat() using malloc and frees with free which causes heavy churn
    because of this.
    
    This could be aleviated by using GC managed memory for this, but
    combined with how FFI currently works that would mean either having to
    mature allocate the data or adding new FFI features for allowing a call
    to be made without going GC independent.
    
    Mature allocation isn't something we'd want for stat() calls since stat
    objects are a perfect example of objects that often only live very short
    and should be cleaned up quickly.
    
    Introducing both GC managed memory for FFI calls using structs and
    allowing FFI calls to be made without going GC independent so the
    managed memory doesn't move is a big change, so taking this approach for
    now is easier. We should revisit this if we improve FFI to make doing
    this with FFI easier / possible. Another tricky part about stat() is how
    it binds regarding 64 bit filesystems. It uses macro's for that if you
    compile your app, so we had to have helpers for this already.
    
    And now for the performance numbers of this change.
    
    Before:
    === bin/rbx ===
               File.stat   286796.1 (±2.7%) i/s -    1447040 in   5.049272s
    
    After:
    === bin/rbx ===
               File.stat   722130.3 (±2.0%) i/s -    3633256 in   5.033514s
Commits on Nov 25, 2012
  1. @dbussink

    Fix some issues with FFI handling

    dbussink authored
    This removes Rubinius specific STATE and Object* handling which was
    broken to begin with. It also fixes the case where we have one less
    formal argument if we pass a block as a callback.
Commits on May 11, 2012
  1. @ryoqun

    Remove trailing white spaces

    ryoqun authored
Commits on Mar 10, 2012
  1. @jeremyz
Commits on Jan 9, 2012
  1. @jfirebaugh

    Attach signbit via FFI

    jfirebaugh authored
Commits on Jan 4, 2012
  1. @dbussink

    Nuke usused FFI functions

    dbussink authored
Commits on Nov 13, 2011
  1. @dbussink

    Add configure option for globals and properly check for tzname etc.

    dbussink authored
    This allows us to know when we have tzname available as a fallback
    to finding the timezone name for platforms that don't have tm.tm_zone.
Commits on Nov 12, 2011
  1. @dbussink

    Solaris build fixes

    dbussink authored
  2. @dbussink

    Detect available of struct tm members

    dbussink authored
    On Solaris this is also not available, so just simply checking
    for Windows doesn't work. Detecting these struct members during
    configure time is a more robust solution so we can use if it's
    available.
Commits on Jan 18, 2011
  1. @brixen

    Fixes to compile ffi_util.cpp.

    brixen authored
Commits on Jan 16, 2011
  1. @brixen
  2. @leavengood @brixen

    Haiku specific fix: add major and minor defines if they aren't there.

    leavengood authored brixen committed
    Signed-off-by: Brian Ford <bford@engineyard.com>
Commits on Oct 18, 2010
  1. @brixen
Commits on Sep 28, 2010
  1. @brixen
Commits on Sep 22, 2010
  1. Fix a few more FFI incompat issues

    Evan Phoenix authored
Commits on May 29, 2010
  1. FFI API revamp, take 1.

    Evan Phoenix authored
Commits on Nov 23, 2009
  1. @dbussink
Commits on Oct 16, 2008
  1. @drbrain
Commits on Sep 13, 2008
  1. @rue
Commits on Sep 12, 2008
  1. @dgtized
Something went wrong with that request. Please try again.