-
-
Notifications
You must be signed in to change notification settings - Fork 925
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
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: 77e3fa79abad
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ef2836714177
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 2 commits
- 1 file changed
- 1 contributor
Commits on May 10, 2017
-
Also increment thresholds in indy sites for method_missing.
Fixes #4596. JRuby currently does not cache anything for method_missing calls (i.e. calls to methods that do not exist on the target class's method table). Instead, after discovering the missing method, it proceeds down a slow lookup path, dispatching to method_missing with a symbolic method name. However this logic still attempts to acquire a SwitchPoint from the target class, since that SP must be acquired before the initial method lookup to ensure proper invalidation ordering. Normally, this isn't a problem. If the class is still relatively static, the SwitchPoint will be created once, and then the cost of calling method_missing is the same as for non-indy. However for type very rapidly. This led to a large number of unused SwitchPoint being created, one for each class. And since the method_missing path never cached anything, it never updated call site thresholds, resulting in call sites that would continue this logic forever. Normal calls, if they fail repeatedly, will eventually fail the entire site and revert to non-indy method dispatch (currently a simple monomorphic cache). This patch lifts the threshold-bumping out of the caching logic so it can also be used by method_missing dispatches. This allows repeated method_missing calls against different classes to also fail the site, reverting it to non-indy behavior. With this patch, the benchmark in #4596 runs faster with indy than without, as expected.
Configuration menu - View commit details
-
Copy full SHA for 2c211bf - Browse repository at this point
Copy the full SHA 2c211bfView commit details -
Merge pull request #4602 from headius/indy_mm_cache_bust
Also increment thresholds in indy sites for method_missing.
Configuration menu - View commit details
-
Copy full SHA for ef28367 - Browse repository at this point
Copy the full SHA ef28367View commit details
There are no files selected for viewing