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: 1edbd92c2b86
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ca5578279566
Choose a head ref
  • 2 commits
  • 6 files changed
  • 1 contributor

Commits on Aug 9, 2017

  1. Copy the full SHA
    f11b413 View commit details
  2. Simplify case/when eqq logic and enlist in normal invocation.

    Most case/when will have neither an undefined case value (for bare
    case statements) nor multiple values for a given when (splatted)
    so in those cases we can simply do a plain eqq call + isTrue. The
    unusual cases will still go to the old isEQQ logic, so there may
    be value in optimizing that path later.
    
    The main logic in isEQQ is the processing of a splatted array of
    when values in sequence, and a small bit of logic that simply
    checks truthiness of the when value for a bare case statement.
    
    This change reduces the bytecode for all case/when, and by more
    than half for the typical form. It also allows the === call to be
    optimized with invokedynamic like a normal call.
    headius committed Aug 9, 2017
    Copy the full SHA
    ca55782 View commit details
Loading