marshal.c File Reference

#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/st.h"
#include "ruby/util.h"
#include "ruby/encoding.h"
#include <math.h>

Include dependency graph for marshal.c:

Go to the source code of this file.

Data Structures

struct  marshal_compat_t
struct  dump_arg
struct  dump_call_arg
struct  load_arg

Defines

#define BITSPERSHORT   (2*CHAR_BIT)
#define SHORTMASK   ((1<<BITSPERSHORT)-1)
#define SHORTDN(x)   RSHIFT(x,BITSPERSHORT)
#define SHORTLEN(x)   (x)
#define MARSHAL_MAJOR   4
#define MARSHAL_MINOR   8
#define TYPE_NIL   '0'
#define TYPE_TRUE   'T'
#define TYPE_FALSE   'F'
#define TYPE_FIXNUM   'i'
#define TYPE_EXTENDED   'e'
#define TYPE_UCLASS   'C'
#define TYPE_OBJECT   'o'
#define TYPE_DATA   'd'
#define TYPE_USERDEF   'u'
#define TYPE_USRMARSHAL   'U'
#define TYPE_FLOAT   'f'
#define TYPE_BIGNUM   'l'
#define TYPE_STRING   '"'
#define TYPE_REGEXP   '/'
#define TYPE_ARRAY   '['
#define TYPE_HASH   '{'
#define TYPE_HASH_DEF   '}'
#define TYPE_STRUCT   'S'
#define TYPE_MODULE_OLD   'M'
#define TYPE_CLASS   'c'
#define TYPE_MODULE   'm'
#define TYPE_SYMBOL   ':'
#define TYPE_SYMLINK   ';'
#define TYPE_IVAR   'I'
#define TYPE_LINK   '@'
#define MARSHAL_INFECTION   (FL_TAINT|FL_UNTRUSTED)
#define load_mantissa(d, buf, len)   (d)
#define save_mantissa(d, buf)   0
#define FLOAT_DIG   17
#define has_ivars(obj, ivtbl)
#define r_entry(v, arg)   r_entry0(v, (arg)->data->num_entries, arg)
#define SIGN_EXTEND_CHAR(c)   ((((unsigned char)(c)) ^ 128) - 128)
#define r_bytes(arg)   r_bytes0(r_long(arg), (arg))
#define rb_intern(str)   rb_intern_const(str)

Typedefs

typedef char ruby_check_marshal_viral_flags [MARSHAL_INFECTION==(int) MARSHAL_INFECTION?1:-1]

Functions

ID rb_id_encoding (void)
static int mark_marshal_compat_i (st_data_t key, st_data_t value)
static void mark_marshal_compat_t (void *tbl)
void rb_marshal_define_compat (VALUE newclass, VALUE oldclass, VALUE(*dumper)(VALUE), VALUE(*loader)(VALUE, VALUE))
static void check_dump_arg (struct dump_arg *arg, ID sym)
static void clear_dump_arg (struct dump_arg *arg)
static void mark_dump_arg (void *ptr)
static void free_dump_arg (void *ptr)
static size_t memsize_dump_arg (const void *ptr)
static const char * must_not_be_anonymous (const char *type, VALUE path)
static VALUE class2path (VALUE klass)
static void w_long (long, struct dump_arg *)
static void w_encoding (VALUE obj, long num, struct dump_call_arg *arg)
static void w_nbyte (const char *s, long n, struct dump_arg *arg)
static void w_byte (char c, struct dump_arg *arg)
static void w_bytes (const char *s, long n, struct dump_arg *arg)
static void w_short (int x, struct dump_arg *arg)
static void w_float (double d, struct dump_arg *arg)
static void w_symbol (ID id, struct dump_arg *arg)
static void w_unique (VALUE s, struct dump_arg *arg)
static void w_object (VALUE, struct dump_arg *, int)
static int hash_each (VALUE key, VALUE value, struct dump_call_arg *arg)
static void w_extended (VALUE klass, struct dump_arg *arg, int check)
static void w_class (char type, VALUE obj, struct dump_arg *arg, int check)
static void w_uclass (VALUE obj, VALUE super, struct dump_arg *arg)
static int w_obj_each (ID id, VALUE value, struct dump_call_arg *arg)
static void w_ivar (VALUE obj, st_table *tbl, struct dump_call_arg *arg)
static void w_objivar (VALUE obj, struct dump_call_arg *arg)
static VALUE marshal_dump (int argc, VALUE *argv)
static void check_load_arg (struct load_arg *arg, ID sym)
static void clear_load_arg (struct load_arg *arg)
static void mark_load_arg (void *ptr)
static void free_load_arg (void *ptr)
static size_t memsize_load_arg (const void *ptr)
static VALUE r_entry0 (VALUE v, st_index_t num, struct load_arg *arg)
static VALUE r_object (struct load_arg *arg)
static ID r_symbol (struct load_arg *arg)
static VALUE path2class (VALUE path)
static st_index_t r_prepare (struct load_arg *arg)
static int r_byte (struct load_arg *arg)
static void long_toobig (int size)
static long r_long (struct load_arg *arg)
static VALUE r_bytes0 (long len, struct load_arg *arg)
static int id2encidx (ID id, VALUE val)
static ID r_symlink (struct load_arg *arg)
static ID r_symreal (struct load_arg *arg, int ivar)
static VALUE r_unique (struct load_arg *arg)
static VALUE r_string (struct load_arg *arg)
static VALUE r_leave (VALUE v, struct load_arg *arg)
static void r_ivar (VALUE obj, int *has_encoding, struct load_arg *arg)
static VALUE path2module (VALUE path)
static VALUE obj_alloc_by_path (VALUE path, struct load_arg *arg)
static VALUE r_object0 (struct load_arg *arg, int *ivp, VALUE extmod)
static VALUE marshal_load (int argc, VALUE *argv)
void Init_marshal (void)
VALUE rb_marshal_dump (VALUE obj, VALUE port)
VALUE rb_marshal_load (VALUE port)

