Age | Commit message (Collapse) | Author |
|
|
|
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
|
|
Also have spec check that it returns ENV.
Mostly from burdettelamar@yahoo.com (Burdette Lamar).
Fixes [Bug #16164]
|
|
Inadvertently merged change to suppress warnings by gcc 9.2.
Pointed out by Alan Wu.
|
|
|
|
|
|
Use PRIdPTRDIFF for the platforms where a pointer is larger than a long.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
`iseq->body->jit_unit->compile_info` should not be referenced before
the null check of `iseq->body->jit_unit`.
|
|
in vm_push_frame and limit scope of i.
Just a minor maintainability improvement.
|
|
|
|
|
|
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);
```
|
|
NMAKE sets MAKE to the full path name, which includes spaces by
the default installation.
|
|
* Removed excess backslashes
* Fixed the target name to try failure.cpp
|
|
[Feature #11297] [Feature #16123]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* array.c (flatten): fix a memory leak in the case of an exception
at conversion of an element to Array.
|
|
|
|
|
|
[Feature #11297] [Feature #16123]
|
|
[Feature #11297] [Feature #16123]
Notes:
Merged: https://github.com/ruby/ruby/pull/2474
|
|
[Feature #11297] [Feature #16123]
Notes:
Merged: https://github.com/ruby/ruby/pull/2474
|
|
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
|
|
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
|
|
By using template and overloading, instead of transparent union.
Notes:
Merged: https://github.com/ruby/ruby/pull/2461
|
|
|
|
|
|
|
|
To substitute suffixes and VPATH for nmake.
|
|
|
|
This reverts commit 69e209a3450bd6b281dcad1d96a34e9cab184845.
The debug has finishted.
|
|
|
|
|
|
|
|
|
|
to fix another keyword argument warning which was added recently.
|
|
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]
|
|
|
|
|
|
See also https://travis-ci.org/ruby/ruby/jobs/586452224
Notes:
Merged: https://github.com/ruby/ruby/pull/2468
|
|
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
|