Ruby  2.0.0p247(2013-06-27revision41674)
Data Structures | Defines | Functions | Variables
proc.c File Reference
#include "eval_intern.h"
#include "internal.h"
#include "gc.h"
#include "iseq.h"

Go to the source code of this file.

Data Structures

struct  METHOD

Defines

#define IS_METHOD_PROC_NODE(node)   (nd_type(node) == NODE_IFUNC && (node)->nd_cfnc == bmcall)
#define check_argc(argc)   (argc)
#define get_proc_iseq   rb_proc_get_iseq

Functions

static VALUE bmcall (VALUE, VALUE, int, VALUE *, VALUE)
static int method_arity (VALUE)
static int method_min_max_arity (VALUE, int *max)
static void proc_free (void *ptr)
static void proc_mark (void *ptr)
static size_t proc_memsize (const void *ptr)
VALUE rb_proc_alloc (VALUE klass)
VALUE rb_obj_is_proc (VALUE proc)
static VALUE proc_dup (VALUE self)
static VALUE proc_clone (VALUE self)
VALUE rb_proc_lambda_p (VALUE procval)
static void binding_free (void *ptr)
static void binding_mark (void *ptr)
static size_t binding_memsize (const void *ptr)
static VALUE binding_alloc (VALUE klass)
static VALUE binding_dup (VALUE self)
static VALUE binding_clone (VALUE self)
VALUE rb_binding_new_with_cfp (rb_thread_t *th, const rb_control_frame_t *src_cfp)
VALUE rb_binding_new (void)
static VALUE rb_f_binding (VALUE self)
static VALUE bind_eval (int argc, VALUE *argv, VALUE bindval)
static VALUE proc_new (VALUE klass, int is_lambda)
static VALUE rb_proc_s_new (int argc, VALUE *argv, VALUE klass)
VALUE rb_block_proc (void)
VALUE rb_block_lambda (void)
VALUE rb_f_lambda (void)
static VALUE proc_call (int argc, VALUE *argv, VALUE procval)
VALUE rb_proc_call (VALUE self, VALUE args)
VALUE rb_proc_call_with_block (VALUE self, int argc, VALUE *argv, VALUE pass_procval)
static VALUE proc_arity (VALUE self)
static int rb_iseq_min_max_arity (const rb_iseq_t *iseq, int *max)
static int rb_proc_min_max_arity (VALUE self, int *max)
int rb_proc_arity (VALUE self)
rb_iseq_trb_proc_get_iseq (VALUE self, int *is_proc)
static VALUE iseq_location (rb_iseq_t *iseq)
VALUE rb_proc_location (VALUE self)
static VALUE unnamed_parameters (int arity)
static VALUE rb_proc_parameters (VALUE self)
st_index_t rb_hash_proc (st_index_t hash, VALUE prc)
static VALUE proc_hash (VALUE self)
static VALUE proc_to_s (VALUE self)
static VALUE proc_to_proc (VALUE self)
static void bm_mark (void *ptr)
static void bm_free (void *ptr)
static size_t bm_memsize (const void *ptr)
VALUE rb_obj_is_method (VALUE m)
static VALUE mnew (VALUE klass, VALUE obj, ID id, VALUE mclass, int scope)
static VALUE method_eq (VALUE method, VALUE other)
static VALUE method_hash (VALUE method)
static VALUE method_unbind (VALUE obj)
static VALUE method_receiver (VALUE obj)
static VALUE method_name (VALUE obj)
static VALUE method_owner (VALUE obj)
void rb_method_name_error (VALUE klass, VALUE str)
VALUE rb_obj_method (VALUE obj, VALUE vid)
VALUE rb_obj_public_method (VALUE obj, VALUE vid)
static VALUE rb_mod_instance_method (VALUE mod, VALUE vid)
static VALUE rb_mod_public_instance_method (VALUE mod, VALUE vid)
static VALUE rb_mod_define_method (int argc, VALUE *argv, VALUE mod)
static VALUE rb_obj_define_method (int argc, VALUE *argv, VALUE obj)
static VALUE top_define_method (int argc, VALUE *argv, VALUE obj)
static VALUE method_clone (VALUE self)
VALUE rb_method_call (int argc, VALUE *argv, VALUE method)
VALUE rb_method_call_with_block (int argc, VALUE *argv, VALUE method, VALUE pass_procval)
static VALUE umethod_bind (VALUE method, VALUE recv)
static int rb_method_entry_min_max_arity (const rb_method_entry_t *me, int *max)
int rb_method_entry_arity (const rb_method_entry_t *me)
static VALUE method_arity_m (VALUE method)
static rb_method_entry_toriginal_method_entry (VALUE mod, ID id)
int rb_mod_method_arity (VALUE mod, ID id)
int rb_obj_method_arity (VALUE obj, ID id)
static rb_method_definition_tmethod_get_def (VALUE method)
static rb_iseq_tmethod_get_iseq (rb_method_definition_t *def)
rb_iseq_trb_method_get_iseq (VALUE method)
static VALUE method_def_location (rb_method_definition_t *def)
VALUE rb_method_entry_location (rb_method_entry_t *me)
VALUE rb_mod_method_location (VALUE mod, ID id)
VALUE rb_obj_method_location (VALUE obj, ID id)
VALUE rb_method_location (VALUE method)
static VALUE rb_method_parameters (VALUE method)
static VALUE method_inspect (VALUE method)
static VALUE mproc (VALUE method)
static VALUE mlambda (VALUE method)
VALUE rb_proc_new (VALUE(*func)(ANYARGS), VALUE val)
static VALUE method_proc (VALUE method)
static VALUE localjump_xvalue (VALUE exc)
static VALUE localjump_reason (VALUE exc)
static VALUE proc_binding (VALUE self)
static VALUE curry (VALUE dummy, VALUE args, int argc, VALUE *argv, VALUE passed_proc)
static VALUE make_curry_proc (VALUE proc, VALUE passed, VALUE arity)
static VALUE proc_curry (int argc, VALUE *argv, VALUE self)
void Init_Proc (void)
void Init_Binding (void)

