summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* `th` -> `ec` for backtrace functions.ko12017-10-287-25/+25
| | | | | | | | | | | | | * vm_backtrace.c: accept `ec` and rename `threadptr` to `ec`. * rb_threadptr_backtrace_object -> rb_ec_backtrace_object * rb_threadptr_backtrace_str_ary -> rb_ec_backtrace_str_ar * rb_threadptr_backtrace_location_ary -> rb_ec_backtrace_location_ary * threadptr_backtrace_to_ary -> ec_backtrace_to_ary * vm_eval.c (adjust_backtrace_in_eval): accepts `ec`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for method management functions.ko12017-10-283-47/+48
| | | | | | | | | | | | | | | | | | | * vm_eval.c: `th` -> `ec` for the following functions: * check_funcall_respond_to * check_funcall_callable * check_funcall_missing * rb_method_call_status * vm_method.c: ditto. * call_method_entry * basic_obj_respond_to_missing * basic_obj_respond_to * vm_respond_to * vm_eval.c (stack_check): accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for rb_vm_call()ko12017-10-283-13/+13
| | | | | | | | | * vm_eval.c (rb_vm_call): accepts `ec` instead of `th`. * proc.c: catch up this fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_block_arity): use `ec` directly.ko12017-10-281-7/+7
| | | | | | | * proc.c (rb_mod_define_method): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (proc_new): use `ec` directly.ko12017-10-281-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for rb_longjmp() and related functions.ko12017-10-282-44/+44
| | | | | | | | | | | | | * eval.c: `th` -> `ec` for the following functions: * rb_longjmp * exc_setup_message * setup_exception * errinfo_place * eval.c (get_thread_errinfo): rename to get_ec_errinfo() and accepts `ec`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* use `ec` directly.ko12017-10-281-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* check `ec` instead of `th`.ko12017-10-281-2/+2
| | | | | | | | | * error.c (rb_bug): check `ec` instead of `th`. * error.c (rb_bug_context): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for rb_vm_make_binding().ko12017-10-285-10/+10
| | | | | | | * vm.c (rb_vm_make_binding): accepts (const) `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rename a function.ko12017-10-283-7/+7
| | | | | | | | * vm.c (rb_thread_method_id_and_class): rename to rb_ec_frame_method_id_and_class() and accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c (vm_define_method): don't use `th` any more.ko12017-10-281-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c (REWIND_CFP): use `ec` directly.ko12017-10-281-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for vm_iter_break().ko12017-10-281-9/+9
| | | | | | | * vm.c (vm_iter_break): accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for some functions.ko12017-10-281-12/+12
| | | | | | | | | | * vm.c: `th` -> `ec` for the following functions: * vm_normal_frame * vm_cfp_svar_get * vm_cfp_svar_set git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for some functions.ko12017-10-285-13/+13
| | | | | | | | | * vm.c (rb_vm_get_binding_creatable_next_cfp): accepts `ec` instead of `th`. * vm.c (rb_vm_stack_to_heap): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for rb_vm_rewind_cfp.ko12017-10-284-28/+28
| | | | | | | * vm.c (rb_vm_rewind_cfp): accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for vm_exec().ko12017-10-282-47/+47
| | | | | | | * vm.c (vm_exec): accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add specs for [Feature #13983] Rational and Complex should be frozeneregon2017-10-283-0/+68
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for vm_set_*_stack.ko12017-10-283-37/+38
| | | | | | | | | | | * vm.c: `th` -> `ec` for the following functions: * vm_set_top_stack * vm_set_eval_stack * vm_set_main_stack * vm_cref_new_toplevel git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* move fields from `th` to `ec`.ko12017-10-288-44/+42
| | | | | | | | | | * vm_core.h: move rb_thread_t::passed_block_handler to rb_execution_context_t::passed_block_handler. Also move rb_thread_t::passed_bmethod_me to rb_execution_context_t::passed_bmethod_me. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* iseq.c: fix a typoktsj2017-10-281-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* iseq.c: show all call flagsktsj2017-10-281-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix example that trace method is called outside blocka_matsuda2017-10-281-1/+1
| | | | | | | | | | | | | | | | [ci skip] `TracePoint` doesn't have the `line` method. Therefore, this example will raise `NoMethodError`. But since it does not seem to be the intended error, use the existing `lineno` method instead. Patch by: yuuji.yaginuma <yuuji.yaginuma@gmail.com> https://github.com/ruby/ruby/pull/1731 [Fix GH-1731] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* skip machine stack marking for current ec.ko12017-10-281-1/+3
| | | | | | | | | | * vm.c (rb_execution_context_mark): At the beggining of GC marking, mark_current_machine_context() marks running machine stack so that rb_execution_context_mark() should not mark machine stack if it is current ec. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Invalid TracePoint#disable example (without block)a_matsuda2017-10-281-1/+1
| | | | | | | | | | Patch by: Johan <djo.went@hotmail.com> https://github.com/ruby/ruby/pull/1727 [Fix GH-1727] [ci skip] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix compile error.ko12017-10-281-2/+2
| | | | | | | * compile.c (iseq_compile_each): fix declaration because VC shows compile error. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* socket: fix BasicSocket#*_nonblock buffering bugs from r58400normal2017-10-275-7/+139
| | | | | | | | | | | | | | | | | | | | | IO#read_nonblock and IO#write_nonblock take into account buffered data, so the Linux-only BasicSocket#read_nonblock and BasicSocket#write_nonblock methods must, too. This bug was only introduced in r58400 ("socket: avoid fcntl for read/write_nonblock on Linux") and does not affect any stable release. * ext/socket/basicsocket.c (rsock_init_basicsocket): * ext/socket/init.c (rsock_s_recvfrom_nonblock): * ext/socket/init.c (rsock_init_socket_init): * ext/socket/lib/socket.rb (def read_nonblock): * ext/socket/lib/socket.rb (def write_nonblock): * ext/socket/rubysocket.h (static inline void rsock_maybe_wait_fd): * test/socket/test_basicsocket.rb (def test_read_write_nonblock): [Feature #13362] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* node.c: removed duplicate node_buffer_t definitionnobu2017-10-271-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: make node arguments invariantnobu2017-10-271-48/+48
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* catch up recent changes for call threaded code VM.ko12017-10-273-4/+5
| | | | | | | Fix compile errors for OPT_CALL_THREADED_CODE (in vm_opts.h). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for `rb_insn_func_t`.ko12017-10-274-6/+6
| | | | | | | | | | | * vm_core.h (rb_insn_func_t): accepts `ec` instead of `th`. * vm_insnhelper.c (rb_vm_opt_struct_aref): ditto. * vm_insnhelper.c (rb_vm_opt_struct_aset): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* skip tests temporarilyko12017-10-271-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c: fix IO.copy_stream on O_APPEND destination on Linuxnormal2017-10-272-0/+20
| | | | | | | | | | | | | Linux copy_file_range(2) fails with EBADF if the destination FD has O_APPEND set. Preserve existing (Ruby <= 2.4) behavior by falling back to alternative copy mechanisms if this is the case (instead of raising Errno::EBADF). * io.c (nogvl_copy_file_range): do not raise on O_APPEND dst * test/ruby/test_io.rb (test_copy_stream_append): new test [Feature #13867] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: Need to mark the third element of `NODE_HEREDOC`mame2017-10-271-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "Revert "Manage AST NODEs out of GC""mame2017-10-2710-68/+250
| | | | | | | This re-introduces r60485. This reverts commit 5a176b75b1187cbd3861c387bde65ff66396a07c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: stop modifying NODE treemame2017-10-271-7/+3
| | | | | | This fixes some modification remained in r60479 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "Manage AST NODEs out of GC"mame2017-10-2710-250/+68
| | | | | | This reverts commit 620ba74778bfdbdc34ffbb142d49ce84a0ef58e9. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Manage AST NODEs out of GCmame2017-10-2710-68/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NODEs in AST are no longer objects managed by GC. This change will remove the restriction imposed by the GC. For example, a NODE can use more than five words (this is my primary purpose; we want to store the position data for each NODE, for coverage library), or even a NODE can have variable length (some kinds of NODEs have unused fields). To do this, however, we need more work, since Ripper still uses T_NODE objects managed by the GC. The life time of NODEs is more obvious than other kinds of objects; they are created at parsing, and they become disused immediately after compilation. This change releases all NODEs by a few `xfree`s after compilation, so performance will be improved a bit. In extreme example, `eval("x=1;" * 10000000)` runs much faster (40 sec. -> 7.8 sec. on my machine). The most important part of this change is `ast_t` struct, which has three contents: (1) NODE buffer (malloc'ed memory), (2) a reference to the root NODE, and (3) an array that contains objects that must be marked during parsing (such as literal objects). Some functions that had received `NODE*` arguments, must now receive `ast_t*`. * node.c, node.h: defines `ast_t` struct and related operations. * gc.c, internal.h: defines `imemo_ast`. * parse.y: makes `parser_params` struct have a reference to `ast_t`. Instead of `rb_node_newnode`, use `rb_ast_newnode` to create a NODE. * iseq.c, load.c, ruby.c, template/prelude.c.tmpl: modifies some functions to handle `ast_t*` instead of `NODE*`. * test/ruby/test_gc.rb: ad-hoc fix for a failed test. The test assumes GC eden is increased at startup by NODE object creation. However, this change now create no NODE object, so GC eden is not necessarily increased. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix parameter namekazu2017-10-271-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Remove duplicated includekazu2017-10-271-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2017-10-28svn2017-10-271-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add explicit markers for literal objects generated in parse.ymame2017-10-271-15/+36
| | | | | | | This is just a preparation to manage AST NODEs out of GC. Currently `add_mark_object` does nothing. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: Improve String#prepend performance if only one argument is givenwatson19782017-10-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | * string.c (rb_str_prepend_multi): Prepend the string without generating temporary String object if only one argument is given. This is very similar with https://github.com/ruby/ruby/pull/1634 String#prepend -> 47.5 % up [Fix GH-1670] [ruby-core:82195] [Bug #13773] * Before String#prepend 1.517M (± 1.8%) i/s - 7.614M in 5.019819s * After String#prepend 2.236M (± 3.4%) i/s - 11.234M in 5.029716s * Test code require 'benchmark/ips' Benchmark.ips do |x| x.report "String#prepend" do |loop| loop.times { "!".prepend("hello") } end end git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c, iseq.c: consitfied NODE pointersnobu2017-10-274-115/+124
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "Dir.glob with FNM_EXTGLOB is optimized [Feature #13873]"naruse2017-10-275-94/+16
| | | | | | | | This reverts commit r60341,r60342,r60344,r60345. Breaking compabitility of the order of result breaks many tests. To avoid such effort to fix tests, the order should be kept. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm_exec_core() accepts `ec` instead of `th`.ko12017-10-275-44/+44
| | | | | | | | | * vm_exec.c (vm_exec_core): accepts `ec` instead of `th`. * vm_args.c (vm_caller_setup_arg_block): also accepts `ec`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `th` -> `ec` for block related functions.ko12017-10-278-106/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * vm.c: the following functions accept `ec` instead of `th`. * invoke_block * invoke_bmethod * invoke_iseq_block_from_c * invoke_block_from_c_bh * check_block_handler * vm_yield_with_cref * vm_yield * vm_yield_with_block * vm_yield_force_blockarg * invoke_block_from_c_proc * vm_invoke_proc * vm_invoke_bmethod * rb_vm_invoke_proc * vm_insnhelper.c: ditto. * vm_yield_with_cfunc * vm_yield_with_symbol * vm_callee_setup_block_arg * vm_yield_setup_args * vm_invoke_iseq_block * vm_invoke_symbol_block * vm_invoke_ifunc_block * vm_invoke_block git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* should use `th`.ko12017-10-271-3/+3
| | | | | | | | * signal.c (check_stack_overflow): ruby_stack_overflowed_p() should accept `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `ec` -> `th`ko12017-10-273-6/+6
| | | | | | | | | * vm_exec.h (VM_SP_CNT): accepts `ec` instead of `th`. * vm_insnhelper.c (vm_stack_consistency_error): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm_defined() accepts `ec` instead of `th`.ko12017-10-272-4/+4
| | | | | | | * vm_insnhelper.c (vm_defined): accepts `ec` instead of `th`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e