gc.c File Reference

#include "ruby/ruby.h"
#include "ruby/st.h"
#include "ruby/re.h"
#include "ruby/io.h"
#include "ruby/util.h"
#include "eval_intern.h"
#include "vm_core.h"
#include "internal.h"
#include "gc.h"
#include "constant.h"
#include <stdio.h>
#include <setjmp.h>
#include <sys/types.h>

Go to the source code of this file.

Data Structures

struct  ruby_gc_params_t
struct  gc_profile_record
struct  RVALUE
struct  heaps_slot
struct  sorted_heaps_slot
struct  gc_list
struct  rb_objspace
struct  mark_tbl_arg
struct  each_obj_args
struct  os_each_struct
struct  force_finalize_list

Defines

#define VALGRIND_MAKE_MEM_DEFINED(p, n)
#define VALGRIND_MAKE_MEM_UNDEFINED(p, n)
#define rb_setjmp(env)   RUBY_SETJMP(env)
#define rb_jmp_buf   rb_jmpbuf_t
#define GC_MALLOC_LIMIT   8000000
#define HEAP_MIN_SLOTS   10000
#define FREE_MIN   4096
#define nomem_error   GET_VM()->special_exceptions[ruby_error_nomemory]
#define MARK_STACK_MAX   1024
#define GC_PROFILE_MORE_DETAIL   0
#define GC_PROF_TIMER_START
#define GC_PROF_TIMER_STOP(marked)
#define INIT_GC_PROF_PARAMS
#define GC_PROF_MARK_TIMER_START
#define GC_PROF_MARK_TIMER_STOP
#define GC_PROF_SWEEP_TIMER_START
#define GC_PROF_SWEEP_TIMER_STOP
#define GC_PROF_SET_MALLOC_INFO
#define GC_PROF_SET_HEAP_INFO(record)
#define GC_PROF_INC_LIVE_NUM
#define GC_PROF_DEC_LIVE_NUM
#define CALC_EXACT_MALLOC_SIZE   0
#define malloc_limit   objspace->malloc_params.limit
#define malloc_increase   objspace->malloc_params.increase
#define heaps   objspace->heap.ptr
#define heaps_length   objspace->heap.length
#define heaps_used   objspace->heap.used
#define freelist   objspace->heap.freelist
#define lomem   objspace->heap.range[0]
#define himem   objspace->heap.range[1]
#define heaps_inc   objspace->heap.increment
#define heaps_freed   objspace->heap.freed
#define dont_gc   objspace->flags.dont_gc
#define during_gc   objspace->flags.during_gc
#define finalizer_table   objspace->final.table
#define deferred_final_list   objspace->final.deferred
#define mark_stack   objspace->markstack.buffer
#define mark_stack_ptr   objspace->markstack.ptr
#define mark_stack_overflow   objspace->markstack.overflow
#define global_List   objspace->global_list
#define ruby_gc_stress   objspace->gc_stress
#define initial_malloc_limit   initial_params.initial_malloc_limit
#define initial_heap_min_slots   initial_params.initial_heap_min_slots
#define initial_free_min   initial_params.initial_free_min
#define HEAP_SIZE   0x4000
#define HEAP_OBJ_LIMIT   (unsigned int)(HEAP_SIZE / sizeof(struct RVALUE))
#define TRY_WITH_GC(alloc)
#define RANY(o)   ((RVALUE*)(o))
#define SET_STACK_END   SET_MACHINE_STACK_END(&th->machine_stack_end)
#define STACK_START   (th->machine_stack_start)
#define STACK_END   (th->machine_stack_end)
#define STACK_LEVEL_MAX   (th->machine_stack_maxsize/sizeof(VALUE))
#define STACK_LENGTH
#define GC_LEVEL_MAX   250
#define STACKFRAME_FOR_GC_MARK   (GC_LEVEL_MAX * GC_MARK_STACKFRAME_WORD)
#define STACKFRAME_FOR_CALL_CFUNC   512
#define MARK_STACK_EMPTY   (mark_stack_ptr == mark_stack)
#define rb_gc_mark_locations(start, end)   gc_mark_locations(objspace, (start), (end))
#define STR_ASSOC   FL_USER3
#define GC_NOTIFY   0
#define GET_STACK_BOUNDS(start, end, appendix)
#define numberof(array)   (int)(sizeof(array) / sizeof((array)[0]))
#define NUM2PTR(x)   NUM2ULONG(x)
#define COUNT_TYPE(t)   case (t): type = ID2SYM(rb_intern(#t)); break;

Typedefs

typedef struct rb_objspace rb_objspace_t
typedef int each_obj_callback (void *, void *, size_t, void *)

Functions

