Age | Commit message (Collapse) | Author |
|
iseq->compile_data->option->specialized_instruction for opt_* insn.
* test/ruby/test_iseq.rb: check no specialized_instructions option.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* compile.c (iseq_compile_each): only emit opt_str_freeze,
opt_aref_with, and opt_aset_with insn when no block is given
[Bug #10557] [ruby-core:66595]
* test/ruby/test_optimization.rb (test_block_given_aset_aref):
new test for bug thanks to Bartosz Kopinski.
(test_string_freeze): additional assertion for object_id
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* iseq.c (rb_method_for_self_aref, rb_method_for_self_aset): call
accessor functions directly, not to be affected by [] and []=
methods. [ruby-core:66846] [Bug #10601]
* struct.c (define_aref_method, define_aset_method): ditto.
* vm_insnhelper.c (rb_vm_opt_struct_aref, rb_vm_opt_struct_aset):
direct accessors of Struct.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_rubyoptions.rb (test_segv_loaded_features): clean
crash log on OS X after intentional segv.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
extend timeout seconds to 60 for RGENGC_CHECK_MODE > 0 environment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
jruby/jruby#2310.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
IO#read with buffer. See jruby/jruby#2316.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
with sizeof(RVALUE). [Bug #8984]
* gc.c (obj_memsize_of): ditto.
* NEWS: add a NEWS entry.
* test/objspace/test_objspace.rb: catch up this fix.
* test/ruby/test_file_exhaustive.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* string.c (rb_enc_str_coderange): dummy wchar, non-endianness
encoding string cannot be ascii only.
[ruby-core:66835] [Bug #10598]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (primary): restore current_arg so that circular
reference after a method definition is also warned.
[ruby-core:61299] [Bug #9593]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_gc.rb (test_interrupt_in_finalizer): use inner
process signal for Windows. [ruby-core:66825] [Bug #10595]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_gc.rb (test_interrupt_in_finalizer): wait longer
and send more interrupts for slower cases.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_trace.c (rb_postponed_job_flush): mask signal trap interrupt
too to defer handling after finalizers finished.
[ruby-core:66825] [Bug #10595]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48829 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_object.rb (test_copied_ivar_memory_leak): ignore
RSS to disable false failure.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* string.c (rb_str_crypt): check arguments more strictly.
* crypt() is not for wide char strings
* salt bytes should not be NUL
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_process.rb (test_execopts_redirect): split large
test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
This avoids O(n) on lookups with structs over 10 members.
This also avoids O(n) behavior on all assignments on Struct members.
Members 0..9 still use existing C methods to read in O(1) time
Benchmark results:
vm2_struct_big_aref_hi* 1.305
vm2_struct_big_aref_lo* 1.157
vm2_struct_big_aset* 3.306
vm2_struct_small_aref* 1.015
vm2_struct_small_aset* 3.273
Note: I chose use loading instructions from an array instead of writing
directly to linked-lists in compile.c for ease-of-maintainability. We
may move the method definitions to prelude.rb-like files in the future.
I have also tested this patch with the following patch to disable
the C ref_func methods and ensured the test suite and rubyspec works
--- a/struct.c
+++ b/struct.c
@@ -209,7 +209,7 @@ setup_struct(VALUE nstr, VALUE members)
ID id = SYM2ID(ptr_members[i]);
VALUE off = LONG2NUM(i);
- if (i < N_REF_FUNC) {
+ if (0 && i < N_REF_FUNC) {
rb_define_method_id(nstr, id, ref_func[i], 0);
}
else {
* iseq.c (rb_method_for_self_aref, rb_method_for_self_aset):
new methods to generate bytecode for struct.c
[Feature #10575]
* struct.c (rb_struct_ref, rb_struct_set): remove
(define_aref_method, define_aset_method): new functions
(setup_struct): use new functions
* test/ruby/test_struct.rb: add test for struct >10 members
* benchmark/bm_vm2_struct_big_aref_hi.rb: new benchmark
* benchmark/bm_vm2_struct_big_aref_lo.rb: ditto
* benchmark/bm_vm2_struct_big_aset.rb: ditto
* benchmark/bm_vm2_struct_small_aref.rb: ditto
* benchmark/bm_vm2_struct_small_aset.rb: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* eval.c (rb_frame_last_func): return the most recent frame method
name.
* thread.c (recursive_list_access): use the last method name,
instead of the current method name which can be unset in some
cases, not to use a symbol by the invalid ID.
[ruby-core:66742] [Bug #10579]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_rubyoptions.rb (test_command_line_glob_noncodepage):
more assertion for fallback replacement on non-codepage names.
[ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_rubyoptions.rb (test_command_line_glob_noncodepage):
test for command line globbing on non-codepage names.
[ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (parser_yylex): fix lex_state after tLABEL_END, should
be EXPR_LABELARG to be followed by "paren with arg".
[ruby-core:66705] [Feature #4935]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Compile failures will trigger iseq_free before
iseq->callinfo_entries are allocated at all.
* iseq.c (iseq_free): avoid segfault on incomplete iseq
* test/ruby/test_syntax.rb (test_invalid_next): new test
for syntax error, not segfault
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
self when passed a reified block (proc/lambda).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Don't raise Interrupt.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
assert_separately.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* ruby.c (process_options, ruby_script): transcode script name and
program name to locale encoding as well as argv.
[ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_rubyoptions.rb (test_command_line_glob_nonascii):
workaround for other than cp932. [ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* ruby.c (ruby_set_argv): convert argv from UTF-8.
* win32/win32.c (rb_w32_sysinit, cmdglob, w32_cmdvector): convert
wide char command line to UTF-8 argv, and glob in UTF-8 so that
metacharacters would match multibyte characters.
[ruby-dev:48752] [Bug #10555]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
timeout because mswin CI reports timeout.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_array.rb: (need_continuation): suppress warnings
to require continuation.
* test/ruby/test_continuation.rb: ditto.
* test/ruby/test_enum.rb: ditto.
* test/ruby/test_fiber.rb: ditto.
* test/ruby/test_hash.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48642 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
to specify the encoding of script.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
for r48637.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[Bug #10449]
* test/ruby/test_settracefunc.rb: add and fix tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
For example, the following program
def foo(k1: 1); end # line 1
foo(k2: 2) # line 2
causes "unknown keyword: k2 (ArgumentError)".
Before this patch, the backtrace location is only line 2.
However, error should be located at line 1 (over line 2 in
stack trace). This patch fix this problem.
* class.c (rb_keyword_error_new): separate exception creation logic
from rb_keyword_error(), to use in vm_args.c.
* vm_insnhelper.c (rb_arg_error_new): rename to rb_arity_error_new().
* vm_args.c (argument_arity_error): rename to argument_arity_error().
* vm_args.c (arugment_kw_error): added to fix backtrace.
* test/ruby/test_keyword.rb: add tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_const.rb (test_redefinition): should use
assert_warning for warning message test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
from Continuation to Date. Becouse Continuation is no longer quiet.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
to avoid mysterious behavior.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (f_label, f_kw, formal_argument_gen): ignore invalid
formal argument in keyword argument definition.
[ruby-dev:48742] [Bug #10545]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_method.c (rb_mod_remove_method): preserve encodings of method
name and class name in error messages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* object.c (inspect_i): preserve encodings in inspected result
string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_method.c (rb_method_entry_make): preserve encodings of
constant names in warning messages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_eval.c (rb_method_call_status): preserve encoding of called method
name in error messages.
* vm_insnhelper.c (vm_call_method): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* safe.c (rb_secure): preserve encoding of the called method name
in error messages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* safe.c (rb_insecure_operation): preserve encoding of the called
method name in error messages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* string.c (rb_str_setter): preserve encoding of global variable
name in error message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* iseq.c (rb_insn_operand_intern): preserve encoding of method
name in CALL_INFO at disassembling.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* io.c (must_respond_to): preserve encodings of variable name and
class name in warning message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_variable.rb (ruler4): suppress warning.
(test_global_variable_poped, test_constant_poped): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|