Age | Commit message (Collapse) | Author |
|
[fix GH-1035] Patch by @kachick
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* class.c (rb_define_class, rb_define_class_id_under): refine
error messages.
* class.c (rb_define_module, rb_define_module_id_under): ditto,
and make consistent with class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* ruby.c (process_options): add an option to enable/disable
frozen-string-literal. [Feature #8976]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* compile.c (iseq_compile_each): override compile option by option
given by pragma.
* iseq.c (rb_iseq_make_compile_option): extract a function to
overwrite rb_compile_option_t.
* parse.y (parser_set_compile_option_flag): introduce pragma to
override compile options.
* parse.y (magic_comments): new pragma "fronzen-string-literal".
[Feature #8976]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/ostruct.rb (delete_field): do not raise NameError for
existing keys. [Fix GH-1033]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Patch by @sferik in [GH-1033]: https://github.com/ruby/ruby/pull/1033
Instead of defining two methods -- a reader and writer -- for each
OpenStruct attribute when it is initialized, define them lazily, the
first time either one is called. This adheres to the principle of "pay for
use": methods that are never accessed are never defined. This optimization
makes initialization an order of magnitude faster for objects with 100
attributes. In the worst-case scenario, where every attribute is accessed,
performance is no worse than it is today.
Benchmark
---------
require 'benchmark/ips'
require 'ostruct'
N = 100
ATTRS = (:aa..:zz).take(N)
HASH = Hash[ATTRS.map { |x| [x, x] }]
def ostruct
OpenStruct.new(HASH)
end
Benchmark.ips do |x|
x.report('ostruct') { ostruct }
end
-------------------------------------------------
before 2.279k (± 8.8%) i/s - 11.395k
after 24.702k (±12.8%) i/s - 122.600k
-------------------------------------------------
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[fix GH-1022] Patch by @nkondratyev
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
this test on AIX. The issue is the same as on Solaris.
[ruby-dev:47631]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* parse.y (paren_args): fix separator token at `foo::bar()` in
ripper.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
because it defines _LARGE_FILES on AIX and _LARGE_FILES
must be defined before sys/types.h is included from math.h.
[Bug #11483]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
patch by voxik.
* test/rinda/test_rinda.rb: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* test/win32ole/test_win32ole_event.rb: fix typo.
swbemsink_avairable? => swbemsink_available? [Fix GH-1025]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* cont.c (rb_callcc): [DOC] append continuations example accros
methods. [Fix GH-1026]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* rb_call_info (ci) has compiled fixed information.
* if ci->flag & VM_CALL_KWARG, then rb_call_info is
also rb_call_info_with_kwarg. This technique reduce one word
for major rb_call_info data.
* rb_calling_info has temporary data (argc, blockptr, recv).
for each method dispatch. This data is allocated only on
machine stack.
* rb_call_cache is for inline method cache.
Before this patch, only rb_call_info_t data is passed.
After this patch, above three structs are passed.
This patch improves:
* data locarity (rb_call_info is now read-only data).
* reduce memory consumption (rb_call_info_with_kwarg,
rb_calling_info).
* compile.c: use above data.
* insns.def: ditto.
* iseq.c: ditto.
* vm_args.c: ditto.
* vm_eval.c: ditto.
* vm_insnhelper.c: ditto.
* vm_insnhelper.h: ditto.
* iseq.h: add iseq_compile_data::ci_index and
iseq_compile_data::ci_kw_indx.
* tool/instruction.rb: introduce TS_CALLCACHE operand type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
definition removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51901 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* file.c (rb_file_s_mkfifo): implement File.mkfifo.
[Feature #11536]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51896 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
dump information.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
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
|
|
use tricky code, please.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* variable.c (set_const_visibility): fail if the class/module is
frozen. [ruby-core:70828] [Bug #11532]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (ENABLE_VM_OBJSPACE): enable per-VM object space on
Windows by default, as rb_w32_sysinit() no longer depends on
ruby_xmalloc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* string.c (rb_str_setbyte): keep the code range as possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
dp->d_type is DT_UNKNOWN. XFS may return DT_UNKNOWN.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
insert waste loop for invoking preemptive thread context switch.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* gc.c (rb_objspace_alloc, rb_objspace_free): define always
regardless ENABLE_VM_OBJSPACE, and free heap pages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* win32/win32.c (rb_w32_sysinit, rb_w32_readdir): compare by
encoding index to get rid of encoding initialization before VM
object space allocation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* 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
|
|
* 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
|
|
* 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
|
|
* array.c (rb_ary_sort_bang, rb_ary_sort): [DOC] correct block
return values, which may be a negative or positive integer, not
ony -1 or +1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* array.c (rb_ary_sort_bang, rb_ary_sort): [DOC] Correct
description of array sort block return values. And also fix up
the grammar a bit. [Fix GH-1020]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* util.c (ruby_qsort): use BSD-style qsort_r if available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
space correctly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/racc/rdoc/grammar.en.rdoc: [DOC] fix typo, "convertion" to
"conversion". [Fix GH-1016]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|