Switch branches/tags
Commits on Feb 13, 2013
  1. Correctly override #source_location at Proc::Method

    ryoqun committed Feb 13, 2013
    Also, to make it happen, this versionizes Proc::Method#inspect.
  2. Remove stale comment

    ryoqun committed Feb 12, 2013
  3. Merge pull request #2150 from kachick/fix_improve-range_each

    brixen committed Feb 13, 2013
    Fix Range#each for Symbol elements and some simplifications
  4. Rewrote String#chomp[!] specs.

    brixen committed Feb 13, 2013
  5. More Kernel.chop[!] specs.

    brixen committed Feb 7, 2013
Commits on Feb 12, 2013
  1. Added raytracer benchmark

    hosiawak committed Feb 12, 2013
  2. Fix check_if_positive_fixnums

    dbussink committed Feb 12, 2013
    This check passed wrongly when neither of the arguments was a fixnum.
    This changes the check to make sure that or'ing and and'ing the tags
    both result in a tag equal to the fixnum tag.
    Fixes #2153
Commits on Feb 11, 2013
  1. Also compile blocks without a parent

    dbussink committed Feb 11, 2013
    These blocks are created for example when using eval(). We create a
    block environment in those cases that we evaluate the code in.
  2. Improve debugging information inside the JIT

    dbussink committed Feb 11, 2013
    Also removes a duplicate debugging output.
  3. Adjust Range#each for X18

    kachick committed Feb 11, 2013
    Ruby 1.8.7 can not generate Range objects from Symbol elements
    :a..:b #=> ArgumentError: bad value for range
    This commit removes verbose dealing for Symbol on X18
Commits on Feb 10, 2013
  1. Improve type checking for array and binding

    dbussink committed Feb 10, 2013
    Checking respond_to? is relatively expensive, so when we don't have to
    coerce a type anyway, we shouldn't have to check for it.
  2. Introduce fast path for nested constants

    dbussink committed Feb 10, 2013
    We didn't have caching for constant lookup for nested constants, such as
    Rubinius::VariableScope. This means that when a constants was referenced
    in that way, it would not cache the VariableScope constant.
    This commit introduces a constant cache very similar to not nested
    constants. It also stores the scope it was used under, so we can
    properly validate the have the correct constant. Also specialization is
    added to the JIT to have a fast path for these cached constants if they
    are still valid.
  3. Setup intermediate attr_writer and attr_reader

    dbussink committed Feb 10, 2013
    This ensures that classes loaded in kernel/common such as Binding also
    properly track the ivars for attr_* methods. Before Binding didn't get
    the proper optimized memory layout, significantly affecting performance
    of create a binding.
Commits on Feb 9, 2013
  1. Use packed ivar setting in inline accessor writers

    dbussink committed Feb 9, 2013
    This can use the fast path if the instance variable is a packed ivar and
    is writter with an attr_writer. This also uses the typed check for slots
    like set_ivar does so it properly fails when a wrong type is set.
  2. Add JIT primitives for often used methods

    dbussink committed Feb 9, 2013
    Creating a binding happens often in for example templating libraries
    where the binding is used for evaluating the template.
Commits on Feb 8, 2013
  1. Allow JIT to run GC dependent

    dbussink committed Feb 8, 2013
    This also makes sure that when we fork, we stop at a safe point to do
    this. Otherwise we might fork in the middle of generating JIT code,
    putting LLVM in a state that can cause problems, for example if it holds
    locks internally.