void * alloca ()
static double getrusage_time (void)
static void rb_objspace_call_finalizer (rb_objspace_t *objspace)
static void initial_expand_heap (rb_objspace_t *objspace)
void rb_gc_set_params (void)
static void run_final (rb_objspace_t *objspace, VALUE obj)
static int garbage_collect (rb_objspace_t *objspace)
static int gc_lazy_sweep (rb_objspace_t *objspace)
void rb_global_variable (VALUE *var)
static void * ruby_memerror_body (void *dummy)
static void ruby_memerror (void)
void rb_memerror (void)
static VALUE gc_stress_get (VALUE self)
static VALUE gc_stress_set (VALUE self, VALUE flag)
static VALUE gc_profile_enable_get (VALUE self)
static VALUE gc_profile_enable (void)
static VALUE gc_profile_disable (void)
static VALUE gc_profile_clear (void)
static void * negative_size_allocation_error_with_gvl (void *ptr)
static void negative_size_allocation_error (const char *msg)
static void * gc_with_gvl (void *ptr)
static int garbage_collect_with_gvl (rb_objspace_t *objspace)
static void vm_xfree (rb_objspace_t *objspace, void *ptr)
static size_t vm_malloc_prepare (rb_objspace_t *objspace, size_t size)
static void * vm_malloc_fixup (rb_objspace_t *objspace, void *mem, size_t size)
static void * vm_xmalloc (rb_objspace_t *objspace, size_t size)
static void * vm_xrealloc (rb_objspace_t *objspace, void *ptr, size_t size)
void * ruby_xmalloc (size_t size)
static size_t xmalloc2_size (size_t n, size_t size)
void * ruby_xmalloc2 (size_t n, size_t size)
static void * vm_xcalloc (rb_objspace_t *objspace, size_t count, size_t elsize)
void * ruby_xcalloc (size_t n, size_t size)
void * ruby_xrealloc (void *ptr, size_t size)
void * ruby_xrealloc2 (void *ptr, size_t n, size_t size)
void ruby_xfree (void *x)
VALUE rb_gc_enable (void)
VALUE rb_gc_disable (void)
void rb_gc_register_mark_object (VALUE obj)
void rb_gc_register_address (VALUE *addr)
void rb_gc_unregister_address (VALUE *addr)
static void allocate_sorted_heaps (rb_objspace_t *objspace, size_t next_heaps_length)
static void assign_heap_slot (rb_objspace_t *objspace)
static void add_heap_slots (rb_objspace_t *objspace, size_t add)
static void init_heap (rb_objspace_t *objspace)
static void set_heaps_increment (rb_objspace_t *objspace)
static int heaps_increment (rb_objspace_t *objspace)
int rb_during_gc (void)
VALUE rb_newobj (void)
NODE * rb_node_newnode (enum node_type type, VALUE a0, VALUE a1, VALUE a2)
VALUE rb_data_object_alloc (VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
VALUE rb_data_typed_object_alloc (VALUE klass, void *datap, const rb_data_type_t *type)
size_t rb_objspace_data_type_memsize (VALUE obj)
const char * rb_objspace_data_type_name (VALUE obj)
int ruby_get_stack_grow_direction (volatile VALUE *addr)
size_t ruby_stack_length (VALUE **p)
static int stack_check (int water_mark)
int ruby_stack_check (void)
static void init_mark_stack (rb_objspace_t *objspace)
static void gc_mark (rb_objspace_t *objspace, VALUE ptr, int lev)
static void gc_mark_children (rb_objspace_t *objspace, VALUE ptr, int lev)
static void gc_mark_all (rb_objspace_t *objspace)
static void gc_mark_rest (rb_objspace_t *objspace)
static int is_pointer_to_heap (rb_objspace_t *objspace, void *ptr)
static void mark_locations_array (rb_objspace_t *objspace, register VALUE *x, register long n)
static void gc_mark_locations (rb_objspace_t *objspace, VALUE *start, VALUE *end)
void rb_gc_mark_locations (VALUE *start, VALUE *end)
static int mark_entry (ID key, VALUE value, st_data_t data)
static void mark_tbl (rb_objspace_t *objspace, st_table *tbl, int lev)
static int mark_key (VALUE key, VALUE value, st_data_t data)
static void mark_set (rb_objspace_t *objspace, st_table *tbl, int lev)
void rb_mark_set (st_table *tbl)
static int mark_keyvalue (VALUE key, VALUE value, st_data_t data)
static void mark_hash (rb_objspace_t *objspace, st_table *tbl, int lev)
void rb_mark_hash (st_table *tbl)
static void mark_method_entry (rb_objspace_t *objspace, const rb_method_entry_t *me, int lev)
void rb_mark_method_entry (const rb_method_entry_t *me)
static int mark_method_entry_i (ID key, const rb_method_entry_t *me, st_data_t data)
static void mark_m_tbl (rb_objspace_t *objspace, st_table *tbl, int lev)
static int free_method_entry_i (ID key, rb_method_entry_t *me, st_data_t data)
void rb_free_m_table (st_table *tbl)
static int mark_const_entry_i (ID key, const rb_const_entry_t *ce, st_data_t data)
static void mark_const_tbl (rb_objspace_t *objspace, st_table *tbl, int lev)
static int free_const_entry_i (ID key, rb_const_entry_t *ce, st_data_t data)
void rb_free_const_table (st_table *tbl)
void rb_mark_tbl (st_table *tbl)
void rb_gc_mark_maybe (VALUE obj)
void rb_gc_mark (VALUE ptr)
static int obj_free (rb_objspace_t *, VALUE)
static void add_freelist (rb_objspace_t *objspace, RVALUE *p)
static void finalize_list (rb_objspace_t *objspace, RVALUE *p)
static void unlink_heap_slot (rb_objspace_t *objspace, struct heaps_slot *slot)
static void free_unused_heaps (rb_objspace_t *objspace)
static void slot_sweep (rb_objspace_t *objspace, struct heaps_slot *sweep_slot)
static int ready_to_gc (rb_objspace_t *objspace)
static void before_gc_sweep (rb_objspace_t *objspace)
static void after_gc_sweep (rb_objspace_t *objspace)
static int lazy_sweep (rb_objspace_t *objspace)
static void rest_sweep (rb_objspace_t *objspace)
static void gc_marks (rb_objspace_t *objspace)
static void gc_sweep (rb_objspace_t *objspace)
void rb_gc_force_recycle (VALUE p)
static void make_deferred (RVALUE *p)
static void make_io_deferred (RVALUE *p)
static void mark_current_machine_context (rb_objspace_t *objspace, rb_thread_t *th)
int rb_garbage_collect (void)
void rb_gc_mark_machine_stack (rb_thread_t *th)
VALUE rb_gc_start (void)
void Init_stack (volatile VALUE *addr)
void Init_heap (void)
static VALUE lazy_sweep_enable (void)
static VALUE objspace_each_objects (VALUE arg)
void rb_objspace_each_objects (each_obj_callback *callback, void *data)
static int os_obj_of_i (void *vstart, void *vend, size_t stride, void *data)
static VALUE os_obj_of (VALUE of)
static VALUE os_each_obj (int argc, VALUE *argv, VALUE os)
static VALUE undefine_final (VALUE os, VALUE obj)
static VALUE define_final (int argc, VALUE *argv, VALUE os)
void rb_gc_copy_finalizer (VALUE dest, VALUE obj)
static VALUE run_single_final (VALUE arg)
static void run_finalizer (rb_objspace_t *objspace, VALUE objid, VALUE table)
static void finalize_deferred (rb_objspace_t *objspace)
void rb_gc_finalize_deferred (void)
static int chain_finalized_object (st_data_t key, st_data_t val, st_data_t arg)
static int force_chain_object (st_data_t key, st_data_t val, st_data_t arg)
void rb_gc_call_finalizer_at_exit (void)
void rb_gc (void)
static VALUE id2ref (VALUE obj, VALUE objid)
VALUE rb_obj_id (VALUE obj)
static int set_zero (st_data_t key, st_data_t val, st_data_t arg)
static VALUE count_objects (int argc, VALUE *argv, VALUE os)
static VALUE gc_count (VALUE self)
static VALUE gc_stat (int argc, VALUE *argv, VALUE self)
static VALUE gc_profile_record_get (void)
static VALUE gc_profile_result (void)
static VALUE gc_profile_report (int argc, VALUE *argv, VALUE self)
static VALUE gc_profile_total_time (VALUE self)
void Init_GC (void)

Variables

ruby_gc_params_t initial_params
int ruby_gc_debug_indent = 0
static rb_objspace_t rb_objspace = {{GC_MALLOC_LIMIT}, {HEAP_MIN_SLOTS}}
int * ruby_initial_gc_stress_ptr = &rb_objspace.gc_stress
st_tablerb_class_tbl
int ruby_disable_gc_stress = 0
VALUE rb_mGC
int ruby_stack_grow_direction

Define Documentation

#define CALC_EXACT_MALLOC_SIZE   0

Definition at line 322 of file gc.c.

#define COUNT_TYPE (  )     case (t): type = ID2SYM(rb_intern(#t)); break;
#define deferred_final_list   objspace->final.deferred

Definition at line 396 of file gc.c.

Referenced by finalize_deferred(), rb_objspace_call_finalizer(), and slot_sweep().

#define dont_gc   objspace->flags.dont_gc

Definition at line 393 of file gc.c.

Referenced by garbage_collect_with_gvl(), rb_gc_disable(), rb_gc_enable(), rb_newobj(), and ready_to_gc().

#define during_gc   objspace->flags.during_gc
#define finalizer_table   objspace->final.table
#define FREE_MIN   4096

Definition at line 81 of file gc.c.

#define freelist   objspace->heap.freelist
#define GC_LEVEL_MAX   250

Definition at line 1299 of file gc.c.

Referenced by gc_mark().

#define GC_MALLOC_LIMIT   8000000

Definition at line 78 of file gc.c.

#define GC_NOTIFY   0

Definition at line 2389 of file gc.c.

Referenced by garbage_collect().

#define GC_PROF_DEC_LIVE_NUM

Definition at line 261 of file gc.c.

Referenced by finalize_list(), and rb_gc_force_recycle().

#define GC_PROF_INC_LIVE_NUM

Definition at line 260 of file gc.c.

Referenced by rb_newobj().

#define GC_PROF_MARK_TIMER_START

Definition at line 248 of file gc.c.

Referenced by gc_marks().

#define GC_PROF_MARK_TIMER_STOP

Definition at line 249 of file gc.c.

Referenced by gc_marks().

#define GC_PROF_SET_HEAP_INFO ( record   ) 
Value:
do {\
        live = objspace->heap.live_num;\
        total = heaps_used * HEAP_OBJ_LIMIT;\
        (record).heap_total_objects = total;\
        (record).heap_use_size = live * sizeof(RVALUE);\
        (record).heap_total_size = total * sizeof(RVALUE);\
    } while(0)

Definition at line 253 of file gc.c.

#define GC_PROF_SET_MALLOC_INFO

Definition at line 252 of file gc.c.

Referenced by after_gc_sweep(), and gc_lazy_sweep().

#define GC_PROF_SWEEP_TIMER_START

Definition at line 250 of file gc.c.

Referenced by garbage_collect(), and gc_lazy_sweep().

#define GC_PROF_SWEEP_TIMER_STOP

Definition at line 251 of file gc.c.

Referenced by garbage_collect(), and gc_lazy_sweep().

#define GC_PROF_TIMER_START
Value:
do {\
        if (objspace->profile.run) {\
            if (!objspace->profile.record) {\
                objspace->profile.size = 1000;\
                objspace->profile.record = malloc(sizeof(gc_profile_record) * objspace->profile.size);\
            }\
            if (count >= objspace->profile.size) {\
                objspace->profile.size += 1000;\
                objspace->profile.record = realloc(objspace->profile.record, sizeof(gc_profile_record) * objspace->profile.size);\
            }\
            if (!objspace->profile.record) {\
                rb_bug("gc_profile malloc or realloc miss");\
            }\
            MEMZERO(&objspace->profile.record[count], gc_profile_record, 1);\
            gc_time = getrusage_time();\
            objspace->profile.record[count].gc_invoke_time = gc_time - objspace->profile.invoke_time;\
        }\
    } while(0)

Definition at line 163 of file gc.c.

Referenced by garbage_collect(), and gc_lazy_sweep().

#define GC_PROF_TIMER_STOP ( marked   ) 
Value:
do {\
        if (objspace->profile.run) {\
            gc_time = getrusage_time() - gc_time;\
            if (gc_time < 0) gc_time = 0;\
            objspace->profile.record[count].gc_time = gc_time;\
            objspace->profile.record[count].is_marked = !!(marked);\
            GC_PROF_SET_HEAP_INFO(objspace->profile.record[count]);\
            objspace->profile.count++;\
        }\
    } while(0)

Definition at line 182 of file gc.c.

Referenced by garbage_collect(), and gc_lazy_sweep().

#define GC_PROFILE_MORE_DETAIL   0

Definition at line 106 of file gc.c.

#define GET_STACK_BOUNDS ( start,
end,
appendix   ) 
Value:
((STACK_END < STACK_START) ? \
     ((start) = STACK_END, (end) = STACK_START) : ((start) = STACK_START, (end) = STACK_END+(appendix)))