Variables

static ID s_dump
static ID s_load
static ID s_mdump
static ID s_mload
static ID s_dump_data
static ID s_load_data
static ID s_alloc
static ID s_call
static ID s_getbyte
static ID s_read
static ID s_write
static ID s_binmode
static st_tablecompat_allocator_tbl
static VALUE compat_allocator_tbl_wrapper
static const rb_data_type_t dump_arg_data
static const rb_data_type_t load_arg_data


Define Documentation

#define BITSPERSHORT   (2*CHAR_BIT)

Definition at line 26 of file marshal.c.

#define FLOAT_DIG   17

Definition at line 380 of file marshal.c.

Referenced by w_float().

#define has_ivars ( obj,
ivtbl   ) 

Value:

((ivtbl = rb_generic_ivar_table(obj)) != 0 || \
                               (!SPECIAL_CONST_P(obj) && !ENCODING_IS_ASCII8BIT(obj)))

Referenced by w_object().

#define load_mantissa ( d,
buf,
len   )     (d)

Definition at line 373 of file marshal.c.

Referenced by r_object0().

#define MARSHAL_INFECTION   (FL_TAINT|FL_UNTRUSTED)

Definition at line 134 of file marshal.c.

#define MARSHAL_MAJOR   4

Definition at line 49 of file marshal.c.

Referenced by Init_marshal(), marshal_dump(), and marshal_load().

#define MARSHAL_MINOR   8

Definition at line 50 of file marshal.c.

Referenced by Init_marshal(), marshal_dump(), and marshal_load().

#define r_bytes ( arg   )     r_bytes0(r_long(arg), (arg))

Definition at line 1090 of file marshal.c.

Referenced by r_object0(), r_string(), and r_symreal().

#define r_entry ( v,
arg   )     r_entry0(v, (arg)->data->num_entries, arg)

Definition at line 1004 of file marshal.c.

Referenced by r_object0().

#define rb_intern ( str   )     rb_intern_const(str)

#define save_mantissa ( d,
buf   )     0

Definition at line 374 of file marshal.c.

Referenced by w_float().

#define SHORTDN (  )     RSHIFT(x,BITSPERSHORT)

Definition at line 28 of file marshal.c.

Referenced by w_object().

#define SHORTLEN (  )     (x)

Definition at line 31 of file marshal.c.

Referenced by w_object().

#define SHORTMASK   ((1<<BITSPERSHORT)-1)

Definition at line 27 of file marshal.c.

Referenced by w_object().

#define SIGN_EXTEND_CHAR (  )     ((((unsigned char)(c)) ^ 128) - 128)

Definition at line 1054 of file marshal.c.

#define TYPE_ARRAY   '['

Definition at line 67 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_BIGNUM   'l'

Definition at line 64 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_CLASS   'c'

Definition at line 72 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_DATA   'd'

Definition at line 60 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_EXTENDED   'e'

Definition at line 57 of file marshal.c.

Referenced by r_object0(), and w_extended().

#define TYPE_FALSE   'F'

Definition at line 54 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_FIXNUM   'i'

