aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* string.c: use rb_id_encodingnobu2015-12-081-1/+1
| | | | | | | * string.c (rb_str_init): rb_id_encoding() returns same ID with caching. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/uri/generic.rb: enable frozen_string_literalnormal2015-12-082-15/+27
| | | | | | | | | | | | | | * lib/uri/generic.rb: enable frozen_string_literal (split_userinfo): remove explicit .freeze for string literals (check_path): ditto (query): ditto (fragment): ditto (to_s): ditto [ruby-core:71910] [Bug #11759] Patch-by: Colin Kelley <colindkelley@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/uri/test_generic.rb (to_s): new testnormal2015-12-082-0/+12
| | | | | | | | | | Ensure URI::Generic#to_s continues to return mutable strings to prevent breakage when we enable frozen string literals in future commits. [ruby-core:71820] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gc.c: NULL check at memsizenobu2015-12-081-5/+7
| | | | | | | | * gc.c (rb_objspace_data_type_memsize): consider NULL data uses no memory without calling dsize function as well as other functions. fix SEGV in test/objspace with RUBY_ISEQ_DUMP_DEBUG=to_binary. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (ibf_dump_memsize): should check NULL.ko12015-12-082-5/+14
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * string.c (rb_str_init): now accepts new option parameter `encoding'.usa2015-12-084-5/+56
| | | | | | | [Feature #11785] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* envutil.rb: improve messagenobu2015-12-081-2/+4
| | | | | | | * test/lib/envutil.rb (assert_ruby_status): show also outputs at normal exit. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: suppress warningnobu2015-12-081-1/+2
| | | | | | | * compile.c (ibf_dump_overwrite): cast to unsigned long to suppress sign-compare warning. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* file.c: call get_stat only oncenobu2015-12-082-4/+12
| | | | | | | | * file.c (rb_stat_wr, rb_stat_ww): call get_stat only once and reduce checking struct. patch by Yuki Kurihara in [ruby-core:71949]. [Misc #11789] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (iseq_ibf_dump): dump extra data just string length.ko12015-12-083-2/+13
| | | | | | | | | | | * sample/iseq_loader.rb: add using RubyVM::InstructionSequence.from_binary_format_extra_data method (commented out). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: fix extra_strnobu2015-12-081-1/+1
| | | | | | | * compile.c (iseq_ibf_load_extra_data): fix offset and length of extra_str, which is not NUL-terminated. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* gems/bundled_gems: Upgrade the did_you_mean gem to 1.0.0.rc1yuki2015-12-082-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (ibf_load_setup): cast to int.ko12015-12-082-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (ibf_setup_load): rename to ibf_load_setup().ko12015-12-082-3/+27
| | | | | | | | | * compile.c (iseq_load_setup): check binary format. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* make local symbols staticnobu2015-12-085-7/+9
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * 2015-12-09svn2015-12-081-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix indent [ci skip]kazu2015-12-081-7/+7
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add ticket numbers [ci skip]kazu2015-12-081-1/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* free ibf_dump at exceptionnobu2015-12-081-23/+74
| | | | | | | * compile.c (iseq_ibf_dump): wrap ibf_dump to free tables at exception. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos [ci skip]kazu2015-12-081-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c: make opt a string valuenobu2015-12-081-2/+3
| | | | | | | * compile.c (iseq_ibf_dump): rb_check_string_type() returns nil if the object does not have to_str method. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/io/console/test_io_console.rb (run_pty): Avoid waiting twicengoto2015-12-082-1/+6
| | | | | | | | for a process. Fix Errno::ECHILD in TestIO_Console#test_close and TestIO_Console#test_sync. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* check loading object index rangenobu2015-12-081-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* suppress warningsnobu2015-12-082-4/+4
| | | | | | | | * compile.c (iseq_ibf_dump): check lenght overflow. * vm_core.h (rb_iseq_check): suppress unused-value warnings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (iseq_ibf_dump): fix for clang type checker.ko12015-12-082-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * iseq.c (iseq_s_load): fix mysterious bug.ko12015-12-082-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix a typo [ci skip]kazu2015-12-081-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2015-12-080-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces.svn2015-12-082-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * introduce new ISeq binary format serializer/de-serializerko12015-12-0816-90/+1980
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and a pre-compilation/runtime loader sample. [Feature #11788] * iseq.c: add new methods: * RubyVM::InstructionSequence#to_binary_format(extra_data = nil) * RubyVM::InstructionSequence.from_binary_format(binary) * RubyVM::InstructionSequence.from_binary_format_extra_data(binary) * compile.c: implement body of this new feature. * load.c (rb_load_internal0), iseq.c (rb_iseq_load_iseq): call RubyVM::InstructionSequence.load_iseq(fname) with loading script name if this method is defined. We can return any ISeq object as a result value. Otherwise loading will be continue as usual. This interface is not matured and is not extensible. So that we don't guarantee the future compatibility of this method. Basically, you should'nt use this method. * iseq.h: move ISEQ_MAJOR/MINOR_VERSION (and some definitions) from iseq.c. * encoding.c (rb_data_is_encoding), internal.h: added. * vm_core.h: add several supports for lazy load. * add USE_LAZY_LOAD macro to specify enable or disable of this feature. * add several fields to rb_iseq_t. * introduce new macro rb_iseq_check(). * insns.def: some check for lazy loading feature. * vm_insnhelper.c: ditto. * proc.c: ditto. * vm.c: ditto. * test/lib/iseq_loader_checker.rb: enabled iff suitable environment variables are provided. * test/runner.rb: enable lib/iseq_loader_checker.rb. * sample/iseq_loader.rb: add sample compiler and loader. $ ruby sample/iseq_loader.rb [dir] will compile all ruby scripts in [dir]. With default setting, this compile creates *.rb.yarb files in same directory of target .rb scripts. $ ruby -r sample/iseq_loader.rb [app] will run with enable to load compiled binary data. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* retry IO#getpassnobu2015-12-083-4/+102
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* mention about Enumerator::Lazy#grep_v in NEWSkazu2015-12-082-1/+10
| | | | | | | * NEWS: mention about Enumerator::Lazy#grep_v. [ruby-core:71845] [Feature #11773] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r52907 "* configure.in: add missing x."kazu2015-12-082-5/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r52902,r52903,r52910,r52911,r52937,r52939naruse2015-12-082-103/+5
| | | | | | Reject IO::Console#getpass because it can't test portablly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c: removed unused variableduerst2015-12-082-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* enumerator.c: lazy_grep_vnobu2015-12-083-1/+70
| | | | | | | | * enumerator.c (lazy_grep_v): add Enumerator::Lazy#grep_v as well as Enumerable, to enumerate lazily. [ruby-core:71845] [Feature #11773] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* error.c: name_err_local_variablesnobu2015-12-086-1/+75
| | | | | | | | * error.c (name_err_local_variables): new method NameError#local_variables for internal use only. [Feature #11777] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * array.c: Improve and fix documentation for Array#digmarcandre2015-12-084-8/+22
| | | | | | | | | | | | [#11776] * hash.c: ditto * struct.c: ditto * test_hash.rb: Add basic test for user defined `dig`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* marshal.c: skip internal namesnobu2015-12-085-9/+66
| | | | | | | * marshal.c (w_objivar): skip internal instance variables in T_OBJECT too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test_io_console.rb: separate master and slavenobu2015-12-081-8/+16
| | | | | | | | * test/io/console/test_io_console.rb (test_getpass): separate master side and slave side in each threads. r52937 deadlocked on OS X. [Bug #11780] [ruby-dev:49412] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile.c (iseq_build_from_ary_body): avoid rb_ary_dup for CDHASHnormal2015-12-081-1/+0
| | | | | | | | | This reverts r16587 ("compile.c (iseq_build_body): remove side effect from VM::InstructionSequence.load." as that change was obsoleted by r48705 ("mostly fix rb_iseq_load") git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/io/console/test_io_console.rb (test_getpass): s.getpassngoto2015-12-082-10/+16
| | | | | | | | should be tested. Narrow ensure block. This reverts r52911. [Bug #11780] [ruby-dev:49412] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * tool/merger.rb: get user's attention by using colored message when ↵usa2015-12-081-1/+1
| | | | | | requiring operation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* NEWS: indented heredoc [ci skip]nobu2015-12-081-0/+6
| | | | | | * NEWS: mention about indented here document. [Feature #9098] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2015-12-080-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compile optimized case dispatch for nil/true/falsenormal2015-12-089-1/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nil/true/false are special literals just like floats, integers, literal strings, and symbols. Optimize when statements with them by using a jump table, too. target 0: a (ruby 2.3.0dev (2015-12-08 trunk 52928) [x86_64-linux]) at "/home/ew/rrrr/b/ruby" target 1: b (ruby 2.3.0dev (2015-12-08 master 52928) [x86_64-linux]) at "/home/ew/ruby/b/ruby" benchmark results: minimum results in each 5 measurements. Execution time (sec) name a b loop_whileloop2 0.102 0.103 vm2_case_lit* 1.657 0.549 Speedup ratio: compare with the result of `a' (greater is better) name b loop_whileloop2 0.988 vm2_case_lit* 3.017 * benchmark/bm_vm2_case_lit.rb: new benchmark * compile.c (case_when_optimizable_literal): add nil/true/false * insns.def (opt_case_dispatch): ditto * vm.c (vm_redefinition_check_flag): ditto * vm.c (vm_init_redefined_flag): ditto * vm_core.h: ditto * object.c (InitVM_Object): define === explicitly for nil/true/false * test/ruby/test_case.rb (test_deoptimize_nil): new test * test/ruby/test_optimization.rb (test_opt_case_dispatch): update (test_eqq): new test [ruby-core:71923] [Feature #11769] Original patch by Aaron Patterson <tenderlove@ruby-lang.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* optparse.rb: Fix typo [ci skip]nobu2015-12-082-1/+6
| | | | | | | * lib/optparse.rb: fix double word typo in the document. [Misc #10608] [Fix GH-1126] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* date_core.c: missing argument checknobu2015-12-082-6/+16
| | | | | | | * ext/date/date_core.c (d_lite_lshift): should check the argument before negation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52929 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* insns.def (opt_case_dispatch): check Float#=== redefinitionnormal2015-12-073-0/+48
| | | | | | | | | | | | | | The missing check for Float#=== redefinition was noticed while working on enhancing optimized case dispatch for nil/true/false in [ruby-core:71818] https://bugs.ruby-lang.org/issues/11769 So no, I don't normally redefine core classes like this :P * insns.def (opt_case_dispatch): check Float#=== redefinition * test/ruby/test_optimization.rb (test_opt_case_dispatch): new [ruby-core:71920] [Bug #11784] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * properties.svn2015-12-070-0/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e