Ruby  2.4.2p198(2017-09-14revision59899)
Data Structures | Macros | Functions | Variables
objspace.c File Reference
#include "internal.h"
#include <ruby/st.h>
#include <ruby/io.h>
#include <ruby/re.h>
#include "node.h"
#include "gc.h"
#include "symbol.h"
Include dependency graph for objspace.c:

Go to the source code of this file.

Data Structures

struct  total_data
 
struct  dynamic_symbol_counts
 
struct  rof_data
 
struct  rofr_data
 

Macros

#define CASE_TYPE(t)   case t: type = ID2SYM(rb_intern(#t)); break;
 
#define COUNT_NODE(n)   case n: node = ID2SYM(rb_intern(#n)); break;
 

Functions

static VALUE memsize_of_m (VALUE self, VALUE obj)
 
static int total_i (void *vstart, void *vend, size_t stride, void *ptr)
 
static VALUE memsize_of_all_m (int argc, VALUE *argv, VALUE self)
 
static int set_zero_i (st_data_t key, st_data_t val, st_data_t arg)
 
static VALUE setup_hash (int argc, VALUE *argv)
 
static int cos_i (void *vstart, void *vend, size_t stride, void *data)
 
static VALUE type2sym (enum ruby_value_type i)
 
static VALUE count_objects_size (int argc, VALUE *argv, VALUE os)
 
static int cs_i (void *vstart, void *vend, size_t stride, void *n)
 
size_t rb_sym_immortal_count (void)
 
static VALUE count_symbols (int argc, VALUE *argv, VALUE os)
 
static int cn_i (void *vstart, void *vend, size_t stride, void *n)
 
static VALUE count_nodes (int argc, VALUE *argv, VALUE os)
 
static int cto_i (void *vstart, void *vend, size_t stride, void *data)
 
static VALUE count_tdata_objects (int argc, VALUE *argv, VALUE self)
 
static int count_imemo_objects_i (void *vstart, void *vend, size_t stride, void *data)
 
static VALUE count_imemo_objects (int argc, VALUE *argv, VALUE self)
 
static void iow_mark (void *ptr)
 
static size_t iow_size (const void *ptr)
 
static VALUE iow_newobj (VALUE obj)
 
static VALUE iow_type (VALUE self)
 
static VALUE iow_inspect (VALUE self)
 
static VALUE iow_internal_object_id (VALUE self)
 
static void reachable_object_from_i (VALUE obj, void *data_ptr)
 
static int collect_values (st_data_t key, st_data_t value, st_data_t data)
 
static VALUE reachable_objects_from (VALUE self, VALUE obj)
 
static void reachable_object_from_root_i (const char *category, VALUE obj, void *ptr)
 
static int collect_values_of_values (VALUE category, VALUE category_objects, VALUE categories)
 
static VALUE reachable_objects_from_root (VALUE self)
 
static VALUE wrap_klass_iow (VALUE klass)
 
static VALUE objspace_internal_class_of (VALUE self, VALUE obj)
 
static VALUE objspace_internal_super_of (VALUE self, VALUE obj)
 
void Init_object_tracing (VALUE rb_mObjSpace)
 
void Init_objspace_dump (VALUE rb_mObjSpace)
 
void Init_objspace (void)
 

Variables

static ID imemo_type_ids [imemo_mask+1]
 
static const rb_data_type_t iow_data_type
 
static VALUE rb_mInternalObjectWrapper
 

Macro Definition Documentation

◆ CASE_TYPE

#define CASE_TYPE (   t)    case t: type = ID2SYM(rb_intern(#t)); break;

Referenced by type2sym().

◆ COUNT_NODE

#define COUNT_NODE (   n)    case n: node = ID2SYM(rb_intern(#n)); break;

Referenced by count_nodes().

Function Documentation

◆ cn_i()

static int cn_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  n 
)
static

Definition at line 332 of file objspace.c.

References BUILTIN_TYPE, nd_type, RBASIC, and T_NODE.

Referenced by count_nodes().

◆ collect_values()

static int collect_values ( st_data_t  key,
st_data_t  value,
st_data_t  data 
)
static

Definition at line 732 of file objspace.c.

References rb_ary_push(), and ST_CONTINUE.

Referenced by collect_values_of_values(), and reachable_objects_from().

◆ collect_values_of_values()