Variables

VALUE rb_cUnboundMethod
VALUE rb_cMethod
VALUE rb_cBinding
VALUE rb_cProc
static ID attached
static const rb_data_type_t proc_data_type
static const rb_data_type_t binding_data_type
static const rb_data_type_t method_data_type

Define Documentation

#define check_argc (   argc)    (argc)

Definition at line 588 of file proc.c.

Referenced by bmcall(), curry(), rb_method_entry_min_max_arity(), and rb_proc_call().

Definition at line 710 of file proc.c.

Referenced by method_get_iseq(), rb_proc_location(), and rb_proc_parameters().

#define IS_METHOD_PROC_NODE (   node)    (nd_type(node) == NODE_IFUNC && (node)->nd_cfnc == bmcall)

Definition at line 38 of file proc.c.

Referenced by proc_binding(), rb_proc_get_iseq(), and rb_proc_min_max_arity().


Function Documentation

static VALUE bind_eval ( int  argc,
VALUE argv,
VALUE  bindval 
) [static]

Definition at line 388 of file proc.c.

References args, Qnil, rb_f_eval(), and rb_scan_args().

Referenced by Init_Binding().

static VALUE binding_alloc ( VALUE  klass) [static]

Definition at line 282 of file proc.c.

References TypedData_Make_Struct.

Referenced by binding_dup(), proc_binding(), and rb_binding_new_with_cfp().

static VALUE binding_clone ( VALUE  self) [static]

Definition at line 306 of file proc.c.

References binding_dup(), and CLONESETUP.

Referenced by Init_Binding().

static VALUE binding_dup ( VALUE  self) [static]
static void binding_free ( void *  ptr) [static]

Definition at line 242 of file proc.c.

References RUBY_FREE_ENTER, RUBY_FREE_LEAVE, and ruby_xfree().

static void binding_mark ( void *  ptr) [static]
static size_t binding_memsize ( const void *  ptr) [static]

Definition at line 267 of file proc.c.

static void bm_free ( void *  ptr) [static]
static void bm_mark ( void *  ptr) [static]
static size_t bm_memsize ( const void *  ptr) [static]