Definition at line 2396 of file gc.c.

Referenced by mark_current_machine_context(), and rb_gc_mark_machine_stack().

#define global_List   objspace->global_list

Definition at line 400 of file gc.c.

Referenced by gc_marks(), rb_gc_register_address(), and rb_gc_unregister_address().

#define HEAP_MIN_SLOTS   10000

Definition at line 80 of file gc.c.

Referenced by init_heap().

#define HEAP_OBJ_LIMIT   (unsigned int)(HEAP_SIZE / sizeof(struct RVALUE))
#define HEAP_SIZE   0x4000

Definition at line 506 of file gc.c.

Referenced by assign_heap_slot().

#define heaps   objspace->heap.ptr

Definition at line 385 of file gc.c.

Referenced by assign_heap_slot(), before_gc_sweep(), garbage_collect(), and unlink_heap_slot().

#define heaps_freed   objspace->heap.freed

Definition at line 392 of file gc.c.

Referenced by free_unused_heaps().

#define heaps_inc   objspace->heap.increment

Definition at line 391 of file gc.c.

Referenced by add_heap_slots(), heaps_increment(), and set_heaps_increment().

#define heaps_length   objspace->heap.length

Definition at line 386 of file gc.c.

Referenced by add_heap_slots(), allocate_sorted_heaps(), and set_heaps_increment().