Definition at line 55 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_FLOAT   'f'

Definition at line 63 of file marshal.c.

#define TYPE_HASH   '{'

Definition at line 68 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_HASH_DEF   '}'

Definition at line 69 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_IVAR   'I'

Definition at line 78 of file marshal.c.

Referenced by r_object0(), r_symbol(), w_object(), and w_symbol().

#define TYPE_LINK   '@'

Definition at line 79 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_MODULE   'm'

Definition at line 73 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_MODULE_OLD   'M'

Definition at line 71 of file marshal.c.

Referenced by r_object0().

#define TYPE_NIL   '0'

Definition at line 52 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_OBJECT   'o'

Definition at line 59 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_REGEXP   '/'

Definition at line 66 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_STRING   '"'

Definition at line 65 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_STRUCT   'S'

Definition at line 70 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_SYMBOL   ':'

Definition at line 75 of file marshal.c.

Referenced by r_object0(), r_symbol(), and w_symbol().

#define TYPE_SYMLINK   ';'

Definition at line 76 of file marshal.c.

Referenced by r_object0(), r_symbol(), and w_symbol().

#define TYPE_TRUE   'T'

Definition at line 53 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_UCLASS   'C'

Definition at line 58 of file marshal.c.

Referenced by r_object0(), and w_uclass().

#define TYPE_USERDEF   'u'

Definition at line 61 of file marshal.c.

Referenced by r_object0(), and w_object().

#define TYPE_USRMARSHAL   'U'

Definition at line 62 of file marshal.c.

Referenced by r_object0(), and w_object().


Typedef Documentation

typedef char ruby_check_marshal_viral_flags[MARSHAL_INFECTION==(int) MARSHAL_INFECTION?1:-1]

Definition at line 135 of file marshal.c.


Function Documentation

static void check_dump_arg ( struct dump_arg arg,
ID  sym 
) [static]

Definition at line 153 of file marshal.c.

References rb_eRuntimeError, rb_id2name(), rb_raise(), and dump_arg::symbols.

Referenced by marshal_dump(), and w_object().

static void check_load_arg ( struct load_arg arg,
ID  sym 
) [static]

Definition at line 966 of file marshal.c.

References rb_eRuntimeError, rb_id2name(), rb_raise(), and load_arg::symbols.

Referenced by r_byte(), r_bytes0(), r_leave(), and r_object0().

static VALUE class2path ( VALUE  klass  )  [static]

Definition at line 209 of file marshal.c.

References must_not_be_anonymous(), rb_class_path(), rb_class_real(), rb_eTypeError, rb_path_to_class(), rb_raise(), T_CLASS, and TYPE.

Referenced by w_class(), w_object(), and w_uclass().

static void clear_dump_arg ( struct dump_arg arg  )  [static]

Definition at line 849 of file marshal.c.

References dump_call_arg::arg, dump_arg::compat_tbl, dump_arg::data, dump_arg::encodings, st_free_table, and dump_arg::symbols.

Referenced by free_dump_arg(), and marshal_dump().

static void clear_load_arg ( struct load_arg arg  )  [static]

Definition at line 1731 of file marshal.c.

References load_arg::compat_tbl, load_arg::data, st_free_table, and load_arg::symbols.

Referenced by free_load_arg(), and marshal_load().

static void free_dump_arg ( void *  ptr  )  [static]

Definition at line 175 of file marshal.c.

References clear_dump_arg(), and xfree.

static void free_load_arg ( void *  ptr  )  [static]

Definition at line 987 of file marshal.c.

References clear_load_arg(), and xfree.

static int hash_each ( VALUE  key,
VALUE  value,
struct dump_call_arg arg 
) [static]

Definition at line 457 of file marshal.c.

References dump_call_arg::arg, ST_CONTINUE, and w_object().

Referenced by w_object().

static int id2encidx ( ID  id,
VALUE  val 
) [static]

Definition at line 1122 of file marshal.c.

References Qfalse, Qtrue, rb_enc_find_index(), rb_id_encoding(), rb_intern, rb_usascii_encindex(), rb_utf8_encindex(), and StringValueCStr.

Referenced by r_ivar(), and r_symreal().

void Init_marshal ( void   ) 

Definition at line 1905 of file marshal.c.