Definition at line 910 of file proc.c.

static VALUE bmcall ( VALUE  args,
VALUE  method,
int  argc,
VALUE argv,
VALUE  passed_proc 
) [static]
static VALUE curry ( VALUE  dummy,
VALUE  args,
int  argc,
VALUE argv,
VALUE  passed_proc 
) [static]
void Init_Binding ( void  )
void Init_Proc ( void  )
static VALUE iseq_location ( rb_iseq_t iseq) [static]
static VALUE localjump_reason ( VALUE  exc) [static]

Definition at line 2074 of file proc.c.

References rb_iv_get().

Referenced by Init_Proc().

static VALUE localjump_xvalue ( VALUE  exc) [static]

Definition at line 2060 of file proc.c.

References rb_iv_get().

Referenced by Init_Proc().

static VALUE make_curry_proc ( VALUE  proc,
VALUE  passed,
VALUE  arity 
) [static]

Definition at line 2125 of file proc.c.

References args, curry(), GetProcPtr, rb_proc_t::is_lambda, rb_ary_freeze(), rb_ary_new3(), and rb_proc_new().

Referenced by curry(), and proc_curry().

static int method_arity ( VALUE  method) [static]
static VALUE method_arity_m ( VALUE  method) [static]

Definition at line 1783 of file proc.c.

References INT2FIX, and method_arity().

Referenced by Init_Proc().

static VALUE method_clone ( VALUE  self) [static]
static VALUE method_def_location ( rb_method_definition_t def) [static]
static VALUE method_eq ( VALUE  method,
VALUE  other 
) [static]
static rb_method_definition_t* method_get_def ( VALUE  method) [inline, static]
static rb_iseq_t* method_get_iseq ( rb_method_definition_t def) [static]
static VALUE method_hash ( VALUE  method) [static]
static VALUE method_inspect ( VALUE  method) [static]
static int method_min_max_arity ( VALUE  method,
int *  max 
) [static]
static VALUE method_name ( VALUE  obj) [static]

Definition at line 1156 of file proc.c.

References METHOD::id, ID2SYM, method_data_type, and TypedData_Get_Struct.

Referenced by Init_Proc().

static VALUE method_owner ( VALUE  obj) [static]

Definition at line 1172 of file proc.c.

References rb_method_entry_struct::klass, METHOD::me, method_data_type, and TypedData_Get_Struct.

Referenced by Init_Proc().

static VALUE method_proc ( VALUE  method) [static]

Definition at line 2034 of file proc.c.

References bmcall(), GetProcPtr, rb_proc_t::is_from_method, mlambda(), and rb_iterate().

Referenced by Init_Proc().

static VALUE method_receiver ( VALUE  obj) [static]

Definition at line 1140 of file proc.c.

References method_data_type, METHOD::recv, and TypedData_Get_Struct.

Referenced by Init_Proc().

static VALUE method_unbind ( VALUE  obj) [static]
static VALUE mlambda ( VALUE  method) [static]

Definition at line 1994 of file proc.c.

References rb_funcall(), and rb_mRubyVMFrozenCore.

Referenced by method_proc().

static VALUE mnew ( VALUE  klass,
VALUE  obj,
ID  id,
VALUE  mclass,
int  scope 
) [static]
static VALUE mproc ( VALUE  method) [static]

Definition at line 1988 of file proc.c.

References rb_funcall2(), and rb_mRubyVMFrozenCore.

Referenced by rb_proc_new().

static rb_method_entry_t* original_method_entry ( VALUE  mod,
ID  id 
) [static]
static VALUE proc_arity ( VALUE  self) [static]

Definition at line 657 of file proc.c.

References INT2FIX, and rb_proc_arity().

Referenced by Init_Proc().

static VALUE proc_binding ( VALUE  self) [static]
static VALUE proc_call ( int  argc,
VALUE argv,
VALUE  procval 
) [static]
static VALUE proc_clone ( VALUE  self) [static]

Definition at line 122 of file proc.c.

References CLONESETUP, and proc_dup().

