aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* test/ruby/test_process.rb: test thread+sigs work after failed execnormal2015-07-182-0/+74
| | | | | | | | Preparation for possible upcoming changes to timer thread. We need to ensure signal handling and thread scheduling works after an exec failure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/socket/test_nonblock: use smaller buffer for sendmsgnormal2015-07-172-2/+7
| | | | | | | | | | OpenBSD's limit is less than 128. * test/socket/test_nonblock: use smaller buffer for sendmsg Patch-by: Jeremy Evans <code@jeremyevans.net> [ruby-core:70016] [Bug #11364] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* signal.c (trap_handler): cleanup to use RSTRING_GETMEM + memcmpnormal2015-07-172-7/+14
| | | | | | | | | | | | | strncmp is unnecessary since the switch/case statement already checks length of the string; so use memcmp. This makes for a small reduction in binary size on 32-bit x86: text data bss dec hex filename 2847473 12360 30632 2890465 2c1ae1 ruby.before 2847313 12328 30632 2890273 2c1a21 ruby.after git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-18svn2015-07-171-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c (argf_read_nonblock): support `exception: false'normal2015-07-174-12/+85
| | | | | | | | | | | | | | | | | This is a preparation for [ruby-core:69892] ("io.c: avoid kwarg parsing in C API") since I noticed ARGF.read_nonblock did not properly catch up to the `exception: false' change. * io.c (argf_read_nonblock): support `exception: false' (io_nonblock_eof): new function (io_read_nonblock): use io_nonblock_eof (argf_getpartial): accept kwargs hash for `exception: false' * test/ruby/test_argf.rb (test_read_nonblock): new test [ruby-core:70000] [Feature #11358] * NEWS: add item for ARGF.read_nonblock git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm_eval.c: safe level 4nobu2015-07-172-1/+5
| | | | | | * vm_eval.c (rb_eval_cmd): $SAFE=4 has been deprecated. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: use ruby_tag_typenobu2015-07-174-26/+33
| | | | | | | | * compile.c (iseq_compile_each): use enum ruby_tag_type names. * vm_core.h (ruby_tag_type): move from eval_intern.h for compiling break/next/redo/return. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: remove unused bignobu2015-07-171-7/+2
| | | | | | | * compile.c (iseq_compile_each): remove unused big flag, `while` loop always leaves a result on the stack. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* RUBY_VM_CHECK_INTS: eval the argument only oncenobu2015-07-171-5/+8
| | | | | | | * vm_core.h (RUBY_VM_CHECK_INTS): evaluate the argument only once to get rid of inadvertent side effects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* RUBY_VM_CHECK_INTS_BLOCKING: move to thread.cnobu2015-07-172-11/+15
| | | | | | | * thread.c (RUBY_VM_CHECK_INTS_BLOCKING): move from vm_core.h for the static function rb_threadptr_pending_interrupt_empty_p. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51280 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* EXEC_EVENT_HOOK_ORIG: eval the arguments only oncenobu2015-07-171-15/+24
| | | | | | | | * vm_core.h (EXEC_EVENT_HOOK_ORIG): evaluate each arguments only once to get rid of inadvertent side effects. fix use of `th` variable in the second `if` statement. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.h: ENC_CODERANGE_CLEAN_Pnobu2015-07-174-10/+27
| | | | | | | | | | | | | * include/ruby/encoding.h (ENC_CODERANGE_CLEAN_P): predicate that tells if the coderange is clean, that is 7bit or valid, and no needs to scrub. * re.c (rb_reg_expr_str): use ENC_CODERANGE_CLEAN_P. * string.c (enc_strlen, rb_enc_cr_str_buf_cat, rb_str_scrub): ditto. * string.c (rb_str_enumerate_chars): ditto, and suppress a warning by gcc6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_range.rb: add Range#new testnobu2015-07-172-0/+11
| | | | | | | * test/ruby/test_range.rb (test_first_last): Add test for `Range.new`. [Fix GH-971] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_range.rb: add Range#last assertionsnobu2015-07-172-0/+8
| | | | | | | * test/ruby/test_range.rb (test_first_last): Add assertions to test of `Range#last` with exclude_end true case. [Fix GH-970] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (rb_thread_alone): simplifynormal2015-07-172-6/+5
| | | | | | | This function now also works in more places if ruby_current_thread is unset. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove unnecessary enumerator requiresnormal2015-07-173-2/+5
| | | | | | | | | | * lib/rinda/tuplespace.rb: remove enumerator require * test/pathname/test_pathname.rb: ditto Related to https://bugs.ruby-lang.org/issues/10902 but not a complete fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* avoid redundant GET_THREAD() callsnormal2015-07-164-7/+20
| | | | | | | | | | | | | | | | | | This reduces binary size slightly on my 32-bit system: text data bss dec hex filename 2847705 12360 30632 2890697 2c1bc9 ruby.orig 2847641 12360 30632 2890633 2c1b89 ruby * iseq.c (rb_iseq_compile_with_option): reuse result of previous GET_THREAD() call * thread.c (thread_create_core): ditto (rb_mutex_trylock): ditto (rb_mutex_lock): ditto * process.c (rb_waitpid): avoid multiple eval from RUBY_VM_CHECK_INTS * thread.c (rb_thread_check_ints): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-17svn2015-07-161-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (mutex_alloc): remove needless volatilenormal2015-07-162-1/+5
| | | | | | | Allocation functions do not do anything non-obvious to the compiler, so there's no reason for volatile here. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos [ci skip]kazu2015-07-161-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: constify rb_iseq_t::parent_iseq.ko12015-07-165-22/+36
| | | | | | | | | | | | rb_iseq_t::local_iseq is not constant data because local_iseq::flip_cnt can be modified (commentted). * compile.c: catch up this fix. * iseq.c: ditto. * vm_insnhelper.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (redirect_dup2): when the new FD of dup2() coflictsngoto2015-07-165-2/+62
| | | | | | | | | | | | | | | | | | | | | | with one of the timer thread FDs, the internal FD is diverted. [Bug #11336] [ruby-core:69886] [Bug #11350] [ruby-core:69961] * process.c (dup2_with_divert): new function for the above purpose. * thread_pthread.c (rb_divert_reserved_fd): new function for diverting reserved FD. If the given FD is the same as one of the reserved FDs, the reserved FD number is internally changed. It returns -1 when error. Otherwise, returns 0. It also returns 0 if there is no need to change reserved FD number. * thread_win32.c (rb_divert_reserved_fd): always returns 0 because of no reserved FDs. * internal.h (rb_divert_reserved_fd): prototype declaration. It is Ruby internal use only. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * iseq.c (rb_iseq_disasm): rename rb_iseq_t *iseqdat to iseqko12015-07-162-38/+45
| | | | | | | | | and VALUE *iseq to code. * iseq.c (rb_iseq_disasm_insn): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: remove redundant callsnobu2015-07-161-1/+1
| | | | | | | | * string.c (rb_str_enumerate_lines): do not check if a block is given twice. RETURN_ENUMERATOR includes rb_block_given_p() check which is redundant here. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r51209 because signals after stopping timer thread beforengoto2015-07-162-8/+10
| | | | | | | entering exec(2) system call may be lost. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm.c: fix mark with rewinding cfpnobu2015-07-162-16/+10
| | | | | | | * vm.c (REWIND_CFP): keep the arguments region inside the valid value stack. [ruby-core:69969] [Bug #11352] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm.c: fix mark with rewinding cfpnobu2015-07-163-2/+32
| | | | | | | | | * vm.c (m_core_hash_merge_ptr): copy the arguments to the machine stack before rewinding the control frame pointer and leaving the arguments outside valid region of the value stack. [ruby-core:69969] [Bug #11352] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c (close_unless_reserved): declare type of `fd' argnormal2015-07-162-1/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* load.c: use fstring for loaded features and expanded load pathnormal2015-07-162-3/+10
| | | | | | | | | | | | | | | | | Loaded features is an obvious candidate for fstring since feature paths of Ruby sources are included in iseq locations, and iseq locations are in the fstring table anyways. Deduplicating expanded load path can reuse old objects, since since repeated expansions may recycle before old expanded paths are GC-ed away. * load.c (rb_construct_expanded_load_path): fstring expanded path (get_loaded_features_index): fstring feature path (rb_provide_feature): ditto [ruby-core:69871] [Feature #11331] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c (thread_initialize): avoid RSTRING_PTR and NUMT2INTnormal2015-07-152-6/+11
| | | | | | | | | Favor passing VALUE args as-is and using PRisVALUE in format strings to prevent premature GC. In this case, we are not fixing any real bug because location path has other references, but this makes code easier-to-review. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/ruby/test_process.rb (test_exec_close_reserved_fd): test forngoto2015-07-152-0/+20
| | | | | | | [Bug #11353] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-16svn2015-07-151-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * .gitignore: ignore version.i. [ci skip]kazu2015-07-152-0/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/ruby/test_process.rb (test_deadlock_by_signal_at_forking):ngoto2015-07-152-1/+6
| | | | | | | use RUBY (= EnvUtil.rubybin) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (redirect_close, parent_redirect_close): should not closengoto2015-07-153-8/+31
| | | | | | | | | | | | | | | reserved FD. It should be closed in the exec system call due to the O_CLOEXEC or FD_CLOEXEC flag. [Bug #11353] [ruby-core:69977] * process.c (close_unless_reserved): new function to close FD unless it is reserved for internal communication. * thread_pthread.c (rb_reserved_fd_p): should check owner_process pid to avoid false positive in forked child process. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos [ci skip]kazu2015-07-151-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove redundant NULL checks after RUBY_VM_IFUNC_Pnormal2015-07-153-2/+7
| | | | | | | | | | * proc.c (proc_mark): remove redundant check * vm.c (env_mark): ditto This doesn't change object code size, but the unstripped executable is smaller and the code less confusing. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove redundant NULL check in mark functionsnormal2015-07-155-77/+79
| | | | | | | | | | | | | gc.c (gc_mark_children)only calls mark_func if the T_DATA ptr is non-NULL, so avoid redundantly checking for that in each mark function. * iseq.c (iseq_mark): remove check for data pointer * proc.c (binding_mark): ditto * vm.c (rb_thread_mark): ditto * vm_trace.c (tp_mark): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c: drop dummy encoding flagnobu2015-07-154-0/+26
| | | | | | | | * encoding.c (enc_autoload): drop dummy encoding flag from the loaded encoding index. this flag is used only in this source. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c (vm_make_env_each): add comments about env layout.ko12015-07-152-10/+29
| | | | | | | | | Do not use `i' to specify `new_ep'. * vm.c (rb_proc_create, rb_vm_make_proc_lambda): envval is not used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* -test-/string: movenobu2015-07-1511-13/+13
| | | | | | | * ext/-test-/string/extconf.rb: move "-test-/string/string.so" to "-test-/string.so". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: remove redundant callsnobu2015-07-151-2/+2
| | | | | | | | * string.c (rb_str_enumerate_bytes, rb_str_enumerate_codepoints): do not check if a block is given twice. RETURN_SIZED_ENUMERATOR includes rb_block_given_p() check which is redundant here. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.h: evaluate the macro argument only oncenobu2015-07-142-1/+9
| | | | | | | * gc.h (RUBY_MARK_UNLESS_NULL): evaluate the argument only once to get rid of inadvertent side effects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h, vm.c: remove rb_proc_t::envval because we can know it viako12015-07-145-9/+25
| | | | | | | | | | | | rb_proc_t::block::ep. rb_vm_proc_envval(const rb_proc_t *proc) returns an Env object which the Proc object use. * proc.c: catch up this fix. * vm_dump.c (rb_vmdebug_proc_dump_raw): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h, vm.c: remvoe rb_env_t::prev_envval because we can know itko12015-07-145-34/+63
| | | | | | | | | | | | | | | | | via env->ep. rb_vm_env_prev_envval(env) returns prev_envval via env->ep. * vm_core.h (rb_vm_env_local_variables): change parameter type from VALUE (T_DATA/env) to `const rb_env_t *' to make same as rb_vm_env_prev_envval(). * proc.c: catch up these changes. * vm_dump.c: ditto. * vm.c: rename macros. * ENV_IN_HEAP_P() to VM_EP_IN_HEAP_P() because it uses ep. * ENV_VAL() to VM_ENV_EP_ENVVAL() because it is too short. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces.svn2015-07-141-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c: refactoring Proc/Env related code.ko12015-07-146-123/+115
| | | | | | | | | | | | | | | | | * vm_core.h: remove blockprocval field from rb_proc_t and rb_binding_t. Instead of this field, mark given block in Proc at rb_env_t::env. * vm.c (vm_make_env_each): make an Env object with this layout. And also simplify parameters. * proc.c: catch up this fix. * vm_core.h: remove rb_env_t::local_size because it is not used. * vm_dump.c (rb_vmdebug_env_dump_raw): catch up this fix. * vm_core.h (rb_vm_make_env_object): remove rb_vm_make_env_object() because it is only refered from vm.c. * vm_eval.c (eval_string_with_cref): catch up this fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* use _Static_assert with clangkazu2015-07-143-5/+20
| | | | | | | | | | | | | * gc.c (__has_feature): move into internal.h. * internal.h (__has_feature): ditto. * internal.h (__has_extension): new macro. * internal.h (STATIC_ASSERT): use _Static_assert with clang. [ruby-core:69931] [Bug #11343] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-15svn2015-07-141-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix compile error with clangkazu2015-07-142-1/+6
| | | | | | | * random.c (fill_random_bytes_syscall): fix compile error with clang. [ruby-core:69931] [Bug #11343] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e