static int collect_values_of_values ( VALUE  category,
VALUE  category_objects,
VALUE  categories 
)
static

◆ cos_i()

static int cos_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  data 
)
static

Definition at line 147 of file objspace.c.

References BUILTIN_TYPE, rb_obj_memsize_of(), and RBASIC.

Referenced by count_objects_size().

◆ count_imemo_objects()

static VALUE count_imemo_objects ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ count_imemo_objects_i()

static int count_imemo_objects_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  data 
)
static

◆ count_nodes()

static VALUE count_nodes ( int  argc,
VALUE argv,
VALUE  os 
)
static

Definition at line 371 of file objspace.c.

References cn_i(), COUNT_NODE, hash(), INT2FIX, NODE_ALIAS, NODE_ALLOCA, NODE_AND, NODE_ARGS, NODE_ARGS_AUX, NODE_ARGSCAT, NODE_ARGSPUSH, NODE_ARRAY, NODE_ATTRASGN, NODE_BACK_REF, NODE_BEGIN, NODE_BLOCK, NODE_BLOCK_ARG, NODE_BLOCK_PASS, NODE_BMETHOD, NODE_BREAK, NODE_CALL, NODE_CASE, NODE_CDECL, NODE_CLASS, NODE_COLON2, NODE_COLON3, NODE_CONST, NODE_CVAR, NODE_CVASGN, NODE_CVDECL, NODE_DASGN, NODE_DASGN_CURR, NODE_DEFINED, NODE_DEFN, NODE_DEFS, NODE_DOT2, NODE_DOT3, NODE_DREGX, NODE_DREGX_ONCE, NODE_DSTR, NODE_DSYM, NODE_DVAR, NODE_DXSTR, NODE_ENSURE, NODE_ERRINFO, NODE_EVSTR, NODE_FALSE, NODE_FCALL, NODE_FLIP2, NODE_FLIP3, NODE_FOR, NODE_GASGN, NODE_GVAR, NODE_HASH, NODE_IASGN, NODE_IASGN2, NODE_IF, NODE_ITER, NODE_IVAR, NODE_KW_ARG, NODE_LAMBDA, NODE_LASGN, NODE_LAST, NODE_LIT, NODE_LVAR, NODE_MASGN, NODE_MATCH, NODE_MATCH2, NODE_MATCH3, NODE_MODULE, NODE_NEXT, NODE_NIL, NODE_NTH_REF, NODE_OP_ASGN1, NODE_OP_ASGN2, NODE_OP_ASGN_AND, NODE_OP_ASGN_OR, NODE_OP_CDECL, NODE_OPT_ARG, NODE_OPT_N, NODE_OR, NODE_POSTARG, NODE_POSTEXE, NODE_PRELUDE, NODE_REDO, NODE_RESBODY, NODE_RESCUE, NODE_RETRY, NODE_RETURN, NODE_SCLASS, NODE_SCOPE, NODE_SELF, NODE_SPLAT, NODE_STR, NODE_SUPER, NODE_TO_ARY, NODE_TRUE, NODE_UNDEF, NODE_UNTIL, NODE_VALIAS, NODE_VALUES, NODE_VCALL, NODE_WHEN, NODE_WHILE, NODE_XSTR, NODE_YIELD, NODE_ZARRAY, NODE_ZSUPER, Qnil, rb_hash_aset(), rb_hash_new(), rb_objspace_each_objects(), RHASH_EMPTY_P, RHASH_TBL, set_zero_i(), setup_hash(), SIZET2NUM, and st_foreach.

Referenced by Init_objspace().

◆ count_objects_size()

static VALUE count_objects_size ( int  argc,
VALUE argv,
VALUE  os 
)
static

◆ count_symbols()

static VALUE count_symbols ( int  argc,
VALUE argv,
VALUE  os 
)
static

◆ count_tdata_objects()

static VALUE count_tdata_objects ( int  argc,
VALUE argv,
VALUE  self 
)
static

Definition at line 572 of file objspace.c.

References cto_i(), hash(), rb_objspace_each_objects(), and setup_hash().

Referenced by Init_objspace().

◆ cs_i()

static int cs_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  n 
)
static

◆ cto_i()

static int cto_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  data 
)
static

◆ Init_object_tracing()

void Init_object_tracing ( VALUE  rb_mObjSpace)

◆ Init_objspace()

void Init_objspace ( void  )

