aboutsummaryrefslogtreecommitdiffstats
path: root/eval.c
Commit message (Collapse)AuthorAgeFilesLines
* * eval.c (proc_invoke): save and restore block in the current frame.nobu2006-05-271-1/+3
| | | | | | | fixed: [ruby-core:07833], [ruby-talk:191639] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (SETUP_ARGS0): fixed memory corruption. [ruby-dev:28360]ocean2006-02-231-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (proc_alloc): add proper check for creation of a lambdamatz2006-02-221-5/+5
| | | | | | | without a block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c: initial value for block_unique must be 1.matz2006-02-201-1/+1
| | | | | | | [ruby-talk:180420] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_obj_instance_eval): RDoc description updated. amatz2006-02-181-1/+4
| | | | | | | | patch from Ozgur Murat Homurlu <ozgurmurath at gmail.com>. [ruby-core:07381] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * variable.c (rb_const_get_0): skip ruby_wrapper in const searchmatz2006-02-171-1/+1
| | | | | | | | | to give it lower priority (just above Object). need not to change rb_const_defined_0() since it's only a precedence matter; they are defined anyway. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (ev_const_get): simplified using rb_const_get_fallback().matz2006-02-171-34/+2
| | | | | | | | | | | | | | | | | | | | * eval.c (ev_const_defined): adopt to ev_const_get() using rb_const_defined_fallback(). * variable.c (rb_const_get_fallback): new function to implement constant search. * variable.c (rb_const_defined_fallback): new function to implement constant definition check. * variable.c (rb_const_get_0): adopt to new behavior. constants are looked up in the order of: current class, super classes (but Object), lexically external classes/modules, and Object. * variable.c (rb_const_defined_0): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9949 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_thread_wait_for): sleep should always sleep formatz2006-02-171-1/+1
| | | | | | | specified amount of time. [ruby-talk:180067] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_eval): NODE_OP_ASGN1 should allow splat in itsmatz2006-02-151-25/+26
| | | | | | | | | | | | | 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/trunk@9941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (error_line): remove void control path. [ruby-dev:28335]matz2006-02-151-5/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (yield_under_i): should not pass self as an argument tomatz2006-02-151-2/+1
| | | | | | | the block for instance_eval. [ruby-core:07364] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_obj_instance_eval): should no singleton classes formatz2006-02-151-1/+1
| | | | | | | true, false, and nil. [ruby-dev:28186] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (DMETHOD_P): accessing wrong frame. [ruby-dev:28181]matz2006-02-141-1/+2
| | | | | | | * eval.c (proc_invoke): preserve FRAME_DMETH flag. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (copy_node_scope): remove duplicated semicolons at end.matz2006-02-131-4/+3
| | | | | | | | | | | | | | | a patch from KIMURA Koichi <kimura.koichi at canon.co.jp>. [ruby-dev:28332] * eval.c (VIS_MODE): remove unnecessary argument. [ruby-dev:28332] * parse.y (parser_parse_string): mention "regexp" in a error message. a patch from Mauricio Fernandez <mfp at acm.org> [ruby-core:07340] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (parser_parse_string): mention "regexp" in a errormatz2006-02-131-123/+164
| | | | | | | | | | | | | | | | | | | | | | | message. a patch from Mauricio Fernandez <mfp at acm.org> [ruby-core:07340] * 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] * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while invoking finalizers. * gc.c (rb_gc_finalize_deferred): ditto. * io.c (rb_write_error2): use fwrite(3) if rb_stderr is not updated or is already freed. [ruby-dev:28313] * eval.c (error_line): include the class name of a surrounding method in error position description. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_obj_instance_exec): fixed typo of rdoc.usa2006-02-091-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c: apply the FreeBSD getcontext/setcontext workaroundakr2006-02-041-1/+1
| | | | | | | only before FreeBSD 7-CURRENT. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c: unify ruby_class (for method definition) and ruby_cbasematz2006-02-031-465/+433
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (for constant reference). * eval.c (rb_call0): use TMP_ALLOC() instead of allocating a temporary array object. * eval.c (eval): need not to protect $SAFE value. [ruby-core:07177] * error.c (Init_Exception): change NameError to direct subclass of Exception so that default rescue do not handle it silently. * struct.c (rb_struct_select): update RDoc description. [ruby-core:7254] * numeric.c (int_upto): return an enumerator if no block is attached to the method. * numeric.c (int_downto): ditto. * numeric.c (int_dotimes): ditto. * enum.c (enum_first): new method Enumerable#first to take first n element from an enumerable. * enum.c (enum_group_by): new method Enumerable#group_by that groups enumerable values according to their block values. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (POST_GETCONTEXT): define separately from PRE_GETCONTEXT onakr2006-01-221-42/+49
| | | | | | | IA64 to avoid reusing variable address. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (ruby_setjmp): workaround for FreeBSD/i386akr2006-01-221-23/+34
| | | | | | | | getcontext/setcontext bug. [ruby-dev:28263] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9850 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): don't clobber %l7 of SPARCakr2006-01-181-1/+15
| | | | | | | | | | | 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/trunk@9844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_mod_method_defined): ditto.nobu2006-01-171-5/+21
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* comment FreeBSD PR number.akr2006-01-081-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (GCC_VERSION_BEFORE): check __INTEL_COMPILER.akr2006-01-081-1/+1
| | | | | | | | Intel C++ Compiler defines __GNUC__. http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1077.htm git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* the bug was FreeBSD specific.akr2006-01-081-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_fd_isset): compare the result of FD_ISSET with 0 toakr2006-01-061-1/+1
| | | | | | | | | | avoid BSD bug. BSD defines FD_ISSET as just a bitmap of unsigned long. So returning the value from rb_fd_isset discards upper 32bits on LP64 environment. http://www.freebsd.org/cgi/query-pr.cgi?pr=ia64/91421 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9802 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* avoid "left-hand operand of comma expression has no effect" warnings.akr2006-01-051-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: don't force getcontext on IA64.akr2006-01-051-6/+7
| | | | | | | | | | * eval.c (ruby_setjmp): add an argument for just before getcontext. (THREAD_SAVE_CONTEXT): call rb_thread_save_context just before getcontext. [ruby-dev:28205] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_thread_save_context): should not recycle scope object usednobu2005-12-311-0/+1
| | | | | | | in a thread. fixed: [ruby-dev:28177] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* avoid a GC problem with RUBY_ALWAYS_GC= ./ruby -e ''.akr2005-12-291-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_gc_mark_threads): keep unmarked threads which won't wakenobu2005-12-291-0/+33
| | | | | | | | | | 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/trunk@9759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_mod_define_method): should save safe_level in thematz2005-12-291-16/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | proc object. [ruby-dev:28146] * test/drb/drbtest.rb (DRbService::self.ext_service): increase timeout limit. a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>. [ruby-dev:28132] * 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] * ext/digest/sha2/sha2.c (ULL): support AIX C. a patch from Kailden <kailden at gmail.com>. [ruby-core:06984] * ext/syck/rubyext.c (rb_syck_compile): avoid potential memory leak. * ext/syck/rubyext.c (syck_set_ivars): avoid potential memory leak by explicit symbol allocation. * lib/delegate.rb (Delegator::method_missing): should delegate block as well. * lib/cgi.rb (CGI::QueryExtension::MorphingBody): fix criteria to use Tempfile. A fix from Zev Blut <rubyzbibd at ubit.com>. [ruby-core:06076] * string.c: remove global functions work on $_. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (struct thread): add bstr_max.akr2005-12-271-4/+13
| | | | | | | | (rb_thread_save_context): use realloc instead of REALLOC_N to avoid GC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn'takr2005-12-271-96/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | define __ia64__.) don't check libunwind stuff. check __libc_ia64_register_backing_store_base. * defines.h: declare rb_ia64_bsp and rb_ia64_flushrs. (flush_register_windows): call rb_ia64_flushrs on IA64. * ia64.s: new file for IA64. it is separated from C program files because Intel C++ Compiler for IA64 doesn't support inline assembly. * common.mk (ia64.$(OBJEXT)): new target. * ruby.h (RUBY_INIT_STACK): defined. (ruby_init_stack): declared for RUBY_INIT_STACK. * main.c (main): precedes RUBY_INIT_STACK before ruby_init. * gc.c (rb_gc_register_stack_start): new global variable on IA64. (garbage_collect): simplify register stack marking code. don't use libunwind. (Init_stack): initialize rb_gc_register_stack_start. (ruby_init_stack): new function for RUBY_INIT_STACK. * eval.c (struct thread): add bstr_pos member for original position of register stack. (rb_thread_save_context): simplify register stack saving code. don't use libunwind. (rb_thread_restore_context_0): new function. moved from rb_thread_restore_context except the stack position checking code. don't use libunwind for IA64 register stack. (register_stack_extend): new function. (stack_extend): make it self-recursive with the stack position checking code in old rb_thread_restore_context. (rb_thread_restore_context): just call stack_extend. (flush_register_windows): removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9745 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (eval_under_i): evaluate source in caller's frame.nobu2005-12-201-0/+4
| | | | | | | [ruby-dev:28076] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* simplify previous change.akr2005-12-191-4/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): activate onlyakr2005-12-191-0/+18
| | | | | | | before gcc 4.0.3 on SPARC and IA64. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (bmcall): fix a GC problem by tail call onakr2005-12-161-1/+4
| | | | | | | IA64 with gcc 4.0.3 20051216 (prerelease). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* precedes registering global VALUE variables before initializing it.akr2005-12-121-4/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/digest/digest.c (rb_digest_base_s_digest): add volatile tomatz2005-12-121-3/+3
| | | | | | | | | | | 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/trunk@9673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (calling_scope_t): gave names to magic numbers for rb_call().nobu2005-12-091-26/+32
| | | | | | | [ruby-dev:27978] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9665 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (umethod_bind): adjust invoking class for module method.nobu2005-12-071-3/+13
| | | | | | | [ruby-dev:27964] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (call_trace_func): klass parameter should be amatz2005-12-071-1/+1
| | | | | | | class/module that defines calling method. [ruby-talk:169307] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * gc.c (ruby_xmalloc2): change check for integer overflow.matz2005-12-061-1/+2
| | | | | | | | | | | | [ruby-dev:27399] * gc.c (ruby_xrealloc2): ditto. * eval.c (exec_under): avoid accessing ruby_frame->prev. [ruby-dev:27948] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9647 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_funcall2): allow to call protected methods.nobu2005-11-301-3/+3
| | | | | | | fixed: [ruby-dev:27890] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in, eval.c, intern.h: check fd_mask type.nobu2005-11-111-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c, intern.h: failed to compile where NFDBITS is defined butocean2005-11-111-1/+1
| | | | | | | | | | | howmany() is not defined. [ruby-dev:27680] * io.c (is_socket): failed to compile where S_ISSOCK is not defined. * io.c (pipe_open): failed to compile where socketpair is not supported. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * intern.h, eval.c (rb_thread_signal_raise): costified.ocean2005-11-081-3/+3
| | | | | | | * signal.c: cosmetic change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_call_super): should call method_missing if super ismatz2005-11-011-5/+9
| | | | | | | | | | | | | | | | | | | | | | | called from Kernel method. * eval.c (exec_under): frame during eval should preserve external information. * configure.in: use proper option for Sun linker. A patch from Shinya Kuwamura <kuwa@labs.fujitsu.com>. [ruby-dev:27603] * numeric.c (fix_rshift): RDoc fix. [ruby-core:6351] * util.h (strtod): add #undef for platforms defines strtod() macro. [ruby-dev:27563] * ext/etc/etc.c: document update from mathew <meta@pobox.com>. [ruby-core:06473] * ext/fcntl/fcntl.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * bin/erb (ERB::Main::run): typo fixed. [ruby-core:06337]matz2005-10-211-49/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * env.h: move struct METHOD and struct BLOCK from eval.c to support NodeWrap and ParseTree. * 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] * eval.c (rb_obj_instance_exec): create instance_exec and module_exec which pass arguments to the block. * eval.c (rb_f_funcall): rename fcall to funcall to follow tradition. * st.c (st_free_table): do not call free() but xfree(). [ruby-core:06205] * eval.c (splat_value): call rb_Array() to convert svalue to values. [ruby-dev:27397] * lib/cgi.rb (CGI::Cookie::parse): Cookies from Nokia devices may not be parsed correctly. A patch from August Z. Flatby (augustzf) in [ruby-Patches-2595]. [ruby-core:06183] * object.c (rb_Array): Array() to raise error for objects without to_ary, nor to_a. * object.c (nil_to_a): revert NilClass#to_a. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e