Referenced by Init_Proc().

static VALUE proc_curry ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE proc_dup ( VALUE  self) [static]
static void proc_free ( void *  ptr) [static]

Definition at line 41 of file proc.c.

References RUBY_FREE_ENTER, RUBY_FREE_LEAVE, and ruby_xfree().

static VALUE proc_hash ( VALUE  self) [static]

Definition at line 821 of file proc.c.

References hash(), LONG2FIX, rb_hash_end(), rb_hash_proc(), and rb_hash_start().

Referenced by Init_Proc().

static void proc_mark ( void *  ptr) [static]
static size_t proc_memsize ( const void *  ptr) [static]

Definition at line 69 of file proc.c.

static VALUE proc_new ( VALUE  klass,
int  is_lambda 
) [static]
static VALUE proc_to_proc ( VALUE  self) [static]

Definition at line 882 of file proc.c.

Referenced by Init_Proc().

static VALUE proc_to_s ( VALUE  self) [static]
VALUE rb_binding_new ( void  )

Definition at line 343 of file proc.c.

References rb_thread_struct::cfp, GET_THREAD(), and rb_binding_new_with_cfp().

Referenced by call_trace_func(), Init_VM(), and rb_f_binding().

VALUE rb_block_lambda ( void  )

Definition at line 493 of file proc.c.

References proc_new(), rb_cProc, and TRUE.

Referenced by Init_Proc(), Init_VM(), rb_f_lambda(), and rb_mod_define_method().

VALUE rb_block_proc ( void  )
static VALUE rb_f_binding ( VALUE  self) [static]

Definition at line 366 of file proc.c.

References rb_binding_new().

Referenced by Init_Binding().

VALUE rb_f_lambda ( void  )

Definition at line 499 of file proc.c.

References rb_block_lambda(), and rb_warn().

st_index_t rb_hash_proc ( st_index_t  hash,
VALUE  prc 
)
static int rb_iseq_min_max_arity ( const rb_iseq_t iseq,
int *  max 
) [inline, static]
VALUE rb_method_call ( int  argc,
VALUE argv,
VALUE  method 
)

Definition at line 1520 of file proc.c.

References Qnil, rb_block_given_p(), rb_block_proc(), and rb_method_call_with_block().

Referenced by Init_Proc(), and method_fallback().

VALUE rb_method_call_with_block ( int  argc,
VALUE argv,
VALUE  method,
VALUE  pass_procval 
)

Definition at line 1743 of file proc.c.

References max(), and rb_method_entry_min_max_arity().

Referenced by check_funcall_respond_to(), method_arity(), and rb_mod_method_arity().

Definition at line 1876 of file proc.c.

References rb_method_entry_struct::def, method_def_location(), and Qnil.

Referenced by rb_mod_method_location().

static int rb_method_entry_min_max_arity ( const rb_method_entry_t me,
int *  max 
) [static]

Definition at line 1859 of file proc.c.

References method_get_def(), and method_get_iseq().

Referenced by iseq_s_of(), rb_method_parameters(), and rb_proc_get_iseq().

Definition at line 1904 of file proc.c.

References method_def_location(), and method_get_def().

Referenced by Init_Proc().

void rb_method_name_error ( VALUE  klass,
VALUE  str 
)
static VALUE rb_method_parameters ( VALUE  method) [static]

Definition at line 1918 of file proc.c.

References method_arity(), rb_iseq_parameters(), rb_method_get_iseq(), and unnamed_parameters().

Referenced by Init_Proc().

static VALUE rb_mod_define_method ( int  argc,
VALUE argv,
VALUE  mod 
) [static]
static VALUE rb_mod_instance_method ( VALUE  mod,
VALUE  vid 
) [static]

Definition at line 1290 of file proc.c.

References FALSE, mnew(), Qundef, rb_check_id(), rb_cUnboundMethod, and rb_method_name_error().

Referenced by Init_Proc().

int rb_mod_method_arity ( VALUE  mod,
ID  id 
)

Definition at line 1823 of file proc.c.

References METHOD::me, original_method_entry(), and rb_method_entry_arity().

