Age | Commit message (Collapse) | Author |
|
* ext/win32/lib/win32/registry.rb (API#SetValue): data size should
be in bytes, not in chars. [ruby-core:70365] [Bug #11439]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* io.c (rb_io_each_codepoint): read more data when read partially.
[ruby-core:70379] [Bug #11444]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
The low bits of Ruby object IDs are rarely populated in the current
implementation, so ensure the get used.
Early versions of this patch redundantly shifted static symbols in
any_hash, causing regresions with static symbols in hash_aref_sym
* hash.c (any_hash): skip rb_objid_hash for static syms
(rb_num_hash_start): extract from rb_ident_hash
(rb_objid_hash): call rb_num_hash_start
(rb_ident_hash): ditto
[ruby-core:70181] [Feature #11405]
target 0: a (ruby 2.3.0dev (2015-07-30 trunk 51437) [x86_64-linux]
target 1: b (ruby 2.3.0dev (2015-07-30 patch 51437) [x86_64-linux]
benchmark results from Xeon E3-1230 v3 @ 3.30GHz (turbo disabled):
minimum results in each 10 measurements.
Execution time (sec)
name a b
hash_aref_dsym 0.316 0.300
hash_aref_dsym_long 5.106 5.063
hash_aref_fix 0.304 0.297
hash_aref_flo 0.061 0.060
hash_aref_miss 0.433 0.430
hash_aref_str 0.408 0.396
hash_aref_sym 0.312 0.306
hash_aref_sym_long 0.482 0.469
hash_flatten 0.385 0.273
hash_ident_flo 0.036 0.037
hash_ident_num 0.277 0.276
hash_ident_obj 0.291 0.284
hash_ident_str 0.289 0.286
hash_ident_sym 0.285 0.281
hash_keys 0.269 0.271
hash_shift 0.020 0.016
hash_values 0.264 0.264
loop_whileloop2 0.101 0.099
vm2_bighash* 3.066 2.972
Speedup ratio: compare with the result of `a' (greater is better)
name b
hash_aref_dsym 1.052
hash_aref_dsym_long 1.008
hash_aref_fix 1.024
hash_aref_flo 1.015
hash_aref_miss 1.007
hash_aref_str 1.031
hash_aref_sym 1.018
hash_aref_sym_long 1.027
hash_flatten 1.410
hash_ident_flo 0.994
hash_ident_num 1.001
hash_ident_obj 1.022
hash_ident_str 1.012
hash_ident_sym 1.016
hash_keys 0.992
hash_shift 1.237
hash_values 1.001
loop_whileloop2 1.013
vm2_bighash* 1.032
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
iseq_location_setup always sets path, label and base_label fields,
and the only caller of iseq_location_setup (prepare_iseq_build) will
always pass non-nil `name' and `path' arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Setting VM_CHECK_MODE to 1 in vm_core.h makes noisy warnings
otherwise. AFAIK, the signedness of enums is
implementation-dependent, and GCC considers them unsigned and
warns.
Tested on gcc 4.7.2 (Debian 4.7.2-5)
* method.h (METHOD_ENTRY_VISI_SET): cast visi to int
(METHOD_ENTRY_FLAGS_SET): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Shutting down the timer thread now always closes pipes to free FDs.
In fact, we close the write ends of the pipes is done in the main
RubyVM to signal the timer thread shutdown.
To effectively close pipes, we implement userspace locks via
atomics to force the pipe closing thread to wait on any signal
handlers which may be waking up.
While we're at it, improve robustness during resource exhaustion and
allow it to limp along non-fatally if restarting a timer thread
fails.
This reverts r51268
Note: this change is tested with VM_CHECK_MODE 1 in vm_core.h
* process.c (close_unless_reserved): add extra check
(dup2_with_divert): remove
(redirect_dup2): use dup2 without divert
(before_exec_non_async_signal_safe): adjust call + comment
(rb_f_exec): stop timer thread for all OSes
(rb_exec_without_timer_thread): remove
* eval.c (ruby_cleanup): adjust call
* thread.c (rb_thread_stop_timer_thread): always close pipes
* thread_pthread.c (struct timer_thread_pipe): add writing field,
mark owner_process volatile for signal handlers
(rb_thread_wakeup_timer_thread_fd): check valid FD
(rb_thread_wakeup_timer_thread): set writing flag to prevent close
(rb_thread_wakeup_timer_thread_low): ditto
(CLOSE_INVALIDATE): new macro
(close_invalidate): new function
(close_communication_pipe): removed
(setup_communication_pipe_internal): make errors non-fatal
(setup_communication_pipe): ditto
(thread_timer): close reading ends inside timer thread
(rb_thread_create_timer_thread): make errors non-fatal
(native_stop_timer_thread): close write ends only, always,
wait for signal handlers to finish
(rb_divert_reserved_fd): remove
* thread_win32.c (native_stop_timer_thread): adjust (untested)
(rb_divert_reserved_fd): remove
* vm_core.h: adjust prototype
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* ext/win32/lib/win32/registry.rb (API#SetValue): add terminator
size, not 1 byte. [ruby-core:70365] [Bug #11439]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/timeout.rb (Timeout#timeout): freeze a string message to
reduce string allocations. [Fix GH-996]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
to iseq.h because this function is shared with iseq.c and compile.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* object.c (rb_num_to_dbl): move from num2dbl_with_to_f in math.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Reduce cognitive overhead, eye strain and keep lines less than 80
columns to benefit users of giant fonts (honestly I prefer 64 column
wrap :P).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
because jemalloc seems to replace the word `free' to `je_free'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* iseq.c (iseq_memsize): reimplement for wrapper
(param_keyword_size): extracted from iseq_memsize
(iseqw_mark): new mark function
(iseqw_data_type): new data type
(iseqw_new): wrap as iseqw_data_type
(iseqw_check): adjust for wrapper
(Init_ISeq): remove iseqw_iseq_key initialization
* test/objspace/test_objspace.rb: new test
[ruby-core:70344] [Feature #11435]
v2 changes:
- added RUBY_TYPED_WB_PROTECTED and write barrier
- account for rb_call_info_kw_arg_t entries
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_call_info_kw_arg_bytes): extract from compile.c
* compile.c (iseq_build_callinfo_from_hash): use above function
This will be use for implementing iseq_memsize
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
(such as ST_CONTINUE) for enum rb_id_table_iterator_result.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[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
|
|
RB_GC_GUARD is sufficient to prevent tail call optimization from
making the object invisible from GC., and we don't need to
encourage more volatile usage.
* parse.y (rb_parser_compile_cstr): remove volatile arg
(rb_parser_compile_string): ditto
(rb_parser_compile_file): ditto
(rb_parser_compile_string_path): ditto
(rb_parser_compile_file_path): ditto
[ruby-core:70323] [Misc #11431]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Float::EPSILON.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* include/ruby/ruby.h (ALLOCV_N): check integer overflow, as well
as ruby_xmalloc2. pointed out by Paul <pawlkt AT gmail.com>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* array.c (rb_ary_repeated_permutation): fix buffer size, ALLOCV_N
already multiplies element size.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
in OpenSSL tests. [ruby-core:70020][Bug #11368]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[ruby-core:70298][Bug #11427]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (superclass): make superclass rule optional and allow
any contents without a terminator. [EXPERIMENTAL]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
with #start_with? [fix GH-992][ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[fix GH-986] Patch @yui-knk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[fix GH-985] Patch by @yui-knk
* test/ruby/test_enum.rb: added tests for Enumerable#zip
[fix GH-985] Patch @yui-knk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/ruby/test_refinement.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (Init_vm_objects, rb_vm_fstring_table): use frozen_strings
table in rb_vm_t. [ruby-core:70274] [Bug #11423]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Patch by @SkyBirdSoar in documenting-ruby/ruby#52:
https://github.com/documenting-ruby/ruby/pull/52
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Patch by Raphael Das Gupta in documenting-ruby/ruby#51:
https://github.com/documenting-ruby/ruby/pull/51
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (parser_params): turn in_def and in_single into bit
flags and reduce the size by 2-words.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (parser_params): remove redundant prefixes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (yylex): non-pure parser has not been supported since
merger of ripper. change argument types from void pointers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* proc.c (method_super_method): uncallable method entry does not
have the defined class, use the owner instead.
[ruby-core:70254] [Bug #11419]
* test/ruby/test_method.rb (test_super_method_unbound): add test
by Akira Matsuda.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* node.c (rb_alloc_tmp_buffer): round up the size and check the
range.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* ruby_atomic.h (ATOMIC_VALUE_EXCHANGE, ATOMIC_VALUE_CAS): add
atomic operations for VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
SSLSocket#sysclose to Ruby.
* ext/openssl/ossl_ssl.c (ossl_ssl_close): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
enable to SSLSocket#initialize and remove Nonblock module.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
OpenSSL::SSL::SSLSocket#initialize to Ruby.
* ext/openssl/ossl_ssl.c: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* node.c (rb_alloc_tmp_buffer): use NODE_ALLOCA to mark locations
like as builtin alloca. [ruby-core:70251] [Bug #11418]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* transcode.c (rb_econv_open0): rb_econv_t::source_encoding_name
and rb_econv_t::destination_encoding_name should refer static
strings always or NULL. [ruby-core:70247] [Bug #11416]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
lookup to private Ruby methods. This means we can keep the default
DH callback logic hidden from consumers. Also, since the SSLSocket
always has a context, we can remove conditionals about that
instance.
* ext/openssl/ossl_ssl.c: move callback lookup methods to private Ruby
methods.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[Feature #11414]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* doc/contributing.rdoc: use portable substitution syntax
available in plain bourne shell.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[Bug #11409]
* test/ruby/test_eval.rb: add tests for this issue,
written by @0x0dea.
https://github.com/ruby/ruby/pull/988
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Make code easier to read and hunt for bugs with my tiny terminal.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|