References compat_allocator_tbl, compat_allocator_tbl_wrapper, Data_Wrap_Struct, INT2FIX, mark_marshal_compat_t(), marshal_dump(), marshal_load(), MARSHAL_MAJOR, MARSHAL_MINOR, rb_cData, rb_define_const(), rb_define_module(), rb_define_module_function(), rb_gc_register_mark_object(), rb_intern, s_alloc, s_binmode, s_call, s_dump, s_dump_data, s_getbyte, s_load, s_load_data, s_mdump, s_mload, s_read, s_write, and st_init_numtable.

static void long_toobig ( int  size  )  [static]

Definition at line 1043 of file marshal.c.

References rb_eTypeError, rb_raise(), SIZEOF_LONG, and STRINGIZE.

Referenced by r_long().

static void mark_dump_arg ( void *  ptr  )  [static]

Definition at line 164 of file marshal.c.

References dump_arg::compat_tbl, dump_arg::data, rb_gc_mark(), rb_mark_hash(), rb_mark_set(), dump_arg::str, and dump_arg::symbols.

static void mark_load_arg ( void *  ptr  )  [static]

Definition at line 977 of file marshal.c.

References load_arg::compat_tbl, load_arg::data, rb_mark_hash(), rb_mark_tbl(), and load_arg::symbols.

static int mark_marshal_compat_i ( st_data_t  key,
st_data_t  value 
) [static]

Definition at line 98 of file marshal.c.

References marshal_compat_t::newclass, marshal_compat_t::oldclass, rb_gc_mark(), and ST_CONTINUE.

Referenced by mark_marshal_compat_t().

static void mark_marshal_compat_t ( void *  tbl  )  [static]

Definition at line 107 of file marshal.c.

References mark_marshal_compat_i(), and st_foreach.

Referenced by Init_marshal().

static VALUE marshal_dump ( int  argc,
VALUE argv 
) [static]

Definition at line 899 of file marshal.c.

References check_dump_arg(), clear_dump_arg(), dump_arg::compat_tbl, dump_arg::data, dump_arg::dest, dump_arg_data, dump_arg::encodings, FIX2INT, FIXNUM_P, dump_arg::infection, dump_call_arg::limit, MARSHAL_MAJOR, MARSHAL_MINOR, NIL_P, NUM2INT, dump_call_arg::obj, Qnil, rb_cData, rb_eTypeError, rb_funcall2(), RB_GC_GUARD, rb_io_write(), rb_raise(), rb_respond_to(), rb_scan_args(), rb_str_buf_new(), rb_str_resize(), s_binmode, s_write, st_init_numtable, dump_arg::str, dump_arg::symbols, TypedData_Make_Struct, w_byte(), and w_object().

Referenced by Init_marshal(), and rb_marshal_dump().

static VALUE marshal_load ( int  argc,
VALUE argv 
) [static]

Definition at line 1754 of file marshal.c.

References clear_load_arg(), load_arg::compat_tbl, load_arg::data, FL_TAINT, FL_TEST, FL_UNTRUSTED, load_arg::infection, load_arg_data, major, MARSHAL_MAJOR, MARSHAL_MINOR, minor, NIL_P, load_arg::offset, load_arg::proc, r_byte(), r_object(), rb_cData, rb_check_string_type(), rb_eTypeError, rb_funcall2(), RB_GC_GUARD, rb_raise(), rb_respond_to(), rb_scan_args(), rb_warn(), RTEST, ruby_verbose, s_binmode, s_getbyte, s_read, load_arg::src, st_init_numtable, load_arg::symbols, and TypedData_Make_Struct.

Referenced by Init_marshal(), and rb_marshal_load().

static size_t memsize_dump_arg ( const void *  ptr  )  [static]

Definition at line 182 of file marshal.c.

static size_t memsize_load_arg ( const void *  ptr  )  [static]

Definition at line 994 of file marshal.c.

static const char* must_not_be_anonymous ( const char *  type,
VALUE  path 
) [static]

Definition at line 193 of file marshal.c.

References rb_enc_asciicompat, rb_enc_get(), rb_eTypeError, rb_raise(), RSTRING_LEN, and RSTRING_PTR.

Referenced by class2path(), and w_unique().

static VALUE obj_alloc_by_path ( VALUE  path,
struct load_arg arg 
) [static]

Definition at line 1294 of file marshal.c.

References compat_allocator_tbl, load_arg::compat_tbl, marshal_compat_t::oldclass, path2class(), rb_get_alloc_func(), rb_obj_alloc(), st_insert, and st_lookup.

Referenced by r_object0().

static VALUE path2class ( VALUE  path  )  [static]

Definition at line 1270 of file marshal.c.

References rb_eArgError, rb_path_to_class(), rb_raise(), RSTRING_LEN, RSTRING_PTR, T_CLASS, and TYPE.

