Ruby  2.0.0p353(2013-11-22revision43784)
Data Structures | Macros | Functions | Variables
proc.c File Reference
#include "eval_intern.h"
#include "internal.h"
#include "gc.h"
#include "iseq.h"
Include dependency graph for proc.c:

Go to the source code of this file.

Data Structures

struct  METHOD
 

Macros

#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
 

Macro Definition 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().

#define get_proc_iseq   rb_proc_get_iseq

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)
inlinestatic
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_binding_new_with_cfp ( rb_thread_t th,
const rb_control_frame_t src_cfp 
)
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 
)
inlinestatic
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 
)
int rb_method_entry_arity ( const rb_method_entry_t me)

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().

VALUE rb_method_entry_location ( rb_method_entry_t me)

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
rb_iseq_t* rb_method_get_iseq ( VALUE  method)

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().

VALUE rb_method_location ( VALUE  method)

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_is_method ( VALUE  m)
VALUE rb_obj_is_proc ( VALUE  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().

VALUE rb_proc_alloc ( VALUE  klass)

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 
)
VALUE rb_proc_lambda_p ( VALUE  procval)

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().

VALUE rb_proc_location ( VALUE  self)

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().

const rb_data_type_t binding_data_type
static
Initial value:
= {
"binding",
{
},
}
static size_t binding_memsize(const void *ptr)
Definition: proc.c:267
static void binding_free(void *ptr)
Definition: proc.c:242
static void binding_mark(void *ptr)
Definition: proc.c:254

Definition at line 272 of file proc.c.

const rb_data_type_t method_data_type
static
Initial value:
= {
"method",
{
},
}
static void bm_free(void *ptr)
Definition: proc.c:898
static size_t bm_memsize(const void *ptr)
Definition: proc.c:910
static void bm_mark(void *ptr)
Definition: proc.c:888

Definition at line 915 of file proc.c.

Referenced by method_arity(), method_clone(), method_eq(), method_get_def(), method_hash(), method_inspect(), method_min_max_arity(), method_name(), method_owner(), method_receiver(), method_unbind(), mnew(), rb_method_call_with_block(), rb_obj_is_method(), and umethod_bind().

const rb_data_type_t proc_data_type
static
Initial value:
= {
"proc",
{
},
}
static void proc_mark(void *ptr)
Definition: proc.c:51
static void proc_free(void *ptr)
Definition: proc.c:41
static size_t proc_memsize(const void *ptr)
Definition: proc.c:69

Definition at line 74 of file proc.c.

VALUE rb_cBinding

Definition at line 28 of file proc.c.

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

VALUE rb_cMethod

Definition at line 27 of file proc.c.

Referenced by Init_Proc(), rb_obj_method(), rb_obj_public_method(), and umethod_bind().

VALUE rb_cProc

Definition at line 29 of file proc.c.

Referenced by Init_Proc(), proc_dup(), rb_block_lambda(), and rb_block_proc().

VALUE rb_cUnboundMethod