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

Commits on Mar 2, 2018

  1. Start reducing dependence on dynscope stack.

    Except for places where we need out-of-band access to the caller
    scope (eval forms, binding capture, embedding, static scope
    accessors like nesting and refinements) we realized today that
    there's very few needs for the dynamic scope stack in
    ThreadContext. This commit attempts to start reducing dependence
    on that stack.
    
    * Logic for pushing and popping remains in this commit. The focus
      here is to eliminate out-of-band access to the scope via
      getCurrentScope if the scope can be acquired another way.
    * All interpreter paths are now passed the dynamic scope they
      should run aaginst, or null if they have their own protocol for
      constructing the scope.
    * JIT-compiled code always constructs its own scope.
    
    There's one other use of the dynamic scope stack we may have more
    trouble eliminating: the logic that walks up the stack checking
    for a non-local jump targget, in order to raise LocalJumpError at
    the appropriate level. We would need some other way to track
    whether the targget scope is still in play.
    
    This commit may reduce slightly the call overhead for interpreted
    bodies, since none of them have to go through ThreadContext to
    access the execution scope.
    headius committed Mar 2, 2018
    Copy the full SHA
    1caf010 View commit details
  2. Copy the full SHA
    6804131 View commit details
  3. Copy the full SHA
    f2d91a1 View commit details
Loading