static VALUE path2module ( VALUE  path  )  [static]

Definition at line 1282 of file marshal.c.

References rb_eArgError, rb_path_to_class(), rb_raise(), RSTRING_LEN, RSTRING_PTR, T_MODULE, and TYPE.

Referenced by r_object0().

static int r_byte ( struct load_arg arg  )  [static]

Definition at line 1020 of file marshal.c.

References check_load_arg(), NIL_P, NUM2CHR(), load_arg::offset, rb_eArgError, rb_eof_error(), rb_funcall2(), rb_raise(), RSTRING_LEN, RSTRING_PTR, s_getbyte, load_arg::src, T_STRING, and TYPE.

Referenced by marshal_load(), r_long(), r_object0(), and r_symbol().

static VALUE r_bytes0 ( long  len,
struct load_arg arg 
) [static]

Definition at line 1093 of file marshal.c.

References check_load_arg(), FL_TEST, load_arg::infection, LONG2NUM, NIL_P, load_arg::offset, rb_eArgError, rb_funcall2(), rb_raise(), rb_str_new(), RSTRING_LEN, RSTRING_PTR, s_read, load_arg::src, StringValue, T_STRING, and TYPE.

Referenced by r_object0().

static VALUE r_entry0 ( VALUE  v,
st_index_t  num,
struct load_arg arg 
) [static]

Definition at line 1208 of file marshal.c.

References load_arg::compat_tbl, load_arg::data, FL_SET, load_arg::infection, Qundef, st_insert, and st_lookup.

Referenced by r_object0().

static void r_ivar ( VALUE  obj,
int *  has_encoding,
struct load_arg arg 
) [static]

Definition at line 1248 of file marshal.c.

References id2encidx(), r_long(), r_object(), r_symbol(), rb_enc_associate_index(), rb_ivar_set(), and TRUE.

Referenced by r_object0().

static VALUE r_leave ( VALUE  v,
struct load_arg arg 
) [static]

Definition at line 1226 of file marshal.c.

References check_load_arg(), CLASS_OF, compat_allocator_tbl, load_arg::compat_tbl, marshal_compat_t::loader, load_arg::proc, rb_funcall(), rb_get_alloc_func(), s_call, st_delete, and st_lookup.

Referenced by r_object0().

static long r_long ( struct load_arg arg  )  [static]

Definition at line 1058 of file marshal.c.

References long_toobig(), r_byte(), and SIGN_EXTEND_CHAR.

Referenced by r_ivar(), r_object0(), r_symlink(), and r_symreal().

static VALUE r_object ( struct load_arg arg  )  [static]

Definition at line 1725 of file marshal.c.

References Qnil, and r_object0().

Referenced by marshal_load(), r_ivar(), r_object0(), and r_symreal().

static VALUE r_object0 ( struct load_arg arg,
int *  ivp,
VALUE  extmod 
) [static]

Definition at line 1315 of file marshal.c.

References BDIGIT, check_load_arg(), load_arg::data, DBL2NUM, FALSE, FL_SINGLETON, FL_TEST, id, ID2SYM, INFINITY, link(), load_mantissa, LONG2FIX, MEMCPY, MEMZERO, NAN, NEWOBJ, NIL_P, NULL, obj_alloc_by_path(), OBJSETUP, options(), path2class(), path2module(), load_arg::proc, Qfalse, Qnil, Qtrue, r_byte(), r_bytes, r_bytes0(), r_entry, r_entry0(), r_ivar(), r_leave(), r_long(), r_object(), r_prepare(), r_string(), r_symbol(), r_symlink(), r_symreal(), r_unique(), RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_pop(), rb_ary_push(), rb_big_norm(), rb_big_resize(), rb_cBignum, rb_class2name(), rb_class_inherited_p(), rb_eArgError, rb_eTypeError, rb_extend_object(), rb_funcall(), rb_hash_aset(), rb_hash_new(), rb_id2name(), rb_obj_alloc(), rb_path_to_class(), rb_raise(), rb_reg_new_str(), rb_respond_to(), rb_special_const_p(), rb_str_set_len, rb_struct_initialize(), rb_struct_s_members(), rb_warn(), RBASIC, RBIGNUM_DIGITS, RBIGNUM_LEN, RBIGNUM_SET_SIGN, RHASH_IFNONE, RSTRING_LEN, RSTRING_PTR, RTEST, s_alloc, s_call, s_load, s_load_data, s_mload, shift(), SIZEOF_BDIGITS, st_lookup, strtod, SYM2ID, T_BIGNUM, T_CLASS, T_DATA, T_MODULE, T_OBJECT, T_STRUCT, TRUE, TYPE, type, TYPE_ARRAY, TYPE_BIGNUM, TYPE_CLASS, TYPE_DATA, TYPE_EXTENDED, TYPE_FALSE, TYPE_FIXNUM, TYPE_FLOAT, TYPE_HASH, TYPE_HASH_DEF, TYPE_IVAR, TYPE_LINK, TYPE_MODULE, TYPE_MODULE_OLD, TYPE_NIL, TYPE_OBJECT, TYPE_REGEXP, TYPE_STRING, TYPE_STRUCT, TYPE_SYMBOL, TYPE_SYMLINK, TYPE_TRUE, TYPE_UCLASS, TYPE_USERDEF, and TYPE_USRMARSHAL.

