summaryrefslogtreecommitdiffstats
path: root/proc.c
Commit message (Collapse)AuthorAgeFilesLines
* * vm_insnhelper.c (vm_push_frame): add CHECK_STACK_OVERFLOW.matz2009-11-071-1/+0
| | | | | | | | | | | | | | | | | [ruby-dev:39592] * eval.c (rb_longjmp): add 1 level backtrace for sysstack_error without calling any method to prevent further stack overflow. * eval.c (make_exception): don't call #exception for sysstack_error to prevent stack overflow. * proc.c (Init_Proc): don't freeze sysstack_error. * eval.c (rb_longjmp): move reentrant check after exception preparation. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (mnew): Fix scope issue [ruby-core:26069]marcandre2009-11-041-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typos.akr2009-11-031-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * hash.c (rb_hash_set_default_proc): checks arity of defalt_procmatz2009-10-241-4/+4
| | | | | | of a Hash. [ruby-core:26087] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (mnew): Method#new checks for respond_to_missing? with private set ↵marcandre2009-10-131-1/+1
| | | | | | | | to true [ruby-core:26069] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_method.c (rb_add_method_def): show the location wherenobu2009-09-301-3/+5
| | | | | | | overwritten method was defined. [ruby-dev:39400] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25129 ↵matz2009-09-281-17/+20
| | | | b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (missing_wrap): reverted.nobu2009-09-251-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25091 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (missing_wrap): new_arg is already given if argc > 1.nobu2009-09-251-3/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (mnew): fix for instance method of Module, BasicObjectnobu2009-09-251-1/+1
| | | | | | | | | and subclass of a class which overrides respond_to_missing?. based on a patch from Nikolai Lugovoi <nlugovoi AT gmail.com> in [ruby-core:25748]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (Method#== doc): Fix doc, cf [ruby-core:24791]marcandre2009-09-241-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (mnew): generate method object that wraps method_missing,matz2009-09-241-0/+21
| | | | | | | | | when #respond_to_missing? is defined. * test/ruby/test_object.rb (test_respond_to_missing): add test suites for #respond_to_missing? changes. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (umethod_bind, rb_mod_define_method): Fix bug that disallowed ↵marcandre2009-09-221-4/+5
| | | | | | methods from singleton classes to be used for UnboundMethod#bind, Kernel#define_singleton_method and Module#define_method, even when that singleton class was of the right kind_of. A patch by Shane O'Brien [ruby-core:25632] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_mod_define_method): doc fixmarcandre2009-09-221-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c (rb_mod_define_method): Doc fix (accepts UnboundMethod too)marcandre2009-09-221-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * cont.c, proc.c: added rdoc.nobu2009-09-211-0/+18
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (proc_binding): allow proc from method. [ruby-core:25589]nobu2009-09-211-6/+10
| | | | | | | * vm.c (collect_local_variables_in_env): block iseq can be NULL. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25015 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h (rb_data_type_struct): constified dsize.nobu2009-09-091-3/+3
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/st.h (st_hash_func): use st_index_t.nobu2009-09-081-8/+10
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * method.h (rb_method_definition_t): split from rb_method_entry_tnobu2009-08-281-33/+52
| | | | | | | | | to deal aliases. [ruby-dev:39165] * proc.c (struct METHOD): contains rb_method_entry_t copy. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_method_entry_arity): fixed indent.nobu2009-08-281-13/+13
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_method_entry_arity): support not_implemented method.ko12009-07-281-2/+4
| | | | | | | | (I have no idea to test it) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_method_entry_arity): support optimized method (send).ko12009-07-281-0/+8
| | | | | | | | * test/ruby/test_method.rb: add a test for above. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * suppressed shorten-64-to-32 warnings.nobu2009-07-181-10/+10
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * method.h, vm_core.h: add rb_method_entry_t. Remove nodes aroundko12009-07-151-109/+97
| | | | | | | | | | | | | | | | | | | | | method management. This change affect some VM control stack structure. * vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some refactoring. * insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto. * vm_core.h, compile.c (iseq_specialized_instruction): remove VM_CALL_SEND_BIT. use another optimization tech for Kernel#send. * node.h: remove unused node types. * ext/objspace/objspace.c (count_nodes): ditto. * gc.c: add mark/free functions for method entry. * include/ruby/intern.h: remove decl of rb_define_notimplement_method_id(). nobody can use it because noex is not opend. * iseq.c (iseq_mark): fix to check ic_method is available. * iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq(). git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (Kernel#define_singleton_method): rdoc. based on a patch byyugui2009-07-131-0/+26
| | | | | | | Marc-Andre Lafortune <ruby-core-mailing-list AT marc-andre.ca>. [ruby-core:23944]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c ({proc,binding,method}_data_type): typed.nobu2009-07-081-1/+14
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c ({proc,method}_data_type): typed.nobu2009-07-081-44/+60
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (make_curry_proc): should propagate lambda-ness.nobu2009-07-061-2/+10
| | | | | | | [ruby-core:24127] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (proc_hash): use long.nobu2009-07-061-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * class.c (rb_define_method_id): use rb_define_notimplement_method_idakr2009-04-161-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | if rb_f_notimplement is given. (rb_define_protected_method): ditto. (rb_define_private_method): ditto. (rb_define_method): use rb_define_method_id. * include/ruby/intern.h (rb_f_notimplement): declared. (rb_define_notimplement_method_id): declared. * proc.c (method_inspect): show not-implemented. * vm_method.c (notimplement_body): new variable. (rb_notimplement_body_p): new function. (rb_method_boundp): return false if not implemented. (rb_f_notimplement): new function. (rb_define_notimplement_method_id): new function. * process.c (rb_f_fork): use rb_f_notimplement if not implemented. * file.c (rb_file_s_lchmod): use rb_f_notimplement if not implemented. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (bmcall): should not uninitialized variable. a patch fromnobu2009-03-141-2/+2
| | | | | | | pegacorn at [ruby-dev:38169]. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_proc_call, bmcall): commit miss.nobu2009-03-141-2/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_proc_call, rb_node_arity, bmcall, curry): checksnobu2009-03-141-12/+27
| | | | | | | overflow. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_proc_call): checks overflow.nobu2009-03-141-1/+8
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_proc_arity): commit miss.nobu2009-03-141-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (rb_proc_parameters): unnamed_parameters() expects intnobu2009-03-141-12/+13
| | | | | | | not VALUE. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* stripped trailing spaces.nobu2009-02-221-68/+68
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_eval.c (eval_string_with_cref): use rb_vm_get_ruby_level_next_cfp()ko12009-02-131-2/+0
| | | | | | | | | | | instead of vm_get_ruby_level_caller_cfp(). checking a upper frame is not enough. [ruby-dev:37984] * proc.c, vm_core.h: declare rb_vm_get_ruby_level_next_cfp() on vm_core.h. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c: add a prefix "rb_" to exposed functionsko12009-01-191-10/+10
| | | | | | | | | | | | | | | | | vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(), vm_get_sourceline(), vm_cref(), vm_localjump_error(), vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump(). This changes may affect only core because most of renamed functions require a pointer of not-exposed struct such as rb_thread_t or NODE. In short, they are core functions. * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c, vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (proc_new): should use proc_dup() if block has Proc.ko12008-12-251-12/+10
| | | | | | | | | | * vm.c (vm_make_proc_from_block): should use rb_cProc for block. * vm.c (vm_make_proc): add an assertion. * bootstraptest/test_proc.rb: add a test. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm.c (invoke_block_from_c): fix to point right cfp.ko12008-12-241-1/+1
| | | | | | | | | | * vm.c (vm_make_proc, vm_make_proc_from_block), vm_core.h: remove unused parameter cfp. * vm_insnhelper.c, proc.c (proc_new): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (iseq_compile_each), gc.c (assign_heap_slot),nobu2008-12-091-1/+1
| | | | | | | | | | | | | (gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add), proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all), (thread_start_func_2, blocking_region_begin, blocking_region_end), (rb_thread_kill), thread_pthread.c (native_thread_create), (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state), (vm_call0): use void pointer for %p. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * iseq.c (rb_iseq_parameters): proc arguments are always optional.nobu2008-12-051-7/+10
| | | | | | | * proc.c (get_proc_iseq, rb_proc_parameters): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * iseq.c (simple_default_value): extracts simplest defaultnobu2008-11-281-2/+69
| | | | | | | | | | | | | | | argument value. * iseq.c (rb_iseq_parameters): returns parameter list. * proc.c (get_proc_iseq, get_method_iseq): handles ifunc and bmethod. * proc.c (rb_proc_parameters, rb_method_parameters): added Proc#parameters and Method#parameters. [ruby-core:19759] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (proc_eq): equivalence check should not done by pointermatz2008-11-181-3/+6
| | | | | | comparison, but should be based on iseq contents. [ruby-dev:37101] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/ruby.h: embeds the elements of an array into itsyugui2008-10-091-5/+1
| | | | | | | | | | | | | | | | | | struct RArray for # of elements <= 3. * array.c: ditto. * gc.c (gc_mark_children): following the change of struct RArray. * ext/tk/tcltklib.c (ip_ruby_cmp): ditto. * parse.y (coverage): ditto. * proc.c (curry): ditto. * .gdbinit: ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * parse.y (primary, brace_block): fix for line number.nobu2008-09-261-6/+55
| | | | | | | | * proc.c (rb_proc_location, rb_method_location): new methods {Proc,Method,UnboundMethod}#source_location. [ruby-core:18452] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/node.h, vm_core.h: move definition ofko12008-09-231-2/+2
| | | | | | | | | | | | | | | | | | | | | RUBY_VM_METHOD_NODE to node.h. * class.c, common.mk: remove useless inclusion. * compile.h, iseq.h, vm_core.h: rename compile.h to iseq.h. move some definitions from vm_core.h to iseq.h. * compile.c, iseq.c, vm.c: ditto. * eval.c, compile.c: move some functions for parser from eval.c to compile.c. * eval_intern.h, vm_core.h: move va_init_list() macro to vm_core.h. * iseq.c (rb_iseq_new_top, rb_iseq_first_lineno): added. * load.c, ruby.c: use rb_iseq_new_top() instead of rb_iseq_new() with ISEQ_TYPE_TOP constant directly. * proc.c: use rb_iseq_first_lineno() instead of accessing iseq structure. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * proc.c (Init_Proc): add '===' operator to use procs in whenmatz2008-09-061-1/+12
| | | | | | clause of the case statement. inspired by <http://www.aimred.com/news/developers/2008/08/14/unlocking_the_power_of_case_equality_proc/>. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e