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

1141 Коммитов

Автор SHA1 Сообщение Дата
ko1 87a120fbdc * class.c, include/ruby/ruby.h: add write barriers for T_CLASS,
T_MODULE, T_ICLASS.
* constant.h: constify rb_const_entry_t::value and file to detect
  assignment.
* variable.c, internal.h (rb_st_insert_id_and_value, rb_st_copy):
  added. update table with write barrier.
* method.h: constify some variables to detect assignment.
* object.c (init_copy): add WBs.
* variable.c: ditto.
* vm_method.c (rb_add_method): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-14 09:23:54 +00:00
nobu 19faee195a ruby.h: suppress warnings
* include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): suppress warnings
  "left-hand operand of comma expression has no effect", on gcc 4.4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-14 03:21:23 +00:00
nobu 3dbf227ed0 ruby.h: safe_level check
* include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): check constant safe
  level at compile time.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 05:51:14 +00:00
shugo 1f828497d1 * safe.c (rb_set_safe_level, safe_setter): raise an ArgumentError
when $SAFE is set to 4.  $SAFE=4 is now obsolete.
  [ruby-core:55222] [Feature #8468]

* object.c (rb_obj_untrusted, rb_obj_untrust, rb_obj_trust):
  Kernel#untrusted?, untrust, and trust are now deprecated.
  Their behavior is same as tainted?, taint, and untaint,
  respectively.

* include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
  and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
  respectively.

* array.c, class.c, debug.c, dir.c, encoding.c, error.c, eval.c,
  ext/curses/curses.c, ext/dbm/dbm.c, ext/dl/cfunc.c,
  ext/dl/cptr.c, ext/dl/dl.c, ext/etc/etc.c, ext/fiddle/fiddle.c,
  ext/fiddle/pointer.c, ext/gdbm/gdbm.c, ext/readline/readline.c,
  ext/sdbm/init.c, ext/socket/ancdata.c, ext/socket/basicsocket.c,
  ext/socket/socket.c, ext/socket/udpsocket.c,
  ext/stringio/stringio.c, ext/syslog/syslog.c, ext/tk/tcltklib.c,
  ext/win32ole/win32ole.c, file.c, gc.c, hash.c, io.c, iseq.c,
  load.c, marshal.c, object.c, proc.c, process.c, random.c, re.c,
  safe.c, string.c, thread.c, transcode.c, variable.c,
  vm_insnhelper.c, vm_method.c, vm_trace.c: remove code for
  $SAFE=4.

* test/dl/test_dl2.rb, test/erb/test_erb.rb,
  test/readline/test_readline.rb,
  test/readline/test_readline_history.rb, test/ruby/test_alias.rb,
  test/ruby/test_array.rb, test/ruby/test_dir.rb,
  test/ruby/test_encoding.rb, test/ruby/test_env.rb,
  test/ruby/test_eval.rb, test/ruby/test_exception.rb,
  test/ruby/test_file_exhaustive.rb, test/ruby/test_hash.rb,
  test/ruby/test_io.rb, test/ruby/test_method.rb,
  test/ruby/test_module.rb, test/ruby/test_object.rb,
  test/ruby/test_pack.rb, test/ruby/test_rand.rb,
  test/ruby/test_regexp.rb, test/ruby/test_settracefunc.rb,
  test/ruby/test_struct.rb, test/ruby/test_thread.rb,
  test/ruby/test_time.rb: remove tests for $SAFE=4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 14:20:51 +00:00
mrkn 27e92c6649 * include/ruby/ruby.h: fix alignment in comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-05 11:35:50 +00:00
charliesome 3264042eb9 add parentheses for clarity
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-05 11:32:07 +00:00
nobu e71d501ee0 error.c: better names for rb_exc_new family
* error.c (rb_exc_new_cstr): rename from rb_exc_new2.
* error.c (rb_exc_new_str): rename from rb_exc_new3.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-01 02:16:25 +00:00
nobu d956526a76 string.c: remove old interfaces
* string.c (rb_str_new[2-5], rb_{tainted,usascii}_str_new2),
  (rb_str_buf_new2): remove old interfaces.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-01 01:13:21 +00:00
nobu 0544c09761 vm_eval.c: new names of rb_funcall family
* vm_eval.c (rb_funcallv): add better names of rb_funcall2.
* vm_eval.c (rb_funcallv_public): ditto for rb_funcall3.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 08:27:06 +00:00
nobu 1c5cdc62cc array.c: new names of rb_ary_new family
* array.c (rb_ary_new_capa): add better names of rb_ary_new2.
* array.c (rb_ary_new_from_args): ditto for rb_ary_new3.
* array.c (rb_ary_new_from_values): ditto for rb_ary_new4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-31 08:04:56 +00:00
ko1 e4c58251b7 * include/ruby/ruby.h, gc.c: add new internal event
RUBY_INTERNAL_EVENT_GC_END. This event invokes at the end of
  after_sweep().
  Time chart with lazy sweep is here:
  (1) Kick RUBY_INTERNAL_EVENT_GC_START
  (2) [gc_marks()]
  (3) [lazy_sweep()]
  (4) [... run Ruby program (mutator) with lazy_sweep() ...]
  (5) [after_sweep()]
  (6) Kick RUBY_INTERNAL_EVENT_GC_END
  (7) [... run Ruby program (mutator), and go to (1) ...]
* ext/-test-/tracepoint/tracepoint.c,
  test/-ext-/tracepoint/test_tracepoint.rb: modify a test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-27 15:40:27 +00:00
akr 783cffce1d * include/ruby/ruby.h (RHASH_SIZE): Add a cast to suppress a
warning, comparison between signed and unsigned integer
  expressions [-Wsign-compare], on ILP32.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-27 13:11:06 +00:00
ko1 f0b6cb6fc7 * include/ruby/ruby.h: rename RUBY_INTERNAL_EVENT_FREE to
RUBY_INTERNAL_EVENT_FREEOBJ.
* ext/-test-/tracepoint/tracepoint.c,
  ext/objspace/object_tracing.c,
  gc.c, vm_trace.c: catch up this change.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-27 10:28:25 +00:00
ko1 680f0b5ba4 * include/ruby/ruby.h, gc.c, vm_trace.c: add internal events.
* RUBY_INTERNAL_EVENT_NEWOBJ: object created.
* RUBY_INTERNAL_EVENT_FREE: object freeed.
* RUBY_INTERNAL_EVENT_GC_START: GC started.
  And rename `RUBY_EVENT_SWITCH' to `RUBY_INTERNAL_EVENT_SWITCH'.
  Internal events can not invoke any Ruby program because the tracing
  timing may be critical (under huge restriction).
  These events can be hooked only by C-extensions.
  We recommend to use rb_potponed_job_register() API to call Ruby
  program safely.
  This change is mostly written by Aman Gupta (tmm1).
  https://bugs.ruby-lang.org/issues/8107#note-12
  [Feature #8107]
* include/ruby/debug.h, vm_trace.c: added two new APIs.
* rb_tracearg_event_flag() returns rb_event_flag_t of this event.
* rb_tracearg_object() returns created/freeed object.
* ext/-test-/tracepoint/extconf.rb,
  ext/-test-/tracepoint/tracepoint.c,
  test/-ext-/tracepoint/test_tracepoint.rb: add a test.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-27 00:21:02 +00:00
ko1 e2793a908e * include/ruby/debug.h, vm_trace.c: add rb_postponed_job API.
Postponed jobs are registered with this API. Registered jobs
  are invoked at `ruby-running-safe-point' as soon as possible.
  This timing is completely same as finalizer timing.
  There are two APIs:
* rb_postponed_job_register(flags, func, data): register a
  postponed job with data. flags are reserved.
* rb_postponed_job_register_one(flags, func, data): same as
  `rb_postponed_job_register', but only one `func' job is
  registered (skip if `func' is already registered).
  This change is mostly written by Aman Gupta (tmm1).
  https://bugs.ruby-lang.org/issues/8107#note-15
  [Feature #8107]
* gc.c: use postponed job API for finalizer.
* common.mk: add dependency from vm_trace.c to debug.h.
* ext/-test-/postponed_job/extconf.rb, postponed_job.c,
  test/-ext-/postponed_job/test_postponed_job.rb: add a test.
* thread.c: implement postponed API.
* vm_core.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-26 21:30:44 +00:00
ko1 a20a14727f * hash.c, include/ruby/ruby.h: support WB protected hash.
* constify RHash::ifnone and make new macro RHASH_SET_IFNONE().
* insert write barrier for st_update().
* include/ruby/intern.h: declare rb_hash_set_ifnone(hash, ifnone).
* marshal.c (r_object0): use RHASH_SET_IFNONE().
* ext/openssl/ossl_x509name.c (Init_ossl_x509name): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-26 12:37:11 +00:00
charliesome de8cb828f5 * intern.h: remove dangling rb_class_init_copy declaration
[ruby-core:55120] [Bug #8434]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-24 08:07:01 +00:00
ktsj edb98f8b91 fix typos. Patch by k_takata.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-19 03:10:21 +00:00
nobu 9c0ff0c1c8 configure.in: setjmpex
* configure.in (setjmp-type): check if setjmpex() is really available.
  workaround for i686-w64-mingw32 which declares it but lacks its
  definition.
* include/ruby/defines.h: include setjmpex.h only if also setjmpex()
  is available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 16:40:10 +00:00
nobu 344db69c45 configure.in: setjmpex
* configure.in (setjmp-type): use setjmpex() on w64-mingw32 to get rid
  of -Wclobbered warnings.
* include/ruby/defines.h: include setjmpex.h here becase setjmp.h is
  included from win32.h via intrin.h, winnt.h, and so on.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-18 14:57:59 +00:00
nobu baa65ad108 gc.c: rb_gc_guarded_ptr
* gc.c (rb_gc_guarded_ptr): unoptimize on other compilers than gcc and
  msvc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-17 08:35:26 +00:00
nobu d70a806a17 ruby.h: fix typo
* include/ruby/ruby.h (ruby_check_sizeof_long_long): fix typo of
  availablity macro.  [ruby-dev:47341]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 14:27:25 +00:00
nobu cd9165458b iphlpapi is unavailable with older VC
* include/ruby/win32.h, win32/Makefile.sub, win32/win32.c: iphlpapi is
  not available with older Visual C.  works with VC9 or later at least.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 08:24:58 +00:00
nobu f83c42d970 win32.h: fix for VC9
* include/ruby/win32.h (INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX): split
  from intptr_t and uintptr_t, since VC9 defines the latters only in
  crtdefs.h.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-14 05:52:06 +00:00
ko1 b8c0ff86d5 * include/ruby/ruby.h: enable to generate write barrier protected
arrays (T_ARRAY).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:23:35 +00:00
ko1 5016b37ae4 * include/ruby/ruby.h: enable to generate write barrier protected
objects (T_STRING).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:22:17 +00:00
ko1 305382bd69 * include/ruby/ruby.h: enable to generate write barrier protected
objects (T_OBJECT).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:21:32 +00:00
ko1 1829147fb5 * include/ruby/ruby.h: enable to generate write barrier protected
objects for numeric types (Float, Complex, Rational, Bignum).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:19:30 +00:00
ko1 9b6b3672cc * include/ruby/ruby.h: enable RGENGC (USE_RGENGC)
but no type creates write protected (sunny) objects
  (RGENGC_WB_PROTECTED_* == 0).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:14:01 +00:00
ko1 4f401816ff * gc.c: support RGENGC. [ruby-trunk - Feature #8339]
See this ticet about RGENGC.
* gc.c: Add several flags:
* RGENGC_DEBUG: if >0, then prints debug information.
* RGENGC_CHECK_MODE: if >0, add assertions.
* RGENGC_PROFILE: if >0, add profiling features.
  check GC.stat and GC::Profiler.
* include/ruby/ruby.h: disable RGENGC by default (USE_RGENGC == 0).
* array.c: add write barriers for T_ARRAY and generate sunny objects.
* include/ruby/ruby.h (RARRAY_PTR_USE): added. Use this macro if
  you want to access raw pointers. If you modify the contents which
  pointer pointed, then you need to care write barrier.
* bignum.c, marshal.c, random.c: generate T_BIGNUM sunny objects.
* complex.c, include/ruby/ruby.h: add write barriers for T_COMPLEX
  and generate sunny objects.
* rational.c (nurat_s_new_internal), include/ruby/ruby.h: add write
  barriers for T_RATIONAL and generate sunny objects.
* internal.h: add write barriers for RBasic::klass.
* numeric.c (rb_float_new_in_heap): generate sunny T_FLOAT objects.
* object.c (rb_class_allocate_instance), range.c:
  generate sunny T_OBJECT objects.
* string.c: add write barriers for T_STRING and generate sunny objects.
* variable.c: add write barriers for ivars.
* vm_insnhelper.c (vm_setivar): ditto.
* include/ruby/ruby.h, debug.c: use two flags
  FL_WB_PROTECTED and FL_OLDGEN.
* node.h (NODE_FL_CREF_PUSHED_BY_EVAL, NODE_FL_CREF_OMOD_SHARED):
  move flag bits.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 18:07:47 +00:00
ko1 89e6910f04 * include/ruby/ruby.h: constify RRational::(num,den) and
RComplex::(real,imag).
  Add macro to set these values:
* RRATIONAL_SET_NUM()
* RRATIONAL_SET_DEN()
* RCOMPLEX_SET_REAL()
* RCOMPLEX_SET_IMAG()
  This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
  TODO: API design. RRATIONAL_SET(rat,num,den) is enough?
  TODO: Setting constify variable with cast has same issue of r40691.
* complex.c, rational.c: use above macros.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 15:55:09 +00:00
eregon 8ccd658e54 * include/ruby/ruby.h: fix a typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 14:41:08 +00:00
usa cb3fcdcdc3 * win32/win32.c, include/ruby/win32.h (getipaddrs): [experimental]
emulate getipaddrs(3) on Unix.

* win32/Makefile.sub, configure.in (LIBS): need iphlpapi.lib for above
  function.

* include/ruby/win32.h (socketpair): rb_w32_socketpair() doesn't
  substitute for any function, so use non-prefixed name.

* ext/socket/extconf.rb (socketpair); follow above change.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 11:29:32 +00:00
ko1 83aba04862 * include/ruby/ruby.h: constify RBasic::klass and add
RBASIC_CLASS(obj) macro which returns a class of `obj'.
  This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
* object.c: add new function rb_obj_reveal().
  This function reveal interal (hidden) object by rb_obj_hide().
  Note that do not change class before and after hiding.
  Only permitted example is:
  klass = RBASIC_CLASS(obj);
  rb_obj_hide(obj);
  ....
  rb_obj_reveal(obj, klass);
  TODO: API design. rb_obj_reveal() should be replaced with others.
  TODO: modify constified variables using cast may be harmful for
  compiler's analysis and optimizaton.
  Any idea to prohibt inserting RBasic::klass directly?
  If rename RBasic::klass and force to use RBASIC_CLASS(obj),
  then all codes such as `RBASIC(obj)->klass' will be
  compilation error. Is it acceptable? (We have similar
  experience at Ruby 1.9,
  for example "RARRAY(ary)->ptr" to "RARRAY_PTR(ary)".
* internal.h: add some macros.
* RBASIC_CLEAR_CLASS(obj) clear RBasic::klass to make it internal
  object.
* RBASIC_SET_CLASS(obj, cls) set RBasic::klass.
* RBASIC_SET_CLASS_RAW(obj, cls) same as RBASIC_SET_CLASS
  without write barrier (planned).
* RCLASS_SET_SUPER(a, b) set super class of a.
* array.c, class.c, compile.c, encoding.c, enum.c, error.c, eval.c,
  file.c, gc.c, hash.c, io.c, iseq.c, marshal.c, object.c,
  parse.y, proc.c, process.c, random.c, ruby.c, sprintf.c,
  string.c, thread.c, transcode.c, vm.c, vm_eval.c, win32/file.c:
  Use above macros and functions to access RBasic::klass.
* ext/coverage/coverage.c, ext/readline/readline.c,
  ext/socket/ancdata.c, ext/socket/init.c,
* ext/zlib/zlib.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 10:49:11 +00:00
ko1 12bf73637b * include/ruby/ruby.h: add new utility macros to access
Array's element.
* RARRAY_AREF(a, i) returns i-th element of an array `a'
* RARRAY_ASET(a, i, v) set i-th element of `a' to `v'
  This change is a part of RGENGC branch [ruby-trunk - Feature #8339].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 09:41:48 +00:00
ko1 b6b85f6eaf * object.c (rb_obj_setup): added.
* include/ruby/ruby.h (OBJSETUP): ues rb_obj_setup() instead of
  a macro.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 06:33:48 +00:00
nobu d2b4011a94 ruby.h: OFFT2NUM redefinition
* include/ruby/ruby.h (OFFT2NUM): RUBY_REPLACE_TYPE also defines macro
  to convert int type to VALUE if found.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 12:13:01 +00:00
kosaki 2b881310f8 * include/ruby/intern.h (rb_iv_set, rb_iv_get): removed. Bcause
ruby.h has a declaration for that.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 09:02:10 +00:00
kosaki f3c9bb063e * include/ruby/intern.h (rb_uint2big, rb_int2big, rb_uint2inum)
(rb_int2inum, rb_ll2inum, rb_ull2inum): removed because ruby.h
  has a declaration for these.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 09:01:57 +00:00
kosaki 05628d3b6d * configure.in: removes AC_CHECK_FUNC(ftruncate64).
* configure.in: adds RUBY_REPLACE_TYPE(off_t) for creating
  NUM2OFFT.
* file.c (rb_file_truncate): use correct type. chsize() take
  a long.
* include/ruby/ruby.h (NUM2OFFT): use a definition created by
  a configure script by default.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 08:41:24 +00:00
kosaki e79f790798 * configure.in: removes AC_CHECK_FUNC(fseeko, fseeko64, ftello,
ftello64). They are not used from anywhere.

* win32/win32.c (fseeko): removes.
* win32/win32.c (rb_w32_ftello): removes.
* include/ruby/win32.h: removes declarations of rb_w32_ftello and
  rb_w32_fseeko.
* win32/Makefile.sub: removes '#define HAVE_FTELLO 1'.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 08:41:12 +00:00
nobu b8bcd92059 ruby.h: ISGRAPH
* include/ruby/ruby.h (ISGRAPH): add missing macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-08 04:06:34 +00:00
kosaki 9b89888dda * include/ruby/defines.h (RUBY_ATTR_ALLOC_SIZE): New for
attribute((alloc_size(params))).

* include/ruby/defines.h (xmalloc, xmalloc2, xcalloc)
(xrealloc, xrealloc2): Annotated by RUBY_ATTR_ALLOC_SIZE.
* include/ruby/ruby.h (rb_alloc_tmp_buffer): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 21:03:58 +00:00
nobu 3b62e8e78b win32.h: INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX
* include/ruby/win32.h (INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX): also
  should be defined when defining intptr_t and uintptr_t.
  bigdecimal.c requires the former two now.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 04:29:18 +00:00
nobu 3a0641a896 intern.h: rb_block_lambda
* include/ruby/intern.h (rb_block_lambda): add declaration instead of
  deprecated rb_f_lambda.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-30 03:30:23 +00:00
charliesome 5d7b5481ca * benchmark/bm_hash_shift.rb: add benchmark for Hash#shift
* hash.c (rb_hash_shift): use st_shift if hash is not being iterated to
  delete element without iterating the whole hash.

* hash.c (shift_i): remove function

* include/ruby/st.h (st_shift): add st_shift function

* st.c (st_shift): ditto

[Bug #8312] [ruby-core:54524] Patch by funny-falcon

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-25 05:03:30 +00:00
naruse 536a3274c9 * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
[bug] fix problem with optimization of \z (Issue #16) [Bug #8210]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-13 11:30:35 +00:00
headius 0626d9b91c Fix #6154 by introducing new EAGAIN/EWOULDBLOCK/EINPROGRESS
subclasses that include WaitReadable or WaitWritable rather than
extending them into the exception object each time.

* error.c: Capture EGAIN, EWOULDBLOCK, EINPROGRESS exceptions and
  export them for use in WaitReadable/Writable exceptions.
* io.c: Create versions of EAGAIN, EWOULDBLOCK, EINPROGRESS that
  include WaitReadable and WaitWritable. Add rb_readwrite_sys_fail
  for nonblocking failures using those exceptions. Use that
  function in io_getpartial and io_write_nonblock instead of
  rb_mod_sys_fail
* ext/openssl/ossl_ssl.c: Add new SSLError subclasses that include
  WaitReadable and WaitWritable. Use those classes for
  write_would_block and read_would_block instead of rb_mod_sys_fail.
* ext/socket/ancdata.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in bsock_sendmsg_internal and
  bsock_recvmsg_internal.
* ext/socket/init.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in rsock_s_recvfrom_nonblock and
  rsock_s_connect_nonblock.
* ext/socket/socket.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in sock_connect_nonblock.
* include/ruby/ruby.h: Export rb_readwrite_sys_fail for use instead
  of rb_mod_sys_fail. Introduce new constants RB_IO_WAIT_READABLE and
  RB_IO_WAIT_WRITABLE for first arg to rb_readwrite_sys_fail.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-08 19:58:55 +00:00
akr 1f32d09523 * include/ruby/defines.h: Simplify the logic to include sys/select.h.
This fixes a compilation error on Haiku (gcc2 and gcc4).

* configure.in: Use shared linker as $(CC) for Haiku.
  This fixes a build error on Haiku (gcc2).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-07 02:00:46 +00:00
akr e9382c7332 fix a typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 11:57:59 +00:00
akr 755e09ebf1 * include/ruby/defines.h (HAVE_TRUE_LONG_LONG): Defined to distinguish
availability of long long and availability of 64bit integer type.

* pack.c: Use HAVE_TRUE_LONG_LONG to distinguish q! and Q! support.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 11:44:56 +00:00
nobu bff997e02b defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END}
* include/ruby/defines.h (RUBY_SYMBOL_EXPORT_{BEGIN,END}): visibility
  control macros.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 10:29:38 +00:00
akr 61b245cc40 * include/ruby/ruby.h (FIX2LONG): Parenthesize the macro body.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-04 13:54:10 +00:00
akr a7526797a6 * include/ruby/ruby.h (FIX2ULONG): Make it consistent with NUM2ULONG.
* ext/-test-/num2int/num2int.c: Add utility methods for FIX2XXX tests.

* test/-ext-/num2int/test_num2int.rb: Add tests for FIX2XXX.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-31 16:14:15 +00:00
nobu cea3a73f19 ruby/io.h: get rid of conflict on AIX
* include/ruby/io.h: undef POSIX compliants names on AIX, which are no
  longer needed.  patch suggested by edelsohn (David Edelsohn) in
  [ruby-core:53815].  [Bug #8174]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-29 01:24:14 +00:00
nobu 05f5cbeb75 ruby/io.h: get rid of conflict on AIX
* include/ruby/io.h: rename SVR3,4 member names as POSIX compliants,
  to get rid of conflict on AIX.  [ruby-core:53765] [Bug #8174]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-28 14:10:21 +00:00
akr 7d672f3e37 * include/ruby/intern.h: Delete redundant inclusions caused by
AC_INCLUDES_DEFAULT in defines.h.

* include/ruby/defines.h: Ditto.

* include/ruby/ruby.h: Ditto.

* include/ruby/st.h: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-27 22:13:06 +00:00
akr 6537dc3099 * include/ruby/defines.h: Fix a compilation error on NetBSD,
"type of formal parameter 1 is incomplete" for the rb_thread_wait_for
  invocation in rb_file_flock, by including header files as
  AC_INCLUDES_DEFAULT of autoconf.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-27 21:56:20 +00:00
nobu 7f7621e734 revert r39861
* include/ruby/ruby.h: revert r39861 because RB_UNUSED_VAR() is used
  for array variables in extension libraries.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-21 14:32:17 +00:00
nobu 042594bb50 ruby.h: RB_UNUSED_VAR from UNINITIALIZED_VAR
* include/ruby/ruby.h (RB_UNUSED_VAR): move code from
  UNINITIALIZED_VAR() in vm_core.h.
* vm_core.h (UNINITIALIZED_VAR): use RB_UNUSED_VAR().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-21 14:14:19 +00:00
kosaki 28d3acb045 * include/ruby/missing.h: removed __linux__. it's unnecessary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 15:58:25 +00:00
nobu 7c14f03c0c missing.h: build fix
* include/ruby/missing.h: include time.h and sys/time.h iff needed,
  but excepct for sys/time.h on linux to get rid of glibc bug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 15:16:32 +00:00
nobu cab124776e mingw build fix
* configure.in: struct timeval is defined in winsock2.h on mingw.

* include/ruby/missing.h: include time.h for time_t, and sys/time.h
  for timeval and timespec.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 07:28:32 +00:00
kosaki c824d47ebc * include/ruby/missing.h (__syscall): moved to...
* io.c: here. because __syscall() is only used from io.c.

* include/ruby/missing.h: move "#include <sys/type.h>" to ....
* include/ruby/intern.h: here. because it was introduced for
  fixing NFDBITS issue. [ruby-core:05179].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:07:14 +00:00
kosaki 03a6ce80d0 * include/ruby/missing.h (struct timespec): include <sys/time.h>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:07:02 +00:00
kosaki 798ff850e4 * configure.in: check struct timeval exist or not.
* include/ruby/missing.h (struct timeval): check HAVE_STRUCT_TIMEVAL
  properly. and don't include sys/time.h if struct timeval exist.

* file.c: include sys/time.h explicitly.
* random.c: ditto.
* thread_pthread.c: ditto.
* time.c: ditto.
* ext/date/date_strftime.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:06:47 +00:00
nobu 4f59a115fd intern.h: macro rb_check_arity
* include/ruby/intern.h (rb_check_arity): same name macro for backward
  compatibility checking by ifdef.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-06 06:29:57 +00:00
nobu 708df44e59 intern.h: inline function rb_check_arity
* include/ruby/intern.h (rb_check_arity): make a static inline
  function so it can be used as an expression and argc would be
  evaulated only once.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-05 11:23:55 +00:00
naruse 78dbaa1648 * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
v5.13.3 [Bug#7972] [Bug#7974]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-01 16:36:37 +00:00
nobu c75f360bdf version.h: bump RUBY_API_VERSION
* include/ruby/version.h: bump RUBY_API_VERSION same as RUBY_VERSION.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-25 14:51:12 +00:00
nobu 57bccfa900 ruby.h: HAVE_RB_SCAN_ARGS_OPTIONAL_HASH
* include/ruby/ruby.h (HAVE_RB_SCAN_ARGS_OPTIONAL_HASH): for
  rb_scan_args() optional hash feature.  [Bug #7861]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-20 10:27:04 +00:00
nobu 111b861422 win32.h: revert r37337
* include/ruby/win32.h (fstat): revert r37337, which uses _fstati64()
  instead of fstati64() on mingw32.  [Bug #7276]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 08:08:23 +00:00
ko1 18e01f6381 * vm_backtrace.c: fix issue of rb_debug_inspector_open().
The order of making binding should be stack (frame) top to bottom.
  [Bug #7635]
  And also fix issue of collecting klass. Collecting klass is same
  as TracePoint#defined_class.
  (previous version, it returns T_ICLASS (internal objects).
* test/-ext-/debug/test_debug.rb: add a test.
* ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto.
* vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*.
* vm_backtrace.c, include/ruby/debug.h: add new C api (experimental)
  rb_debug_inspector_frame_self_get().
* vm.c, vm_core.h, vm_trace.c: move decl. of
  rb_vm_control_frame_id_and_class() and constify first parameter.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-29 08:25:32 +00:00
nobu 616f2c43c6 vm_backtrace.c: use long
* vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):
  use long as index as well as RARRAY_LEN().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-28 09:02:19 +00:00
nobu 8ad7143327 ruby.h: align
* include/ruby/ruby.h (RBasic): to be aligned on a VALUE size
  boundary.  [Bug #7647]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-08 17:13:26 +00:00
ko1 06f2a86f1a * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special.
This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL.
  This event is experimental one. It is possible to remove/rename
  flag name after 2.0.1.
* vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was
  occurred. `:specified_line' never been returned.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-07 08:38:25 +00:00
usa a3d9672407 * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
* thread.c (recursive_check): object_id maybe a Bignum, not Fixnum on
  LLP64.  see also r38493 and r38548.
  reported by Heesob Park at [ruby-core:51083] [Bug #7607], and patched
  by shirosaki at [ruby-core:51095]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-25 10:14:12 +00:00
mrkn a756488c6d * include/ruby/intern.h: add the prototype declaration of
rb_num_coerce_bit.

* numeric.c (rb_num_coerce_bit): the new coerce function for bitwise
  binary operation.

* bignum.c (rb_big_and): use coerce to convert the argument, which isn't
  a Fixnum nor a Bignum, to the corresponding Integer object so that
  bitwise operations can support Integer-mimic objects.
  [Bug #1792] [ruby-core:39491]

* bignum.c (rb_big_or): ditto.

* bignum.c (rb_big_xor): ditto.

* numeric.c (bit_coerce): ditto.

* numeric.c (fix_and): ditto.

* numeric.c (fix_or): ditto.

* numeric.c (fix_xor): ditto.

* test/ruby/test_integer.rb: add tests for the above changes.

* test/ruby/test_bignum.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-22 15:06:22 +00:00
ko1 8578cc337b * include/ruby/debug.h: define rb_trace_arg_t.
* vm_core.h: catch up above changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-21 09:48:15 +00:00
nobu 8497a7b918 ruby.h: RTEST NIL_P
* include/ruby/ruby.h (RTEST, NIL_P): make bare expressions without
  outermost parentheses.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-20 09:29:57 +00:00
nobu ce6a2c7fac thread.c: revert r38382 but deprecate rb_thread_polling()
* thread.c (rb_thread_polling): revert but deprecate.
* include/ruby/intern.h (rb_thread_polling): deprecate.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-15 01:22:44 +00:00
shugo 3a6dec0c5d * include/ruby/ruby.h (RB_UNUSED_VAR): new macro to suppress
warnings for unused variables.

* ext/bigdecimal/bigdecimal.c (ENTER): use RB_UNUSED_VAR() to
  suppress annoying warnings by -Wunused-but-set-variable in gcc 4.6.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-13 03:09:22 +00:00
shugo 7ef16d224a * fix the behavior when a module is included into a refinement.
This change is a little tricky, so it might be better to prohibit
  module inclusion to refinements.

* include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
  to represent that a module (iclass) is included into a refinement.

* class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
  if klass is a refinement.

* eval.c (rb_mod_refine): set the superclass of a refinement to the
  refined class for super.

* eval.c (rb_using_refinement): skip the above superclass (the
  refined class) when creating iclasses for refinements.  Otherwise,
  `using Refinement1; using Refinement2' creates iclasses:
  <Refinement2> -> <RefinedClass> -> <Refinement1> -> RefinedClass,
  where <Module> is an iclass for Module, so RefinedClass is
  searched before Refinement1.  The correct iclasses should be
  <Refinement2> -> <Refinement1> -> RefinedClass.

* vm_insnhelper.c (vm_search_normal_superclass): if klass is an
  iclass for a refinement, use the refinement's superclass instead
  of the iclass's superclass.  Otherwise, multiple refinements are
  searched by super.  For example, if a refinement Refinement2
  includes a module M (i.e., Refinement2 -> <M> -> RefinedClass,
  and if refinements iclasses are <Refinement2> -> <M>' ->
  <Refinement1> -> RefinedClass, then super in <Refinement2> should
  use Refinement2's superclass <M> instead of <Refinement2>'s
  superclass <M>'.

* vm_insnhelper.c (vm_search_super_method): do not raise a
  NotImplementError if current_defind_class is a module included
  into a refinement.  Because of the change of
  vm_search_normal_superclass(), the receiver might not be an
  instance of the module('s iclass).

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-10 16:05:45 +00:00
shugo db051011d6 * eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):
Module#refine activates all refinements defined in that module
  only in a given block.

* string.c (sym_to_proc, sym_call): don't use refinements.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-08 02:37:16 +00:00
drbrain 57a83c4c9a * include/ruby/ruby.h (rb_event_flag_t): Maintain integer precision
for clang error (VALUE aka unsigned long vs unsigned int)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30 17:59:06 +00:00
ko1 12f2f7371f [EXPERIMENTAL]
* iseq.c: add following two methods.
* ISeq#line_trace_all returns all line traces (line numbers)
* ISeq#line_trace_specify(pos, set) set `pos'th line event to
  specified_line event (if set is true).
  These features are introduced for debuggers (mainly to make
  breakpoint).
* iseq.h: add decl. of C APIs.
* test/ruby/test_iseq.rb: add tests.
* vm_trace.c: add `specified_line' event.
* include/ruby/ruby.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30 17:00:30 +00:00
nobu 4f451dddeb vm_backtrace.c: RB_GC_GUARD
* include/ruby/ruby.h (RB_GC_GUARD_PTR): add note.
* vm_backtrace.c (backtrace_to_str_ary): use RB_GC_GUARD() instead of
  RB_GC_GUARD_PTR() which has no effect.
  (backtrace_to_location_ary): ditto.
  (vm_backtrace_to_ary): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30 00:38:24 +00:00
ko1 4db8340398 [EXPERIMENTAL: NEED DISCUSS]
* vm_trace.c: add events
* :thread_begin - hook at thread beggining.
* :thead_end - hook at thread ending.
* :b_call - hook at block enter.
* :b_return - hook at block leave.
  This change slow down block invocation.
  Please try and give us feedback until 2.0 code freeze.
* include/ruby/ruby.h: ditto.
* compile.c (rb_iseq_compile_node): ditto.
* insns.def: ditto.
* thread.c: ditto.
* vm.c: ditto.
* include/ruby/debug.h: add a comment.
* test/ruby/test_settracefunc.rb: add a tests.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29 22:28:16 +00:00
ko1 585ac7f1a2 * include/ruby/debug.h: add rb_debug_inspector_* APIs.
* vm_backtrace.c: ditto.
* common.mk: add dpendency from vm_backtrace.o to
  include/ruby/debug.h.
* proc.c (rb_binding_new_with_cfp): constify.
* vm.c (rb_vm_get_ruby_level_next_cfp): consitify.
* vm_core.h, vm_trace.c: move decls.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29 07:05:27 +00:00
ko1 3f606b7063 * include/ruby/debug.h: provide rb_tracearg_*() APIs,
instead of rb_tracepoint_attr_*().
  These APIs are for debuggers/profilers.
  They will be explained in another docs somtime.
* vm_trace.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29 06:43:31 +00:00
ko1 479e396192 * vm_trace.c (rb_tracepoint_attr_method_id):
rename TracePoint#id to TracePoint#method_id.
* include/ruby/debug.h: ditto.
* test/ruby/test_settracefunc.rb: ditto,



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29 05:57:35 +00:00
ko1 89c889d4e7 * vm_trace.c (rb_tracepoint_attr_defined_class):
rename TracePoint#klass to TracePoint#defined_class.
  [ruby-core:50187] Re: [ruby-trunk - Feature #6895]
* include/ruby/debug.h: ditto.
* test/ruby/test_settracefunc.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29 05:52:27 +00:00
ko1 9d0de48e66 * include/ruby/thread.h (rb_thread_call_without_gvl2): change
meaning of function.
  This function is called with same parameters of
  `rb_thread_call_without_gvl()'.
  However, if interrupts are detected, when return immediately.
* thread.c: implement `rb_thread_call_without_gvl2()'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-28 13:01:25 +00:00
ko1 d187f4bc21 * vm_trace.c: rename TracePoint#file and TracePoint#line
to TracePoint#path and TracePoint#lineno respectively.
  They are consistent to RubyVM::Backtrace::Location.
* include/ruby/debug.h: ditto.
* vm_core.h: ditto.
* test/ruby/test_settracefunc.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-26 23:25:21 +00:00
nobu 29d626109b property.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-21 13:54:36 +00:00
tadf c07d295204 * include/ruby/util.h: removed extra semicolon in definition of
macro.
	* compile.c: ditto.
	* cont.c: ditto.
	* math.c: ditto.
	* node.c: ditto.
	* parse.y: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-21 12:42:11 +00:00
ko1 cea7600b52 * include/ruby/debug.h: introdudced.
Debugging/profiling features will be located.
* vm_trace.c: expose C-level TracePoint APIs.
  Note that they are experimental.
* vm_trace.c, include/ruby/debug.h: rename `rb_hook_flag_t'
  to `rb_event_hook_flag_t'.
  Macro names `RUBY_HOOK_FLAG_*' are also renamed to
  `RUBY_EVENT_HOOK_FLAG_*'.
* debug.h, vm_debug.h: rename debug.h to vm_debug.h.
* common.mk: ditto.
* debug.c, main.c, vm_core.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37765 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-20 12:57:49 +00:00
ko1 9ee34b15e4 * thread.c (rb_thread_call_without_gvl2): change the parameter of
`func' from `int *skip_interrupt' to `VALUE *flags'.
  If (flags & RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS) is not zero,
  then skip checking interrupt.
  [ruby-core:46547]
* include/ruby/thread.h: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-16 10:34:54 +00:00
knu 1c0323adbc Fix build when gcc is used and the platform's libc lacks alloca().
* include/ruby/ruby.h (alloca), eval_intern.h (alloca), gc.c
  (alloca): Make alloca() globally available by moving the
  ultimate ifdef's to ruby/ruby.h.  Gcc hides its builtin alloca()
  when compiling with -ansi, and linking thus fails on platforms
  that lack their own alloca() implementation in libc, which
  include OpenBSD and some ports of NetBSD.  We use alloca()
  everywhere including from within third party C extentions, so
  alloca() must be made globally available. [Bug #7307]

* addr2line.c (alloca): Replace the alloca() part with the
  ultimate ifdef's. [Bug #7307]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-09 03:34:08 +00:00
marcandre a68cc24a9e * include/ruby/intern.h: Restore rb_enumeratorize as it was before r37497
and introduce rb_enumeratorize_with_size instead. [#7302]

* enumerator.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-07 19:46:16 +00:00
shugo 5836962f48 * eval.c (rb_mod_refine): set RMODULE_IS_REFINEMENT to a created
refinement module, and don't override method_added.

* vm_method.c (rb_method_entry_make): check redefinition of
  optimized methods when a method is added to a refinement module.
  [ruby-core:48970] [Bug #7290]

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-07 04:09:51 +00:00
marcandre 610eeffa46 * enumerator: New method #size; constructor accepts size
[Feature #6636]

* include/ruby/intern.h: RETURN_SIZED_ENUMERATOR for support of
  sized enumerators

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 17:10:06 +00:00
shirosaki b56a2afc14 Index $LOADED_FEATURES so that require isn't so slow
* load.c (rb_feature_p, rb_provide_feature): index $LOADED_FEATURES
  so that require isn't so slow.

* load.c (rb_provide_feature, get_loaded_features_index): ensure
  that $LOADED_FEATURES entries are frozen strings.  The user
  must mutate $LOADED_FEATURES itself rather than its individual
  entries.

* load.c (reset_loaded_features_snapshot): add a new function to reset
  vm->loaded_features_snapshot.

* load.c (get_loaded_features_index_raw): add a new function to get
  the loaded-features index.

* load.c (features_index_add_single): add a new function to add to the
  loaded-features index a single feature.

* load.c (features_index_add): add a new function to add to the
  loaded-features index all the required entries for `feature`.

* vm_core.h (rb_vm_struct): add fields.

* vm.c (rb_vm_mark): mark new fields.

* include/ruby/intern.h (rb_hash_clear): declare function.

* hash.c (rb_hash_clear): make function non-static.
  Patch by Greg Price.
  [ruby-core:47970] [Bug #7158]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-05 15:27:01 +00:00
shirosaki e575070f2f Expose whether two arrays are shared
* array.c (rb_ary_shared_with_p): new function.
  Expose whether two arrays are shared (read-only, C only).

* include/ruby/intern.h (rb_ary_shared_with_p): declare.
  Patch by Greg Price.
  [ruby-core:47970] [Bug #7158]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-05 15:24:07 +00:00
shugo bb50421381 * string.c (sym_to_proc, sym_call): A Proc created by Symbol#to_proc
should close over the current refinements.
  [ruby-dev:46345] [Bug #7261]

* vm_eval.c (rb_call0, rb_search_method_entry,
  rb_funcall_passing_block_with_refinements): add a new argument
  `refinements' for the above changes.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-02 05:48:29 +00:00
ko1 f3e5f2cd75 * bignum.c (bignew_1): Bignum instances are frozen.
Feature #3222
* include/ruby/ruby.h: Fixnum instances are also frozen.
* class.c (singleton_class_of): check Bignum before
  singleton cheking.
* test/ruby/test_bignum.rb: add a test.
* test/ruby/test_fixnum.rb: ditto.
* test/ruby/marshaltestlib.rb, test/ruby/test_eval.rb,
  test/ruby/test_object.rb: catch up above changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-28 00:03:20 +00:00
ko1 180c744b3b * numeric.c (rb_float_new_in_heap), include/ruby/ruby.h:
make all Float objects frozen.
  [ruby-dev:46081] [ruby-trunk - Feature #6936]
  Most part of patch by NARUSE, Yui  <naruse@ruby-lang.org>.
* class.c (singleton_class_of): raise TypeError when
  trying to define a singleton method on Float objects.
* vm.c (vm_define_method): ditto.
* test/ruby/marshaltestlib.rb: catch up above changes.
* test/ruby/test_class.rb: ditto.
* test/test_pp.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-27 02:10:53 +00:00
nobu 854c5ec470 win32.h: fstat on mingw32
* include/ruby/win32.h (fstat): use _fstati64() instead of fstati64()
  on mingw32.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-27 01:05:06 +00:00
ko1 9dc3a7d7a5 * include/ruby/ruby.h, class.c: remove (revert)
`rb_add_method_cfunc_frameless()' API.
  This API is not mature to become an offical API.
  For example, we can not use this API with
  `rb_define_private_method()'.
* method.h, vm_method.c (rb_add_method_cfunc_frameless): removed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-25 06:03:53 +00:00
nari c3a46d6aca * include/ruby/ruby.h: add C APIs.
VALUE rb_newobj_of(VALUE klass, VALUE flags)
  #define NEWOBJ_OF(obj,type,klass,flags)
  These allow to change a allocation strategy depending on klass
  or flags.

* gc.c: ditto

* array.c: use new C API.
* bignum.c: ditto
* class.c: ditto
* complex.c: ditto
* ext/socket/ancdata.c: ditto
* ext/socket/option.c: ditto
* hash.c: ditto
* io.c: ditto
* marshal.c: ditto
* numeric.c: ditto
* object.c: ditto
* random.c: ditto
* range.c: ditto
* rational.c: ditto
* re.c: ditto
* string.c: ditto
* struct.c: ditto
  [Feature #7177][Feature #7047]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-20 06:57:51 +00:00
ko1 cc012cfb19 * include/ruby/ruby.h: add a decl. of
`rb_define_frameless_method()'.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18 06:04:02 +00:00
shirosaki 8d236bc0b1 win32.h: set floating point precision for pow()
* include/ruby/win32.h (rb_w32_pow): set floating point precision
  for mingw-w64 x86 pow(). This improves the precision of pow() on
  Windows XP for TestFloat#test_round_with_precision failure.
  [ruby-core:47911] [Bug #7142]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-12 13:30:17 +00:00
nobu 7f8e558464 random.c: rb_random_ulong_limited
* random.c (rb_random_ulong_limited): new function to return a random
  value from 0 upto limit as unsigned long, simillary to
  rb_genrand_ulong_limited but with arbitrary RNG object.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-09 08:59:03 +00:00
kosaki 5dbbee86b6 * include/ruby/intern.h (rb_thread_blocking_region): Added
a comment of recommended alternative way.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-09 11:32:11 +00:00
nobu 5fbfc21b67 internal.h: allocator function in rb_classext_t
* internal.h (struct rb_classext_struct): move allocator function into
  rb_classext_t from ordinary method table.  [ruby-dev:46121]
  [Feature #6993]
* object.c (rb_obj_alloc): call allocator function directly.
* vm_method.c (rb_define_alloc_func, rb_undef_alloc_func)
  (rb_get_alloc_func): use allocator function in rb_classext_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-08 09:52:26 +00:00
nobu 977bec1236 .gdbinit: FLONUM support
* .gdbinit (rp): FLONUM support.
* include/ruby/ruby.h (ruby_special_consts): define FLONUM constants
  always, so that they are available from gdb.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-06 05:49:51 +00:00
nobu 38d0cbce65 ruby.h: merge FLONUM and non-FLONUM
* include/ruby/ruby.h (RB_FLOAT_TYPE_P): merge FLONUM and non-FLONUM
  versions.  inline TYPE() comparison and FLONUM_P() should be
  optimized away on non-FLONUM.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-06 05:48:34 +00:00
nobu 2000173101 ruby.h: suppress warnings
* include/ruby/ruby.h (rb_float_value): suppress warnings.
  [ruby-core:47406][Bug #6971]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-03 12:22:44 +00:00
ko1 0b89d6d5f9 * include/ruby/ruby.h (rb_float_value): optimize it.
This technique was pointed by shinichiro.hamaji
  <http://shinh.skr.jp/m/?date=20120825#p02>.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-27 09:22:21 +00:00
nobu b29a029768 ruby.h: clear expression
* include/ruby/ruby.h (rb_float_new): suppress bitwise-op-parentheses
  warning, and zero-expand to VALUE before bit negation to get rid of
  confusion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-24 09:15:58 +00:00
ko1 b3b5e626ad * include/ruby/ruby.h: introduce flonum technique for
64bit CPU environment (sizeof(double) == sizeof(VALUE)).
  flonum technique enables to avoid double object creation
  if the double value d is in range about between
  1.72723e-77 < |d| <= 1.15792e+77 or 0.0.
  flonum Float value is immediate and their lowest two bits
  are b10.
  If flonum is activated, then USE_FLONUM macro is 1.
  I'll write detailed in this technique on
  https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech
* benchmark/bmx_temp.rb: add an benchmark for simple
  Float calculation.
* gc.c (id2ref, rb_obj_id): add flonum Float support.
* include/ruby/intern.h: move decl of rb_float_new(double)
  to include/ruby/ruby.h.
* insns.def, vm.c, vm_insnhelper.c: add flonum optimization
  and simplify source code.
* vm_insnhelper.h (FLONUM_2_P): added.
* marshal.c: support flonum output.
* numeric.c (rb_float_new_in_heap): added.
* parse.y: support flonum.
* random.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-23 07:22:40 +00:00
ko1 4a4a702e61 * vm_trace.c, vm_core.h: simplify tracing mechanism.
(1) add rb_hook_list_t data structure which includes
  hooks, events (flag) and `need_clean' flag.
  If the last flag is true, then clean the hooks list.
  In other words, deleted hooks are contained by `hooks'.
  Cleanup process should run before traversing the list.
  (2) Change check mechanism
  See EXEC_EVENT_HOOK() in vm_core.h.
  (3) Add `raw' hooks APIs
  Normal hooks are guarded from exception by rb_protect().
  However, this protection is overhead for too simple
  functions which never cause exceptions.  `raw' hooks
  are executed without protection and faster.
  Now, we only provide registration APIs.  All `raw'
  hooks are kicked under protection (same as normal hooks).
* include/ruby/ruby.h: remove internal data definition and
  macros.
* internal.h (ruby_suppress_tracing), vm_trace.c: rename
  ruby_suppress_tracing() to rb_suppress_tracing()
  and remove unused function parameter.
* parse.y: fix to use renamed rb_suppress_tracing().
* thread.c (thread_create_core): no need to set RUBY_VM_VM.
* vm.c (mark_event_hooks): move definition to vm_trace.c.
* vm.c (ruby_vm_event_flags): add a global variable.
  This global variable represents all of Threads and VM's
  event masks (T1#events | T2#events | ... | VM#events).
  You can check the possibility kick trace func or not
  with ruby_vm_event_flags.
  ruby_vm_event_flags is maintained by vm_trace.c.
* cont.c (fiber_switch, rb_cont_call): restore tracing status.
  [Feature #4347]
* test/ruby/test_continuation.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-16 11:41:24 +00:00
shugo 3dd941b234 * include/ruby/ruby.h, eval.c, vm_insnhelper.c: fix typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-06 05:55:19 +00:00
nobu 95512f2777 ruby.h: rb_num2ulong_inline
* include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
  NUM2LONG, and cast to unsigned long explicitly for the platforms
  where SIZEOF_VALUE is larger than SIZEOF_LONG.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-05 15:39:26 +00:00
nobu 09288de5df ruby.h: fix cast
* include/ruby/ruby.h (NUM2SSIZET): fix type to cast.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-05 15:38:55 +00:00
shugo 19ddfc2483 * eval.c (rb_mod_using): new method Module#using. [experimental]
* eval.c (rb_mod_refine): new method Module#refine. [experimental]

* eval.c (f_using): new method Kernel#using. [experimental]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-02 11:34:19 +00:00
nobu f9368f65b1 win32.c: rb_w32_inet_ntop should be const
* win32/win32.c (rb_w32_inet_ntop): type should be const.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-29 14:56:52 +00:00
nobu c05e6a8cda process.c: try conversion at redirection
* io.c (rb_io_check_io): make public.
* process.c (check_exec_redirect): try conversion to IO on redirect
  parameters.  [ruby-core:44181] [Bug #6269]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-27 09:25:54 +00:00
shirosaki 4f8b1384df Fix broken pow() on x64-mingw32
* include/ruby/win32.h (rb_w32_pow): add new function.
  We use powl() instead of broken pow() for x64-mingw32. This workaround
  fixes test failures related to floating point numeric.
  [ruby-core:46686] [Bug #6784]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-24 15:12:26 +00:00
shugo 1f03c90dbf * variable.c (rb_mod_class_variables): return inherited variables
except when the optional argument is set to false.
  [ruby-dev:44034] [Bug #4971]

* variable.c (rb_mod_constants): fix typo in documentation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-19 06:41:47 +00:00
nobu c5617b357d internal.h: move mark functions
* internal.h: move mark function declarations that should be private.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-19 05:30:46 +00:00
nobu 5e7fa03bc0 thread.c: remove deprecated
* thread.c (rb_gc_mark_threads): remove deprecated function.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-19 05:15:51 +00:00
kosaki 0501be6f83 * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
Patched by Xi Wang. [Bug #6736]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-18 16:59:01 +00:00
ko1 e9a91d2c95 * thread.c (rb_thread_call_without_gvl2): added.
it can skip last CHECK_INTS.  See document for more details.
  Document about it was updated a bit.
* include/ruby/thread.h (decl. of rb_thread_call_without_gvl2): added.
* thread.c (rb_thread_call_with_gvl): remove "EXPERIMENTAL!"
  warning from a document.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-18 06:47:43 +00:00
nobu bb575208bd intern.h: fix declaration
* include/ruby/intern.h (rb_thread_blocking_region): fix declarations
  prototypes without arguments in C++ have different meanings than C.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-13 17:31:58 +00:00
yugui 64ef091a64 Reverts a half of r36079. As we discussed on ruby-dev@ and IRC,
we do not need to disclose intermediate representation of program.
The program embedding CRuby should use rb_eval_string family.
* include/ruby/ruby.h (ruby_opaque_t): removed.
  (ruby_compile_main_from_file, ruby_compile_main_from_string,
   ruby_eval_main): removed.

* eval.c (ruby_eval_main_internal): became ruby_exec_internal() again.
  (ruby_eval_main): removed.

* ruby.c (PREPARE_PARSE_MAIN) reverted.
  (parse_and_compile_main, ruby_compile_main_from_file,
   ruby_compile_main_from_string): removed

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-11 03:25:16 +00:00
nobu ce0b4fea35 HAVE_RUBY_THREAD_H
* include/ruby.h (HAVE_RUBY_THREAD_H): to show ruby/thread.h to be
  available.  fixup of r36355.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-11 01:16:41 +00:00
nobu c51a826764 rb_thread_call_without_gvl
* include/ruby/thread.h: new header file for thread stuff.
* thread.c (rb_thread_call_without_gvl): export.  [Feature#4328]
  returns void* instead of VALUE.  [Feature #5543]
* thread.c (rb_thread_blocking_region): deprecate.  [ruby-core:46295]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-10 13:57:11 +00:00
usa 64ae820d69 * include/ruby/win32.h (NT, NtInitialize): removed unused old macros.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-10 01:49:43 +00:00
kosaki 428a5a9cd9 * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP complely. It is
no meaning definition since r24894.
* main.c: ditto.
* nacl/pepper_main.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09 15:53:02 +00:00
usa 284d912ecc * include/ruby/win32.h: sorry, mistaken.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09 08:33:47 +00:00
usa 9d2711691e * win32/configure.bat, win32/setup.mak, win32/Makefile.sub: omit Win9x
support.  remove --enable/disable-win95 option.

* include/ruby/win32.h, file.c, win32/win32.c: ditto.

* win32/README.win32: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09 08:25:06 +00:00
nobu 85bb412ef9 ThreadShield
* internal.h: move ThreadShield declarations from intern.h.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-05 08:32:23 +00:00
nobu 51f458d4db ThreadShield
* thread.c (ThreadShield): rename from Barrier.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-05 07:00:29 +00:00
nobu 8ddbbb3324 Module#prepend
* class.c (rb_prepend_module): prepend module into another module.
* eval.c (rb_mod_prepend): new method Module#prepend.  [Feature #1102]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-27 07:48:50 +00:00
nobu 77898c33e3 error.c: rb_check_copyable
* error.c (rb_check_copyable): new function, to ensure the target is
  not frozen and the source is not tainted nor untrusted.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-22 04:32:39 +00:00
akr b60713de73 * internal.h (struct rb_execarg) moved and renamed from
struct rb_exec_arg in intern.h.

* include/ruby/intern.h (struct rb_exec_arg): refer Data object which
  contains struct rb_execarg.

* process.c: use struct rb_execarg instead of struct rb_exec_arg
  except functions declared in intern.h.
  (rb_exec_arg_addopt): extract a pointer to struct rb_execarg from
  struct rb_exec_arg.
  (rb_exec_arg_init): ditto.
  (rb_exec_arg_fixup): ditto.
  (rb_run_exec_options_err): ditto.
  (rb_run_exec_options): ditto.
  (rb_exec_err): ditto.
  (rb_exec): ditto.

* io.c: use struct rb_execarg instead of struct rb_exec_arg.

* ext/pty/pty.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-20 11:46:50 +00:00
kosaki 7339e678f4 * include/ruby/missing.h: include math.h before checking INFINITY
and NAN. Otherwise, strange macro redefinition will occur.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-19 21:24:31 +00:00
nobu c50f91f35b [Bug #6607]
* include/ruby/backward/rubysig.h: fix visibility.  [Bug #6607]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-19 09:43:53 +00:00
nobu 073297789a fix r36079
* include/ruby/ruby.h: public symbols must have default visibility.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-14 03:03:48 +00:00
yugui 8c9a453f2d Embedding CRuby interpreter without internal headers has been difficult
for few years because:
* NODE is no longer accessible.
* rb_iseq_eval_main crashes without preparing with rb_thread_t.
* some existing APIs calls exit(3) without giving the opportunity to
  finalize or handle errors to the client.
* No general-purpose function to compile a source to an iseq are
  published in the public headers.

This commit solves the problems.

	* include/ruby/ruby.h: Grouped APIs for embedding CRuby interpreter.
	  (ruby_setup, ruby_compile_main_from_file,
	  ruby_compile_main_from_string, ruby_eval_main,
	  ruby_set_script_name): new APIs to embed CRuby.
	  (ruby_opaque_t) Opaque pointer to an internal data, to NODE or iseq
	  in particular.

	* eval.c (ruby_setup): Similar to ruby_init but returns an error code
	  instead of exit(3) on error.
	  (ruby_eval_main): Similar to ruby_exec_node but returns the
	  evaluation result.
	  (ruby_eval_main_internal): renamed from ruby_exec_internal.

	* ruby.c (toplevel_context): new helper function.
	  (PREPARE_EVAL_MAIN): moved.
	  (process_options): refactored with new functions.
	  (parse_and_compile_main) new helper funciton.
	  (ruby_compile_main_from_file, ruby_compile_main_from_string) new API
	  (ruby_set_script_name): new API.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-14 02:22:08 +00:00
nobu 24b9cf95e0 include/ruby/win32.h: fix comment style
* include/ruby/win32.h: get rid of C99 style one line comments.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-13 04:39:25 +00:00
akr 37a1355bf8 * include/ruby/intern.h (rb_exec_arg_init): deprecated.
(rb_exec_arg_addopt): ditto.
  (rb_exec_arg_fixup): ditto.
  (rb_run_exec_options): ditto.
  (rb_run_exec_options_err): ditto.

* internal.h (rb_execarg_init): declared.
  (rb_execarg_addopt): ditto.
  (rb_execarg_fixup): ditto.
  (rb_execarg_run_options): ditto.

* process.c: call rb_execarg_addopt, rb_execarg_fixup,
  rb_execarg_run_options, rb_execarg_init.
  (rb_execarg_addopt): renamed from rb_exec_arg_addopt.
  (rb_exec_arg_addopt): stub to call rb_execarg_addopt.
  (rb_execarg_init): renamed from rb_exec_arg_init.
  (rb_exec_arg_init): stub to call rb_execarg_init.
  (rb_execarg_fixup): renamed from rb_exec_arg_fixup.
  (rb_exec_arg_fixup): stub to call rb_execarg_fixup.
  (rb_execarg_run_options): renamed from rb_run_exec_options_err.
  (rb_run_exec_options_err): stub to call rb_execarg_run_options.
  (rb_run_exec_options): call rb_execarg_run_options.

* io.c: call rb_execarg_addopt, rb_execarg_fixup,
  rb_execarg_run_options, rb_execarg_init.

* ext/pty/pty.c (establishShell): call rb_execarg_init and
  rb_execarg_fixup.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-12 11:34:51 +00:00
akr a903db9c23 * include/ruby/intern.h (rb_proc_exec_n): deprecated.
(rb_exec): ditto.
  (rb_exec_err): ditto.
  (rb_fork): ditto.
  (rb_fork_err): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-11 13:16:36 +00:00
akr 9ea35ccf30 * process.c (rb_proc_exec_n): revert the function removed at r35889.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-10 21:31:49 +00:00
akr b9824fbb08 * include/ruby/intern.h (rb_exec_arg_init): declaration changed to
return a value.

* process.c (rb_exec_arg_init): return a value.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-08 16:13:26 +00:00
akr 13edb951b7 * include/ruby/intern.h: rb_exec_arg and related stuff moved back from
internal.h



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-07 11:29:43 +00:00
usa f047b1f0dc * win32/win32.c, include/ruby/win32.h (rb_w32_wrap_io_handle): new API.
this API wraps an I/O handle (HANDLE or SOCKET) and returns fd.
  the second parameter should be combination of O_*, for example,
  O_RDWR | O_BINARY | O_NOINHERT.

* win32/win32.c, include/ruby/win32.h (rb_w32_unwrap_io_handle): new
  API.  this API unwraps an I/O handle and close the fd (not closes
  the handle itself).

[Feature #4960] [ruby-core:37227]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-06 04:29:38 +00:00
akr a79bbdf6b5 * internal.h: rb_exec_arg and related stuff moved from intern.h
* include/ruby/intern.h (rb_proc_exec_n): removed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-05 13:29:54 +00:00
akr ad5bfed17c * process.c (rb_exec_arg_fixup): allocate a temporary buffer for
run_exec_dup2 here because it should be async-signal-safe.
  (run_exec_dup2): use the temporary buffer.
  (run_exec_dup2_tmpbuf_size): new function.

* include/ruby/intern.h (rb_exec_arg): add dup2_tmpbuf field.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-05 12:59:40 +00:00
nobu 2073258a7d obj_init_copy
* object.c (rb_obj_init_copy): should check if trusted too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-05 11:13:18 +00:00
tadf eb6579e647 * marshal.c: experimental test aborted.
* complex.c: ditto.
	* rational.c: ditto.
	* include/ruby/intern.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 19:26:58 +00:00
akr 9ee4575ea4 * include/ruby/intern.h (rb_exec_arg): remove argc and argv fields.
add use_shell, argv_str and argv_buf fields.

* process.c (rb_proc_exec_e): don't split shell command line arguments
  here to avoid memory allocation in a child process.
  (rb_exec_fillarg): split shell command line arguments here.
  (proc_exec_v): takes argv_str argument instead of argv.
  (rb_proc_exec_ne): removed.
  (rb_proc_exec_n): removed.
  (rb_run_exec_options_err): don't initialize the removed fields.
  (rb_exec_err): don't initialize the removed fields.
  call proc_exec_v directly instead of rb_proc_exec_ne.
  (rb_spawn_process): use use_shell field.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 14:53:13 +00:00
tadf f5b06413ca * marshal.c: calls directly rb_{Complex,Rational}_marshal_load().
But now disabled. [experimental]
	* complex.c: followed the above.
	* rational.c: ditto.
	* include/rub/intern.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 12:21:18 +00:00
akr f4f28bf75f * use execve() to preserve environment variables when exec method is
failed.  [ruby-core:44093] [ruby-trunk - Bug #6249]

* include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
  to store envp of execve().

* process.c (proc_exec_v): takes envp_str as an argument and use it
  for execve().
  (rb_proc_exec_ne): extended version of rb_proc_exec_n().
  (rb_proc_exec_n): use rb_proc_exec_ne().
  (rb_proc_exec): follow proc_exec_v() change.
  (fill_envp_buf_i): new function.
  (rb_exec_arg_fixup): set up envp_str and envp_buf.
  (save_env_i): removed.
  (save_env): removed.
  (rb_run_exec_options_err): don't modify environment variables.
  (rb_exec_err): use rb_proc_exec_ne().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 08:29:48 +00:00
nobu ce8e2d5404 Feature #5896
* vsnprintf.c (BSD_vfprintf): [EXPERIMENTAL] object representation in
  rb_enc_vsprintf(). [Feature #5896]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-24 14:36:54 +00:00
shirosaki 5ccee663e9 * include/ruby/win32.h (FD_SET): change function to macro.
To avoid buffer overflow when smaller FD_SETSISE is used in ext
  libraries.

* win32/win32.c (rb_w32_fdset): this function is not used anymore.
  But we leave this for compatibility.

* win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
  FD_SETSISE is used in ext libraries. Dereference of fd_set pointer
  causes SEGV.

* test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
  above.
* ext/-test-/win32/fd_setsize/depend: ditto.
* ext/-test-/win32/fd_setsize/extconf.rb: ditto.
* ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.

  [ruby-core:44588] [Bug #6352]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-08 12:47:25 +00:00
nobu f2979f3101 * win32/win32.c (gmtime_r, localtime_r): POSIX compliant reentrant
versions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-16 07:22:43 +00:00
nobu db5265a82c * parse.y (rb_check_id_cstr): new function to check if ID is
registered with NUL-terminated C string.
* sprintf.c (rb_str_format): avoid inadvertent symbol creation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 13:31:23 +00:00
nobu f45fc7daa0 * error.c (rb_enc_raise): new function to raise an exception with
the message in the given encoding.  patched by now (Nikolai
  Weibull) at [ruby-core:41160].  [Feature #5650]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-10 10:07:07 +00:00
shirosaki 42109a02f0 * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
new function.

* process.c (enum): add EXEC_OPTION_PGROUP and move the position
  above for the usage in proc_spawn_n().

* process.c (proc_spawn_n): add an argument to pass new option
  `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
  CreateProcessW(). This flag is necessary for the usage of
  Process.kill on the subprocess on Windows.

* process.c (rb_exec_arg_addopt): ditto.

* process.c (rb_spawn_process): ditto.

* process.c (documentation for rb_f_spawn): add documentation for new
  option `new_pgroup` of spawn.

* test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
  add tests for option `new_pgroup`.

* test/ruby/test_thread.rb
  (TestThreadGroup#test_thread_timer_and_interrupt):
  add option `new_pgroup: true` to spawn on Windows. It's needed for
  Process.kill on a subprocess.

* win32/win32.c (CreateChild): add an argument to pass
  dwCreationFlags of CreateProcessW().

* win32/win32.c (rb_w32_spawn): ditto.

* win32/win32.c (rb_w32_aspawn_flags): add new function to pass
  dwCreationFlags.

* win32/win32.c (rb_w32_aspawn): refactor to move the content to
  rb_w32_aspawn_flags().
  [ruby-core:43245][Bug #6131]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-07 14:10:30 +00:00
nobu 28cc4f7543 * st.c (st_update): pass pointer to key to the callback function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-29 14:50:20 +00:00
nobu 30cea65767 * st.c (st_update): add existing parameter to the callback function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-29 07:36:12 +00:00
nobu 163ab0a4da * bignum.c (rb_str_to_inum): must be ASCII compatible encoding as
well as String#hex and String#oct.  [ruby-core:43566][Bug #6192]
* string.c (rb_must_asciicompat): check if ASCII compatible.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-23 04:19:24 +00:00
nobu 3d22e33a06 * include/ruby/win32.h (fstati64): fix macro conflicts.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-22 11:47:19 +00:00
nobu ff075693c9 * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
to time_t directly, not to be affected by TZ unnecessarily.
* win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
  simply.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-22 10:55:11 +00:00
shugo 2baeb78294 * enum.c (rb_enum_values_pack): rename from enum_values_pack, and
remove static.

* enumerator.c (lazy_init_iterator, lazy_init_yielder,
  lazy_select_func, lazy_reject_func, lazy_grep_func): handle
  multiple values correctly.

* enumerator.c (lazy_grep): change the behavior when a block is
  given, to be consistent with Enumerable#grep.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 14:20:27 +00:00
usa fcaee4bd64 * win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
accept and to return UTF-8 strings.

* win32/win32.c (rb_w32_getenv): follow above change.

* win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.

* hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
  [Bug #5570] [ruby-core:40737]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 03:57:02 +00:00
marcandre 7316302483 * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
* array.c: Use rb_check_arity / rb_error_arity

* class.c: ditto

* enumerator.c: ditto

* eval.c: ditto

* file.c: ditto

* hash.c: ditto

* numeric.c: ditto

* proc.c: ditto

* process.c: ditto

* random.c: ditto

* re.c: ditto

* signal.c: ditto

* string.c: ditto

* struct.c: ditto

* transcode.c: ditto

* vm_eval.c: ditto

* vm_insnhelper.c: ditto & implementation of rb_error_arity

* test/ruby/test_arity.rb: tests for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:34 +00:00
marcandre 35c356ea72 * vm_insnhelper.c: improve number of arguments error in case of
optional parameters (issue #6085)

* include/ruby/intern.h: define UNLIMITED_ARGUMENTS

* test/ruby/test_arity.rb:  test for above

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:16 +00:00
nobu 33ceea5cdb * encoding.c (rb_find_encoding): new function find encoding from
arbitrary object as a pointer to rb_encoding, and return NULL if
  not found.
* io.c (io_encoding_set): just warn unsupported encodings, but not
  exception.  [ruby-core:40726] [Bug #5567]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12 10:23:17 +00:00
nobu a73d958c33 * st.c: add st_foreach_check for fixing iteration over packed table
and st_delete_safe.  patched by Sokolov Yura at
  https://github.com/ruby/ruby/pull/84


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:19 +00:00
nobu efae619458 * st.c: fix packed num_entries on delete_safe. patched by Sokolov
Yura at https://github.com/ruby/ruby/pull/84


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:06 +00:00
nobu 72de92d1f9 rb_load_fail
* error.c (rb_load_fail): use path as a string, not char*.
* internal.h: (rb_load_fail): moved from ruby/intern.h.
* ruby.c (load_file_internal): fname cannot be NULL.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-07 03:26:30 +00:00
tenderlove d576a25c26 * error.c (rb_loaderror_with_path): Adding the missing file as an
instance variable to the LoadError exception.

* load.c: call rb_loaderror_with_path so that the missing path is
  added to the exception.

* ruby.c: call rb_loaderror rather than raising our own LoadError
  exception.

* include/ruby/intern.h: add declaration for rb_loaderror_with_path.

* test/ruby/test_require.rb: add supporting test for LoadError#path
  method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-06 23:38:33 +00:00
nobu 4a8c531a26 * st.c (unpack_entries): use union instead of casted pointer.
patched by Sokolov Yura <funny.falcon AT gmail.com>.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-05 03:44:05 +00:00
nobu 0b89081bbb * internal.h (rb_file_const, rb_file_load_ok): moved functions for
internal use only.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-01 07:13:22 +00:00
nobu 80429eed63 * io.c, process.c, time.c, ext: use rb_sys_fail_str instead of
rb_sys_fail.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-27 01:50:27 +00:00
nobu 7d742d47cc * error.c: new functions to deal exceptions with string instances.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-24 07:39:59 +00:00
nobu d573446841 * configure.in (__builtin_unreachable): check for clang.
[ruby-core:42849]
* include/ruby/ruby.h (UNREACHABLE): fallback definition.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-24 06:49:09 +00:00
naruse 0424e152c6 * Merge Onigmo-5.13.1. [ruby-dev:45057] [Feature #5820]
https://github.com/k-takata/Onigmo
  cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h
  cp oniguruma.h
  cp tool/enc-unicode.rb
  cp -r enc/

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-17 07:42:23 +00:00
nobu 0229827c8b * include/ruby/ruby.h (rb_event_hook_func_t): add argument names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-12 11:44:06 +00:00
nobu 83c7d9df2b * string.c (rb_str_modify_expand): fix memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-08 13:30:04 +00:00
nobu ed469831e4 * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
(rb_enc_path_last_separator, rb_enc_path_end)
  (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
  path handling functions.
* file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
  (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
  (rb_file_join): should respect the encodings of arguments than
  file system encoding.  [ruby-dev:45145] [Bug #5919]
* dir.c (check_dirname, ruby_glob0): ditto.
* ext/pathname/pathname.c (path_sub_ext): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-25 02:32:06 +00:00
nobu 04726dd749 * vm.c (rb_iter_break_value): new function to break a block with
the value.  [ruby-dev:45132] [Feature #5895]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-24 05:20:48 +00:00
matz 498838c662 * object.c (rb_Hash): add Kernel#Hash conversion method like
Array() or Float().  a patch from Run Paint Run Run.  Fix #3131

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-24 04:02:30 +00:00
nobu 86d4d10479 * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-21 13:21:10 +00:00
nari 50675fdba1 * gc.c: use Bitmap Marking algorithm to avoid copy-on-write of
memory pages. See [ruby-dev:45085] [Feature #5839]
  [ruby-core:41916].

* include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1.

* node.h : ditto.

* debug.c : ditto.

* object.c (rb_obj_clone): FL_MARK move to a bitmap.

* class.c (rb_singleton_class_clone): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-07 14:02:23 +00:00
ayumin a06a1772f3 * include/ruby/version.h: RUBY_API_VERSION 2.0.0
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-06 14:13:27 +00:00
nagachika 98696bd242 * include/ruby/ruby.h: fix #error pragma. LLP64 platform is supported.
* include/ruby/st.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-28 16:56:16 +00:00
nobu 2f6d8bdc94 * st.c (st_update): new function to lookup the given key and
update the value.  [ruby-dev:44998]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-27 13:04:30 +00:00
usa 0c6103cf50 * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
* win32/win32.c (init_stdhandle): set default mode of stdin as binmode.

* io.c (set_binary_mode_with_seek_cur): new function to replace
  SET_BINARY_MODE_WITH_SEEK_CUR macro.  now returns previous mode of the
  fd and take care of LF in rbuf.

* io.c (do_writeconv): set text mode when needed.

* io.c (io_read): need to change the mode of the IO to binmode
  temporally when the length for IO#read, because IO#read with length
  must behave so.

* test/ruby/test_io_m17n.rb (TestIO_M17N#est_{read_with_length,
  read_with_length_binmode,get[cs]_and_read_with_binmode,
  read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
  above changes.

all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
[Feature #5714]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14 10:38:12 +00:00
nobu c5fc4da7a2 * object.c (rb_check_to_int): new function to convert a VALUE to
an Integer if possible, but returns nil instead of raising an
  exception otherwise.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-11 01:37:50 +00:00
luislavena ef9bbba96f Silence stat redefinition warnings under win32
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-08 23:00:36 +00:00
usa 1dea192775 * include/ruby/{subst.h,win32.h}, ext/socket/rubysocket.h: revert
r33876.  [ruby-core:41475] [Bug #5706]

* ext/socket/extconf.rb: the alternative hack for [Bug #5675].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-05 05:29:31 +00:00
luislavena f9a6a1dd0c Introduce NEED_READCONV and NEED_WRITECONV to replace universal newline decorator
Use CRLF only when required to improve file reading and writing under Windows.
Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-04 01:10:06 +00:00
nobu abb40f8eb3 * include/ruby/subst.h: reverted r33916, since some names in vm.inc conflict.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-01 06:19:57 +00:00
nobu f274088eec * include/ruby/subst.h: removed arguments lists so that function
calls with zero arguments can be substituted.  aliasing in .def
  file has no effect for static library.  [ruby-core:41370]
  [Bug#5681]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-01 05:48:05 +00:00
nobu 9fe88af9ef * win32/win32.c (rb_w32_inet_ntop): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-29 00:51:40 +00:00
nagachika 22702f9278 * include/ruby/win32.h (GetCurrentThreadHandle): remove unused API.
follow r33881.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-28 17:44:25 +00:00
usa d81c20771d * include/ruby/subst.h: typo of r33876.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-28 02:00:53 +00:00
nobu 1510ad86c4 * include/ruby/subst.h: moved Windows specific substitions from
win32.h.
* ext/socket/rubysocket.h: include ruby/subst.h.  [Bug #5675]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-28 01:36:09 +00:00
kosaki fd5a7ee75c * include/ruby/ruby.h(NUM2LONG, NUM2INT, NUM2SHORT, NUM2LL,
INT2NUM, UINT2NUM, LONG2NUM, ULONG2NUM, NUM2CHR): wrap by
  macros.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 05:57:34 +00:00
ngoto 3d85b0ff5a * fix ANSI C compliance of r33757
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 05:05:35 +00:00
ngoto fa00b6516c * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
to a separete file sparc.c for preventing inlining optimization.
  Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
* sparc.c (rb_sparc_flush_register_windows): ditto.
* configure.in: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 04:42:31 +00:00
kosaki 9cdd62bd19 * include/ruby/ruby.h: get rid of gcc specific rb_long2int(),
NUM2LONG(), NUM2INT(), NUM2SHORT(), NUM2LL(), INT2NUM(),
  UINT2NUM(), LONG2NUM(), ULONG2NUM() and NUM2CHR()
  implementation. Because 1) They don't make any better code
  at all. 2) Inline function have a better debugger supoort.
  3) If they become to make better code in the future, they
  might make cross compiler ABI compatibility issue.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 04:18:43 +00:00
kosaki 9debadd948 * include/ruby/ruby.h: add #ifdef comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-14 03:55:40 +00:00
kosaki b2a2ba1191 * include/ruby/ruby.h: add NUM2SHORT(), NUM2USHORT() macros.
* numeric.c: ditto.

* test/-ext-/num2int/test_num2int.rb: add testcases for NUM2SHORT().
* ext/-test-/num2int/num2int.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-14 03:54:34 +00:00
nobu 6bb4ddcba5 * include/ruby/ruby.h (rb_long2int): define as a macro always, so
that cpp conditionals can tell if it is provided.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-08 08:59:28 +00:00
usa add77a592b * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.

* io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
  set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
  if the flag is available.

* io.c (make_writeconv): drop decorators for reading.

* io.c (make_readconv): drop decorators for writing.

* io.c (do_writeconv): existing writeconv is not the condition to raise
  ArgumentError.  should check textmode or not.

* test/ruby/test_io_m17n.rb
  (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
  changes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-07 17:48:11 +00:00
akr 1a70dfe6f4 * include/ruby/intern.h (rb_fd_fix_cloexec): renamed from
rb_fd_set_cloexec.

* io.c: follow the above renaming.

* ext/pty/pty.c: ditto.

* ext/socket/init.c: ditto.

* ext/socket/socket.c: ditto.

* ext/socket/ancdata.c: ditto.

* ext/socket/unixsocket.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-31 12:49:16 +00:00
usa b2a1af1547 * win32/win32.c (setfl): extract from fcntl().
* win32/win32.c (dupfd): new function to support F_DUPFD. base on a
  patch written by akr.

* win32/win32.c (fcntl): use above functions.

* include/ruby/win32.h (F_DUPFD): define. [experimental]

* include/ruby/win32.h (F_SETFL): change the value to correspond with
  other platforms.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-31 04:16:11 +00:00
akr 5c19f07700 * include/ruby/intern.h (rb_cloexec_fcntl_dupfd): declared.
* io.c (rb_cloexec_fcntl_dupfd): new function.
  (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd.

* process.c (move_fds_to_avoid_crash): use rb_cloexec_fcntl_dupfd.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 15:17:27 +00:00
akr 0d2a92e0b3 * include/ruby/intern.h (rb_cloexec_pipe): declared.
* io.c (rb_cloexec_pipe): new function.
  (rb_pipe): use rb_cloexec_pipe.

* thread_pthread.c (rb_thread_create_timer_thread): use
  rb_cloexec_pipe.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-30 12:13:05 +00:00
akr 0a9cb21e62 * include/ruby/intern.h (rb_cloexec_dup2): declared.
* io.c (rb_cloexec_dup2): new function.
  (io_reopen): use rb_cloexec_dup2.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 13:11:01 +00:00
akr 4ae2b92576 * include/ruby/intern.h (rb_cloexec_dup): declared.
* io.c (rb_cloexec_dup): new function.
  (ruby_dup): use rb_cloexec_dup.

* ext/pty/pty.c (pty_getpty): use rb_cloexec_dup.
  
* ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 11:02:32 +00:00
akr 3ae3cd741d * include/ruby/intern.h (rb_cloexec_open): declared.
* io.c (fd_set_cloexec): extracted from rb_fd_set_cloexec.
  (rb_cloexec_open): new function.
  (sysopen_func): use rb_cloexec_open.
  (rb_sysopen_internal): use rb_update_max_fd instead of
  rb_fd_set_cloexec.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-29 02:33:28 +00:00
naruse bafe837658 * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-27 00:59:46 +00:00
akr 49f6242b34 * include/ruby/defines.h: use "__sparc" instead of "sparc" and
"__sparc__".

* dln.c: ditto.

  [ruby-dev:44694]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-25 12:54:21 +00:00
akr b574a4d4a1 * include/ruby/intern.h (rb_fd_set_cloexec): declared.
* io.c (rb_fd_set_cloexec): new function.
  (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag.
  (rb_sysopen_internal): ditto.
  (rb_pipe): ditto.
  (io_reopen): ditto.
  (io_cntl): ditto.

* process.c (rb_f_exec): change the default :close_others option to
  true.
  (rb_f_system): ditto.
  (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set
  close-on-exec flag.
  (ruby_setsid): ditto.
  (rb_daemon): ditto.

* thread_pthread.c (rb_thread_create_timer_thread): call
  rb_fd_set_cloexec to set close-on-exec flag.

* ruby.c (load_file_internal): ditto.

* file.c (rb_file_s_truncate): ditto.
  (file_load_ok): ditto.

* random.c (fill_random_seed): ditto.

* ext/pty/pty.c (chfunc): ditto.
  (get_device_once): ditto.

* ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.

* ext/socket/init.c (rsock_socket): ditto.
  (rsock_s_accept_nonblock): ditto.
  (rsock_s_accept): ditto.

* ext/socket/socket.c (rsock_sock_s_socketpair): ditto.

* ext/socket/ancdata.c (discard_cmsg): ditto.
  (make_io_for_unix_rights): ditto.

* ext/socket/unixsocket.c (unix_recv_io): ditto.

* ext/io/console/console.c (console_dev): ditto.

[ruby-core:38140] [Feature #5041]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-22 09:58:15 +00:00
ngoto 971769cd76 * numeric.c (rb_infinity, rb_nan): use union to prevent bus error
caused by misalignment.  [Bug #5469] [ruby-dev:44657]
* include/ruby/missing.h (INFINITY, NAN): ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-21 17:34:58 +00:00
nobu 9c49753182 * include/ruby/defines.h (flush_register_windows): use software
trap on Debian Sparc 32-bit userspace.  [Bug #5244]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-20 04:09:37 +00:00
nobu 3a0e582e1f * include/ruby/intern.h (rb_ary_reverse): export.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-14 02:19:39 +00:00
kosaki 20ae79b0c2 * include/ruby/defines.h: remove NextStep, OpenStep, Rhapsody
support. Last activity of their OSs are 7 years ago.
* configure.in: ditto.
* dir.c: ditto.
* ext/tk/extconf.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-26 00:19:03 +00:00
usa ee7d523631 * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
for rb_thread_select() in thread.c.  the use of rb_fd_copy() is
  introduced in r33117.
  [Bug #5229] [ruby-core:39102]

* thread.c (rb_thread_select): must call rb_fd_init() before using
  rb_fdset_t.  see the implementations of rb_fd_init()s if you want to
  know the reason.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-30 15:04:11 +00:00
nobu 543ecd95d5 * include/ruby/win32.h (frexp, modf): original macros.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-05 13:20:26 +00:00
nobu 11667b9c9a * include/ruby/missing.h: fix typo and so on.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-04 02:54:22 +00:00
naruse d04697df88 * include/ruby/missing.h: define __syscall on OpenBSD as r32702.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-04 02:32:19 +00:00
naruse d7c026d058 Mark a code is GPL or not.
This is made the comparison between current and initial commit.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-03 15:40:03 +00:00
usa f9e9eee677 * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
[Bug #5153] [ruby-core:38736]

* io.c (argf_next_argv): remove the call of above function.

* ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
  extension module because this is only for testsing ruby_add_suffix().

* LEGAL: remove the mention about a part of util.c, because now we
  removed the part.

* io.c (argf_next_argv): now the new filename is not guranteed to
  use, so should check the return value of rename(2).

* test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
  now we expect same result with other platforms on no_safe_rename
  platforms (=Windows).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-03 07:10:56 +00:00
naruse da6c57aa54 See __APPLE__ for __syscall.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-28 00:23:28 +00:00
naruse 9f2b8eafdd * include/ruby/missing.h: define __syscall if the platform has
__syscall in the library but doesn't define it in headers
  for example Mac OS X.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-27 08:58:38 +00:00
nobu 3fbc65d47f * parse.y (rb_check_id): make the given name a symbol or a string.
based on the second patch by Jeremy Evans at [ruby-core:38447]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-26 16:05:27 +00:00
nobu 4dc1a21809 * error.c (rb_name_error_str): new function to raise NameError
with the name string but not ID.
* object.c, proc.c, variable.c: more removal of inadvertent symbol
  creation.  [Feature #5079]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-23 15:05:03 +00:00
nobu 34918aa832 * object.c (rb_mod_{const,cvar}_defined, rb_obj_ivar_defined):
avoid inadvertent symbol creation in reflection methods.  based
  on a patch by Jeremy Evans at [ruby-core:38367].  [Feature #5072]
* vm_method.c (rb_mod_method_defined)
  (rb_mod_{public,private,protected}_method_defined)
  (obj_respond_to): ditto.
* parse.y (rb_check_id): new function returns already interned ID
  or 0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-22 12:06:42 +00:00
nobu c276b73804 * parse.y (rb_is_global_id, rb_is_attrset_id): add missing
predicates.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-22 11:44:53 +00:00
akr b41ccc4a9c * include/ruby/intern.h (rb_update_max_fd): declaration moved from
internal.h.

* file.c: ditto.

* io.c: call rb_update_max_fd for each new fds.

* process.c: ditto.

* random.c: ditto.

* ruby.c: ditto.

* ext/io/console/console.c: ditto.

* ext/openssl/ossl_bio.c: ditto.

* ext/pty/pty.c: ditto.

* ext/socket/init.c: ditto.

* ext/socket/socket.c: ditto.

* ext/socket/ancdata.c: ditto.

* ext/socket/unixsocket.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-20 13:26:10 +00:00
nobu e2fd80b3d3 * error.c (rb_check_trusted): new function to check an object is
trusted.
* struct.c (rb_struct_modify), time.c (time_modify): check by the
  above function to show proper class names.  [Bug #5036]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-17 07:26:45 +00:00
usa f15d0deaaf * win32/win32.c, include/ruby/win32.h (rb_w32_io_cancelable_p): renamed
from rb_w32_has_cancel_io().  now it takes a parameter as fd to check
  the fd is console or not, because we cannot cancel console input even
  if we have cancel_io function.

* io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
  so now we can kill the thread which calls STDIN.gets.
  the problem was reported by ko1 vir IRC.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-15 05:33:45 +00:00
nobu 63ab190151 * win32/win32.c (rb_w32_{read,write}): should be signed.
Bug #5001

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-09 06:59:23 +00:00