#define heaps_used   objspace->heap.used
#define himem   objspace->heap.range[1]

Definition at line 390 of file gc.c.

Referenced by assign_heap_slot(), and is_pointer_to_heap().

#define INIT_GC_PROF_PARAMS
Value:
double gc_time = 0;\
    size_t count = objspace->profile.count, total = 0, live = 0

Definition at line 246 of file gc.c.

Referenced by garbage_collect(), and gc_lazy_sweep().

#define initial_free_min   initial_params.initial_free_min

Definition at line 404 of file gc.c.

Referenced by before_gc_sweep(), and rb_gc_set_params().

#define initial_heap_min_slots   initial_params.initial_heap_min_slots

Definition at line 403 of file gc.c.

Referenced by initial_expand_heap(), and rb_gc_set_params().

#define initial_malloc_limit   initial_params.initial_malloc_limit

Definition at line 402 of file gc.c.

Referenced by after_gc_sweep(), and rb_gc_set_params().

#define lomem   objspace->heap.range[0]

Definition at line 389 of file gc.c.

Referenced by assign_heap_slot().

#define malloc_increase   objspace->malloc_params.increase

Definition at line 384 of file gc.c.

Referenced by after_gc_sweep(), vm_malloc_fixup(), vm_malloc_prepare(), and vm_xrealloc().

#define malloc_limit   objspace->malloc_params.limit

Definition at line 383 of file gc.c.

Referenced by after_gc_sweep(), and vm_malloc_prepare().

#define mark_stack   objspace->markstack.buffer

Definition at line 397 of file gc.c.

Referenced by gc_mark(), gc_mark_rest(), and init_mark_stack().

#define MARK_STACK_EMPTY   (mark_stack_ptr == mark_stack)

Definition at line 1346 of file gc.c.

Referenced by gc_marks().

#define MARK_STACK_MAX   1024

Definition at line 101 of file gc.c.

Referenced by gc_mark(), and gc_mark_rest().

#define mark_stack_overflow   objspace->markstack.overflow

Definition at line 399 of file gc.c.

Referenced by gc_mark(), gc_marks(), and init_mark_stack().

#define mark_stack_ptr   objspace->markstack.ptr

Definition at line 398 of file gc.c.

Referenced by gc_mark(), gc_mark_rest(), and init_mark_stack().

#define nomem_error   GET_VM()->special_exceptions[ruby_error_nomemory]

Definition at line 99 of file gc.c.

Referenced by Init_GC(), and rb_memerror().

#define NUM2PTR (  )     NUM2ULONG(x)
#define numberof ( array   )     (int)(sizeof(array) / sizeof((array)[0]))

Definition at line 2401 of file gc.c.

#define RANY (  )     ((RVALUE*)(o))
#define rb_gc_mark_locations ( start,
end   )     gc_mark_locations(objspace, (start), (end))
#define rb_jmp_buf   rb_jmpbuf_t

Definition at line 54 of file gc.c.

Referenced by mark_current_machine_context().

#define rb_setjmp ( env   )     RUBY_SETJMP(env)

Definition at line 53 of file gc.c.

Referenced by mark_current_machine_context().

#define ruby_gc_stress   objspace->gc_stress

Definition at line 401 of file gc.c.

Referenced by gc_stress_get(), gc_stress_set(), rb_newobj(), vm_malloc_prepare(), and vm_xrealloc().

#define SET_STACK_END   SET_MACHINE_STACK_END(&th->machine_stack_end)

Definition at line 1271 of file gc.c.

Referenced by gc_marks(), mark_current_machine_context(), ruby_stack_length(), and stack_check().

#define STACK_END   (th->machine_stack_end)

Definition at line 1275 of file gc.c.

Referenced by mark_current_machine_context(), and ruby_stack_length().

#define STACK_LENGTH
Value:
((STACK_END < STACK_START) ? (size_t)(STACK_START - STACK_END) \
                        : (size_t)(STACK_END - STACK_START + 1))

Definition at line 1283 of file gc.c.

Referenced by ruby_stack_length(), and stack_check().

#define STACK_LEVEL_MAX   (th->machine_stack_maxsize/sizeof(VALUE))

Definition at line 1276 of file gc.c.

Referenced by stack_check().

#define STACK_START   (th->machine_stack_start)

Definition at line 1274 of file gc.c.

Referenced by mark_current_machine_context(), and ruby_stack_length().

#define STACKFRAME_FOR_CALL_CFUNC   512

Definition at line 1327 of file gc.c.

Referenced by ruby_stack_check().

#define STACKFRAME_FOR_GC_MARK   (GC_LEVEL_MAX * GC_MARK_STACKFRAME_WORD)

Definition at line 1300 of file gc.c.

Referenced by gc_mark().

#define STR_ASSOC   FL_USER3
#define TRY_WITH_GC ( alloc   ) 
Value:
do { \
        if (!(alloc) && \
            (!garbage_collect_with_gvl(objspace) || \
             !(alloc))) { \
            ruby_memerror(); \
        } \
    } while (0)

Definition at line 759 of file gc.c.

Referenced by vm_xcalloc(), and vm_xmalloc().

#define VALGRIND_MAKE_MEM_DEFINED ( p,
 ) 

Definition at line 49 of file gc.c.

#define VALGRIND_MAKE_MEM_UNDEFINED ( p,
 ) 

Definition at line 50 of file gc.c.


Typedef Documentation

typedef int each_obj_callback(void *, void *, size_t, void *)

Definition at line 2603 of file gc.c.

typedef struct rb_objspace rb_objspace_t

Function Documentation

static void add_freelist ( rb_objspace_t objspace,
RVALUE p 
) [inline, static]

Definition at line 1933 of file gc.c.

References freelist, and VALGRIND_MAKE_MEM_UNDEFINED.

Referenced by finalize_list(), rb_gc_force_recycle(), and slot_sweep().

static void add_heap_slots ( rb_objspace_t objspace,
size_t  add 
) [static]

Definition at line 1085 of file gc.c.

References allocate_sorted_heaps(), assign_heap_slot(), heaps_inc, heaps_length, and heaps_used.

Referenced by init_heap(), and initial_expand_heap().

