* string.c (rb_fstring): because of lazy sweep, str may be unmaked
already and swept at next time, so mark it for the time being.
[ruby-core:57756]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003]
* thread.c (rb_exec_recursive_paired_outer): new function which is
combinnation of paired and outer variants.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
vm_backtrace.c (rb_profile_frame_full_label): add new C API
rb_profile_frame_full_label() which returns label with
qualified method name.
Note that in future version of Ruby label() may return
same return value of full_label().
* ext/-test-/debug/profile_frames.c,
test/-ext-/debug/test_profile_frames.rb: fix a test for this change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* load.c (load_lock): display backtrace to $stderr at circular
require.
* vm_backtrace.c (rb_backtrace_print_to): new function to print
backtrace to the given output.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c (rb_io_write): use rb_funcallv() instead of rb_funcall() to get
rid of unnecessary alloca.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_rubyoptions.rb (test_segv_loaded_features): leave
only one Bogus object in $LOADED_FEATURES.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* array.c (rb_ary_uniq): use rb_hash_values(), as well as the case no
block is given.
* internal.h: define rb_hash_values() as internal API.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* array.c (rb_ary_uniq): set class of the return value to the receiver
class. fix failure in TestArray#test_array_subclass.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43196 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* array.c (rb_ary_uniq): remove no longer used local variables since
r43194.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
support a combination getcontext() and threads. Patch by
Gabriele Giacone (1o5g4r8o@gmail.com). [Bug #8990][ruby-core:57685]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* cont.c (FIBER_USE_NATIVE): supplement comments the reason why it is
disabled.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(returning 0 at BOF/EOF) instead of char-before/char-after
(returning nil at BOF/EOF) to avoid error from char-syntax when
at BOF/EOF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43189 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
else clause to unbreak with `cp932`, etc.
* misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
`default-buffer-file-coding-system` if the :prefer-utf-8
property is not available.
* misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
* misc/ruby-additional.el (ruby-encoding-map): Override the
default value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* misc/ruby-additional.el (ruby-mode-set-encoding): Add support
for `prefer-utf-8` which was introduced in Emacs trunk.
* misc/ruby-additional.el (ruby-encoding-map): Add a mapping from
`japanese-cp932` to `cp932` to fix the problem where saving a
source file written in Shift_JIS twice would end up having
`coding: japanese-cp932` which Ruby could not recognize.
* misc/ruby-additional.el (ruby-mode-set-encoding): Add support
for encodings mapped to nil in `ruby-encoding-map`.
* misc/ruby-additional.el (ruby-encoding-map): Map `us-ascii` and
`utf-8` to nil by default, meaning they need not be explicitly
declared in magic comment.
* misc/ruby-additional.el (ruby-encoding-map): Add type
declaration for better customize UI.
* misc/ruby-mode.el: Ditto for the above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* misc/ruby-electric.el (ruby-electric-space-can-be-expanded-p):
Return nil to avoid "end" insertion when in smartparens-mode
that is configured to insert "end" for the same keyword.
* misc/ruby-electric.el (ruby-electric-keywords): New custom
variable to replace `ruby-electric-simple-keywords-re` with.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(returning 0 at BOF/EOF) instead of char-before/char-after
(returning nil at BOF/EOF) to avoid error from char-syntax when
at BOF/EOF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_io.rb (test_pid_after_close_read): fix rr43164 for
platforms other than Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
something long name because one test depends on absence of
class ::C.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
test/-ext-/debug/test_profile_frames.rb: add a test for new C-APIs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43171 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* int rb_profile_frames(int start, int limit, VALUE *buff, int *lines);
Collect information of frame information.
* VALUE rb_profile_frame_path(VALUE frame);
* VALUE rb_profile_frame_absolute_path(VALUE frame);
* VALUE rb_profile_frame_label(VALUE frame);
* VALUE rb_profile_frame_base_label(VALUE frame);
* VALUE rb_profile_frame_first_lineno(VALUE frame);
* VALUE rb_profile_frame_classpath(VALUE frame);
* VALUE rb_profile_frame_singleton_method_p(VALUE frame);
Get information about each frame.
These APIs are designed for profilers, for example, no objectallocation,
and enough information for profilers.
In this version, this API collects only collect Ruby level frames.
This issue will be fixed after Ruby 2.1.
* vm_backtrace.c: implement above APIs.
* iseq.c (rb_iseq_klass): return local_iseq's class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* win32/file.c (code_page): use encoding index, which is primary
entity, instead of encoding name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_io.rb (TestIO#test_pid_after_close_read): get rid of
broken pipe error message from invoked command, by let it exit
silently. echo in cmd.exe does not interpret double quotes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Type of return value of rb_iseq_first_lineno() is now VALUE.
* vm_insnhelper.c (argument_error): ditto.
* vm_method.c (rb_method_entry_make): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* VALUE rb_iseq_path(VALUE iseqval);
* VALUE rb_iseq_absolute_path(VALUE iseqval);
* VALUE rb_iseq_label(VALUE iseqval);
* VALUE rb_iseq_base_label(VALUE iseqval);
* VALUE rb_iseq_first_lineno(VALUE iseqval);
And new (temporary) function:
* VALUE rb_iseq_klass(VALUE iseqval);
* iseq.c. vm_core.h (int rb_iseq_first_lineno): remove
function `int rb_iseq_first_lineno(const rb_iseq_t *iseq)'.
Use `VALUE rb_iseq_first_lineno(VALUE iseqval)' instead.
* proc.c. vm_insnhelper.c, vm_method.c: catch up this change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e