Commit graph

42848 commits

Author SHA1 Message Date
headius
a4e97af645 * test/ruby/test_rubyoptions.rb: make version matching support
JRuby's version output.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 16:24:04 +00:00
naruse
3d5a3a236d * bignum.c (big2str_2bdigits): reduce div instruction.
Fix the code so that C compiler unify div instructions of `%` and `/`.

Before:
  4291b0:       48 89 f0                mov    %rsi,%rax
  4291b3:       31 d2                   xor    %edx,%edx
  4291b5:       48 83 ef 01             sub    $0x1,%rdi
  4291b9:       48 f7 f1                div    %rcx  # <---- !
  4291bc:       41 0f b6 04 11          movzbl (%r9,%rdx,1),%eax
  4291c1:       31 d2                   xor    %edx,%edx
  4291c3:       41 88 04 38             mov    %al,(%r8,%rdi,1)
  4291c7:       48 63 4b 04             movslq 0x4(%rbx),%rcx
  4291cb:       48 89 f0                mov    %rsi,%rax
  4291ce:       48 f7 f1                div    %rcx  # <---- !
  4291d1:       48 89 c6                mov    %rax,%rsi
  4291d4:       48 85 ff                test   %rdi,%rdi
  4291d7:       75 d7                   jne    4291b0 <big2str_2bdigits+0x50>
  4291d9:       48 63 6b 10             movslq 0x10(%rbx),%rbp
  4291dd:       48 01 6b 20             add    %rbp,0x20(%rbx)
  4291e1:       48 8b 44 24 48          mov    0x48(%rsp),%rax
  4291e6:       64 48 33 04 25 28 00    xor    %fs:0x28,%rax

After:
  4291b0:       48 63 73 04             movslq 0x4(%rbx),%rsi
  4291b4:       31 d2                   xor    %edx,%edx
  4291b6:       48 83 e9 01             sub    $0x1,%rcx
  4291ba:       48 f7 f6                div    %rsi  # <---- !
  4291bd:       41 0f b6 14 10          movzbl (%r8,%rdx,1),%edx
  4291c2:       88 14 0f                mov    %dl,(%rdi,%rcx,1)
  4291c5:       48 85 c9                test   %rcx,%rcx
  4291c8:       75 e6                   jne    4291b0 <big2str_2bdigits+0x50>
  4291ca:       48 63 6b 10             movslq 0x10(%rbx),%rbp
  4291ce:       48 01 6b 20             add    %rbp,0x20(%rbx)
  4291d2:       48 8b 44 24 48          mov    0x48(%rsp),%rax
  4291d7:       64 48 33 04 25 28 00    xor    %fs:0x28,%rax

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 10:14:48 +00:00
duerst
4b15b54d68 * include/ruby/oniguruma.h, enc/unicode.c: Adjusting flag assignments
and macros to work with unified CaseMappingSpecials array.
  (with Kimihito Matsui)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 09:39:54 +00:00
nobu
ea5e885a95 optimize named capture assignment
* compile.c (compile_named_capture_assign): optimize named capture
  assignments, by replacing repeating global variable accesses
  with `dup`, and by returning the matched result instead of
  re-getting it from the MatchData.

* parse.y (reg_named_capture_assign_gen): build just assignment
  nodes for the optimization.

ex. `/(?<x>.)/ =~ "bar"`

- old
  ```
  0000 putstring        "bar"
  0002 opt_regexpmatch1 /(?<x>.)/
  0004 pop
  0005 getglobal        $~
  0007 branchunless     25
  0009 getglobal        $~
  0011 putobject        :x
  0013 opt_aref         <callinfo!mid:[], argc:1, ARGS_SIMPLE>
  0016 setlocal_OP__WC__0 2
  0018 getglobal        $~
  0020 putobject_OP_INT2FIX_O_0_C_
  0021 opt_send_without_block <callinfo!mid:begin, argc:1, ARGS_SIMPLE>
  0024 leave
  0025 putobject        nil
  0027 setlocal_OP__WC__0 2
  0029 putobject        nil
  0031 leave
  ```

- new
  ```
  0000 putstring        "bar"
  0002 opt_regexpmatch1 /(?<x>.)/
  0004 getglobal        $~
  0006 dup
  0007 branchunless     14
  0009 putobject        :x
  0011 opt_aref         <callinfo!mid:[], argc:1, ARGS_SIMPLE>
  0014 setlocal_OP__WC__0 2
  0016 leave
  ```

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 07:53:39 +00:00
nobu
a4e6f7d707 ruby.c: reduce fstat
* file.c (ruby_is_fd_loadable): now return -1 if loadable but
  may block.
