aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* internal.h: fix r57507nobu2017-02-031-5/+5
| | | | | | | * internal.h (rb_overflowed_fix_to_int): invert sign bit. should not set LSB of fixnum value, which is always set, to MSB. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c: remove rb_ensure usage for rb_str_tmp_frozen_* callsnormal2017-02-021-73/+20
| | | | | | | | | | | | | Using rb_ensure pessimizes the common case and makes the code more difficult to read and follow. If we hit an exceptions during write, just let the GC handle cleanup as the exception is already bad for garbage. * io.c (io_fwrite): call rb_str_tmp_frozen{acquire,release} directly (rb_io_syswrite): ditto (fwrite_do, fwrite_end, swrite_do, swrite_end): remove git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typo and argument of r57506naruse2017-02-021-3/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use carry flag to reduce instructionsnaruse2017-02-024-34/+54
| | | | | | | | | | | | | | | | NOTE: (1) Fixnum's LSB is always 1. It means you can always run `x - 1` without overflow. (2) Of course `z = x + (y-1)` may overflow. Now z's LSB is always 1, and the MSB of true result is also 1. You can get true result in long as `(1<<63)|(z>>1)`, and it equals to `(z<<63)|(z>>1)` == `ror(z)`. GCC and Clang have __builtin_add_ovewflow: * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html * https://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2017-02-03svn2017-02-021-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/fcntl: Specify frozen_string_literal: true.kazu2017-02-021-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add class name to assert messageskazu2017-02-021-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Added initial gemspec for Date module.hsbt2017-02-021-0/+17
| | | | | | [Feature #13183] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* escape.c: check argumentnobu2017-02-022-1/+8
| | | | | | | * ext/cgi/escape/escape.c (optimized_unescape): check accept_charset encoding argument. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Added initial gemspec for CMath module.hsbt2017-02-021-0/+16
| | | | | | [Feature #13182] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_cgi_util.rb: encoding testsnobu2017-02-021-4/+10
| | | | | | | | | * test/cgi/test_cgi_util.rb (test_cgi_unescape): \u is useless on old versions. * test/cgi/test_cgi_util.rb (test_cgi_include_unescape): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: restore catch entry spnobu2017-02-021-1/+8
| | | | | | | | * compile.c (iseq_build_from_ary_exception): restore stack depth of catch entries. accurate stack depths cannot be calculated from dumped array. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: restore misc paramsnobu2017-02-021-5/+13
| | | | | | | * compile.c (rb_iseq_build_from_ary): restore misc params. accurate stack depths cannot be calculated from dumped array. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: keyword table for required kwargnobu2017-02-021-1/+2
| | | | | | | * compile.c (iseq_build_kw): keyword table is necessary also when required keyword argumetns only. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_iseq_load.rb: refine test_require_integrationnobu2017-02-021-8/+8
| | | | | | | | | * test/-ext-/iseq_load/test_iseq_load.rb (test_require_integration): assert with diff. [ci skip] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_time.rb: use UTCnobu2017-02-011-1/+1
| | | | | | | * test/ruby/test_time.rb (test_strftime_no_hidden_garbage): fix failure due to timezone offset. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2017-02-02svn2017-02-011-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_queue.rb: fix portabilitynobu2017-02-011-4/+4
| | | | | | | | * test/thread/test_queue.rb (test_queue_with_trap): fix portability. use SIGINT instead of SIGUSR2 which is supported on not all platforms. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Prepare to make CSV module to default gem.hsbt2017-02-012-5/+28
| | | | | | | | | * lib/csv.gemspec: initial gemspec for csv gem. * tool/rbinstall.rb: support gemspec located under lib direcotry like `lib/foo.gemspec` [Feature #13177] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: use AC_SEARCH_LIBSnobu2017-02-011-10/+2
| | | | | | | | * configure.in (--with-gmp, --with-jemalloc): use AC_SEARCH_LIBS to check if no library is required, instead of AC_CHECK_LIB. [ruby-core:79368] [Bug #13175] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: remove explicit MFLAGSnobu2017-02-013-18/+18
| | | | | | | | | | It is unnecessary to pass MFLAGS to sub-makes, because it is evaluated implicitly if set by make. GNU make 4.2 sets both of -jN and --jobserver-auth (or --jobserver-fds in older versions) options which conflict. And it is useless for command line macros since Microsoft NMAKE does not set them. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/setup.mak: reordernobu2017-02-011-27/+30
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2017-02-01svn2017-01-311-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add IMEMO type to heap dump output.tenderlove2017-01-312-0/+40
| | | | | | | | | IMEMO objects have many types. Without this change, we cannot see what types of IMEMO objects are being used when dumping the heap. Adding the type to the IMEMO object will allow us to gather statistics about IMEMO objects being used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby.c: defining DATAnobu2017-01-311-20/+18
| | | | | | | * ruby.c (load_file_internal): define DATA here instead of ensure func. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ruby.c: forbid optionsnobu2017-01-311-8/+6
| | | | | | | | * ruby.c (forbid_setid): constified. * ruby.c (process_options): forbid if setid earlier. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Describe about RUBY_CODESIGNnaruse2017-01-311-0/+3
| | | | | | | With RUBY_CODESIGN people can avoid pushing many OK button of firewall dialogs on macOS through test-all. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* openssl: import v2.0.3rhe2017-01-318-9/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | Import Ruby/OpenSSL 2.0.3. Only bugfixes. The full commit log since 2.0.2 (imported at r57146) can be found at: https://github.com/ruby/openssl/compare/v2.0.2...v2.0.3 ---------------------------------------------------------------- Corey Bonnell (1): Fix for ASN1::Constructive 'each' implementation Kazuki Yamaguchi (10): Fix build with static OpenSSL libraries on Windows ([ruby-core:78878] [Bug #13080]) Merge pull request #96 from CBonnell/master Merge branch 'topic/windows-static-linking-without-pkg-config' into maint appveyor.yml: update OpenSSL version to 1.0.2j buffering: fix typo in doc test/envutil: fix assert_raise_with_message x509: fix OpenSSL::X509::Name#eql? ([ruby-core:79310] [Bug #13170]) ruby-openssl-docker: update versions of Ruby and OpenSSL .travis.yml: test with Ruby 2.4 Ruby/OpenSSL 2.0.3 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Initial commit for gem release of webrick.hsbt2017-01-311-0/+16
| | | | | | [Feature #13173] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mkmf.rb: message format stringnobu2017-01-311-3/+3
| | | | | | * lib/mkmf.rb (checking_for): message needs format string. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* allow Queue operation in trap.ko12017-01-312-1/+18
| | | | | | | | | | * thread_sync.c: allow spurious wakeup to check Queue status just after trap. [Bug #12405] * test/thread/test_queue.rb: add a test for it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* define rb_thread_sleep_deadly_allow_spurious_wakeup().ko12017-01-312-1/+9
| | | | | | | | | * thread.c, thread_sync.c: define new function rb_thread_sleep_deadly_allow_spurious_wakeup() and use it instead of using sleep_forever() directly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* use TRUE/FALSE.ko12017-01-312-4/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c (time_strftime): avoid garbage in common casenormal2017-01-312-3/+16
| | | | | | | | | | strftime format strings which are dynamically-generated will benefit from avoiding garbage, here. * time.c (time_strftime): use rb_str_tmp_frozen_{acquire,release} * test/ruby/test_time.rb (test_strftime_no_hidden_garbage): new test git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* limits.c.tmpl: fallback ULLONG_MAXnobu2017-01-311-0/+3
| | | | | | | * template/limits.c.tmpl (ULLONG_MAX): add a fallback definition. On old CentOS lacks ULLONG_MAX. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_io.rb: separate a testnobu2017-01-311-0/+3
| | | | | | | * test/ruby/test_io.rb (test_closed_stream_in_rescue): run in a separated process. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* sprintf.c: avoid garbage in common (no exception) casenormal2017-01-312-2/+14
| | | | | | | | | | | Format strings which are dynamically-generated will benefit from this. This won't cover exceptions, but exceptions for sprintf should be too uncommon to care about (unlike IO) * sprintf.c (rb_str_format): use rb_str_tmp_frozen_{acquire,release} * test/ruby/test_sprintf.rb (test_no_hidden_garbage): new test git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c (rb_io_syswrite): avoid leaving garbage after writenormal2017-01-302-10/+39
| | | | | | | | | | | As with IO#write, IO#syswrite also generates garbage which can be harmful in hand-coded read-write loops. * io.c (swrite_arg, swrite_do, swrite_end): new (rb_io_syswrite): use new functions to cleanup garbage [ruby-core:78898] [Bug #13085] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (rb_str_tmp_frozen_release): release embedded stringsnormal2017-01-302-5/+21
| | | | | | | | | | | Handle the embedded case first, since we may have an embedded duplicate and non-embedded original string. * string.c (rb_str_tmp_frozen_release): handled embedded strings * test/ruby/test_io.rb (test_write_no_garbage): new test [ruby-core:78898] [Bug #13085] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2017-01-31svn2017-01-301-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c: recycle garbage on writenormal2017-01-303-4/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * string.c (STR_IS_SHARED_M): new flag to mark shared mulitple times (STR_SET_SHARED): set STR_IS_SHARED_M (rb_str_tmp_frozen_acquire, rb_str_tmp_frozen_release): new functions (str_new_frozen): set/unset STR_IS_SHARED_M as appropriate * internal.h: declare new functions * io.c (fwrite_arg, fwrite_do, fwrite_end): new (io_fwrite): use new functions Introduce rb_str_tmp_frozen_acquire and rb_str_tmp_frozen_release to manage a hidden, frozen string. Reuse one bit of the embed length for shared strings as STR_IS_SHARED_M to indicate a string has been shared multiple times. In the common case, the string is only shared once so the object slot can be reclaimed immediately. minimum results in each 3 measurements. (time and size) Execution time (sec) name trunk built io_copy_stream_write 0.682 0.254 io_copy_stream_write_socket 1.225 0.751 Speedup ratio: compare with the result of `trunk' (greater is better) name built io_copy_stream_write 2.680 io_copy_stream_write_socket 1.630 Memory usage (last size) (B) name trunk built io_copy_stream_write 95436800.000 6512640.000 io_copy_stream_write_socket 117628928.000 7127040.000 Memory consuming ratio (size) with the result of `trunk' (greater is better) name built io_copy_stream_write 14.654 io_copy_stream_write_socket 16.505 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: limits.cnobu2017-01-301-1/+10
| | | | | | | | | * common.mk (ext/rbconfig/sizeof/sizes.c): specify the target explicitly. * common.mk (ext/rbconfig/sizeof/limits.c): add the recipe. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* VC18 or later support stdbool.hnobu2017-01-301-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2017-01-300-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* make FIXNUM_MAX visible from Rubyshyouhei2017-01-306-30/+122
| | | | | | | | | | | | | | | | | | Because our tests now have several places where FIXNUM_MAX is needed, we decided to provide it along with several other constants. * template/limits.c.tmpl: new file, defining RbConfig::Limits * ext/rbconfig/sizeof/depend (limits.c): rule to generate limits.c * test/-ext-/num2int/test_num2int.rb: use RbConfig::Limits * bootstraptest/test_insns.rb: ditto. * .gitignore: ignore new generated file. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* add a ticket number.ko12017-01-301-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* reduce iterations for slower machinesnobu2017-01-301-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix up r57461nobu2017-01-301-4/+7
| | | | | | | * internal.h: Microsoft Visual C++ has never supported C99 yet, even in 2017. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* refine assertionsnobu2017-01-301-8/+10
| | | | | | | * test/irb/test_ruby-lex.rb (test_prompt): invert confinue flag by FIXME comments. adjust line numbers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* #include <stdbool.h>shyouhei2017-01-301-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 17+ years passed since standardized in ISO, 8 years since we added AC_HEADER_STDBOOL to configure.in. I'm quite confident that it's already safe to use <stdbool.h>. I understand that when we introduced AC_HEADER_STDBOOL, <stdbool.h> was remain not included because C standard and SVR4 curses conflicted miserably back then (#1). Though I believe such situation has been fixed already(#2), I'm afraid of your operating system might ship a proprietary curses that still conflicts with the standard. So to avoid potential problem, we limit the inclusion to our internal use only. #1 : 1997 version of SUSv2 said bool is "defined though typedef" in <curses.h>, while C99 said bool is a macro, plus in C++ bool is a keyword. AFASIK the curses library has never been a part of POSIX. #2 : In reality ncurses and NetBSD curses both just follow C99 to include <stdbool.h> from <curses.h>. I think C99 is now widely adopted. ---- * internal.h: #include <stdbool.h> if present. That is believed to be the case for 99.9% systems that lives today. Non-C99, non-C++ situations are intentionally left undefined, advised by Motohiro Kosaki. If you have such compiler, please fill the definition appropriately. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e