Ruby
2.1.10p492(2016-04-01revision54464)
|
#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/st.h"
#include "ruby/util.h"
#include "ruby/encoding.h"
#include "internal.h"
#include <math.h>
Go to the source code of this file.
Data Structures | |
struct | marshal_compat_t |
struct | dump_arg |
struct | dump_call_arg |
struct | load_arg |
Macros | |
#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 |
#define | w_cstr(s, arg) w_bytes((s), strlen(s), (arg)) |
#define | load_mantissa(d, buf, len) (d) |
#define | FLOAT_DIG 17 |
#define | SINGLETON_DUMP_UNABLE_P(klass) |
#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 | path2module(path) must_be_module(rb_path_to_class(path), path) |
#define | prohibit_ivar(type, str) |
#define | rb_intern(str) rb_intern_const(str) |
Typedefs | |
typedef char | ruby_check_marshal_viral_flags[MARSHAL_INFECTION==(int) MARSHAL_INFECTION ? 1 :-1] |
Functions | |
static int | mark_marshal_compat_i (st_data_t key, st_data_t value) |
static void | mark_marshal_compat_t (void *tbl) |
static st_table * | compat_allocator_table (void) |
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 (st_data_t key, st_data_t val, st_data_t a) |
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) |
NORETURN (static inline void io_needed(void)) | |
static void | io_needed (void) |
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) |
NORETURN (static void too_short(void)) | |
static void | too_short (void) |
static st_index_t | r_prepare (struct load_arg *arg) |
static unsigned char | r_byte1_buffered (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_bytes1 (long len, struct load_arg *arg) |
static VALUE | r_bytes1_buffered (long len, 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_fixup_compat (VALUE v, struct load_arg *arg) |
static VALUE | r_post_proc (VALUE v, struct load_arg *arg) |
static VALUE | r_leave (VALUE v, struct load_arg *arg) |
static int | copy_ivar_i (st_data_t key, st_data_t val, st_data_t arg) |
static VALUE | r_copy_ivar (VALUE v, VALUE data) |
static void | r_ivar (VALUE obj, int *has_encoding, struct load_arg *arg) |
static VALUE | must_be_module (VALUE v, VALUE path) |
static VALUE | obj_alloc_by_klass (VALUE klass, struct load_arg *arg, VALUE *oldclass) |
static VALUE | obj_alloc_by_path (VALUE path, struct load_arg *arg) |
static VALUE | append_extmod (VALUE obj, VALUE extmod) |
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_table * | compat_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 has_ivars | ( | obj, | |
ivtbl | |||
) |
Referenced by w_object().
#define load_mantissa | ( | d, | |
buf, | |||
len | |||
) | (d) |
Definition at line 348 of file marshal.c.
Referenced by r_object0().
#define MARSHAL_INFECTION FL_TAINT |
Definition at line 135 of file marshal.c.
Referenced by marshal_load(), r_byte1_buffered(), r_bytes1(), r_bytes1_buffered(), and w_object().
#define MARSHAL_MAJOR 4 |
Definition at line 50 of file marshal.c.
Referenced by Init_marshal(), marshal_dump(), and marshal_load().
#define MARSHAL_MINOR 8 |
Definition at line 51 of file marshal.c.
Referenced by Init_marshal(), marshal_dump(), and marshal_load().
#define path2module | ( | path | ) | must_be_module(rb_path_to_class(path), path) |
Definition at line 1433 of file marshal.c.
Referenced by r_object0().
#define prohibit_ivar | ( | type, | |
str | |||
) |
Definition at line 1480 of file marshal.c.
Referenced by r_object0().
Definition at line 1214 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 1034 of file marshal.c.
Referenced by r_object0().
#define rb_intern | ( | str | ) | rb_intern_const(str) |
Referenced by id2encidx(), Init_marshal(), w_encoding(), and w_obj_each().
#define SHORTDN | ( | x | ) | RSHIFT((x),BITSPERSHORT) |
Definition at line 29 of file marshal.c.
Referenced by w_object().
#define SHORTLEN | ( | x | ) | (x) |
Definition at line 32 of file marshal.c.
Referenced by w_object().
#define SHORTMASK ((1<<BITSPERSHORT)-1) |
Definition at line 28 of file marshal.c.
Referenced by w_object().
#define SIGN_EXTEND_CHAR | ( | c | ) | ((((unsigned char)(c)) ^ 128) - 128) |
#define SINGLETON_DUMP_UNABLE_P | ( | klass | ) |
Definition at line 463 of file marshal.c.
Referenced by w_extended().
#define TYPE_ARRAY '[' |
Definition at line 68 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_BIGNUM 'l' |
Definition at line 65 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_CLASS 'c' |
Definition at line 73 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_DATA 'd' |
Definition at line 61 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_EXTENDED 'e' |
Definition at line 58 of file marshal.c.
Referenced by r_object0(), and w_extended().
#define TYPE_FALSE 'F' |
Definition at line 55 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_FIXNUM 'i' |
Definition at line 56 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_FLOAT 'f' |
Definition at line 64 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_HASH '{' |
Definition at line 69 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_HASH_DEF '}' |
Definition at line 70 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_IVAR 'I' |
Definition at line 79 of file marshal.c.
Referenced by r_object0(), r_symbol(), w_object(), and w_symbol().
#define TYPE_LINK '@' |
Definition at line 80 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_MODULE 'm' |
Definition at line 74 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_MODULE_OLD 'M' |
Definition at line 72 of file marshal.c.
Referenced by r_object0().
#define TYPE_NIL '0' |
Definition at line 53 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_OBJECT 'o' |
Definition at line 60 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_REGEXP '/' |
Definition at line 67 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_STRING '"' |
Definition at line 66 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_STRUCT 'S' |
Definition at line 71 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_SYMBOL ':' |
Definition at line 76 of file marshal.c.
Referenced by r_object0(), r_symbol(), and w_symbol().
#define TYPE_SYMLINK ';' |
Definition at line 77 of file marshal.c.
Referenced by r_object0(), r_symbol(), and w_symbol().
#define TYPE_TRUE 'T' |
Definition at line 54 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_UCLASS 'C' |
Definition at line 59 of file marshal.c.
Referenced by r_object0(), and w_uclass().
#define TYPE_USERDEF 'u' |
Definition at line 62 of file marshal.c.
Referenced by r_object0(), and w_object().
#define TYPE_USRMARSHAL 'U' |
Definition at line 63 of file marshal.c.
Referenced by r_object0(), and w_object().
typedef char ruby_check_marshal_viral_flags[MARSHAL_INFECTION==(int) MARSHAL_INFECTION ? 1 :-1] |
Definition at line 1470 of file marshal.c.
References RARRAY_AREF, RARRAY_LEN, and rb_extend_object().
Referenced by r_object0().
Definition at line 154 of file marshal.c.
References rb_eRuntimeError, rb_id2name(), rb_raise(), sym, and dump_arg::symbols.
Referenced by marshal_dump(), and w_object().
Definition at line 995 of file marshal.c.
References rb_eRuntimeError, rb_id2name(), rb_raise(), sym, and load_arg::symbols.
Referenced by r_byte(), r_byte1_buffered(), r_bytes1(), r_bytes1_buffered(), r_object0(), and r_post_proc().
Definition at line 211 of file marshal.c.
References must_not_be_anonymous(), rb_class_path(), rb_class_real(), rb_eTypeError, rb_path_to_class(), rb_raise(), RB_TYPE_P, and T_CLASS.
Referenced by w_class(), w_object(), and w_uclass().
|
static |
Definition at line 870 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 |
Definition at line 1912 of file marshal.c.
References load_arg::buf, load_arg::buflen, load_arg::compat_tbl, load_arg::data, load_arg::offset, load_arg::readable, st_free_table(), load_arg::symbols, and xfree().
Referenced by free_load_arg(), and marshal_load().
|
static |
Definition at line 2146 of file marshal.c.
References compat_allocator_tbl, compat_allocator_tbl_wrapper, Data_Wrap_Struct, mark_marshal_compat_t(), rb_cData, rb_gc_register_mark_object(), and st_init_numtable().
Referenced by rb_marshal_define_compat().
Definition at line 1383 of file marshal.c.
References key, rb_ivar_defined(), rb_ivar_set(), ST_CONTINUE, and val.
Referenced by r_copy_ivar().
|
static |
Definition at line 176 of file marshal.c.
References clear_dump_arg(), and xfree().
|
static |
Definition at line 1016 of file marshal.c.
References clear_load_arg(), and xfree().
|
static |
Definition at line 456 of file marshal.c.
References dump_call_arg::arg, key, ST_CONTINUE, and w_object().
Referenced by w_object().
Definition at line 1243 of file marshal.c.
References Qfalse, Qtrue, rb_enc_find_index(), rb_id_encoding(), rb_intern, rb_usascii_encindex, rb_utf8_encindex, StringValueCStr, and val.
Referenced by r_ivar(), and r_symreal().
void Init_marshal | ( | void | ) |
Definition at line 2115 of file marshal.c.
References INT2FIX, marshal_dump(), marshal_load(), MARSHAL_MAJOR, MARSHAL_MINOR, rb_define_const(), rb_define_module(), rb_define_module_function(), 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, and s_write.
|
inlinestatic |
Definition at line 887 of file marshal.c.
References rb_eTypeError, and rb_raise().
Referenced by marshal_dump(), and marshal_load().
|
static |
Definition at line 1105 of file marshal.c.
References rb_eTypeError, rb_raise(), size, and STRINGIZE.
Referenced by r_long().
|
static |
Definition at line 165 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 |
Definition at line 1006 of file marshal.c.
References load_arg::compat_tbl, load_arg::data, rb_mark_hash(), rb_mark_tbl(), and load_arg::symbols.
Definition at line 97 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 |
Definition at line 106 of file marshal.c.
References mark_marshal_compat_i(), and st_foreach().
Referenced by compat_allocator_table().
Definition at line 927 of file marshal.c.
References argc, argv, 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, io_needed(), dump_call_arg::limit, MARSHAL_MAJOR, MARSHAL_MINOR, NIL_P, NUM2INT, dump_call_arg::obj, Qnil, Qundef, rb_cData, rb_check_funcall(), RB_GC_GUARD, rb_io_write(), 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().
Definition at line 1945 of file marshal.c.
References argc, argv, load_arg::buf, clear_load_arg(), load_arg::compat_tbl, load_arg::data, FL_TAINT, FL_TEST, load_arg::infection, io_needed(), load_arg_data, major, MARSHAL_INFECTION, MARSHAL_MAJOR, MARSHAL_MINOR, minor, NIL_P, load_arg::offset, load_arg::proc, r_byte(), r_object(), rb_cData, rb_check_funcall(), rb_check_string_type(), rb_eTypeError, RB_GC_GUARD, rb_raise(), rb_respond_to(), rb_scan_args(), rb_warn(), load_arg::readable, RTEST, ruby_verbose, s_binmode, s_getbyte, s_read, load_arg::src, st_init_numtable(), load_arg::symbols, TypedData_Make_Struct, and xmalloc.
Referenced by Init_marshal(), and rb_marshal_load().
|
static |
Definition at line 1436 of file marshal.c.
References PRIsVALUE, rb_eArgError, rb_raise(), RB_TYPE_P, and T_MODULE.
Referenced by r_object0().
Definition at line 195 of file marshal.c.
References rb_enc_asciicompat, rb_enc_get(), rb_eTypeError, rb_raise(), RSTRING_LEN, RSTRING_PTR, and type.
Referenced by class2path(), and w_unique().
NORETURN | ( | static inline void | io_neededvoid | ) |
NORETURN | ( | static void | too_shortvoid | ) |
Definition at line 1445 of file marshal.c.
References compat_allocator_tbl, load_arg::compat_tbl, marshal_compat_t::oldclass, rb_get_alloc_func(), rb_obj_alloc(), st_data_t, st_insert(), and st_lookup().
Referenced by obj_alloc_by_path(), and r_object0().
Definition at line 1464 of file marshal.c.
References obj_alloc_by_klass(), and path2class().
Referenced by r_object0().
Definition at line 1423 of file marshal.c.
References PRIsVALUE, rb_eArgError, rb_path_to_class(), rb_raise(), RB_TYPE_P, and T_CLASS.
Referenced by obj_alloc_by_path(), and r_object0().
|
static |
Definition at line 1078 of file marshal.c.
References load_arg::buflen, check_load_arg(), NIL_P, NUM2CHR, load_arg::offset, r_byte1_buffered(), rb_eof_error(), rb_funcall2, RB_TYPE_P, load_arg::readable, RSTRING_LEN, RSTRING_PTR, s_getbyte, load_arg::src, T_STRING, and too_short().
Referenced by marshal_load(), r_long(), r_object0(), and r_symbol().
|
static |
Definition at line 1057 of file marshal.c.
References load_arg::buf, load_arg::buflen, check_load_arg(), FL_TEST, load_arg::infection, LONG2NUM, MARSHAL_INFECTION, NIL_P, load_arg::offset, rb_funcall2, readable(), load_arg::readable, RSTRING_LEN, RSTRING_PTR, s_read, load_arg::src, StringValue, and too_short().
Referenced by r_byte().
Definition at line 1217 of file marshal.c.
References load_arg::buflen, load_arg::offset, r_bytes1(), r_bytes1_buffered(), rb_str_new(), RB_TYPE_P, load_arg::readable, RSTRING_LEN, RSTRING_PTR, load_arg::src, T_STRING, and too_short().
Referenced by r_object0().
Definition at line 1153 of file marshal.c.
References check_load_arg(), FL_TEST, load_arg::infection, LONG2NUM, MARSHAL_INFECTION, NIL_P, rb_funcall2, RSTRING_LEN, s_read, load_arg::src, StringValue, and too_short().
Referenced by r_bytes0().
Definition at line 1168 of file marshal.c.
References load_arg::buf, load_arg::buflen, check_load_arg(), FL_TEST, load_arg::infection, LONG2NUM, MARSHAL_INFECTION, NIL_P, load_arg::offset, rb_funcall2, rb_str_cat(), rb_str_new(), readable(), load_arg::readable, RSTRING_LEN, RSTRING_PTR, s_read, load_arg::src, StringValue, and too_short().
Referenced by r_bytes0().
Definition at line 1394 of file marshal.c.
References copy_ivar_i(), rb_ivar_foreach(), and st_data_t.
Referenced by r_object0().
|
static |
Definition at line 1328 of file marshal.c.
References load_arg::compat_tbl, load_arg::data, FL_SET, load_arg::infection, Qundef, RB_TYPE_P, st_data_t, st_insert(), st_lookup(), T_CLASS, and T_MODULE.
Referenced by r_object0().
Definition at line 1347 of file marshal.c.
References CLASS_OF, compat_allocator_tbl, load_arg::compat_tbl, key, marshal_compat_t::loader, rb_get_alloc_func(), st_data_t, st_delete(), and st_lookup().
Referenced by r_leave(), and r_object0().
Definition at line 1401 of file marshal.c.
References id2encidx(), r_long(), r_object(), r_symbol(), rb_enc_associate_index(), rb_ivar_set(), TRUE, and val.
Referenced by r_object0().
Definition at line 1375 of file marshal.c.
References r_fixup_compat(), and r_post_proc().
Referenced by r_object0().
|
static |
Definition at line 1120 of file marshal.c.
References long_toobig(), r_byte(), and SIGN_EXTEND_CHAR.
Referenced by r_ivar(), r_object0(), r_symlink(), and r_symreal().
Definition at line 1906 of file marshal.c.
References Qnil, and r_object0().
Referenced by marshal_load(), r_ivar(), r_object0(), and r_symreal().
Definition at line 1488 of file marshal.c.
References append_extmod(), check_load_arg(), CLASS_OF, compat_allocator_tbl, load_arg::data, DBL2NUM, FALSE, FL_SINGLETON, FL_TEST, id, ID2SYM, INFINITY, INTEGER_PACK_LITTLE_ENDIAN, INTEGER_PACK_NEGATIVE, key, link(), load_mantissa, marshal_compat_t::loader, LONG2FIX, must_be_module(), NAN, NIL_P, NULL, obj_alloc_by_klass(), obj_alloc_by_path(), options(), path2class(), path2module, PRIsVALUE, prohibit_ivar, Qfalse, Qnil, Qtrue, Qundef, r_byte(), r_bytes, r_bytes0(), r_copy_ivar(), r_entry, r_entry0(), r_fixup_compat(), r_ivar(), r_leave(), r_long(), r_object(), r_post_proc(), r_prepare(), r_string(), r_symbol(), r_symlink(), r_symreal(), r_unique(), RARRAY_AREF, RARRAY_LEN, rb_ary_clear(), rb_ary_new2, rb_ary_pop(), rb_ary_push(), rb_ary_tmp_new(), rb_class2name(), rb_class_inherited_p(), rb_class_name(), rb_eArgError, rb_eTypeError, rb_extend_object(), rb_funcall2, rb_get_alloc_func(), rb_hash_aset(), rb_hash_new(), rb_id2name(), rb_integer_unpack(), rb_obj_alloc(), rb_obj_respond_to(), rb_path_to_class(), rb_prepend_module(), rb_raise(), rb_reg_new_str(), rb_singleton_class(), rb_special_const_p(), rb_str_resize(), rb_str_set_len(), rb_struct_initialize(), rb_struct_s_members(), RB_TYPE_P, RBASIC, RBASIC_SET_CLASS, load_arg::readable, RHASH_SET_IFNONE, RSTRING_LEN, RSTRING_PTR, RTEST, s_load, s_load_data, s_mload, st_data_t, st_lookup(), strtod, SYM2ID, 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().
Definition at line 1365 of file marshal.c.
References check_load_arg(), load_arg::proc, rb_funcall(), and s_call.
Referenced by r_leave(), and r_object0().
|
static |
Definition at line 1048 of file marshal.c.
References load_arg::data, st_table::num_entries, Qundef, st_data_t, and st_insert().
Referenced by r_object0().
Definition at line 1294 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().
Definition at line 1258 of file marshal.c.
References id, r_long(), rb_eArgError, rb_raise(), st_data_t, st_lookup(), and load_arg::symbols.
Referenced by r_object0(), and r_symbol().
Definition at line 1270 of file marshal.c.
References id, id2encidx(), st_table::num_entries, r_bytes, r_long(), r_object(), r_symbol(), rb_enc_associate_index(), rb_enc_str_asciionly_p(), rb_intern_str, st_data_t, st_insert(), and load_arg::symbols.
Referenced by r_object0(), and r_symbol().
Definition at line 1316 of file marshal.c.
References r_symbol(), and rb_id2str().
Referenced by r_object0().
void rb_marshal_define_compat | ( | VALUE | newclass, |
VALUE | oldclass, | ||
VALUE(*)(VALUE) | dumper, | ||
VALUE(*)(VALUE, VALUE) | loader | ||
) |
Definition at line 115 of file marshal.c.
References ALLOC, compat_allocator_table(), 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(), st_data_t, and st_insert().
Referenced by Init_Complex(), Init_Encoding(), Init_Range(), Init_Rational(), and Init_vm_backtrace().
|
static |
Definition at line 1042 of file marshal.c.
References rb_eArgError, and rb_raise().
Referenced by r_byte(), r_byte1_buffered(), r_bytes0(), r_bytes1(), and r_bytes1_buffered().
|
static |
Definition at line 239 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().
Definition at line 245 of file marshal.c.
References w_long(), and w_nbyte().
Referenced by w_float(), w_object(), and w_symbol().
Definition at line 487 of file marshal.c.
References dump_call_arg::arg, class2path(), CLASS_OF, dump_arg::compat_tbl, dump_call_arg::obj, rb_class_real(), st_data_t, st_lookup(), type, w_byte(), w_extended(), and w_unique().
Referenced by w_object().
|
static |
Definition at line 531 of file marshal.c.
References dump_call_arg::arg, dump_arg::encodings, name, dump_call_arg::obj, 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_data_t, st_init_strcasetable(), st_insert(), st_lookup(), w_long(), w_object(), and w_symbol().
Referenced by w_ivar(), w_objivar(), and w_symbol().
Definition at line 468 of file marshal.c.
References dump_call_arg::arg, BUILTIN_TYPE, FL_SINGLETON, FL_TEST, rb_class_name(), rb_eTypeError, rb_raise(), RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, SINGLETON_DUMP_UNABLE_P, T_ICLASS, TYPE_EXTENDED, w_byte(), and w_unique().
Referenced by w_class(), and w_uclass().
|
static |
|
static |
Definition at line 568 of file marshal.c.
References dump_call_arg::arg, st_table::num_entries, dump_call_arg::obj, st_data_t, st_foreach_safe(), w_encoding(), and w_obj_each().
Referenced by w_object().
|
static |
Definition at line 261 of file marshal.c.
References buf, rb_eTypeError, rb_raise(), and w_byte().
Referenced by w_bytes(), w_encoding(), w_object(), and w_symbol().
Definition at line 227 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.
Definition at line 517 of file marshal.c.
References dump_call_arg::arg, key, rb_id_encoding(), rb_intern, ST_CONTINUE, val, w_object(), and w_symbol().
Referenced by w_ivar(), and w_objivar().
Definition at line 598 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, FLONUM_P, has_ivars, hash_each(), HASH_PROC_DEFAULT, dump_arg::infection, INT2NUM, dump_call_arg::limit, MARSHAL_INFECTION, NIL_P, st_table::num_entries, dump_call_arg::obj, Qfalse, Qnil, Qtrue, RARRAY_AREF, RARRAY_LEN, rb_builtin_type_name(), rb_cArray, rb_cHash, rb_cRegexp, rb_cString, rb_eArgError, rb_eRuntimeError, rb_eTypeError, rb_funcall2, RB_GC_GUARD, rb_get_alloc_func(), rb_hash_foreach(), rb_int2big(), rb_obj_classname(), rb_obj_respond_to(), rb_raise(), rb_reg_options(), rb_struct_members(), RB_TYPE_P, RBASIC, RBASIC_CLASS, RBIGNUM_DIGITS, RBIGNUM_LEN, RBIGNUM_SIGN, RFLOAT_VALUE, RHASH_IFNONE, RHASH_SIZE, RREGEXP_SRC_LEN, RREGEXP_SRC_PTR, RSTRING_LEN, RSTRING_PTR, RSTRUCT_GET, RSTRUCT_LEN, s_dump, s_dump_data, s_mdump, SHORTDN, SHORTLEN, SHORTMASK, SIZEOF_BDIGITS, st_add_direct(), st_data_t, 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_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 |
Definition at line 579 of file marshal.c.
References dump_call_arg::arg, dump_call_arg::obj, Qundef, rb_ivar_foreach(), ROBJECT_IVPTR, ROBJECT_NUMIV, st_data_t, w_encoding(), and w_obj_each().
Referenced by w_object().
|
static |
Definition at line 411 of file marshal.c.
References dump_call_arg::arg, ENC_CODERANGE_7BIT, dump_call_arg::limit, st_table::num_entries, PRIdVALUE, 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_data_t, st_lookup(), sym, 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().
Definition at line 504 of file marshal.c.
References dump_call_arg::arg, class2path(), CLASS_OF, dump_call_arg::obj, rb_class_real(), TRUE, TYPE_UCLASS, w_byte(), w_extended(), and w_unique().
Referenced by w_object().
Definition at line 447 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().
|
static |
Definition at line 93 of file marshal.c.
Referenced by compat_allocator_table(), obj_alloc_by_klass(), r_fixup_compat(), r_object0(), and w_object().
|
static |
Definition at line 94 of file marshal.c.
Referenced by compat_allocator_table().
|
static |
Definition at line 188 of file marshal.c.
Referenced by marshal_dump().
|
static |
Definition at line 1028 of file marshal.c.
Referenced by marshal_load().
|
static |
Definition at line 83 of file marshal.c.
Referenced by Init_marshal().
|
static |
Definition at line 84 of file marshal.c.
Referenced by Init_marshal(), marshal_dump(), and marshal_load().
|
static |
Definition at line 83 of file marshal.c.
Referenced by Init_marshal(), and r_post_proc().
|
static |
Definition at line 82 of file marshal.c.
Referenced by Init_marshal(), and w_object().
|
static |
Definition at line 83 of file marshal.c.
Referenced by Init_marshal(), and w_object().
|
static |
Definition at line 84 of file marshal.c.
Referenced by Init_marshal(), marshal_load(), and r_byte().
|
static |
Definition at line 82 of file marshal.c.
Referenced by Init_marshal(), and r_object0().
|
static |
Definition at line 83 of file marshal.c.
Referenced by Init_marshal(), and r_object0().
|
static |
Definition at line 82 of file marshal.c.
Referenced by Init_marshal(), and w_object().
|
static |
Definition at line 82 of file marshal.c.
Referenced by Init_marshal(), and r_object0().
|
static |
Definition at line 84 of file marshal.c.
Referenced by Init_marshal(), marshal_load(), r_byte1_buffered(), r_bytes1(), and r_bytes1_buffered().
|
static |
Definition at line 84 of file marshal.c.
Referenced by Init_marshal(), and marshal_dump().