Referenced by r_object().

static st_index_t r_prepare ( struct load_arg arg  )  [static]

Definition at line 1011 of file marshal.c.

References load_arg::data, st_table::num_entries, Qundef, and st_insert.

Referenced by r_object0().

static VALUE r_string ( struct load_arg arg  )  [static]

Definition at line 1202 of file marshal.c.

References r_bytes.

Referenced by r_object0().

static ID r_symbol ( struct load_arg arg  )  [static]

Definition at line 1173 of file marshal.c.

References r_byte(), r_symlink(), r_symreal(), rb_eArgError, rb_raise(), type, TYPE_IVAR, TYPE_SYMBOL, and TYPE_SYMLINK.

Referenced by r_ivar(), r_object0(), r_symreal(), and r_unique().

static ID r_symlink ( struct load_arg arg  )  [static]

Definition at line 1137 of file marshal.c.

References id, r_long(), rb_eArgError, rb_raise(), st_lookup, and load_arg::symbols.

Referenced by r_object0(), and r_symbol().

static ID r_symreal ( struct load_arg arg,
int  ivar 
) [static]

Definition at line 1149 of file marshal.c.

References id, id2encidx(), st_table::num_entries, r_bytes, r_long(), r_object(), r_symbol(), rb_enc_associate_index(), rb_intern_str(), rb_usascii_encindex(), st_insert, and load_arg::symbols.

Referenced by r_object0(), and r_symbol().

static VALUE r_unique ( struct load_arg arg  )  [static]

Definition at line 1196 of file marshal.c.

References r_symbol(), and rb_id2str().

Referenced by r_object0().

ID rb_id_encoding ( void   ) 

Definition at line 626 of file encoding.c.

References CONST_ID, and id_encoding.

Referenced by id2encidx(), rb_enc_get_index(), rb_enc_set_index(), w_encoding(), and w_obj_each().