Referenced by rb_obj_method_arity().

VALUE rb_mod_method_location ( VALUE  mod,
ID  id 
)
static VALUE rb_mod_public_instance_method ( VALUE  mod,
VALUE  vid 
) [static]

Definition at line 1307 of file proc.c.

References mnew(), Qundef, rb_check_id(), rb_cUnboundMethod, rb_method_name_error(), and TRUE.

Referenced by Init_Proc().

static VALUE rb_obj_define_method ( int  argc,
VALUE argv,
VALUE  obj 
) [static]

Definition at line 1440 of file proc.c.

References rb_mod_define_method(), and rb_singleton_class().

Referenced by Init_Proc().

VALUE rb_obj_method ( VALUE  obj,
VALUE  vid 
)

Definition at line 1232 of file proc.c.

References CLASS_OF, FALSE, mnew(), rb_check_id(), rb_cMethod, and rb_method_name_error().

Referenced by Init_Proc(), and wmap_allocate().

int rb_obj_method_arity ( VALUE  obj,
ID  id 
)

Definition at line 1831 of file proc.c.

References CLASS_OF, and rb_mod_method_arity().

Referenced by rb_obj_respond_to().

VALUE rb_obj_method_location ( VALUE  obj,
ID  id 
)

Definition at line 1890 of file proc.c.

References CLASS_OF, and rb_mod_method_location().

VALUE rb_obj_public_method ( VALUE  obj,
VALUE  vid 
)

Definition at line 1249 of file proc.c.

References CLASS_OF, mnew(), rb_check_id(), rb_cMethod, rb_method_name_error(), and TRUE.

Referenced by Init_Proc().

Definition at line 84 of file proc.c.

References TypedData_Make_Struct.

Referenced by proc_dup(), and rb_vm_make_proc().

int rb_proc_arity ( VALUE  self)
VALUE rb_proc_call ( VALUE  self,
VALUE  args 
)
VALUE rb_proc_call_with_block ( VALUE  self,
int  argc,
VALUE argv,
VALUE  pass_procval 
)
rb_iseq_t* rb_proc_get_iseq ( VALUE  self,
int *  is_proc 
)

Definition at line 231 of file proc.c.

References GetProcPtr, rb_proc_t::is_lambda, Qfalse, and Qtrue.

Referenced by default_proc_arity_check(), Init_Proc(), and proc_curry().

Definition at line 758 of file proc.c.

References get_proc_iseq, and iseq_location().

Referenced by Init_Proc(), and thread_initialize().

static int rb_proc_min_max_arity ( VALUE  self,
int *  max 
) [static]
VALUE rb_proc_new ( VALUE(*)(ANYARGS func,
VALUE  val 
)
static VALUE rb_proc_parameters ( VALUE  self) [static]

Definition at line 793 of file proc.c.

References get_proc_iseq, rb_iseq_parameters(), rb_proc_arity(), and unnamed_parameters().

Referenced by Init_Proc().

static VALUE rb_proc_s_new ( int  argc,
VALUE argv,
VALUE  klass 
) [static]

Definition at line 463 of file proc.c.

References FALSE, proc_new(), and rb_obj_call_init().

Referenced by Init_Proc().

static VALUE top_define_method ( int  argc,
VALUE argv,
VALUE  obj 
) [static]
static VALUE umethod_bind ( VALUE  method,
VALUE  recv 
) [static]
static VALUE unnamed_parameters ( int  arity) [static]

Variable Documentation

ID attached [static]

Definition at line 34 of file proc.c.

Referenced by Init_Binding(), method_inspect(), and rb_method_name_error().

Initial value:
 {
    "binding",
    {
        binding_mark,
        binding_free,
        binding_memsize,
    },
}

Definition at line 272 of file proc.c.

Initial value:
 {
    "proc",
    {
        proc_mark,
        proc_free,
        proc_memsize,
    },
}

Definition at line 74 of file proc.c.

Definition at line 28 of file proc.c.

Definition at line 27 of file proc.c.

Definition at line 29 of file proc.c.

Definition at line 26 of file proc.c.