aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* string.c: trivial optimizationsnobu2015-07-231-4/+7
| | | | | | | * string.c (rb_str_new_frozen, str_make_independent_expand): trivial peephole optimizations. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: taint flagsnobu2015-07-234-27/+41
| | | | | | | | | * include/ruby/ruby.h: add raw FL macros, which assume always the argument object is not a special constant. * internal.h (STR_EMBED_P, STR_SHARED_P): valid only for T_STRING. * string.c: deal with taint flags directly across String instances. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: str_shared_replacenobu2015-07-231-3/+11
| | | | | | | * string.c (str_shared_replace): split from rb_str_shared_replace without argument check. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ossl_ssl.c: suppress warningsnobu2015-07-231-1/+1
| | | | | | | * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): fix argument types to suppress shorten-64-to-32 and shorten-64-to-32 warnings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: pop cmdargnobu2015-07-233-0/+11
| | | | | | | * parse.y (lambda_body): pop cmdarg stack for lookahead token. [ruby-core:70067] [Bug #11380] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix tests bu not setting the string instance on the frozen objecttenderlove2015-07-222-1/+5
| | | | | | OpenSSL [copies the string returned by the pointe](https://github.com/openssl/openssl/blob/9f040d6decca7930e978784c917f731e5c45e8f0/ssl/t1_lib.c#L1800-1809), so it should be safe to just return a pointer to the string object and not set an instance variable on the already frozen object. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/openssl/ossl_ssl.c: add ECDH callback support. [Feature #11356]tenderlove2015-07-223-0/+108
| | | | | | * test/openssl/test_pair.rb: test for ECDH callback support git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/openssl/ossl_ssl.c: add ALPN support. [Feature #9390]tenderlove2015-07-224-4/+144
| | | | | | | | * ext/openssl/extconf.rb: detect ALPN support in OpenSSL * test/openssl/test_ssl.rb: test for ALPN git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-23svn2015-07-221-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos [ci skip]kazu2015-07-221-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: fix coderange of reversenobu2015-07-223-14/+20
| | | | | | | | * string.c (rb_str_reverse): reversed string is not a substring, and should not set coderange of the original string. [ruby-dev:49189] [Bug #11387] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ChangeLog: fix a typo for r51324. [ci skip]nagachika2015-07-221-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby.h: ASSUMEnobu2015-07-222-1/+9
| | | | | | | * include/ruby/ruby.h (ASSUME): hint for optimization, the expression is assumed to be true always. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: modify layout of rb_iseq_constant_body.ko12015-07-222-20/+24
| | | | | | | | Move frequent accesssing fields to upper part. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: remove unused declaration ofko12015-07-222-4/+5
| | | | | | | | iseq_compile_data_ensure_node_stack. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: separate rb_iseq_body into rb_iseq_constant_body andko12015-07-225-29/+40
| | | | | | | | | | | | rb_iseq_variable_body (rb_iseq_t::variable_body). rb_iseq_variable_body can be modified after compilation. * compile.c: use rb_iseq_t::variable_body. * iseq.c: ditto. * thread.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/webrick/test_utils.rb (TestWEBrickUtils#test_nested_timeout_outer): seemsusa2015-07-221-2/+2
| | | | | | | to be too short for mswin CI. fixed occasional failure introduced at r51235. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * lib/matrix/eigenvalue_decomposition.rb: refine code style.hsbt2015-07-222-1/+6
| | | | | | [fix GH-959][ci skip] Patch by @bogdanvlviv git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: fix execnobu2015-07-221-6/+6
| | | | | | | * common.mk: fix macro name, exec but not EXEC. pointed by @nagachika. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/ruby/test_range.rb: Add test case for Range#end withhsbt2015-07-222-0/+6
| | | | | | exclude_end true case. [fix GH-968] Pach by @yui-knk git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix doc for Numeric#coerce [ci skip]nobu2015-07-222-1/+6
| | | | | | | * numeric.c (num_coerce): [DOC] fix doc for Numeric#coerce, missing '+'. [Fix GH-974] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Makefile.in: PIC lex.cnobu2015-07-224-56/+149
| | | | | | * Makefile.in (lex.c): make position independent table. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: call rb_intern2nobu2015-07-221-1/+1
| | | | | | | * parse.y (parse_ident): call rb_intern2 with the known length instead of strlen(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: add execnobu2015-07-221-6/+6
| | | | | | * common.mk: add exec to quoted commands. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c: return the errornobu2015-07-221-0/+1
| | | | | | | * thread.c (rb_wait_for_single_fd): return the error when ppoll failed. fix r51319. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* follow r51064naruse2015-07-211-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* suppress warningsnaruse2015-07-211-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * make rb_iseq_t T_IMEMO object (type is imemo_iseq).ko12015-07-2125-1138/+1155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All contents of previous rb_iseq_t is in rb_iseq_t::body. Remove rb_iseq_t::self because rb_iseq_t is an object. RubyVM::InstructionSequence is wrapper object points T_IMEMO/iseq. So RubyVM::ISeq.of(something) method returns different wrapper objects but they point the same T_IMEMO/iseq object. This patch is big, but most of difference is replacement of iseq->xxx to iseq->body->xxx. (previous) rb_iseq_t::compile_data is also located to rb_iseq_t::compile_data. It was moved from rb_iseq_body::compile_data. Now rb_iseq_t has empty two pointers. I will split rb_iseq_body data into static data and dynamic data. * compile.c: rename some functions/macros. Now, we don't need to separate iseq and iseqval (only VALUE). * eval.c (ruby_exec_internal): `n' is rb_iseq_t (T_IMEMO/iseq). * ext/objspace/objspace.c (count_imemo_objects): count T_IMEMO/iseq. * gc.c: check T_IMEMO/iseq. * internal.h: add imemo_type::imemo_iseq. * iseq.c: define RubyVM::InstructionSequnce as T_OBJECT. Methods are implemented by functions named iseqw_.... * load.c (rb_load_internal0): rb_iseq_new_top() returns rb_iseq_t (T_IMEMO/iesq). * method.h (rb_add_method_iseq): accept rb_iseq_t (T_IMEMO/iseq). * vm_core.h (GetISeqPtr): removed because it is not T_DATA now. * vm_core.h (struct rb_iseq_body): remove padding for [Bug #10037][ruby-core:63721]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/objspace/objspace.c (total_i): no need to skip singleton classes.ko12015-07-212-3/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: constify rb_call_info_t::kw_arg,ko12015-07-215-9/+20
| | | | | | | | | | | rb_control_frame_t::iseq and rb_control_frame_t::block_iseq. * iseq.c (iseq_free): catch up this fix. * vm.c: ditto. * vm_dump.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix ChangeLogko12015-07-211-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: constify rb_call_info_t::blockiseq and rb_iseq_t::iseq.ko12015-07-215-10/+19
| | | | | | | | | | * vm.c, vm_insnhelper.c: catch up this fix. * iseq.c (iseq_data_to_ary): constify the first iseq parameter. * vm_insnhelper.c (vm_make_proc_with_iseq): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * method.h: constify rb_method_iseq_t::iseqptr.ko12015-07-214-5/+13
| | | | | | | | | * proc.c (rb_method_entry_min_max_arity): catch up this fix. * vm_insnhelper.c (def_iseq_ptr): constify. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-22svn2015-07-211-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c (internal_object_p): Now a singleton classes appear byko12015-07-213-3/+23
| | | | | | | | | ObjectSpace.each_object. [Bug #11360] * test/ruby/test_objectspace.rb: add a test about it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* thread.c: refactor a loopnobu2015-07-212-81/+85
| | | | | | | | * thread.c (do_select): replace switch and goto with a loop to suppress maybe-uninitialized warnings by gcc6. * thread.c (set_unblock_function, rb_wait_for_single_fd): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/ruby/test_range.rb: Add test for Range#hashhsbt2015-07-212-0/+7
| | | | | | [fix GH-969] Patch by @yui-knk git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Makefile.sub: UNREACHABLEnobu2015-07-211-0/+1
| | | | | | * win32/Makefile.sub (config.h): define UNREACHABLE by __assume. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* console.c: undefined vknobu2015-07-213-3/+493
| | | | | | | * ext/io/console/console.c (console_key_pressed_p): raise undefined virtual key code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* cont.c: CreateFiberEx fallbacknobu2015-07-211-0/+4
| | | | | | | * cont.c (fiber_initialize_machine_stack_context): fallback definition of CreateFiberEx for VC6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32.c: symlink constants fallbacknobu2015-07-211-0/+11
| | | | | | | * win32/win32.c (rb_w32_wreadlink): define symlink constants for VC6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby/missing.h: M_PI fallback definitionnobu2015-07-213-4/+8
| | | | | | | * include/ruby/missing.h (M_PI, M_PI_2): fallback definitions for VC6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby/win32.h: include windows.hnobu2015-07-213-0/+9
| | | | | | | | * include/ruby/win32.h: include windows.h before winsock2.h, because mswsock.h included by the former uses SOCKET defined after it in the latter. fix a build failure with VC6. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c: constify the first parameter (iseq).ko12015-07-214-4/+12
| | | | | | | | | | * iseq_add_mark_object() * iseq_add_mark_object_compile_time() * iseq.c, iseq.h (rb_iseq_add_mark_object): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/socket/test_nonblock.rb: increase buffer sizes to OpenBSD limitsnormal2015-07-212-2/+8
| | | | | | | | * test/socket/test_nonblock.rb: increase buffer sizes to OpenBSD limits. Thanks to Jeremy Evans <code@jeremyevans.net> [ruby-core:70058] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* load.c (ruby_dln_librefs): make staticnormal2015-07-212-1/+5
| | | | | | | This isn't used outside of load.c, so there appears to be no reason to expose it to other modules. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typo in OptionParser#complete docs [ci skip]nobu2015-07-212-1/+5
| | | | | | * lib/optparse.rb (complete): [DOC] fix typo. [Fix GH-973] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_process.rb: split a testnobu2015-07-211-1/+11
| | | | | | | * test/ruby/test_process.rb (test_execopts_popen): split into 3 tests, no other redirections, stdio, and other fds. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-07-21svn2015-07-201-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c: IO.copy_stream uses poll on Linuxnormal2015-07-202-1/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | poll and ppoll have a superior API which doesn't require the kernel to scan a potentially large bitmap to find a high-numbered FD [ruby-core:35572]. So favor using poll in case IO.copy_stream encounters a non-blocking FD. We cannot reliably use poll on most OSes, because file types (e.g. FIFOs) which work with select may not work with poll. Fortunately, Linux uses a common notification mechanism between all select/poll/epoll variants, so all file types are equally supported between the notification mechanisms. Verified by watching strace on the following scripts: *** maygvl_copy_stream_wait_read *** require 'io/nonblock' r, w = IO.pipe r.nonblock = true IO.copy_stream(r, "/dev/null") *** nogvl_copy_stream_wait_write *** require 'io/nonblock' r, w = IO.pipe w.nonblock = true IO.copy_stream("/dev/zero", w) * io.c (nogvl_wait_for_single_fd): new function for Linux (maygvl_copy_stream_wait_read): Linux-specific version (nogvl_copy_stream_wait_write): use nogvl_wait_for_single_fd [ruby-core:70051] [Feature #11377] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e