* ruby.c (open_load_file): wait to read by the result of
  ruby_is_fd_loadable, without fstat.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 07:03:01 +00:00
naruse
fcadcd3e68 * numeric.c (fix2str): improve r54092 like rb_int2big().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 04:41:16 +00:00
normal
9749511dfe document OpenSSL::SSL::SSLContext#setup as MT-unsafe
On a cursory inspection, using rb_block_call for extra_chain_cert
is thread-unsafe.  There may be other instances of thread-unsafe
behavior in this method, but one is enough.

* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): document as MT-unsafe
  [ruby-core:73803] [Bug #12069]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-14 01:20:14 +00:00
svn
bd61891167 * 2016-03-14
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-13 16:26:05 +00:00
nobu
3392b6c9e2 parse.y: adjust indent
* parse.y: adjust indent and tabify spaces after tabs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-13 16:26:04 +00:00
nobu
e13db770f4 win32.h: fix O_SHARE_DELETE
* include/ruby/win32.h (O_SHARE_DELETE): change to fit Fixnum
  limit.  [ruby-core:74285] [Bug #12171]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-13 00:43:25 +00:00
svn
f0d1787a1f * 2016-03-13
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-13 00:15:49 +00:00
nobu
05d916415f numeric.c: fix edge case
* numeric.c (rb_fix2str): fix edge case, accidentally generated
  wrong Fixnum from LONG_MIN.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-13 00:15:48 +00:00
nobu
8b4448e2e1 unicode.c: off-by-one error
* enc/unicode.c (CodePointListValidP): fix off-by-one error.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54091 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-12 01:35:54 +00:00
nobu
d48f923648 unicode.c: boundary check
* enc/unicode.c (CodePointListValidP): add pathological boundary
  check, for gcc 4.9.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-12 01:15:31 +00:00
nobu
12ec73ad92 Malformed RDoc syntax in catch [ci skip]
* vm_eval.c (rb_f_catch): [DOC] fix malformed RDoc syntax, "+...+"
  cannot enclose non-identifier characters.
  a patch by Sebastian S in [ruby-core:74278].  [Bug#12170]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-12 00:50:29 +00:00
svn
2d6f1d90f3 * 2016-03-12
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 17:58:50 +00:00
akr
db271576bb * test/lib/test/unit.rb: describe !/REGEXP/ in the help message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 17:58:49 +00:00
nobu
83e36bb5a6 testunit: negative filter
* test/lib/test/unit.rb (Options#non_options): make regexp name
  options prefixed with "!" negative filters.
* common.mk (TEST_EXCLUDES): use negative filter to exclude memory
  leak tests.  -x option excludes test files, not test methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 08:03:11 +00:00
duerst
59766643db * enc/unicode/case-folding.rb, casefold.h: Streamlining approach to
case mapping data not available from case folding by unifying all
  three cases (special title, special upper, special lower).
* enc/unicode.c: Adjust macro names for above (macros are currently inactive).
  (with Kimihito Matsui)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 07:11:27 +00:00
nobu
a2b88f5325 Revert r54082 "ruby.c: load in binary mode"
DATA is expected to be text mode, but there is no ways to make a
FD to text mode from binary mode.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 03:30:25 +00:00
svn
50dd73582e * 2016-03-11
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 01:47:20 +00:00
nobu
d661eb44c7 ruby.c: load in binary mode
* ruby.c (open_load_file): always open in binary mode if provided,
  parser deals with CRs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-11 01:47:19 +00:00
nobu
cf09c0c351 iseq.h: coverage_enabled flag
* iseq.c (prepare_iseq_build): enable coverage by coverage_enabled
  option, not by parse_in_eval flag in the thread context.
* iseq.h (rb_compile_option_struct): add coverage_enabled flag.
* parse.y (yycompile0): set coverage_enabled flag if coverage
  array is made.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 08:34:18 +00:00
nobu
2d39d11436 node.c: no nd_compile_option unless set
* node.c (dump_node): show nd_compile_option only when it is set.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 07:27:41 +00:00
nobu
72b3e226fc node.c: stringize before expansion
* node.c (F_NODE, F_OPTION): stringize member names defined as
  macros before expansion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 07:27:40 +00:00
nobu
46ac76b6ed iseq.h: bit flags
* iseq.h (rb_compile_option_struct): turn boolean flags to bit
  fields.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 07:06:39 +00:00
nobu
a944bdd5fa node.c: hidden options hash
* node.c (dump_option): nd_compile_option is a hidden hash object,
  cannot call inspect on it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 06:19:55 +00:00
nobu
9871d88ee4 iseq.c: set coverage at once
* iseq.c (prepare_iseq_build): set coverage at once, not
  repeatedly resetting.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 05:32:49 +00:00
nobu
c3900ff4a8 thread.c: check type of coverage
* thread.c (update_coverage): check type of coverage array not
  only if non-zero.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 05:32:48 +00:00
svn
e266279aca * 2016-03-10
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 00:55:37 +00:00
odaira
acfd12ae36 * test/socket/test_socket.rb (test_udp_recvmsg_truncation):
AIX does not set the MSG_TRUNC flag for a message partially read
  by recvmsg(2) with the MSG_PEEK flag set.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-10 00:55:37 +00:00
kazu
75b61aa316 fix a typo [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 13:30:13 +00:00
nobu
47c00f30ab common.mk: dependency of prelude.o
* common.mk (prelude.o): fix missing dependency on iseq.h, for
  rb_compile_option_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 10:39:21 +00:00
nobu
649736deaf driver.rb: unused variable
* benchmark/driver.rb (BenchmarkDriver.load): remove unused
  variable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:52:27 +00:00
ko1
dc39baa9c9 * benchmark/driver.rb: fix my last commit (syntax error).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:49:06 +00:00
ko1
a036c02650 * benchmark/driver.rb: fix output messages.
* benchmark/memory_wrapper.rb: use respond_to? because
  member? does not work well.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54062 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:42:32 +00:00
svn
a5ca1179f3 * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:22:28 +00:00
ko1
61aa2685d3 * benchmark/driver.rb: support memory usage benchmark.
use `--measure-target=[target]'.
  Now, we can use the following targets:
    * real (default): real time which returns process time in sec.
    * peak: peak memory usage (physical memory) in bytes.
    * size: last memory usage (physical memory) in bytes.

* benchmark/memory_wrapper.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:22:27 +00:00
nobu
2d3a6ba66d hash.c: COPY_DEFAULT
* hash.c (COPY_DEFAULT): new macro to copy the default value/proc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:17:04 +00:00
nobu
e684069042 hash.c: SET_PROC_DEFAULT
* hash.c (SET_PROC_DEFAULT): new macro to set the default proc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:17:03 +00:00
nobu
7522e06424 hash.c: SET_DEFAULT
* hash.c (SET_DEFAULT): new macro to set the default value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:17:03 +00:00
nobu
921d6e269d hash.c: hash_dup for rb_hash_to_h
* hash.c (rb_hash_to_h): share hash_dup to copy the contents and
  the default value/proc only.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:17:02 +00:00
nobu
865a326da9 hash.c: make duplicated hash WB protected
* hash.c (hash_alloc_flags): allocate new hash with the flags and
  the default value.

* hash.c (hash_dup): duplicate with the flags and the default
  value.

* hash.c (rb_hash_dup): make the duplicated hash write-barrier
  protected.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 07:17:01 +00:00
svn
f937d32f3f * properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 06:05:54 +00:00
ko1
1228d134dd * benchmark/bm_vm3_gc_old_full.rb: add GC.start benchmark.
* benchmark/bm_vm3_gc_old_immediate.rb: ditto.

* benchmark/bm_vm3_gc_old_lazy.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 06:05:53 +00:00
ko1
b065141050 * benchmark/driver.rb: exit benchmarking if a benchmark process
receives signals.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 06:02:18 +00:00
nobu
cccfe4774c test_hash.rb: tests for to_h
* test/ruby/test_hash.rb: add tests for Hash#to_h, which copies
  default value/proc but not instance variables.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 05:14:42 +00:00
nobu
d000891e43 hash.c: tbl_update_func
* hash.c (tbl_update_func): extract function typedef from the
  declaration of tbl_update.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 04:45:27 +00:00
nobu
e1e223a874 memory_status.rb: independent of MiniTest
* test/lib/memory_status.rb: make Memory::Status independent of
  MiniTest::Skip.
* test/lib/test/unit/assertions.rb (assert_no_memory_leak): skip
  if Memory::Status is not available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 04:22:50 +00:00
nobu
b3f4db9227 memory_status.rb: remove unused values
* test/lib/memory_status.rb: remove initial status values, which
  are not used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-09 03:48:33 +00:00