Commit graph

831 commits

Author SHA1 Message Date
ocean
c60fb7c72c * eval.c (SETUP_ARGS0): fixed memory corruption. [ruby-dev:28360]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-23 04:24:39 +00:00
matz
c519ca9500 * lib/rational.rb (Integer::gcd): replaced by gcd4 in
[ruby-core:07390].  [ruby-core:07377]

* eval.c: initial value for block_unique must be 1.
  [ruby-talk:180420]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-20 00:55:49 +00:00
matz
26899051a0 * eval.c (rb_thread_wait_for): sleep should always sleep for
specified amount of time.  [ruby-talk:180067]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-17 00:42:32 +00:00
matz
3b9fa79f62 * eval.c (backtrace): frame->orig_func may not be initialized.
[ruby-core:07367]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-15 16:17:38 +00:00
matz
2d88403b15 * eval.c (rb_eval): NODE_OP_ASGN1 should allow splat in its
argument list.  [ruby-core:07366]

* parse.y (arg): avoid unnecessary extra argument.
  [ruby-core:07366]

* eval.c (rb_eval): honor visibility on OP_ASGN1 and
  OP_ASGN2. [ruby-core:07366]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-15 08:46:55 +00:00
matz
9c22987f6b * eval.c (yield_under_i): should not pass self as an argument to
the block for instance_eval.  [ruby-core:07364]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-15 01:14:03 +00:00
matz
f2525bf0c9 * eval.c (rb_obj_instance_eval): should no singleton classes for
true, false, and nil.  [ruby-dev:28186]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-15 00:26:14 +00:00
matz
f843f09b06 * eval.c (DMETHOD_P): accessing wrong frame. [ruby-dev:28181]
* eval.c (proc_invoke): preserve FRAME_DMETH flag.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-14 13:07:04 +00:00
matz
8a3d25a790 * eval.c (rb_call0): argument update propagation. [ruby-dev:28044]
* env.h: remove argc member from struct FRAME.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-13 09:10:55 +00:00
matz
fdbf3a76a1 * eval.c (eval): should push class from binding if supplied.
[ruby-core:07347]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-13 04:30:08 +00:00
matz
02de06ef1a * eval.c (eval): no need to push ruby_class. [ruby-dev:28176]
* eval.c (rb_f_autoload): check if ruby_cbase is nil (during
  instance_eval for objects cannot have singleton classes,
  e.g. fixnums and symbols).  [ruby-dev:28178]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-11 16:13:47 +00:00
akr
914e4d244f * eval.c: apply the FreeBSD getcontext/setcontext workaround
only before FreeBSD 7-CURRENT.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-04 13:54:53 +00:00
matz
737ef3f4a3 * eval.c (eval): need not to protect $SAFE value.
[ruby-core:07177]

* struct.c (rb_struct_select): update RDoc description.
  [ruby-core:7254]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-02 07:18:12 +00:00
akr
f41377f226 * eval.c (POST_GETCONTEXT): define separately from PRE_GETCONTEXT on
IA64 to avoid reusing variable address.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-01-22 13:17:39 +00:00
akr
2d386e5b9a * eval.c (ruby_setjmp): workaround for FreeBSD/i386
getcontext/setcontext bug.
  [ruby-dev:28263]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-01-22 11:36:08 +00:00
akr
2fab485a46 * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): use only for SPARC and IA64
before gcc 4.0.3.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-01-20 15:39:58 +00:00
akr
946308af67 * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): don't clobber %l7 of SPARC
if enable-shared.
  (ruby_setjmp): call FUNCTION_CALL_MAY_RETURN_TWICE after getcontext
  too.
  reported by Pav Lucistnik and Marius Strobl.
  http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003739.html


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-01-18 15:01:22 +00:00
nobu
f9c6aa9f11 * eval.c (rb_thread_save_context): should not recycle scope object used
in a thread.  fixed: [ruby-dev:28177]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-31 13:57:36 +00:00
akr
ea88f1d35e avoid a GC problem with RUBY_ALWAYS_GC= ./ruby -e ''.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-29 16:19:44 +00:00
nobu
d5639df795 * eval.c (rb_gc_mark_threads): leave unmarked threads which won't wake
up alone, and mark threads in the loading table.  [ruby-dev:28154]

* eval.c (rb_gc_abort_threads), gc.c (gc_sweep): kill unmarked
  threads.  [ruby-dev:28172]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9760 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-29 15:00:15 +00:00
nobu
89eb20764e * eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,
NEW_VALIAS), parse.y (fitem): allow dynamic symbols to
  NODE_UNDEF and NODE_ALIAS.
  backported from trunk.  fixed: [ruby-dev:28105]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-26 13:33:14 +00:00
matz
ccf3fff6ed * eval.c (ev_const_get): fixed a bug in constant reference during
instance_eval.  [yarv-dev:707]

* eval.c (ev_const_defined): ditto.

* lib/yaml.rb (YAML::add_domain_type): typo fixed.  a patch from
  Joel VanderWerf <vjoel at path.berkeley.edu>.
  [ruby-talk:165285] [ruby-core:6995]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-26 08:18:33 +00:00
nobu
f1f2012312 * eval.c (eval_under_i): evaluate source in caller's frame.
[ruby-dev:28076]

* eval.c (rb_call_super): use original method name on exception.
  [ruby-dev:28078]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-20 13:41:47 +00:00
