Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: f437c73fc71d
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 5f715f0ea303
Choose a head ref
  • 5 commits
  • 8 files changed
  • 1 contributor

Commits on Feb 1, 2016

  1. Improve constant caching and factor logic out.

    ConstantLookupSite now handles all constant lookup cases:
    
    * Lexical+hierarchical search in searchConst
    * Hierarchical search in inheritanceSearchConst
    * LexicalSearch in lexicalSearchConst (for defined?)
    
    Up to now, all three forms would cache one recent constant and
    replace that binding on invalidation. This is obviously slow
    when there are more than one possible constant value (lookups in
    different hierarchies, for example) so I have modified it to chain
    a series of bindings. This chain is currently not limited, and
    that should be fixed; but the current logic improves red/black by
    around 12%.
    headius committed Feb 1, 2016
    Copy the full SHA
    d0a40ba View commit details
  2. Bind attribute accessors as direct instance variable accesses.

    This works for both field-based (reified) and array-based instance
    variables. Performance of red/black improves by about 30% with
    this change.
    headius committed Feb 1, 2016
    Copy the full SHA
    628d386 View commit details
  3. Bind Class#new directly to initialize.

    The logic here to bind initialize when calling the basic Class#new
    is as follows:
    
    * Filter the incoming self (the class we're newing) with the class
      allocator.
    * Fold in a call site for the initialize method. This binds like
      a normal dynamic call with all appropriate guards.
    * Return the self produced by the allocate call.
    
    With this change, any Class#new call that uses the base new logic
    should go directly via MethodHandles to the associated initialize
    method, allowing everything to inline.
    headius committed Feb 1, 2016
    Copy the full SHA
    b4b7cd4 View commit details
  4. Copy the full SHA
    38ebd33 View commit details
  5. Bump up src dist size check.

    headius committed Feb 1, 2016
    Copy the full SHA
    5f715f0 View commit details
Loading