summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-09-21Add a benchmark for JIT-ed code dispatchTakashi Kokubun
2019-09-21typedef rb_jmpbuf_t to void *[5] if __builtin_setjmp is usedFangrui Song
The built-in version operates on a buffer of 5 words, much smaller than the size of jmp_buf defined in libc. Note, powerpc requires 5 words, while arm and x86_64 just require 3. Notes: Merged: https://github.com/ruby/ruby/pull/2471
2019-09-20Fix documentation for ENV.each to return ENVJeremy Evans
Also have spec check that it returns ENV. Mostly from burdettelamar@yahoo.com (Burdette Lamar). Fixes [Bug #16164]
2019-09-21Revert eval.c in e81a3e6df54842b5a836dad7055a4295cf4155bcNobuyoshi Nakada
Inadvertently merged change to suppress warnings by gcc 9.2. Pointed out by Alan Wu.
2019-09-21* 2019-09-21 [ci skip]git
2019-09-21Disable method definition type checks on WindowsNobuyoshi Nakada
2019-09-20Fixed format specifiersNobuyoshi Nakada
Use PRIdPTRDIFF for the platforms where a pointer is larger than a long.
2019-09-20Call rb_vm_call_kw insted of rb_vm_call0 in a few casesJeremy Evans
rb_vm_call_kw handles the tmp buffer for you. Also, change method_missing so it also calls rb_vm_call_kw to handle the kw_splat flag, instead of requiring callers to handle kw_splat flag before calling method_missing. This may fix other cases where method_missing is currently called without the kw_splat being handled.
2019-09-20Handle keyword argument separation for Enumerator#sizeJeremy Evans
When Object#to_enum is passed a block, the block is called to get a size with the arguments given to to_enum. This calls the block with the same keyword flag as to_enum is called with. This requires adding rb_check_funcall_kw and rb_check_funcall_default_kw to handle keyword flags.
2019-09-20Make passing empty keywords to dig pass empty keywords to next dig methodJeremy Evans
If defined in Ruby, dig would be defined as def dig(arg, *rest) end, it would not use keywords. If the last dig argument was an empty hash, it could be treated as keyword arguments by the next dig method. Allow dig to pass along the empty keyword flag if called with an empty keyword, to suppress the previous behavior and force treating the hash as a positional argument and not keywords. Also handle the case where dig calls method_missing, passing the empty keyword flag to that as well. This requires adding rb_check_funcall_with_hook_kw functions, so that dig can specify how arguments are treated. It also adds kw_splat arguments to a couple static functions.
2019-09-20Allows calling a private method only with bare `self`Nobuyoshi Nakada
2019-09-20Fix wrong allocation failure handlingTakashi Kokubun
`iseq->body->jit_unit->compile_info` should not be referenced before the null check of `iseq->body->jit_unit`.
2019-09-20Use RUBY_VM_NEXT_CONTROL_FRAME macroTakashi Kokubun
in vm_push_frame and limit scope of i. Just a minor maintainability improvement.
2019-09-20Fix for explicit cast without RUBY_METHOD_FUNCNobuyoshi Nakada
2019-09-20Check various method defitions in C++Nobuyoshi Nakada
2019-09-20Fix rb_define_singleton_method warningTakashi Kokubun
for debug counters ``` ../include/ruby/intern.h:1175:137: warning: passing argument 3 of 'rb_define_singleton_method0' from incompatible pointer type [-Wincompatible-pointer-types] #define rb_define_singleton_method(klass, mid, func, arity) rb_define_singleton_method_choose_prototypem3((arity),(func))((klass),(mid),(func),(arity)); ^ ../vm.c:2958:5: note: in expansion of macro 'rb_define_singleton_method' rb_define_singleton_method(rb_cRubyVM, "show_debug_counters", rb_debug_counter_show, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~ ../include/ruby/intern.h:1139:99: note: expected 'VALUE (*)(VALUE) {aka long unsigned int (*)(long unsigned int)}' but argument is of type 'VALUE (*)(void) {aka long unsigned int (*)(void)}' __attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method0 (VALUE,const char*,VALUE(*)(VALUE),int); ```
2019-09-20Get rid of embedding make command lineNobuyoshi Nakada
NMAKE sets MAKE to the full path name, which includes spaces by the default installation.
2019-09-20Fixed cxxanyargs/dependNobuyoshi Nakada
* Removed excess backslashes * Fixed the target name to try failure.cpp
2019-09-20[DOC] DOT is not a part of a receiver [ci skip]Nobuyoshi Nakada
[Feature #11297] [Feature #16123]
2019-09-20Fixed up 37c083942509dd7e0d8b7ccd3575936a2017c400Hiroshi SHIBATA
2019-09-20Removed ThreadsWait from the ruby repositoryHiroshi SHIBATA
2019-09-20Removed Synchronizer from the ruby repository.Hiroshi SHIBATA
2019-09-20Removed Shell from the ruby repository.Hiroshi SHIBATA
2019-09-20Removed Scanf from the ruby repository.Hiroshi SHIBATA
2019-09-20Removed CMath from the ruby repository.Hiroshi SHIBATA
2019-09-20Fixed memory leakNobuyoshi Nakada
* array.c (flatten): fix a memory leak in the case of an exception at conversion of an element to Array.
2019-09-20Added the target to run a benchmarkNobuyoshi Nakada
2019-09-20Fixed a variable in checkout-github-%Nobuyoshi Nakada
2019-09-20Update NEWS and documents [ci skip]Nobuyoshi Nakada
[Feature #11297] [Feature #16123]
2019-09-20Allow calling a private accessor with `self.`Nobuyoshi Nakada
[Feature #11297] [Feature #16123] Notes: Merged: https://github.com/ruby/ruby/pull/2474
2019-09-20Added version guardNobuyoshi Nakada
[Feature #11297] [Feature #16123] Notes: Merged: https://github.com/ruby/ruby/pull/2474
2019-09-20Allow calling a private method with `self.`Dylan Thacker-Smith
This makes it consistent with calling private attribute assignment methods, which currently is allowed (e.g. `self.value =`). Calling a private method in this way can be useful when trying to assign the return value to a local variable with the same name. [Feature #11297] [Feature #16123] Notes: Merged: https://github.com/ruby/ruby/pull/2474
2019-09-20Overload variable definition functionsNobuyoshi Nakada
Define overloading functions of rb_define_virtual_variable and rb_define_hooked_variable, for combinations with and without ANYARGS casts. Notes: Merged: https://github.com/ruby/ruby/pull/2461
2019-09-20Check method functions in C++Nobuyoshi Nakada
By using template and overloading, instead of transparent union. Notes: Merged: https://github.com/ruby/ruby/pull/2461
2019-09-20* 2019-09-20 [ci skip]git
2019-09-19Use EXPECT_NODE_NONULLNobuyoshi Nakada
2019-09-19Check COMPILE_RECV resultNobuyoshi Nakada
2019-09-19Moved unmatch arity check to depend fileNobuyoshi Nakada
To substitute suffixes and VPATH for nmake.
2019-09-19Ensure that unmatched arity fails in C++Nobuyoshi Nakada
2019-09-19Revert "DEBUG: dump mkmf.log"Nobuyoshi Nakada
This reverts commit 69e209a3450bd6b281dcad1d96a34e9cab184845. The debug has finishted.
2019-09-19Specify encoding explicitly for sprintfNARUSE, Yui
2019-09-19Separate Time#inspect from to_s and show subsec [Feature #15958]NARUSE, Yui
2019-09-19Fixed reserved numbered parameter warningNobuyoshi Nakada
2019-09-19Added link_command for C++Nobuyoshi Nakada
2019-09-19Use benchmark-driver v0.15.6Takashi Kokubun
to fix another keyword argument warning which was added recently.
2019-09-19Improve the output of `RubyVM::InstructionSequence#to_binary` (#2450)NagayamaRyoga
The output of RubyVM::InstructionSequence#to_binary is extremely large. We have reduced the output of #to_binary by more than 70%. The execution speed of RubyVM::InstructionSequence.load_from_binary is about 7% slower, but when reading a binary from a file, it may be faster than the master. Since Bootsnap gem uses #to_binary, this proposal reduces the compilation cache size of Rails projects to about 1/4. See details: [Feature #16163]
2019-09-19Avoid unneeded casts in INSN_ENTRY_SIGTakashi Kokubun
2019-09-19Drop PREFETCH macro unused since 6b534134a7Takashi Kokubun
2019-09-19fix spec failure卜部昌平
See also https://travis-ci.org/ruby/ruby/jobs/586452224 Notes: Merged: https://github.com/ruby/ruby/pull/2468
2019-09-19reuse cc->call卜部昌平
I noticed that in case of cache misshit, re-calculated cc->me can be the same method entry than the pevious one. That is an okay situation but can't we partially reuse the cache, because cc->call should still be valid then? One thing that has to be special-cased is when the method entry gets amended by some refinements. That happens behind-the-scene of call cache mechanism. We have to check if cc->me->def points to the previously saved one. Calculating ------------------------------------- trunk ours vm2_poly_same_method 1.534M 2.025M i/s - 6.000M times in 3.910203s 2.962752s Comparison: vm2_poly_same_method ours: 2025143.9 i/s trunk: 1534447.2 i/s - 1.32x slower Notes: Merged: https://github.com/ruby/ruby/pull/2468