akr
76be880cfd * eval.c (bmcall): fix a GC problem by tail call on
IA64 with gcc 4.0.3 20051216 (prerelease).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-16 18:34:57 +00:00
akr
f7d72f1e65 precedes registering global VALUE variables before initializing it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-12 03:36:49 +00:00
matz
e585523a2b * ext/digest/digest.c (rb_digest_base_s_digest): add volatile to
protect temporary context object.  [ruby-dev:27979]

* ext/iconv/iconv.c (Init_iconv): rb_gc_register_address() should
  be called before actual variable initialization.
  [ruby-dev:27986]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-12 00:36:54 +00:00
nobu
d0e78ab05d * eval.c (umethod_bind): adjust invoking class for module method.
[ruby-dev:27964]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-07 17:08:40 +00:00
matz
250d6dfcb4 * eval.c (call_trace_func): klass parameter should be a
class/module that defines calling method.  [ruby-talk:169307]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-07 15:46:49 +00:00
matz
80f356ac53 * eval.c (exec_under): avoid accessing ruby_frame->prev.
[ruby-dev:27948]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-06 07:48:31 +00:00
nobu
0ee3c7b1d7 * eval.c (rb_funcall2): allow to call protected methods.
fixed: [ruby-dev:27890]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-11-30 15:51:05 +00:00
matz
90509da425 * eval.c (rb_call_super): should call method_missing if super is
called from Kernel method.

* eval.c (exec_under): frame during eval should preserve external
  information.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-11-01 13:45:00 +00:00
matz
222ee5ee46 * rubysig.h (CHECK_INTS): prevent signal handler to run during
critical section.  [ruby-core:04039]

* eval.c (load_wait): need not to call rb_thread_schedule()
  explicitly.  [ruby-core:04039]

* eval.c (rb_thread_schedule): clear rb_thread_critical.
  [ruby-core:04039]

* st.c (st_free_table): do not call free() but xfree().
  [ruby-core:06205]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-19 14:12:04 +00:00
nobu
fa50f60316 * eval.c, gc.c, time.c: made internal symbols static. [ruby-dev:27435]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-18 17:36:20 +00:00
nobu
edecc47890 * eval.c (rb_obj_respond_to): check if obj responds to the given
method with the given visibility.  [ruby-dev:27408]

* eval.c (rb_respond_to): conform to Object#respond_to?.  [ruby-dev:27411]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-11 12:42:50 +00:00
nobu
5480e9e4d7 * eval.c (Init_Binding): add Binding#dup method. [yarv-dev:666]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-08 11:05:08 +00:00
nobu
c269ff0776 * evalc. (rb_f_send): underscores need to be escaped.
fixed by Doug Kearns.  [ruby-core:06053]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-28 22:22:44 +00:00
nobu
79958f7c74 * eval.c (ev_const_get), variable.c (rb_const_get_0): retry only when
autoload succeeded.

* variable.c (rb_autoload_load): now return true if autoload
  succeeded.  fixed: [ruby-dev:27331]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-28 15:58:32 +00:00
matz
81b728c243 * eval.c (set_trace_func): add rb_secure(4) to prevent adding
tracing function.

* lib/delegate.rb: document update from James Edward Gray II
  <james@grayproductions.net>.  [ruby-core:05942]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-26 13:59:47 +00:00
akr
2aac24ebf4 * eval.c (unknown_node): show more information. [ruby-dev:26196]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-24 15:20:06 +00:00
akr
b160528bbb * eval.c (thread_mark): mark th->last_status. [ruby-dev:27179]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-20 09:26:35 +00:00
nobu
9a7b502846 * eval.c (BEGIN_CALLARGS): pop halfly pushed status.
fixed: [ruby-dev:26881]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-13 12:47:43 +00:00
matz
2ca6c3a16a * eval.c (rb_call0): prohibit calling tainted method (>2) when
$SAFE == 0.

* sprintf.c (rb_f_sprintf): warn "too many argument" on verbose
  mode (-v/-w); backported from 1.9.  [ruby-dev:26963]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-09 13:15:16 +00:00
nobu
9e23e9a078 * eval.c (rb_thread_switch): convert all exceptions to
SystemExit.  fixed: [ruby-core:05724]

* eval.c (rb_thread_terminated): show backtrace before propagate
  exceptions to main thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-07 01:45:40 +00:00
matz
36aa5671aa * eval.c (rb_call0): wrong condition for $SAFE restoration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-01 08:13:30 +00:00
matz
c704c569d5 * eval.c (method_arity): should return proper arity value.
[ruby-dev:26390]

* eval.c (rb_add_method): preserve safe level in the environment
  where a method is defined .

* eval.c (rb_call0): restore preserved safe level in the method
  execution.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-01 06:56:07 +00:00
nobu
e89058bcaa * eval.c (rb_rescue2): intialization miss. fixed: [ruby-dev:26917]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-30 14:06:55 +00:00
nobu
0b7d1b404f * eval.c (terminate_process): take String message.
* eval.c (rb_thread_switch): propagate the exception caused thread
  termination directly.  fixed: [ruby-core:05552]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-17 14:58:47 +00:00
nobu
5e8b113d4d * eval.c (rb_mod_autoload_p, rb_f_autoload_p): added rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-16 03:43:44 +00:00
nobu
6794aead0d * eval.c (rb_rescue2): reduce PUSH_TAG() as well as NODE_RESCUE.
[ruby-dev:26800]

* range.c (range_check, range_init): reduce uselse exceptions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-14 15:39:39 +00:00
nobu
b54022b752 * eval.c (rb_block_pass): distinguish current block from others.
fixed: [ruby-dev:26274]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-13 09:52:06 +00:00