-
-
Notifications
You must be signed in to change notification settings - Fork 925
Comparing changes
Open a pull request
base repository: jruby/jruby
base: 77be8e0f3869^
head repository: jruby/jruby
compare: 0e3c56d40c3c
Commits on Apr 27, 2017
-
Configuration menu - View commit details
-
Copy full SHA for 77be8e0 - Browse repository at this point
Copy the full SHA 77be8e0View commit details -
Configuration menu - View commit details
-
Copy full SHA for c03f49a - Browse repository at this point
Copy the full SHA c03f49aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9027e0e - Browse repository at this point
Copy the full SHA 9027e0eView commit details
Commits on Apr 28, 2017
-
Configuration menu - View commit details
-
Copy full SHA for aac3d9d - Browse repository at this point
Copy the full SHA aac3d9dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 93e958b - Browse repository at this point
Copy the full SHA 93e958bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9367f58 - Browse repository at this point
Copy the full SHA 9367f58View commit details -
Squashed 'spec/mspec/' changes from 815ee35..8604276
8604276 Explicitly capture the exception rather than relying on $! 4ba7a1c Ensure to load a given config file only once 653a4f2 Return early if $VERBOSE == nil in our Kernel#warn c5493b8 Suppress warning for mruby f00154f Kernel#warn delegates to Warning.warn in 2.5 954054c Use Warning.warn and filter warnings on Ruby >= 2.4 9084b1a Fix failure messages for the complain matcher d800cc0 Add a space after the spinner 2dec262 Remove the :dir option of ruby_exe 422ec3f Remove unused be_valid_DNS_name helper 7409884 Remove unused be_computed_by_function matcher f6752d2 Use a more precise test for SPEC_TEMP_DIR 78c25b6 Remove unused #encode helper 0acde1e Remove unused equal_utf16 matcher 0e051ef Remove ducktype helpers respond_to, does_not_respond_to, undefine and fake! c43b12e Use interpolation cbe5276 Build a single instance of the full Ruby version for version guards 206fb6d Reuse BigEndianGuard for little_endian 0f302fd Implement as_user with SuperUserGuard fb2e2e1 Refactor guards in terms of SpecGuard#run_if and #run_unless 05f61ba Remove unused SpecGuard#=== b3e2274 Revert "New feature: automatic alias detection for shared describes" 3c91dfd Simplify PlatformGuard by replacing .platform? by .os? 0d4c430 Simplify PlatformGuard.os? d764519 Move platform-related guards to PlatformGuard as class methods e7e1c8d Simplify SpecGuard#implementation? 97056be Raise on unknown implementation de6a3db Assign SpecGuard @parameters directly 455b37d Save guards arguments consistently in @parameters 2d80202 Remove old aliases for --target 6bc027d Prefer ! to the not keyword ac10ab7 Remove unused with_tty guard 9304394 Remove unused runner_is/runner_is_not guards 6a3bbba Remove deprecated extended_on guard cbb7e27 Remove compliance guards: compliant_on, not_compliant_on, deviates_on b3089d3 Remove unused unspecified and specified_on guards fc64021 Remove deprecated raise_exception alias c1de623 Remove deprecated have_data matcher 0ba63fe Remove deprecated hash_class and new_hash helpers 65d20c3 Remove deprecated stasy helper 99c8814 Remove singleton_class helper, it is standard Ruby 5cc2cf0 Remove deprecated enumerator_class 8e8988c Remove unused home_directory helper 84f5870 Remove unused hostname helper 5b9f1ed Remove unused method aa103d1 Remove unused dev_null helper 386166f Remove unused #username helper 1c4a2d3 Use ENV instead of shelling out e26e0a3 Remove unused #env helper 1f64bb5 Fix PlatformGuard.opal? 488ee67 Use a sensible implementation for the abstract SpecGuard#match? ae78872 Remove unused SpecGuard#ruby_version_override cc56b44 Remove the --background option 245a9e8 Test that running mspec-run directly works as expected 2c30be2 Share common output in run integration specs 76268e0 Add tool to remove old version guards in ruby/spec 11cb22f Move require 'etc' to where it is needed f64f5ec Use Etc.nprocessors 42e9c9b Update Ruby versions for Travis 55568ea Drop support for Ruby < 2.2 bcfb181 Don't exclude constants from the stdlib in NameMap 1754624 Pass --unguarded in mkspec to also see specs on other platforms 14464e1 Allow to generate specs for Etc with mkspec 3db264b Should fail if any worker failed f764643 Add an intergation test for mspec -j ba0236c Run no more processes than spec files aec10fd Warn about using "" as the end of a version Range 2d4578b Add a few specs for version Range starting with an empty String 06cae5a Deprecate ruby_bug without a version Range 33e7136 Use the helper to hide our own deprecations in tests 6856ff8 Support a version Range for ruby_bug 5404094 Rename the config key for -I to :loadpath 61d2f84 Initialize other config keys in MSpecMain git-subtree-dir: spec/mspec git-subtree-split: 8604276a6cdfd83c85aecfccfe32f6cea8acab8a
Configuration menu - View commit details
-
Copy full SHA for f55cff5 - Browse repository at this point
Copy the full SHA f55cff5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7e0e5c2 - Browse repository at this point
Copy the full SHA 7e0e5c2View commit details -
Squashed 'spec/ruby/' changes from 2e2057a..0db663b
0db663b Fixed Math.log2 for huge Bignums. bc52723 Added {Bignum, Fixnum}.bit_length. aad92e8 Numeric timezone may not be bad 1eb3d2f Add specs for rb_define_module 8e8b5fd Fix SHELL env var passing f7ec5b7 Hide $IGNORECASE warnings 344bd8d Use ruby_exe to reliably spawn a subprocess 946abd5 Remove spec which only works before MRI 2.4.0 e6665ae Add a spec for syntax errors in the script file and -e 497931b Add new method spec with mixed parameter types. 4042b46 Add large number example to String#% binary number format 61acec4 Add String#% %p example with string argument 9a8fd6d Add library specs for the English module ed5046a Updated incomplete String#encoding spec. 279d4e0 Add instance_variable_defined? example testing various types where variable is not defined b89895d Fix typo in spec description 4fefa64 Specs for true and false values being truthy and falsey in C 1d8bcf0 Add another Time#zone bad zone example 6af9b04 Add Module#alias_method spec to assert that aliased methods are == to eachother b2c2eeb Add Kernel#eval negative line number spec 5c0bd7b Add BasicObject#instance_eval example with negative line number 26d35a1 Spec that a splatted Array received in a rest argument is copied 4a8d694 Only use literal values in the expected value 4af8050 Add splat example where splatted array is modified by another argument 1274e6a Add spec to update backtrace array in place 11db149 It starts to look like something to unescape but it ends prematurely. Do not expand (nor crash) c9e7f56 Allow .jar as extension of provided features c1f379e Reduce sleep time in Process.daemon specs 24282dc Method#curry_spec: Be more explicit with simpler syntax ec31710 Move methods used only once closer to their usage 1f537ff Move fixture closer to its only usage ca345d3 Revert "Kerenel#warn no longer splats an array in 2.5 (#382)" (#429) 7beafc0 Handle warnings in MOdule#attr spec b79cf54 Concurrent requires show erroneous circular warnings acb27a7 Expect warnings for circular require c3256dc Fix commented warning net/http specs 897e9b4 No need to save/restore $VERBOSE when using the complain matcher 416ab81 2.5 no longer rescue exceptions of Integer#step to rethrow them as TypeError f125a5d Numeric comparison operators no longer rescue exceptions 14bd5a4 Fix a few issues detected with $VERBOSE = true warnings b53aa1b internal methods are not specs 7190a66 Remove duplicate specs 4753368 Fix some variables which were not availble for specdocs bd885a6 Fix version-dependent warnings 26d13c0 Use the argv helper in getoptlong specs 3ba4551 Fix warnings in IO spec a799f55 Remove continuation specs, continuation is obsolete since 2.2 328c7d8 Fix all warnings 8a491a9 Fix warnings in C-API specs 6227caa Fix remaining warnings in language specs 729a0ec Fix a few warnings in language ee5b6a0 fix warning 863c8ac Expect circular argument warnings eeef0e7 Fix class variable warnings in langauge specs ccaf342 Fix remaining warnings in core 388adda Fix Kernel#=== spec 1ac4d2a Expect warnings from top-level class vars f327217 Add expectations for argument + block warnings 1a42389 Add expectations for Ignoring encoding parameter warnings dc2fd40 Fix a few more constant redefined warnings 4756e8d Avoid 2 already initialized constant warnings faaf5ab Use local variables instead of constants in define_method spec 8341bb2 Catch warning in deprecate_constant spec 3940632 Remove unused constant 4280c78 Use Dir.chdir directly instead of relying on ruby_exe 4b9a0f3 Wrap a few warnings as complain matchers 50357ca Replace deprecated Enumerator.new(obj) with obj.to_enum b416c79 Remove deprecated usage of $KCODE in specs b37650b Inline MSpec helper used only twice in the same file 579055b Avoid be_computed_by_function 8fea4ed Simply perform the action over using weird MSpec helpers 735ee77 Unshare Process#spawn and Process#exec specs 0a56f79 Avoid running #exec-related specs 3 times 5ca04db Avoid running #spawn-related specs 3 times fd91fee Use the full bug version Range as AppVeyor uses an older 2.3.3 Ruby 7b0bf1a Reintroduce bug guard as 2.4.1 is not available on Travis OS X yet 7bbadd1 Update versions 5bb0536 The bug has been fixed in all latest 2.x releases 8ca440d Add spec for identity of String literals in a compare_by_identity Hash c6704df Opal strings are always frozen, avoid dup & clone 556a6db Also exclude AIX from log specs as it was before 9266dc7 Exclude Solaris from Syslog specs as it was before fead51e Fix platform guard 44c0278 Simplify platform_is os: VALUE to just platform_is VALUE as they are the same now 5a17f65 platform guard requires OS name list, not an array cd7e2f7 Fix platform guard in Float#round spec c698d12 Merge pull request #426 from ruby/removed-deprecated-mathn 49cdead Ignored mathn examples 27080f0 Move TTY checks inside the example c766f34 Remove unneeded guard bc9272e Remove the last not_supported_on :jruby f119ab6 Remove not_supported_on which can be replaced by tags 1f72098 Remove unneeded not_supported_on guard f73cc7e Remove bad not_supported_on guards ab97f67 Remove bad not_supported_on guards f5764a5 Fix references to removed guards and use generic text instead 7279501 Remove unused require f1e34eb Remove useless requires to mspec helpers already loaded 39a43e9 Remove useless require 47d5757 Inline the single usage of the home_directory helper c8bb8f0 Remove useless before/after in Dir.home spec 9d8e406 Simplify expectation as it only tests on non-Windows 1bdfcd5 Use Dir.home in File.expand_path spec 6b1764b Just use `hostname` to get the hostname ce16689 Use standard File::NULL over mspec helper 196d2bf Remove process_is_foreground guards a22149f Merge pull request #425 from ruby/ignored-deprecated-extensions 5397086 Ignored mathn/{complex,rational} examples. These are deprecated from Ruby 2.5 520200a Revert "Avoid using #fork in Process#wait specs" 6fe19cb Add specs for Hash#dig with default a12d209 Require date (#423) cdbc5f0 String#crypt with NUL (#420) aee1fad Merge branch 'nobu-bug/psych-update' 6357533 Picked YAML.load_stream example from #418 83bbd45 Merge pull request #417 from hsbt/fixed-spec-fail-for-psych 1a952f5 Follow psych-3.0.0.beta1 18efd61 Ignored deprecated methods of psych-3.0.0.beta1 with Ruby 2.5.0 a488ce5 TypedData_Get_Struct unwraps data for a parent type 4bbfa0c Refactor httpgenericrequest/exec_spec to use an actual Net::BufferedIO 72273d3 Remove old guards testing for Ruby < 2.2 1a28138 Remove old 2.1 or < 2.2 guards in C-API specs e4763d5 Remove Logger::Application specs which no longer exist in Ruby 2.2+ 60ccbba Drop support for Ruby 2.1 6686326 An invalid timezone has a non-zero offset on AIX 96ba5d5 Add 2.2 guard for Etc.nprocessors, 2.1 is not yet removed from CI 3b8d553 Add spec for Etc.nprocessors 8fd7a69 Remove files with no specs 2829346 rb_ary_store raises an error if array is frozen e1fb7b4 Fix typo 42c1320 Add a spec for rb_ary_new_from_values 9ba7adb Add specs for rb_ary_new_capa 825c0a0 Add a spec for rb_struct_members 89f4e62 Use have_constant matcher rather than #const_defined? 320b4fb remove #sort since Struct.members guarantees the order ca6957b Add specs for rb_struct_define_under 5b0d3f8 Fix typo in spec method being tested cb1b38e rb_struct_aset raises an error if struct is frozen cab4987 rb_struct_aset raises an error if index is out of range 64f8bcc rb_struct_aref raises an error if index is out of range e4db1d3 Add specs for rb_struct_define af5412d Add specs for rb_struct_s_members ecc868d Update to 2.3.4 4207e0e Symbol#hash was fixed in 2.3.4 d6ade33 Fix inaccurate description of a spec in string_times 4aed560 Revert "Use fixnum_max+1 to mean "not fitting into a Fixnum"" a4e6958 Use fixnum_max+1 to mean "not fitting into a Fixnum" a5e707a Use fixnum_max helper 582eed5 Share tests between String#* and rb_str_times fa4e6b2 Add specs for rb_str_times 9c73e8b Specs for three initial vulnerabilities 25aa763 Add a spec for rb_String (#395) 0adc519 Add specs for rb_ary_rotate 03e3fba Add specs for rb_ary_cat 9078f37 Add a spec for rb_Hash 7847fa8 Update ruby_bug guards git-subtree-dir: spec/ruby git-subtree-split: 0db663be26db58348eb1cf2b2c4af6a2eca005f4
Configuration menu - View commit details
-
Copy full SHA for 4991312 - Browse repository at this point
Copy the full SHA 4991312View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6224865 - Browse repository at this point
Copy the full SHA 6224865View commit details -
Configuration menu - View commit details
-
Copy full SHA for fb01692 - Browse repository at this point
Copy the full SHA fb01692View commit details -
Configuration menu - View commit details
-
Copy full SHA for c9a8fb4 - Browse repository at this point
Copy the full SHA c9a8fb4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 32f213b - Browse repository at this point
Copy the full SHA 32f213bView commit details
Commits on Apr 30, 2017
-
Fix wrong method lookup cache used when class is prepended
While benchmarking a @Talkdesk JRuby application during our recent hackaton, I noticed quite a lot of thread contention in a workload where there should be no shared data. Stack traces showed that there was contention while performing writes to the method lookup cache: ``` java.lang.Thread.State: BLOCKED (on object monitor) at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1027) - waiting to lock <0x00000000e1565058> (a java.util.concurrent.ConcurrentHashMap$Node) at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006) at org.jruby.RubyModule.addToCache(RubyModule.java:1467) at org.jruby.RubyModule.searchWithCache(RubyModule.java:1315) at org.jruby.RubyModule.searchWithCache(RubyModule.java:1269) at org.jruby.RubyModule.searchMethod(RubyModule.java:1258) at org.jruby.RubyModule.respondsToMethod(RubyModule.java:1829) ``` I ended up instrumenting the JRuby code and noticed that this kept happening (on this workload) for calls to `Array.respond_to?(:to_ary)` which happened quite often and never seemed to be cached. But why were threads repeatedly failing to lookup `#to_ary`, saving it on the cache, and then not finding it the next time around? Every instance of the `RubyModule` class keeps a method lookup cache in the `myCachedMethods` and normally reads and writes to it. But additionally, every `RubyModule` instance keeps a reference called `methodLocation` to the object where it keeps its methods. Usually, `methodLocation` is set to `this` (e.g. the `RubyModule` stores its own methods), but in some cases, e.g. when a class is prepended, `methodLocation` changes, and points elsewhere. The problem here is that when looking up on the `myCachedMethods`, the `cacheHit` method always checks the local `myCachedMethods` reference, while the `addToCache` writes to the cache inside the `methodLocation` reference. This means that normally the method cache works fine as `this.myCachedMethods` and `this.methodLocation.myCachedMethods` are the same, but when `methodLocation` changes, the cache reads will never find the correct cached method. As a fix, I updated the `cacheHit` method to also read from `this.methodLocation.myCachedMethods`. Included below are my test cases and results from executing them. Thanks go to @Talkdesk for letting me work on making JRuby kick even more ass. Single-threaded performance impact test-case: ```ruby require 'benchmark/ips' module Foo; end mode = ARGV.first if mode == 'prepend' Array.prepend(Foo) elsif mode == 'no-prepend' # do nothing else fail 'no mode supplied' end Benchmark.ips do |benchmark| benchmark.time = 15 benchmark.warmup = 15 benchmark.report(mode) { [1, 2, 3].respond_to?(:to_ary) } benchmark.compare! end ``` Before fix: ``` $ jruby singlethreaded-bug-bench.rb no-prepend Warming up -------------------------------------- no-prepend 265.802k i/100ms Calculating ------------------------------------- no-prepend 14.619M (± 5.1%) i/s - 218.489M in 14.993450s $ jruby singlethreaded-bug-bench.rb prepend Warming up -------------------------------------- prepend 222.863k i/100ms Calculating ------------------------------------- prepend 6.879M (± 3.1%) i/s - 103.186M in 15.017267s ``` After fix: ``` $ jruby singlethreaded-bug-bench.rb no-prepend Warming up -------------------------------------- no-prepend 272.227k i/100ms Calculating ------------------------------------- no-prepend 14.229M (± 4.1%) i/s - 212.882M in 14.990837s $ jruby singlethreaded-bug-bench.rb prepend Warming up -------------------------------------- prepend 271.436k i/100ms Calculating ------------------------------------- prepend 14.095M (± 4.2%) i/s - 210.906M in 14.996117s ``` Multi-threaded contention test case: ```ruby module Foo; end mode = ARGV.first if mode == 'prepend' Array.prepend(Foo) elsif mode == 'no-prepend' # do nothing else fail 'no mode supplied' end Integer(ENV['THREADS'] || 16).times do Thread.new { [1, 2, 3].respond_to?(:to_ary) while true } end sleep ``` (See VisualVM screenshots attached to PR for results).
Configuration menu - View commit details
-
Copy full SHA for 8420b3e - Browse repository at this point
Copy the full SHA 8420b3eView commit details
Commits on May 3, 2017
-
Fix most ObjectSpace-triggered Marshal spec failures.
The problem here was that when using ObjectSpace (or object_id, or FFI) we need to insert some hidden state into objects. This state goes into the variable table, but does not get marshaled. However, if we had both reserved space for instance variables and for one of these hidden variables, we always would proceed to marshal the object as though it might have instance variables. If none of the non-hidden variables had been set, we marshaled the object as having instance variables, but of zero length. This broke several marshal specs, since objects that would otherwise have no instance variable were marshaled as such. This fix uses a second check against the variable list to ensure that there are real variables to marshal (or an encoding variable) before proceeding to emit the instance variable sigil and list.
Configuration menu - View commit details
-
Copy full SHA for 0b6e3c0 - Browse repository at this point
Copy the full SHA 0b6e3c0View commit details -
Configuration menu - View commit details
-
Copy full SHA for ae1ef36 - Browse repository at this point
Copy the full SHA ae1ef36View commit details -
Accurately track the three hidden vars in the var manager.
This is not directly used other than to provide a more accurate guess as to whether there are any non-hidden variable in use by a given type. 0b6e3c0 fixes the original issue (marshal dumping zero-length instance var lists). The accessors of the lazy fields are now deprecated. Use the read or write calls to get an accessor for the hidden fields.
Configuration menu - View commit details
-
Copy full SHA for ec6a6dd - Browse repository at this point
Copy the full SHA ec6a6ddView commit details -
Merge pull request #4581 from ivoanjo/fix-wrong-method-lookup-cache
Fix wrong method lookup cache used when class is prepended
Configuration menu - View commit details
-
Copy full SHA for 903728b - Browse repository at this point
Copy the full SHA 903728bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1d1e65a - Browse repository at this point
Copy the full SHA 1d1e65aView commit details
Commits on May 5, 2017
-
Mega Mega Patch. Parser largely pushes most things as ByteList.
Up to this point all things are still being accessed through String versions of methods from IRBuilder on. So this should be zero sum...However...there is a problem I have not figured out yet where I think a RubyHash is getting messed up. So there will be at least one more commit before this is fully zero sum. I have made all existing methods and deprecated. They probably will only work so long as the strings represent 7bit ascii or are utf-8 but since they are all internal methods no longer used I do not fully care. If some external projects are using them then I do not expect they will notice since we have had mbc issues for years. I had considered making all identifiers share the source line they exist on to prevent extra array construction and copying. It could be changed later. Also I still make a token string in the lexer and as a side-effect we get and identifier ByteList. Once this is fully working we can just delete token creation code and only use the identifier.
2Configuration menu - View commit details
-
Copy full SHA for c4e7631 - Browse repository at this point
Copy the full SHA c4e7631View commit details -
Configuration menu - View commit details
-
Copy full SHA for 13212d5 - Browse repository at this point
Copy the full SHA 13212d5View commit details -
Fixes -(expr) and +(expr). Old parser was hard-coding +@ -@ within the
generated parser versus using what the lexer provides (which was wrong in the old lexer). gem list loads yay.
Configuration menu - View commit details
-
Copy full SHA for 9f2ee60 - Browse repository at this point
Copy the full SHA 9f2ee60View commit details
Commits on May 7, 2017
-
Clean up structure of io/console and avoid stty on Windows.
Fixes #3989. * Restructure the different impls of console into their own files. * Always use stubbed version on Windows. * Cascade from native to stty to stubbed on other platforms.
Configuration menu - View commit details
-
Copy full SHA for 3666877 - Browse repository at this point
Copy the full SHA 3666877View commit details
Commits on May 8, 2017
-
Configuration menu - View commit details
-
Copy full SHA for 12e3e64 - Browse repository at this point
Copy the full SHA 12e3e64View commit details -
Configuration menu - View commit details
-
Copy full SHA for d78494d - Browse repository at this point
Copy the full SHA d78494dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2848ddd - Browse repository at this point
Copy the full SHA 2848dddView commit details -
Configuration menu - View commit details
-
Copy full SHA for 56643d9 - Browse repository at this point
Copy the full SHA 56643d9View commit details -
Merge pull request #4592 from headius/cleanup_io_console_9k
Clean up structure of io/console and avoid stty on Windows.
Configuration menu - View commit details
-
Copy full SHA for e778b56 - Browse repository at this point
Copy the full SHA e778b56View commit details -
Configuration menu - View commit details
-
Copy full SHA for 349667d - Browse repository at this point
Copy the full SHA 349667dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6e5f77e - Browse repository at this point
Copy the full SHA 6e5f77eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 941cfe8 - Browse repository at this point
Copy the full SHA 941cfe8View commit details
Commits on May 10, 2017
-
Configuration menu - View commit details
-
Copy full SHA for 81ff75f - Browse repository at this point
Copy the full SHA 81ff75fView commit details -
Merge pull request #4597 from madrob/master
Update COPYING for bundled java licenses #4587
Configuration menu - View commit details
-
Copy full SHA for dc1d2da - Browse repository at this point
Copy the full SHA dc1d2daView commit details -
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 -
Unbundle racc gem and commit non-LGPL portions as in MRI.
This is a temporary patch for #4603 until we can get ruby/racc#85 to ship a separate non-LGPL runtime gem.
Configuration menu - View commit details
-
Copy full SHA for 6852e57 - Browse repository at this point
Copy the full SHA 6852e57View commit details -
Configuration menu - View commit details
-
Copy full SHA for efb775b - Browse repository at this point
Copy the full SHA efb775bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 77e3fa7 - Browse repository at this point
Copy the full SHA 77e3fa7View 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 -
Configuration menu - View commit details
-
Copy full SHA for 75ed50c - Browse repository at this point
Copy the full SHA 75ed50cView commit details -
Merge pull request #4604 from madrob/master
Include Ruby Licensed json libs in COPYING #4587
Configuration menu - View commit details
-
Copy full SHA for e143db6 - Browse repository at this point
Copy the full SHA e143db6View commit details
Commits on May 11, 2017
-
Fixes #4605. CGI.unescapeHTML => Java::JavaLang::ArrayIndexOutOfBound…
…sException One more bounds check. C has \0 so it can ask one char past len whereas we need to guard against it. I think this is the last one but since I audited the code after the last similar bug fix and did not notice this issue so who knows? :)
Configuration menu - View commit details
-
Copy full SHA for c7dfb2d - Browse repository at this point
Copy the full SHA c7dfb2dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7f6e378 - Browse repository at this point
Copy the full SHA 7f6e378View commit details
Commits on May 14, 2017
-
Squashed 'spec/mspec/' changes from 8604276..4398eef
4398eef Add a YAML file containing the last spec update from each repo f68b1ad sync-rubyspec: Allow to pass LAST_MERGE manually c09701c sync-rubyspec: refactor implementations in a class dcfe729 sync-rubyspec: verify commits and merge to master cc8a0b8 Automatically rebase and run tests in sync-rubyspec f7ed6ab Add initial version of the sync-rubyspec script 12646ef Add a suppress_warning helper git-subtree-dir: spec/mspec git-subtree-split: 4398eefbf517ab2caf59ff13e6017a444aff5190
Configuration menu - View commit details
-
Copy full SHA for 88e989c - Browse repository at this point
Copy the full SHA 88e989cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8360155 - Browse repository at this point
Copy the full SHA 8360155View commit details -
Configuration menu - View commit details
-
Copy full SHA for b89bb6d - Browse repository at this point
Copy the full SHA b89bb6dView commit details -
Squashed 'spec/ruby/' changes from 0db663b..032022c
032022c Fixed Fiber.yield not propagating rescued exception. 83f18ad Refactor expectations to use the block of the raise_error matcher d971f0e suppress warning e8495f9 The exception raised when exec/spawn unexecutable file on Windows is various c90f00f remove wrong expectation 1dfd209 `notepad.exe` does not always exist in `C:\Windows` 3e085cd Windows does not know Unix style timezone 1a416a2 On LLP64 platform (mswin64), the return value of String#hash is fixnum. a500503 Skip specs which make non-socket fd nonblocking on Windows bec2d36 Support bulding the extension on Windows 114703a unistd.h is only available when HAVE_UNISTD_H is 1 81c6683 Skip the spec which uses `fork` on Windows 9824a40 The title of "Desktop" may be localized c24c184 Skip on Windows because it always fails 3df6000 remove code old versions 1c5bffa Support building exts of spec on mswin 4f7abf0 Use environment values to find ruby and flags instead of an argument 587c8bd Use ruby_cmd instead of the RUBY_EXE constant in specs 336f7d9 Use the Mutex to know whether we entered the signal handler in Process#kill specs d46e74f Process.getpgrp and Process.setsid must be available for Process#kill group specs a1bf820 Use #system directly with multiple arguments in Process#kill specs 8974c7f Update specs to follow newlines added by r58596 b3ab721 * remove trailing spaces, append newline at EOF. d3ffd45 Guard -S specs on Windows 2b0abda Fix UNIXServer#accept spec to use path of the before block 0f66fb9 Check that the class var is defined before removing it b9c89cd Fix defined? specs with the same description 493b062 Check with max length of path 107 for unix sockets 4c7c6fb Use a shorter pathname for unix socket specs 1997185 Fix Time#- to only require the precision their specdoc implies 43f0faf Add few tests for -x and -S options a753318 Look for different types of files only when running related specs 4cbe34d Run guard code inside example in IO#advise spec 6938b80 Fix spec with duplicated specdoc c6d1def Add specs for global and special variable access 0f31865 Add specs for negative cases of Fixnum#& 7244054 Fix a few duplicated spec descriptions 8c86482 Fix specs with duplicated descriptions in language 2ad9b8e Use mspec's mkdir_p instead of FileUtils 9dbecca Remove dead code 562cc9a Integer.round always returns an integer since 2.5 41176ea Remove check for unicode_normalize to be required from v2.5 (second try) 7214c65 Restore "Avoid using #fork in Process#wait specs" 51bc2c1 Continuation specs were removed so remove the corresponding mspec feature git-subtree-dir: spec/ruby git-subtree-split: 032022ca8845a2a1eb55df2bd0d387e48deea3b7
Configuration menu - View commit details
-
Copy full SHA for 6c83462 - Browse repository at this point
Copy the full SHA 6c83462View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0d1449b - Browse repository at this point
Copy the full SHA 0d1449bView commit details
Commits on May 15, 2017
-
Configuration menu - View commit details
-
Copy full SHA for 3610e7a - Browse repository at this point
Copy the full SHA 3610e7aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 64dc158 - Browse repository at this point
Copy the full SHA 64dc158View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3fe1cc2 - Browse repository at this point
Copy the full SHA 3fe1cc2View commit details
There are no files selected for viewing