Commit graph

1408 commits

Author SHA1 Message Date
matz
568602aeea * eval.c (method_missing): update old argument adjustment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-11-07 08:51:15 +00:00
matz
f54e979d36 * eval.c (when_check): need to splat for NODE_ARGSCAT as well.
[ruby-dev:29860]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-11-07 07:45:57 +00:00
matz
862e723d03 * eval.c (svalue_to_avalue): need to splat but no error.
* eval.c: new macros - YIELD_CALL, YIELD_VALUES.

* eval.c (rb_yield_values): specify YIELD_VALUES.

* eval.c (rb_yield_0): use new macros.

* eval.c (proc_invoke): slightly modified to separate YIELD_CALL
  and YIELD_VALUES from YIELD_ARY_ARGS.

* object.c (Init_Object): add nil.to_splat => [].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-11-06 10:27:59 +00:00
matz
07c4bb10e0 * eval.c (rb_call0): fixed bug of zsuper with both of opt and rest.
fixed: [ruby-list:42928]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-11-02 04:44:52 +00:00
matz
76f721470b * eval.c (rb_obj_define_method): add half boiled RDoc document.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-11 08:12:17 +00:00
matz
bd62057a8b * eval.c (rb_obj_define_method): add new method
Kernel#define_singleton_method.  [ruby-list:42851]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-09 13:46:56 +00:00
matz
b067aef7c0 * eval.c (formal_assign): packed post splat arguments may conflict
with normal arguments.  [ruby-core:09021]

* eval.c (rb_call0): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-07 14:35:19 +00:00
matz
2d09685150 * eval.c (rb_yield_0): small refactoring.
* parse.y (bparam_item): fixed bugs in handling parenthesized LHS.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-05 22:32:04 +00:00
matz
feafc46363 * eval.c (rb_call): check protected visibility based on real self,
not ruby_frame->self.  [ruby-talk:217822]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-04 08:38:23 +00:00
matz
9317700a5d * eval.c (splat_value): use "to_splat" instead of "to_ary" to
prepare splat values as an array.

* array.c (Init_Array): define to_splat.

* range.c (range_to_splat): new method.

* enumerator.c (enumerator_to_splat): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11069 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-02 17:39:57 +00:00
why
dcb6131f78 * eval.c (rb_thread_save_context, rb_thread_restore_context):
sandbox hook to save and restore sandbox state.

* eval.c (thread_no_ensure): added THREAD_NO_ENSURE thread flag.

* eval.c (rb_thread_kill_bang): Thread#kill! uses the above flag
  to circumvent ensure, in order to prevent endless loops.
  contributed by MenTaLguY. [ruby-core:08768]

* eval.c (rb_thread_kill): fix Thread#kill docs, which returns
  the thread object in all cases.

* node.h: expose the rb_jmpbuf_t and rb_thread_t structs, along
  with the thread flags.  used by the sandbox extension.

* ruby.h: extern rb_eThreadError, so sandbox can swap it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-23 21:29:47 +00:00
matz
749df1d0fd * dir.c (dir_s_glob): remove unused variable.
* math.c (math_log): ditto.

* re.c (rb_reg_regcomp): ditto.

* eval.c (break_jump): ditto.

* eval.c (rb_thread_yield_0): remove unused function.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-18 01:59:00 +00:00
nobu
36e79167ab * eval.c (rb_require_safe): prevent extension from loading twice.
fixed: [ruby-dev:29523]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-10 00:18:39 +00:00
matz
b4afac07bc * eval.c (rb_f_local_variables): list symbols.
* struct.c (rb_struct_s_members_m): ditto.

* variable.c (ivar_i): ditto.

* variable.c (gvar_i): ditto.

* variable.c (cv_i): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-04 05:46:47 +00:00
matz
2156870525 * ruby.h (struct RArray): embed small arrays.
(RARRAY_LEN): defined for accessing array members.
  (RARRAY_PTR): ditto.

* array.c: use RARRAY_LEN and RARRAY_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-02 14:42:08 +00:00
matz
8581164ea6 * eval.c (rb_eval): should handle when in else clause. a patch
from Eric Hodel <drbrain at segment7.net>.  [ruby-core:08662]

* parse.y (primary): wrap with NODE_CASE.  [ruby-core:08663]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-02 14:36:22 +00:00
usa
974037a542 * eval.c (search_required): use RSTRING_PTR and RSTRING_STR.
* object.c (nil_plus): ditto.

* ext/dl/cptr.c (rb_dlptr_s_to_ptr): ditto.

* ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 12:10:08 +00:00
matz
54af80844f * ruby.h (struct RString): embed small strings.
(RSTRING_LEN): defined for accessing string members.
  (RSTRING_PTR): ditto.

* string.c: use RSTRING_LEN and RSTRING_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 10:47:44 +00:00
why
a6487b236a * eval.c (ruby_init): rename top_cref to ruby_top_cref and export,
along with ruby_cref, for use by the sandbox. [ruby-core:08762]

* node.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 04:14:53 +00:00
drbrain
657b626899 Revert.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-28 02:33:04 +00:00
drbrain
6e83a71d3b Include attribution
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-27 23:03:20 +00:00
akr
1f84a162df ansificated.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-13 09:44:16 +00:00
matz
275f12623d * dln.c, eval.c, gc.c, ruby.h: shut up AIX alloca warning.
[ruby-dev:29191]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-07 03:37:47 +00:00
nobu
799a6bc67b * eval.c (rb_call0): trace call/return of method defined from block.
fixed: [ruby-core:08329]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-30 14:27:01 +00:00
nobu
782d8df4f5 * eval.c (rb_trap_eval): make the current thread runnable to deal with
exceptions which occurred within the trap.  fixed: [ruby-dev:27729]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-30 13:30:19 +00:00
matz
35526b1b00 * eval.c (rb_call): fixed typo in cache look-up. [ruby-dev:29167]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-28 05:10:03 +00:00
matz
94f9fc2b6e * eval.c (rb_call): a bug in method cache look-up.
http://www.rubyist.net/~matz/20060720.html#c04


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-28 01:43:10 +00:00
matz
c0a8089044 * eval.c (Init_eval): rename #invoke_method and
#invoke_functional_method to __send and __send! respectively.

