Граф коммитов

826 Коммитов

Автор SHA1 Сообщение Дата
kosaki dea685c783 * missing/explicit_bzero.c: new file. define explicit_bzero.
* common.mk: add a rule for explicit.o.
* configure.in: detect explicit_bzero and memset_s.
* include/ruby/missing.h: add explicit_bzero.
* random.c (init_randomseed): use explicit_bzero() instead of
  memset(). memset could be eliminated by compiler optimization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 20:26:13 +00:00
usa adbf87232c * ext/extmk.rb (--extflags): new option to pass EXTLDFLAGS to children,
expecially exts.mk.

* common.mk (EXTMK_ARGS): use above option.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-18 15:55:39 +00:00
hsbt ece64610d3 * test/runner.rb: use official repository for coverage tool.
* Makefile.in: ditto.
* common.mk: ditto.
* .gitignore: ignored third party repositories.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-09 08:38:20 +00:00
hsbt 863396a5fe * common.mk: Use ruby organization url for simplecov repository.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-09 06:56:36 +00:00
nobu d7924abf5d common.mk: update dependency
* common.mk: update dependency of string.o to id.h for r52479.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-07 18:48:33 +00:00
nobu 880f715117 common.mk: remove extra slash
* common.mk (incs): remove extra slash before
  vm_call_iseq_optimized.inc.  as nmake vpath syntax includes a
  separator, don't append it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 23:54:50 +00:00
nobu a8b56b9e50 common.mk: vm_call_iseq_optimized.inc
* common.mk (incs): generate vm_call_iseq_optimized.inc too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 23:37:44 +00:00
ko1 f9697c5637 * vm_insnhelper.c: introduce new call handler for simple ISeqs.
vm_call_iseq_setup_normal_0start() is simple, however it has
  some loops/conditions depends on ISeq::param.size and
  ISeq::local_size (in vm_push_frame(), inlined into this function).

  There are many simple methods which has a few parameters and local
  variables. So that this patch introduces several special functions
  generated in vm_call_iseq_optimized.inc by
  tool/mk_call_iseq_optimized.rb.

  This script makes
    vm_call_iseq_setup_normal_0start_Xparams_Ylocals()
  where X is 0 to 3 and Y is 1 to 6 (as current setting).
  In this case, X * Y = 24 functions are created.

  These functions creates fast method dispatch by inlining
  vm_push_frame() with immediate params/locals sizes.

  On my laptop, we can have the following results.

  vm2_method*       1.083 (8.3% faster)
  vm2_poly_method*  0.961 (3.4% slower)

  It shows 8.3% faster for inner loop method dispatch (hit inline
  cache), but 3.4% slower when inline cache miss because we need
  to find a suitable call handler.

* common.mk: add a rule for vm_call_iseq_optimized.inc.

* tool/mk_call_iseq_optimized.rb: added.