void rb_marshal_define_compat ( VALUE  newclass,
VALUE  oldclass,
VALUE(*)(VALUE dumper,
VALUE(*)(VALUE, VALUE loader 
)

Definition at line 114 of file marshal.c.

References ALLOC, compat_allocator_tbl, marshal_compat_t::dumper, marshal_compat_t::loader, marshal_compat_t::newclass, marshal_compat_t::oldclass, Qnil, rb_eTypeError, rb_get_alloc_func(), rb_raise(), and st_insert.

Referenced by Init_Range().

VALUE rb_marshal_dump ( VALUE  obj,
VALUE  port 
)

Definition at line 1939 of file marshal.c.

References argc, argv, marshal_dump(), and NIL_P.

VALUE rb_marshal_load ( VALUE  port  ) 

Definition at line 1951 of file marshal.c.

References marshal_load().

static void w_byte ( char  c,
struct dump_arg arg 
) [static]

Definition at line 237 of file marshal.c.

References w_nbyte().

Referenced by marshal_dump(), w_class(), w_extended(), w_long(), w_object(), w_short(), w_symbol(), and w_uclass().

static void w_bytes ( const char *  s,
long  n,
struct dump_arg arg 
) [static]

Definition at line 243 of file marshal.c.

References w_long(), and w_nbyte().

Referenced by w_float(), w_object(), and w_symbol().

static void w_class ( char  type,
VALUE  obj,
struct dump_arg arg,
int  check 
) [static]

Definition at line 483 of file marshal.c.

References dump_call_arg::arg, class2path(), CLASS_OF, dump_arg::compat_tbl, rb_class_real(), st_lookup, w_byte(), w_extended(), and w_unique().

Referenced by w_object().

static void w_encoding ( VALUE  obj,
long  num,
struct dump_call_arg arg 
) [static]

Definition at line 523 of file marshal.c.

References dump_call_arg::arg, dump_arg::encodings, name, Qfalse, Qtrue, rb_enc_from_index(), rb_enc_get_index(), rb_enc_name, rb_id_encoding(), rb_intern, rb_str_new2, rb_usascii_encindex(), rb_utf8_encindex(), st_init_strcasetable(), st_insert, st_lookup, w_long(), w_object(), and w_symbol().

Referenced by w_ivar(), w_objivar(), and w_symbol().

static void w_extended ( VALUE  klass,
struct dump_arg arg,
int  check 
) [static]

Definition at line 465 of file marshal.c.

References dump_call_arg::arg, BUILTIN_TYPE, FL_SINGLETON, FL_TEST, rb_class_name(), rb_eTypeError, rb_raise(), RBASIC, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, T_ICLASS, TYPE_EXTENDED, w_byte(), and w_unique().

Referenced by w_class(), and w_uclass().

static void w_float ( double  d,
struct dump_arg arg 
) [static]

Definition at line 384 of file marshal.c.

References FLOAT_DIG, isinf(), isnan, save_mantissa, snprintf, and w_bytes().

Referenced by w_object().

static void w_ivar ( VALUE  obj,
st_table tbl,
struct dump_call_arg arg 
) [static]

Definition at line 560 of file marshal.c.

References dump_call_arg::arg, st_table::num_entries, st_foreach_safe(), w_encoding(), and w_obj_each().

Referenced by w_object().

static void w_long ( long  ,
struct dump_arg  
) [static]

Definition at line 257 of file marshal.c.

References buf, len, rb_eTypeError, rb_raise(), RSHIFT, and w_byte().

Referenced by w_bytes(), w_encoding(), w_object(), and w_symbol().

static void w_nbyte ( const char *  s,
long  n,
struct dump_arg arg 
) [static]

Definition at line 225 of file marshal.c.

References buf, dump_arg::dest, dump_arg::infection, rb_io_write(), rb_str_buf_cat(), rb_str_resize(), RBASIC, RSTRING_LEN, and dump_arg::str.

Referenced by w_byte(), and w_bytes().

static int w_obj_each ( ID  id,
VALUE  value,
struct dump_call_arg arg 
) [static]

Definition at line 513 of file marshal.c.

References dump_call_arg::arg, rb_id_encoding(), rb_intern, ST_CONTINUE, w_object(), and w_symbol().

Referenced by w_ivar(), and w_objivar().

static void w_object ( VALUE  ,
struct dump_arg ,
int   
) [static]

Definition at line 590 of file marshal.c.

References dump_call_arg::arg, BDIGIT, BUILTIN_TYPE, check_dump_arg(), class2path(), compat_allocator_tbl, dump_arg::compat_tbl, dump_arg::data, marshal_compat_t::dumper, FALSE, FIX2INT, FIX2LONG, FIXNUM_P, FL_SINGLETON, FL_TEST, FL_USER2, has_ivars, hash_each(), dump_arg::infection, INT2NUM(), dump_call_arg::limit, NIL_P, st_table::num_entries, Qfalse, Qnil, Qtrue, RARRAY_LEN, RARRAY_PTR, rb_cArray, rb_cHash, rb_cRegexp, rb_cString, rb_eArgError, rb_eRuntimeError, rb_eTypeError, rb_funcall(), rb_get_alloc_func(), rb_hash_foreach(), rb_int2big(), rb_obj_classname(), rb_raise(), rb_reg_options(), rb_respond_to(), rb_struct_members(), RBASIC, RBIGNUM_DIGITS, RBIGNUM_LEN, RBIGNUM_SIGN, RFLOAT_VALUE, RHASH_IFNONE, RHASH_SIZE, RREGEXP_SRC_LEN, RREGEXP_SRC_PTR, RSHIFT, RSTRING_LEN, RSTRING_PTR, RSTRUCT_LEN, RSTRUCT_PTR, s_dump, s_dump_data, s_mdump, SHORTDN, SHORTLEN, SHORTMASK, SIZEOF_BDIGITS, SIZEOF_SHORT, st_add_direct, st_insert, st_lookup, SYM2ID, SYMBOL_P, T_ARRAY, T_BIGNUM, T_CLASS, T_DATA, T_FLOAT, T_HASH, T_MODULE, T_OBJECT, T_REGEXP, T_STRING, T_STRUCT, TRUE, TYPE, TYPE_ARRAY, TYPE_BIGNUM, TYPE_CLASS, TYPE_DATA, TYPE_FALSE, TYPE_FIXNUM, TYPE_FLOAT, TYPE_HASH, TYPE_HASH_DEF, TYPE_IVAR, TYPE_LINK, TYPE_MODULE, TYPE_NIL, TYPE_OBJECT, TYPE_REGEXP, TYPE_STRING, TYPE_STRUCT, TYPE_TRUE, TYPE_USERDEF, TYPE_USRMARSHAL, w_byte(), w_bytes(), w_class(), w_float(), w_ivar(), w_long(), w_objivar(), w_short(), w_symbol(), and w_uclass().

Referenced by hash_each(), marshal_dump(), w_encoding(), and w_obj_each().

static void w_objivar ( VALUE  obj,
struct dump_call_arg arg 
) [static]

Definition at line 571 of file marshal.c.

References dump_call_arg::arg, Qundef, rb_ivar_foreach(), ROBJECT_IVPTR, ROBJECT_NUMIV, w_encoding(), and w_obj_each().

Referenced by w_object().

static void w_short ( int  x,
struct dump_arg arg 
) [static]

Definition at line 250 of file marshal.c.

References w_byte().

Referenced by w_object().

static void w_symbol ( ID  id,
struct dump_arg arg 
) [static]

Definition at line 412 of file marshal.c.

References dump_call_arg::arg, ENC_CODERANGE_7BIT, dump_call_arg::limit, st_table::num_entries, rb_enc_get_index(), rb_enc_str_coderange(), rb_eTypeError, rb_id2str(), rb_raise(), rb_usascii_encindex(), RSTRING_LEN, RSTRING_PTR, st_add_direct, st_lookup, dump_arg::symbols, TYPE_IVAR, TYPE_SYMBOL, TYPE_SYMLINK, w_byte(), w_bytes(), w_encoding(), and w_long().

Referenced by w_encoding(), w_obj_each(), w_object(), and w_unique().

static void w_uclass ( VALUE  obj,
VALUE  super,
struct dump_arg arg 
) [static]

Definition at line 500 of file marshal.c.

References dump_call_arg::arg, class2path(), CLASS_OF, rb_class_real(), TRUE, TYPE_UCLASS, w_byte(), w_extended(), and w_unique().

Referenced by w_object().

static void w_unique ( VALUE  s,
struct dump_arg arg 
) [static]

Definition at line 448 of file marshal.c.

References dump_call_arg::arg, must_not_be_anonymous(), rb_intern_str(), and w_symbol().

Referenced by w_class(), w_extended(), and w_uclass().


Variable Documentation

st_table* compat_allocator_tbl [static]

Definition at line 94 of file marshal.c.

Referenced by Init_marshal(), obj_alloc_by_path(), r_leave(), rb_marshal_define_compat(), and w_object().

VALUE compat_allocator_tbl_wrapper [static]

Definition at line 95 of file marshal.c.

Referenced by Init_marshal().

const rb_data_type_t dump_arg_data [static]

Initial value:

Definition at line 187 of file marshal.c.

Referenced by marshal_dump().

const rb_data_type_t load_arg_data [static]

Initial value:

Definition at line 999 of file marshal.c.

Referenced by marshal_load().

ID s_alloc [static]

Definition at line 82 of file marshal.c.

Referenced by Init_marshal(), and r_object0().

ID s_binmode [static]

Definition at line 83 of file marshal.c.

ID s_call [static]

Definition at line 82 of file marshal.c.

ID s_dump [static]

Definition at line 81 of file marshal.c.

Referenced by Init_marshal(), and w_object().

ID s_dump_data [static]

Definition at line 82 of file marshal.c.

Referenced by Init_marshal(), and w_object().

ID s_getbyte [static]

Definition at line 83 of file marshal.c.

Referenced by Init_marshal(), marshal_load(), and r_byte().

ID s_load [static]

Definition at line 81 of file marshal.c.

Referenced by Init_marshal(), and r_object0().

ID s_load_data [static]

Definition at line 82 of file marshal.c.

Referenced by Init_marshal(), and r_object0().

ID s_mdump [static]

Definition at line 81 of file marshal.c.

Referenced by Init_marshal(), and w_object().

ID s_mload [static]

Definition at line 81 of file marshal.c.

Referenced by Init_marshal(), and r_object0().

ID s_read [static]

Definition at line 83 of file marshal.c.

ID s_write [static]

Definition at line 83 of file marshal.c.


Generated on Wed Aug 10 09:18:47 2011 for Ruby by  doxygen 1.4.7