static void after_gc_sweep ( rb_objspace_t objspace  )  [static]
void* alloca (  ) 
static void allocate_sorted_heaps ( rb_objspace_t objspace,
size_t  next_heaps_length 
) [static]
static void assign_heap_slot ( rb_objspace_t objspace  )  [static]
static void before_gc_sweep ( rb_objspace_t objspace  )  [static]
static int chain_finalized_object ( st_data_t  key,
st_data_t  val,
st_data_t  arg 
) [static]
static VALUE count_objects ( int  argc,
VALUE argv,
VALUE  os 
) [static]
static VALUE define_final ( int  argc,
VALUE argv,
VALUE  os 
) [static]
static void finalize_deferred ( rb_objspace_t objspace  )  [static]

Definition at line 2942 of file gc.c.

References deferred_final_list, and finalize_list().

Referenced by rb_gc(), rb_gc_finalize_deferred(), and rb_objspace_call_finalizer().

static void finalize_list ( rb_objspace_t objspace,
RVALUE p 
) [static]
static int force_chain_object ( st_data_t  key,
st_data_t  val,
st_data_t  arg 
) [static]
static int free_const_entry_i ( ID  key,
rb_const_entry_t ce,
st_data_t  data 
) [static]

Definition at line 1598 of file gc.c.

References ST_CONTINUE, and xfree.

Referenced by rb_free_const_table().

static int free_method_entry_i ( ID  key,
rb_method_entry_t me,
st_data_t  data 
) [static]

Definition at line 1566 of file gc.c.

References rb_free_method_entry(), and ST_CONTINUE.

Referenced by rb_free_m_table().

static void free_unused_heaps ( rb_objspace_t objspace  )  [static]
static int garbage_collect ( rb_objspace_t objspace  )  [static]
static int garbage_collect_with_gvl ( rb_objspace_t objspace  )  [static]
static VALUE gc_count ( VALUE  self  )  [static]

Definition at line 3321 of file gc.c.

References count, and UINT2NUM().

Referenced by gc_profile_result(), and Init_GC().

static int gc_lazy_sweep ( rb_objspace_t objspace  )  [static]
static void gc_mark ( rb_objspace_t objspace,
VALUE  ptr,
int  lev 
) [static]
static void gc_mark_all ( rb_objspace_t objspace  )  [static]
static void gc_mark_children ( rb_objspace_t objspace,
VALUE  ptr,
int  lev 
) [static]

Definition at line 1659 of file gc.c.

References RVALUE::array, RString::as, RArray::as, RVALUE::as, RVALUE::basic, BUILTIN_TYPE, RVALUE::complex, RVALUE::data, DATA_PTR, RRational::den, RData::dmark, rb_data_type_struct::dmark, ELTS_SHARED, rb_io_t::encs, RVALUE::file, FL_ANY, FL_EXIVAR, FL_MARK, FL_TEST, RBasic::flags, RFile::fptr, rb_data_type_struct::function, gc_mark(), RVALUE::hash, RString::heap, RArray::heap, rb_objspace::heap, if(), RHash::ifnone, RComplex::imag, is_pointer_to_heap(), RBasic::klass, len, rb_objspace::live_num, mark_const_tbl(), mark_hash(), mark_locations_array(), mark_m_tbl(), mark_tbl(), RVALUE::match, nd_type, RVALUE::node, NODE_ALIAS, NODE_ALLOCA, NODE_AND, NODE_ARGS, NODE_ARGS_AUX, NODE_ARGSCAT, NODE_ARRAY, NODE_BACK_REF, NODE_BLOCK, NODE_BLOCK_ARG, NODE_BLOCK_PASS, NODE_BREAK, NODE_CALL, NODE_CASE, NODE_CDECL, NODE_CLASS, NODE_COLON2, NODE_COLON3, NODE_CVAR, NODE_CVASGN, NODE_DASGN, NODE_DASGN_CURR, NODE_DEFINED, NODE_DEFN, NODE_DEFS, NODE_DOT2, NODE_DOT3, NODE_DREGX, NODE_DREGX_ONCE, NODE_DSTR, 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_LASGN, 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_ASGN_AND, NODE_OP_ASGN_OR, NODE_OPT_ARG, NODE_OPT_N, NODE_OPTBLOCK, NODE_OR, NODE_POSTEXE, 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_VCALL, NODE_WHEN, NODE_WHILE, NODE_XSTR, NODE_YIELD, NODE_ZARRAY, NODE_ZSUPER, RHash::ntbl, RRational::num, rb_io_t::pathv, RANY, RARRAY_LEN, RARRAY_PTR, RVALUE::rational, rb_bug(), rb_mark_generic_ivar(), rb_special_const_p(), RCLASS_CONST_TBL, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, RComplex::real, RMatch::regexp, RVALUE::regexp, ROBJECT_IVPTR, ROBJECT_NUMIV, RSTRING_NOEMBED, RSTRUCT_LEN, RSTRUCT_PTR, RTYPEDDATA_P, RRegexp::src, RMatch::str, STR_ASSOC, RVALUE::string, T_ARRAY, T_BIGNUM, T_CLASS, T_COMPLEX, T_DATA, T_FILE, T_FIXNUM, T_FLOAT, T_HASH, T_ICLASS, T_MATCH, T_MODULE, T_NIL, T_NODE, T_OBJECT, T_RATIONAL, T_REGEXP, T_STRING, T_STRUCT, T_ZOMBIE, rb_io_t::tied_io_for_writing, RTypedData::type, RVALUE::typeddata, rb_io_t::write_lock, rb_io_t::writeconv_asciicompat, and rb_io_t::writeconv_pre_ecopts.

Referenced by gc_mark(), gc_mark_all(), and gc_mark_rest().

static void gc_mark_locations ( rb_objspace_t objspace,
VALUE start,
VALUE end 
) [static]

Definition at line 1429 of file gc.c.

References mark_locations_array().

Referenced by rb_gc_mark_locations().

static void gc_mark_rest ( rb_objspace_t objspace  )  [static]

Definition at line 1371 of file gc.c.

References gc_mark_children(), init_mark_stack(), mark_stack, MARK_STACK_MAX, mark_stack_ptr, and MEMCPY.

Referenced by gc_marks().

static void gc_marks ( rb_objspace_t objspace  )  [static]
static VALUE gc_profile_clear ( void   )  [static]

Definition at line 665 of file gc.c.

References rb_objspace::count, MEMZERO, rb_objspace::profile, Qnil, rb_objspace::record, and rb_objspace::size.

Referenced by Init_GC().

static VALUE gc_profile_disable ( void   )  [static]

Definition at line 648 of file gc.c.

References FALSE, rb_objspace::profile, Qnil, and rb_objspace::run.

Referenced by Init_GC().