* vm.c: include vm_call_iseq_optimized.inc.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 17:53:35 +00:00
nobu 29a1905c7d common.mk: showflags only once
* common.mk (showflags): do not show flags from recursive make.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 14:56:37 +00:00
kazu dba4adb5c0 fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-19 15:55:01 +00:00
kosaki 727ae6f813 * common.mk: add a comment how to use "make test-all"
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 05:40:55 +00:00
kosaki 75356fc879 * common.mk: add comments how to use "make benchmark"
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52176 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 05:40:25 +00:00
kosaki 4ad2057f27 * ChangeLog: Good-bye OS/2.
* common.mk: ditto.
* configure.in: ditto.
* dln_find.c: ditto.
* ext/Setup.emx: ditto.
* ext/extmk.rb: ditto.
* ext/socket/extconf.rb: ditto.
* ext/zlib/extconf.rb: ditto.
* file.c: ditto.
* include/ruby/defines.h: ditto.
* io.c: ditto.
* lib/mkmf.rb: ditto.
* missing/os2.c: ditto.
* process.c: ditto.
* ruby.c: ditto.
* NEWS: announce OS/2 is no longer supported.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52161 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-18 01:18:34 +00:00
kosaki bc8687acd6 * ruby.c (open_load_file): reset O_NONBLOCK after open.
Even if S_ISREG() is true, the file may be file on FUSE filesystem
  or something. We can't assume O_NONBLOCK is safe.
  Moreover, we should wait if the path is point to FIFO. That's
  FIFO semantics. GVL should be transparent from ruby script.
  Thus, just reopen without O_NONBLOCK for filling the requirements.
  [Bug #11060][Bug #11559]
* ruby.c (loadopen_func): new for the above.
* file.c (ruby_is_fd_loadable): new. for checks loadable file type
  of not.
* file.c (rb_file_load_ok): use ruby_is_fd_loadble()
* internal.h: add ruby_is_fd_loadble()
* common.mk: now, ruby.o depend on thread.h.
* test/ruby/test_require.rb
(TestRequire#test_loading_fifo_threading_success): new test.
  This test successful case that loading from FIFO.
* test/ruby/test_require.rb
(TestRequire#test_loading_fifo_threading_raise): rename from
  test_loading_fifo_threading. You souldn't rescue an exception
  if you test raise or not.
  Moreover, this case should be caught IOError because load(FIFO)
  should be blocked until given any input.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-17 21:09:10 +00:00
nobu abf832f435 file.c: non-blocking open
* file.c (rb_file_load_ok): open in non-blocking mode withoout
  releasing GVL.  don't care about others than regular files and
  directories.  [ruby-dev:49272] [Bug #11559]
* ruby.c (load_file_internal): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-16 06:54:38 +00:00
nobu 24e5e37410 common.mk: separate test-testframework
* common.mk (check): separate test-testframework from test-all
  only when building check.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 13:54:43 +00:00
nobu 53672aa9a6 gmake.mk: test order
* common.mk (test-almost): rename target to test other than
  test-frameworks.

* defs/gmake.mk (test-almost): run after test-testframework.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-04 12:35:47 +00:00
nobu 0d324c848f common.mk: separate tests
* common.mk (check): separate test-testframework and test-all.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-03 14:11:23 +00:00
duerst ae8c13f517 common.mk, lib/unicode_normalize/tables.rb: Change Unicode
Version for character normalization data from 7.0.0 to 8.0.0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-02 00:20:23 +00:00
nobu 690f2c7230 common.mk: clear envs for GEM
* common.mk: clear environment variables for GEM paths to get rid
  of searching unexpected gems.  fix failures on travis-ci.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-26 17:52:46 +00:00
nobu 91efee1bd0 common.mk: no prefixes
* common.mk (yes-test-testframework): remove unnecessary test
  directory prefixes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-18 04:45:01 +00:00
hsbt 8f688497c1 * common.mk: fix command error with outside builddir.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-17 13:33:11 +00:00
hsbt 3d86c47356 * common.mk: separated test for test-framework from test-all task.
They should be invoke at first before tests of test-all.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-17 08:42:14 +00:00
nobu 2046f38aa6 dir.c: fundamental_encoding_p
* dir.c (fundamental_encoding_p, push_glob): compare by encoding
  index immediately.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-15 06:06:19 +00:00
nobu 9c9d555e7f win32.c: encindex.h
* win32/win32.c: needs encindex.h for encoding indexes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-15 06:03:37 +00:00
nobu 89fb3746ac localeinit.c: encindex.h
* localeinit.c: needs encindex.h for ENCINDEX_US_ASCII and
  ENCINDEX_ASCII.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-15 05:57:30 +00:00
nobu 75a1d33bcf enc: fundamental encindex
* enc/{ascii,us_ascii,utf_8}.c: set encoding indexes of
  fundamental built-in encodings so that usable as well as
  allocated rb_encoding before rb_enc_init().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-15 05:49:52 +00:00
nobu 078b6c9838 encindex.h: ENCINDEX
* encindex.h: separate encoding index constants from internal.h.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-15 05:49:20 +00:00
nobu cb1ff236f5 common.mk: excluding options to test-ruby
* common.mk (yes-test-ruby): apply excluding options as well as
  "test".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-14 06:07:18 +00:00
usa 1ab8dc3da8 * common.mk (update-gems): use BASERUBY instead of RUNRUBY.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-09 02:34:39 +00:00
nobu d41838c8d4 common.mk: exclude memory leak tests
* common.mk (TEST_EXCLUDES): exclude tests for memory leak, often
  too expensive and/or false-positive.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-03 05:22:41 +00:00
ko1 dcf6ac4975 * thread_tools.c: rename thread_tools.c to thread_sync.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-01 09:08:42 +00:00
nobu 2f6fdd3aeb win32.c: rb_w32_reparse
* win32/win32.c (rb_w32_reparse): read reparse point in a dynamic
  buffer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-25 05:11:19 +00:00
ko1 0de5e1cb87 * ext/thread/thread.c: move definitions of Queue, SizedQueue
and ConditionalVariables to thread_tools.c. In other wowrds,
  such classes are built-in.
  [Feature #8919]
  At first, I planned to embed only a Queue class.
  However, rubygems requires 'thread.rb' (rubygems are
  required at first, when launch MRI without --disable-gems).
  So most of people require 'thread.rb' as an embedded library.
  Now, ext/thread/thread.c is empty, only for a dummy for
  compatibility.
* thread.c: move a definition of Mutex class to thread_tools.c.
  And define Mutex class under Thread (so now Mutex is Thread::Mutex).
  Because other thread related classes are also defined under Thread.
  We remain ::Mutex as Thread::Mutex. Only an inspect result is changed.
* common.mk: add dependency from thread.o to thraed_tools.c.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-21 23:36:23 +00:00
svn a17559021c * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-12 08:44:34 +00:00
ko1 c35ff11ae5 * id_table.h: introduce ID key table.
[Feature #11420]
  This table only manage ID->VALUE table to reduce overhead of st.
  Some functions prefixed rb_id_table_* are provided.
* id_table.c: implement rb_id_table_*.
  There are several algorithms to implement it.
  Now, there are roughly 4 types:
    * st
    * array
    * hash (implemented by  Yura Sokolov)
    * mix of array and hash
  The macro ID_TABLE_IMPL can choose implementation.
  You can see detailes about them at the head of id_table.c.
  At the default, I choose 34 (mix of list and hash).
  This is not final decision.
  Please report your suitable parameters or
  your data structure.
  * symbol.c: introduce rb_id_serial_t and rb_id_to_serial()
    to represent ID by serial number.
  * internal.h: use id_table for method tables.
  * class.c, gc.c, marshal.c, vm.c, vm_method.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-12 08:43:55 +00:00
nobu 3c402604db win32.c: use ruby_strdup
* win32/win32.c (getifaddrs): use ruby_strdup instead of
  combination ruby_xmalloc, lstrlen and lstrcpy.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-10 05:19:25 +00:00
nobu 16ea9d948f common.mk: PHONY should be phony [ci skip]
* common.mk (PHONY): should not depend on any real files, not to
  make those dependencies inadvertently.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-30 06:30:38 +00:00
nobu f2240f1086 common.mk: no version.i
* common.mk (clean-local): version.i is no longer generated
  automatically.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-30 03:17:56 +00:00
nobu 53e301a2d8 common.mk: fix conflict of version.i
* common.mk ($(arch)-fake.rb): read from STDIN instead of creating
  version.i, to get rid of conflict with tool/update-deps.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-29 02:06:38 +00:00
normal 442b77e721 symbol.h: memoize hashval for RSymbol
This speeds up the hash function for dynamic symbols.
[ruby-core:70129] [Bug #11396], nearly up to Ruby 2.1 levels

Power-of-two hash sizing [Feature #9425] speeds up cases where we
have a good hash, but this means we can no longer hide behind weak
hashes.  Unfortunately, object IDs do not hash well, but we may
use the extra space in the RSymbol struct to memoize the hash value.

Further optimizations should be possible.  For now, the st.c APIs
force us to calculate rb_str_hash redundantly at dsym registration.

* symbol.h (struct RSymbol): add hashval field
* symbol.c (dsymbol_alloc): setup hashval field once
* hash.c (rb_any_hash): return RSymbol->hashval directly
* common.mk: hash.o depends on symbol.h
  Thanks to Bruno Escherl <bruno@escherl.net> for the bug report
  [ruby-core:70129] [Bug #11396]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 22:25:30 +00:00
nobu c92f22588e common.mk: clean preludes
* common.mk (distclean-local): clean preludes in the build
  diretory, not by realclean.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 03:44:00 +00:00
nobu 0b8c716233 common.mk: fix clean order
* common.mk (clean, distclean): clean local files before platform
  directory, some files may exist there.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 03:42:12 +00:00
nobu b343148b5a common.mk: clean-local
* common.mk (clean-local): remove added files and a directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 03:41:55 +00:00
nobu d11a93c0d1 common.mk: fix exec
* 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
2015-07-22 07:14:20 +00:00
nobu 2c8fd3fce8 common.mk: add exec
* common.mk: add exec to quoted commands.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-22 00:35:23 +00:00
nobu bcd96d92f3 random.c: try getrandom
* random.c (fill_random_bytes_syscall): try getrandom system call
  on Linux if supported by the kernel.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-07 06:26:06 +00:00
normal 08414a6afa common.mk: add ccan/list headers as deps for st.c
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-26 20:19:15 +00:00
nobu c96e4a6a49 common.mk: reorder args for ENC_MK
* common.mk (ENC_MK): reorder $(ENCS) before the target file name,
  as enc/make_encmake.rb ignores any arguments after the target.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-18 13:35:47 +00:00
nobu a6141c5960 common.mk: -fake
* common.mk (no-fake): add alias -fake for dist.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-17 23:34:58 +00:00