◆ Init_objspace_dump()

void Init_objspace_dump ( VALUE  rb_mObjSpace)

◆ iow_inspect()

static VALUE iow_inspect ( VALUE  self)
static

Definition at line 694 of file objspace.c.

References BUILTIN_TYPE, DATA_PTR, PRIsVALUE, rb_sprintf(), rb_sym2str, and type2sym().

Referenced by Init_objspace().

◆ iow_internal_object_id()

static VALUE iow_internal_object_id ( VALUE  self)
static

Definition at line 704 of file objspace.c.

References DATA_PTR, and rb_obj_id().

Referenced by Init_objspace().

◆ iow_mark()

static void iow_mark ( void *  ptr)
static

Definition at line 658 of file objspace.c.

References rb_gc_mark().

◆ iow_newobj()

static VALUE iow_newobj ( VALUE  obj)
static

◆ iow_size()

static size_t iow_size ( const void *  ptr)
static

Definition at line 664 of file objspace.c.

References rb_obj_memsize_of().

◆ iow_type()

static VALUE iow_type ( VALUE  self)
static

Definition at line 686 of file objspace.c.

References BUILTIN_TYPE, DATA_PTR, and type2sym().

Referenced by Init_objspace().

◆ memsize_of_all_m()

static VALUE memsize_of_all_m ( int  argc,
VALUE argv,
VALUE  self 
)
static

◆ memsize_of_m()

static VALUE memsize_of_m ( VALUE  self,
VALUE  obj 
)
static

Definition at line 40 of file objspace.c.

References rb_obj_memsize_of(), and SIZET2NUM.

Referenced by Init_objspace().

◆ objspace_internal_class_of()

static VALUE objspace_internal_class_of ( VALUE  self,
VALUE  obj 
)
static

Definition at line 895 of file objspace.c.

References CLASS_OF, DATA_PTR, total_data::klass, rb_typeddata_is_kind_of(), and wrap_klass_iow().

Referenced by Init_objspace().

◆ objspace_internal_super_of()

static VALUE objspace_internal_super_of ( VALUE  self,
VALUE  obj 
)
static

◆ rb_sym_immortal_count()

size_t rb_sym_immortal_count ( void  )

Definition at line 822 of file symbol.c.

Referenced by count_symbols(), and cs_i().

◆ reachable_object_from_i()

static void reachable_object_from_i ( VALUE  obj,
void *  data_ptr 
)
static

◆ reachable_object_from_root_i()

static void reachable_object_from_root_i ( const char *  category,
VALUE  obj,
void *  ptr 
)
static

◆ reachable_objects_from()

static VALUE reachable_objects_from ( VALUE  self,
VALUE  obj 
)
static

◆ reachable_objects_from_root()

static VALUE reachable_objects_from_root ( VALUE  self)
static

◆ set_zero_i()

static int set_zero_i ( st_data_t  key,
st_data_t  val,
st_data_t  arg 
)
static

Definition at line 118 of file objspace.c.

References hash(), INT2FIX, rb_hash_aset(), and ST_CONTINUE.

Referenced by count_nodes(), count_objects_size(), count_symbols(), and setup_hash().

◆ setup_hash()

static VALUE setup_hash ( int  argc,
VALUE argv 
)
static

◆ total_i()

static int total_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  ptr 
)
static

◆ type2sym()

static VALUE type2sym ( enum ruby_value_type  i)
static

◆ wrap_klass_iow()

static VALUE wrap_klass_iow ( VALUE  klass)
static

Variable Documentation

◆ imemo_type_ids

ID imemo_type_ids[imemo_mask+1]
static

Definition at line 579 of file objspace.c.

Referenced by count_imemo_objects(), and count_imemo_objects_i().

◆ iow_data_type

const rb_data_type_t iow_data_type
static
Initial value:
= {
"ObjectSpace::InternalObjectWrapper",
}
#define RUBY_TYPED_FREE_IMMEDIATELY
Definition: ruby.h:1145
static size_t iow_size(const void *ptr)
Definition: objspace.c:664
static void iow_mark(void *ptr)
Definition: objspace.c:658

Definition at line 670 of file objspace.c.

◆ rb_mInternalObjectWrapper

VALUE rb_mInternalObjectWrapper
static

Definition at line 676 of file objspace.c.

Referenced by Init_objspace(), and iow_newobj().