static VALUE gc_profile_enable ( void   )  [static]

Definition at line 631 of file gc.c.

References rb_objspace::profile, Qnil, rb_objspace::run, and TRUE.

Referenced by Init_GC().

static VALUE gc_profile_enable_get ( VALUE  self  )  [static]

Definition at line 616 of file gc.c.

References rb_objspace::profile, and rb_objspace::run.

Referenced by Init_GC().

static VALUE gc_profile_record_get ( void   )  [static]
static VALUE gc_profile_report ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 3522 of file gc.c.

References gc_profile_result(), Qnil, rb_io_write(), rb_scan_args(), and rb_stdout.

Referenced by Init_GC().

static VALUE gc_profile_result ( void   )  [static]
static VALUE gc_profile_total_time ( VALUE  self  )  [static]
static VALUE gc_stat ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE gc_stress_get ( VALUE  self  )  [static]

Definition at line 581 of file gc.c.

References Qfalse, Qtrue, and ruby_gc_stress.

Referenced by Init_GC().

static VALUE gc_stress_set ( VALUE  self,
VALUE  flag 
) [static]

Definition at line 600 of file gc.c.

References rb_secure(), RTEST, and ruby_gc_stress.

Referenced by Init_GC().

static void gc_sweep ( rb_objspace_t objspace  )  [static]
static void* gc_with_gvl ( void *  ptr  )  [static]

Definition at line 698 of file gc.c.

References garbage_collect().

Referenced by garbage_collect_with_gvl().

static double getrusage_time ( void   )  [static]

Definition at line 128 of file gc.c.

References getrusage(), timeval::tv_sec, and timeval::tv_usec.

Referenced by init_heap().

static int heaps_increment ( rb_objspace_t objspace  )  [static]

Definition at line 1144 of file gc.c.

References assign_heap_slot(), FALSE, heaps_inc, and TRUE.

Referenced by after_gc_sweep(), gc_lazy_sweep(), lazy_sweep(), and ready_to_gc().

static VALUE id2ref ( VALUE  obj,
VALUE  objid 
) [static]
void Init_GC ( void   ) 
void Init_heap ( void   ) 

Definition at line 2589 of file gc.c.

References init_heap().

Referenced by ruby_init().

static void init_heap ( rb_objspace_t objspace  )  [static]
static void init_mark_stack ( rb_objspace_t objspace  )  [static]

Definition at line 1340 of file gc.c.

References mark_stack, mark_stack_overflow, and mark_stack_ptr.

Referenced by gc_mark_all(), gc_mark_rest(), and gc_marks().

void Init_stack ( volatile VALUE addr  ) 

Definition at line 2552 of file gc.c.

References ruby_init_stack().

static void initial_expand_heap ( rb_objspace_t objspace  )  [static]

Definition at line 1118 of file gc.c.

References add_heap_slots(), HEAP_OBJ_LIMIT, heaps_used, and initial_heap_min_slots.

Referenced by rb_gc_set_params().

static int is_pointer_to_heap ( rb_objspace_t objspace,
void *  ptr 
) [inline, static]
static int lazy_sweep ( rb_objspace_t objspace  )  [static]
static VALUE lazy_sweep_enable ( void   )  [static]

Definition at line 2595 of file gc.c.

References rb_objspace::dont_lazy_sweep, FALSE, rb_objspace::flags, and Qnil.

Referenced by rb_objspace_each_objects().

static void make_deferred ( RVALUE p  )  [inline, static]

Definition at line 2247 of file gc.c.

References RVALUE::as, RVALUE::basic, RBasic::flags, T_MASK, and T_ZOMBIE.

Referenced by make_io_deferred(), obj_free(), and rb_objspace_call_finalizer().

static void make_io_deferred ( RVALUE p  )  [inline, static]
static int mark_const_entry_i ( ID  key,
const rb_const_entry_t ce,
st_data_t  data 
) [static]
static void mark_const_tbl ( rb_objspace_t objspace,
st_table tbl,
int  lev 
) [static]

Definition at line 1588 of file gc.c.

References mark_tbl_arg::lev, mark_const_entry_i(), mark_tbl_arg::objspace, and st_foreach().

Referenced by gc_mark_children().

static void mark_current_machine_context ( rb_objspace_t objspace,
rb_thread_t th 
) [static]
static int mark_entry ( ID  key,
VALUE  value,
st_data_t  data 
) [static]

Definition at line 1452 of file gc.c.

References gc_mark(), mark_tbl_arg::lev, mark_tbl_arg::objspace, and ST_CONTINUE.

Referenced by mark_tbl().

static void mark_hash ( rb_objspace_t objspace,
st_table tbl,
int  lev 
) [static]

Definition at line 1503 of file gc.c.

References mark_tbl_arg::lev, mark_keyvalue(), mark_tbl_arg::objspace, and st_foreach().

Referenced by gc_mark_children(), and rb_mark_hash().

static int mark_key ( VALUE  key,
VALUE  value,
st_data_t  data 
) [static]

Definition at line 1470 of file gc.c.

References gc_mark(), mark_tbl_arg::lev, mark_tbl_arg::objspace, and ST_CONTINUE.

Referenced by mark_set().

static int mark_keyvalue ( VALUE  key,
VALUE  value,
st_data_t  data 
) [static]

Definition at line 1494 of file gc.c.

References gc_mark(), mark_tbl_arg::lev, mark_tbl_arg::objspace, and ST_CONTINUE.

Referenced by mark_hash().

static void mark_locations_array ( rb_objspace_t objspace,
register VALUE x,
register long  n 
) [static]
static void mark_m_tbl ( rb_objspace_t objspace,
st_table tbl,
int  lev 
) [static]

Definition at line 1556 of file gc.c.

References mark_tbl_arg::lev, mark_method_entry_i(), mark_tbl_arg::objspace, and st_foreach().

Referenced by gc_mark_children().

static void mark_method_entry ( rb_objspace_t objspace,
const rb_method_entry_t me,
int  lev 
) [static]
static int mark_method_entry_i ( ID  key,
const rb_method_entry_t me,
st_data_t  data 
) [static]

Definition at line 1548 of file gc.c.

References mark_tbl_arg::lev, mark_method_entry(), mark_tbl_arg::objspace, and ST_CONTINUE.

Referenced by mark_m_tbl().

static void mark_set ( rb_objspace_t objspace,
st_table tbl,
int  lev 
) [static]

Definition at line 1478 of file gc.c.