* eval.c (remove_method): prohibit removing __send and __send!.

* eval.c (rb_undef): prohibit undef'ing  __send and __send!.

* eval.c (rb_eval): prohibit redefining  __send and __send!.

* lib/delegate.rb (Delegator): preserve __send.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-26 09:40:05 +00:00
nobu
c0e5d45a1e * eval.c (backtrace): porting miss.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-24 14:53:42 +00:00
nobu
2e7a8bf228 * eval.c (backtrace): skip frames successive on node and method name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-24 13:04:39 +00:00
matz
93d5566170 * eval.c (rb_call0): revert last change. [ruby-dev:29112]
[ruby-core:08374]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-24 07:02:20 +00:00
nobu
252d273832 * eval.c (rb_call0): include funcalled methods in caller list.
fixed: [ruby-core:08290]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-21 12:22:08 +00:00
matz
58f09b0916 * eval.c (rb_call): try local method look-up first for fcall, then
normal method look-up.  [ruby-talk:202564]

* eval.c (rb_get_method_body): save local method cache separately.

* eval.c (search_method): export info whether method is local or
  not.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-20 19:20:31 +00:00
matz
cb3e51e712 * eval.c (rb_yield_0): should check args_args before lambda
argument check.  [ruby-dev:29029]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-19 13:52:03 +00:00
matz
7318a6db76 * eval.c (yield_under_i): argument should be passed in avalue
from.  [ruby-dev:29044]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-18 07:54:26 +00:00
akr
b3fd4cf833 // comment removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-15 02:38:26 +00:00
matz
ead9b197be * parse.y (f_args): allow post mandatory arguments after optional
arguments.  [ruby-dev:29014]

* parse.y (new_args_gen): allow post_args without rest_args.

* eval.c (formal_assign): ditto.

* parse.y (new_args_gen): check post argument duplication.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10516 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-12 11:10:22 +00:00
matz
1db0db3ba0 * bignum.c (rb_int2big): use SIGNED_VALUE. [ruby-dev:29019]
* bignum.c (rb_int2inum, rb_uint2inum): use VALUE sized integer.

* bignum.c (rb_big2long, rb_big2ulong): ditto.

* numeric.c (rb_num2long, rb_num2ulong): ditto.

* numeric.c (check_int, check_uint): ditto.

* bignum.c (rb_quad_pack): typo fixed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-11 06:47:09 +00:00
akr
599de8d7f1 remove an unused label and variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-11 00:26:15 +00:00
matz
c4ad5309f9 * eval.c (rb_call): remove erroneously restored prot_tag->blkid
initialization.  [ruby-dev:28997]  [ruby-dev:29000]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-10 05:48:10 +00:00
matz
672549bb47 * eval.c (proc_invoke): should not overwrite block information in
current frame.  [ruby-dev:28957]

* eval.c (rb_yield_0): retrieve proper block object from the frame
  record.

* eval.c (proc_alloc): return preserved block object if it's
  available.

* st.h (st_data_t): use pointer sized integer for st_data_t.
  [ruby-dev:28988]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-10 01:08:15 +00:00
nobu
4696270c72 * eval.c (rb_clear_cache_for_remove): clear entries for included
module.  fixed: [ruby-core:08180]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-10 00:29:43 +00:00
nobu
b922355c0d * eval.c (next_jump): deal with destination of next.
fixed: [ruby-core:08169]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-08 15:55:37 +00:00
matz
6243e40920 * eval.c (rb_call): should not set prot_tag->blkid since it would
never catch breaks at this level.  [ruby-dev:28922]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-04 06:22:11 +00:00
matz
bb0687f680 * eval.c (PUSH_FRAME): initialize frame->self. [ruby-dev:28911]
* configure.in: should test isinf for Solaris with GCC compiler.
  a patch from <ville.mattila at stonesoft.com>.  [ruby-core:07791]

* configure.in: -shared patch from Andrew Morrow
  <andrew.c.morrow at gmail.com>.  [ruby-core:08100]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-01 16:40:13 +00:00
matz
4df2cb8053 * parse.y: use ARGSPUSH instead of ARGSCAT to prevent too much
splat expansion.

* eval.c (when_check): need to handle ARGSPUSH as well.

* eval.c (block_orphan): lambda and proc from method are always
  orphan.

* gc.c (gc_mark_children): proper marking for NODE_BLOCK_PASS and
  NODE_LAMBDA.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-29 14:05:40 +00:00
akr
d7ac2f0cd2 * eval.c (SETUP_ARGS0): avoid GC problem.
[ruby-dev:28902]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-29 13:49:23 +00:00
nobu
ab15a714f8 * eval.c (when_check): arbitrary values are allowed after splats.
fixed: [ruby-dev:28879]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-28 04:51:27 +00:00
matz
c7d9ba96cb * eval.c (rb_eval): problem to handle else part. [ruby-dev:28873]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-27 23:13:20 +00:00
matz
4a497026b6 * eval.c (rb_eval): support splat in when expression list.
[ruby-dev:28822]

* eval.c (when_check): a new auxiliary function for case match.

* eval.c (when_cond): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-27 16:51:08 +00:00