References mark_tbl_arg::lev, mark_key(), mark_tbl_arg::objspace, and st_foreach().

Referenced by rb_mark_set().

static void mark_tbl ( rb_objspace_t objspace,
st_table tbl,
int  lev 
) [static]
static void negative_size_allocation_error ( const char *  msg  )  [static]
static void* negative_size_allocation_error_with_gvl ( void *  ptr  )  [static]

Definition at line 674 of file gc.c.

References rb_eNoMemError, and rb_raise().

Referenced by negative_size_allocation_error().

static int obj_free ( rb_objspace_t objspace,
VALUE  obj 
) [static]
static VALUE objspace_each_objects ( VALUE  arg  )  [static]
static VALUE os_each_obj ( int  argc,
VALUE argv,
VALUE  os 
) [static]

Definition at line 2784 of file gc.c.

References os_each_struct::of, os_obj_of(), rb_scan_args(), rb_secure(), and RETURN_ENUMERATOR.

Referenced by Init_GC().

static VALUE os_obj_of ( VALUE  of  )  [static]

Definition at line 2737 of file gc.c.

References os_each_struct::num, os_each_struct::of, os_obj_of_i(), rb_objspace_each_objects(), and SIZET2NUM.

Referenced by os_each_obj().

static int os_obj_of_i ( void *  vstart,
void *  vend,
size_t  stride,
void *  data 
) [static]
VALUE rb_data_object_alloc ( VALUE  klass,
void *  datap,
RUBY_DATA_FUNC  dmark,
RUBY_DATA_FUNC  dfree 
)

Definition at line 1218 of file gc.c.

References Check_Type, NEWOBJ, OBJSETUP, T_CLASS, and T_DATA.

VALUE rb_data_typed_object_alloc ( VALUE  klass,
void *  datap,
const rb_data_type_t type 
)

Definition at line 1231 of file gc.c.

References Check_Type, NEWOBJ, OBJSETUP, T_CLASS, and T_DATA.

int rb_during_gc ( void   ) 

Definition at line 1155 of file gc.c.

References during_gc.

void rb_free_const_table ( st_table tbl  ) 

Definition at line 1605 of file gc.c.

References free_const_entry_i(), st_foreach(), and st_free_table().

Referenced by init_copy(), obj_free(), and rb_mod_init_copy().

void rb_free_m_table ( st_table tbl  ) 

Definition at line 1573 of file gc.c.

References free_method_entry_i(), st_foreach(), and st_free_table().

Referenced by obj_free(), and rb_mod_init_copy().

int rb_garbage_collect ( void   ) 

Definition at line 2513 of file gc.c.

References garbage_collect().

void rb_gc ( void   ) 
void rb_gc_call_finalizer_at_exit ( void   ) 

Definition at line 2992 of file gc.c.

References rb_objspace_call_finalizer().

Referenced by ruby_finalize_1().

void rb_gc_copy_finalizer ( VALUE  dest,
VALUE  obj 
)

Definition at line 2865 of file gc.c.

References finalizer_table, FL_FINALIZE, FL_SET, FL_TEST, st_insert(), and st_lookup().

Referenced by init_copy().

VALUE rb_gc_disable ( void   ) 
VALUE rb_gc_enable ( void   ) 
void rb_gc_finalize_deferred ( void   ) 

Definition at line 2953 of file gc.c.

References finalize_deferred().

Referenced by rb_threadptr_execute_interrupts_common().

void rb_gc_force_recycle ( VALUE  p  ) 
void rb_gc_mark ( VALUE  ptr  ) 
void rb_gc_mark_locations ( VALUE start,
VALUE end 
)

Definition at line 1439 of file gc.c.

References gc_mark_locations().

void rb_gc_mark_machine_stack ( rb_thread_t th  ) 

Definition at line 2519 of file gc.c.

References GET_STACK_BOUNDS, rb_gc_mark_locations, and stack_start.

Referenced by rb_thread_mark().

void rb_gc_mark_maybe ( VALUE  obj  ) 
void rb_gc_register_address ( VALUE addr  ) 

Definition at line 953 of file gc.c.

References ALLOC, global_List, gc_list::next, and gc_list::varptr.

Referenced by Init_coverage(), Init_curses(), Init_iconv(), and rb_global_variable().

void rb_gc_register_mark_object ( VALUE  obj  ) 
void rb_gc_set_params ( void   ) 
VALUE rb_gc_start ( void   ) 

Definition at line 2543 of file gc.c.

References Qnil, and rb_gc().

Referenced by Init_GC().

void rb_gc_unregister_address ( VALUE addr  ) 

Definition at line 965 of file gc.c.

References global_List, gc_list::next, gc_list::varptr, and xfree.

Referenced by curses_finalize().

void rb_global_variable ( VALUE var  ) 
void rb_mark_hash ( st_table tbl  ) 

Definition at line 1513 of file gc.c.

References mark_hash().

Referenced by Init_win32ole(), mark_dump_arg(), and mark_load_arg().

void rb_mark_method_entry ( const rb_method_entry_t me  ) 

Definition at line 1542 of file gc.c.

References mark_method_entry().

Referenced by bm_mark(), and rb_gc_mark_unlinked_live_method_entries().

void rb_mark_set ( st_table tbl  ) 

Definition at line 1488 of file gc.c.

References mark_set().

Referenced by mark_dump_arg().

void rb_mark_tbl ( st_table tbl  ) 

Definition at line 1612 of file gc.c.

References mark_tbl().

Referenced by autoload_mark(), mark_load_arg(), rb_mark_generic_ivar(), rb_thread_mark(), and rb_vm_mark().

void rb_memerror ( void   ) 
VALUE rb_newobj ( void   ) 
NODE* rb_node_newnode ( enum node_type  type,
VALUE  a0,
VALUE  a1,
VALUE  a2 
)

Definition at line 1203 of file gc.c.

References nd_set_type, rb_newobj(), and T_NODE.

Referenced by enum_zip(), parser_heredoc_identifier(), and rb_autoload().

VALUE rb_obj_id ( VALUE  obj  ) 
static void rb_objspace_call_finalizer ( rb_objspace_t objspace  )  [static]
size_t rb_objspace_data_type_memsize ( VALUE  obj  ) 

Definition at line 1247 of file gc.c.

References RTYPEDDATA_DATA, RTYPEDDATA_P, and RTYPEDDATA_TYPE.

Referenced by memsize_of().

const char* rb_objspace_data_type_name ( VALUE  obj  ) 

Definition at line 1258 of file gc.c.

References RTYPEDDATA_P, and RTYPEDDATA_TYPE.

Referenced by cto_i().

void rb_objspace_each_objects ( each_obj_callback callback,
void *  data 
)
static int ready_to_gc ( rb_objspace_t objspace  )  [static]

Definition at line 2078 of file gc.c.

References dont_gc, during_gc, FALSE, freelist, heaps_increment(), set_heaps_increment(), and TRUE.

Referenced by garbage_collect(), and gc_lazy_sweep().

static void rest_sweep ( rb_objspace_t objspace  )  [static]
int ruby_get_stack_grow_direction ( volatile VALUE addr  ) 

Definition at line 1289 of file gc.c.

References SET_MACHINE_STACK_END.

static void ruby_memerror ( void   )  [static]
static void* ruby_memerror_body ( void *  dummy  )  [static]

Definition at line 531 of file gc.c.

References rb_memerror().

Referenced by ruby_memerror().

int ruby_stack_check ( void   ) 

Definition at line 1330 of file gc.c.

References stack_check(), and STACKFRAME_FOR_CALL_CFUNC.

Referenced by stack_check().

size_t ruby_stack_length ( VALUE **  p  ) 

Definition at line 1303 of file gc.c.

References GET_THREAD, SET_STACK_END, STACK_END, STACK_LENGTH, STACK_START, and STACK_UPPER.

void* ruby_xcalloc ( size_t  n,
size_t  size 
)

Definition at line 869 of file gc.c.

References vm_xcalloc().

void ruby_xfree ( void *  x  ) 
void* ruby_xmalloc ( size_t  size  ) 

Definition at line 834 of file gc.c.

References vm_xmalloc().

Referenced by rb_dl_malloc(), and rb_dlptr_malloc().

void* ruby_xmalloc2 ( size_t  n,
size_t  size 
)

Definition at line 850 of file gc.c.

References vm_xmalloc(), and xmalloc2_size().

void* ruby_xrealloc ( void *  ptr,
size_t  size 
)

Definition at line 875 of file gc.c.

References vm_xrealloc().

Referenced by rb_dl_realloc(), and ruby_xrealloc2().

void* ruby_xrealloc2 ( void *  ptr,
size_t  n,
size_t  size 
)

Definition at line 881 of file gc.c.

References len, rb_eArgError, rb_raise(), and ruby_xrealloc().

static void run_final ( rb_objspace_t objspace,
VALUE  obj 
) [static]
static void run_finalizer ( rb_objspace_t objspace,
VALUE  objid,
VALUE  table 
) [static]
static VALUE run_single_final ( VALUE  arg  )  [static]

Definition at line 2880 of file gc.c.

References args, Qnil, and rb_eval_cmd().

Referenced by run_finalizer().

static void set_heaps_increment ( rb_objspace_t objspace  )  [static]

Definition at line 1128 of file gc.c.

References allocate_sorted_heaps(), heaps_inc, heaps_length, and heaps_used.

Referenced by after_gc_sweep(), gc_lazy_sweep(), and ready_to_gc().

static int set_zero ( st_data_t  key,
st_data_t  val,
st_data_t  arg 
) [static]

Definition at line 3200 of file gc.c.

References INT2FIX, rb_hash_aset(), and ST_CONTINUE.

Referenced by count_objects().

static void slot_sweep ( rb_objspace_t objspace,
struct heaps_slot sweep_slot 
) [static]
static int stack_check ( int  water_mark  )  [static]

Definition at line 1312 of file gc.c.

References GET_THREAD, SET_STACK_END, STACK_LENGTH, and STACK_LEVEL_MAX.

Referenced by gc_mark(), and ruby_stack_check().

static VALUE undefine_final ( VALUE  os,
VALUE  obj 
) [static]

Definition at line 2808 of file gc.c.

References finalizer_table, FL_FINALIZE, FL_UNSET, rb_check_frozen, and st_delete().

Referenced by Init_GC().

static void unlink_heap_slot ( rb_objspace_t objspace,
struct heaps_slot slot 
) [static]

Definition at line 1965 of file gc.c.

References rb_objspace::heap, heaps, heaps_slot::next, NULL, heaps_slot::prev, and rb_objspace::sweep_slots.

Referenced by slot_sweep().

static void* vm_malloc_fixup ( rb_objspace_t objspace,
void *  mem,
size_t  size 
) [inline, static]

Definition at line 745 of file gc.c.

References malloc_increase, and rb_objspace::malloc_params.

Referenced by vm_xcalloc(), and vm_xmalloc().

static size_t vm_malloc_prepare ( rb_objspace_t objspace,
size_t  size 
) [inline, static]
static void* vm_xcalloc ( rb_objspace_t objspace,
size_t  count,
size_t  elsize 
) [static]

Definition at line 856 of file gc.c.

References calloc, size, TRY_WITH_GC, vm_malloc_fixup(), vm_malloc_prepare(), and xmalloc2_size().

Referenced by ruby_xcalloc().

static void vm_xfree ( rb_objspace_t objspace,
void *  ptr 
) [static]

Definition at line 820 of file gc.c.

References free, rb_objspace::malloc_params, and size.

Referenced by ruby_xfree(), and vm_xrealloc().

static void* vm_xmalloc ( rb_objspace_t objspace,
size_t  size 
) [static]

Definition at line 768 of file gc.c.

References malloc, TRY_WITH_GC, vm_malloc_fixup(), and vm_malloc_prepare().

Referenced by ruby_xmalloc(), ruby_xmalloc2(), and vm_xrealloc().

static void* vm_xrealloc ( rb_objspace_t objspace,
void *  ptr,
size_t  size 
) [static]
static size_t xmalloc2_size ( size_t  n,
size_t  size 
) [inline, static]

Definition at line 840 of file gc.c.

References len, rb_eArgError, and rb_raise().

Referenced by ruby_xmalloc2(), and vm_xcalloc().


Variable Documentation

Initial value:

Definition at line 90 of file gc.c.

Definition at line 943 of file gc.c.

rb_objspace_t rb_objspace = {{GC_MALLOC_LIMIT}, {HEAP_MIN_SLOTS}} [static]

Definition at line 380 of file gc.c.

Definition at line 518 of file gc.c.

Definition at line 103 of file gc.c.

Definition at line 381 of file gc.c.

Referenced by set_debug_option().

Definition at line 1287 of file gc.c.


Generated on 30 Nov 2012 for Ruby by  doxygen 1.6.1