ruby-internal 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ruby-internal-node-dump +1 -1
- data/bin/ruby-internal-obfuscate +1 -1
- data/ext/cached/ruby-1.8.4/internal/method/{method.h → internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.4/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.4/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +41 -41
- data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +288 -273
- data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.4/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.3/internal/method/method.h → ruby-1.8.5/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.5/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.5/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +45 -45
- data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +310 -295
- data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.5/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.5/internal/method/method.h → ruby-1.8.6/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.6/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.6/internal/node/global_entry.h +94 -0
- data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +48 -48
- data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +323 -308
- data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.6/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.8.6/internal/method/method.h → ruby-1.8.7/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.8.7/internal/module/getcfp.h +13 -0
- data/ext/cached/ruby-1.8.7/internal/node/global_entry.h +98 -0
- data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +42 -42
- data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +276 -261
- data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.8.7/internal/vm/iseq/iseq_load.inc +21 -2
- data/ext/cached/{ruby-1.9.0/internal/method/method.h → ruby-1.9.1/internal/method/internal_method.h} +12 -0
- data/ext/cached/ruby-1.9.1/internal/module/classpath.c +12 -14
- data/ext/cached/ruby-1.9.1/internal/module/getcfp.h +25 -0
- data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +86 -0
- data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +46 -48
- data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +311 -412
- data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.c +3 -0
- data/ext/cached/ruby-1.9.1/internal/vm/iseq/iseq_load.inc +28 -6
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/iseq.h +1 -0
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/parse.h +6 -6
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/revision.h +1 -1
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/version.h +6 -5
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_core.h +3 -2
- data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_insnhelper.h +1 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/binding/block.h +0 -0
- data/ext/cached/{ruby-1.9.1/internal/method/method.h → ruby-1.9.2/internal/method/internal_method.h} +16 -5
- data/ext/cached/ruby-1.9.2/internal/module/classpath.c +40 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/module/classpath.h +0 -0
- data/ext/cached/ruby-1.9.2/internal/module/getcfp.h +25 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/block.h +0 -0
- data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +93 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/node_type_descrip.c +44 -48
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.c +291 -439
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/proc/block.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/tag/tag.h +0 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.c +141 -64
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.h +88 -80
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/iseq/insns_info.inc +77 -70
- data/ext/cached/ruby-1.9.2/internal/vm/iseq/iseq_load.inc +426 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/debug.h +1 -1
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/dln.h +3 -3
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/encdb.h +18 -2
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/eval_intern.h +39 -28
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/gc.h +7 -5
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/id.h +170 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/iseq.h +20 -10
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/method.h +103 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/node.h +14 -47
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/parse.h +31 -148
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regenc.h +7 -3
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regint.h +16 -17
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regparse.h +4 -1
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/revision.h +1 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_pthread.h +4 -1
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_win32.h +1 -1
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/timev.h +21 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/transcode_data.h +20 -10
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/transdb.h +179 -0
- data/ext/cached/ruby-1.9.2/internal/yarv-headers/version.h +55 -0
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_core.h +127 -84
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_exec.h +4 -7
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_insnhelper.h +53 -36
- data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_opts.h +1 -1
- data/ext/cached/ruby-1.9.3/internal/binding/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/method/internal_method.h +32 -0
- data/ext/cached/ruby-1.9.3/internal/module/classpath.c +40 -0
- data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/module/classpath.h +5 -2
- data/ext/cached/ruby-1.9.3/internal/module/getcfp.h +25 -0
- data/ext/cached/ruby-1.9.3/internal/node/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +93 -0
- data/ext/cached/{ruby-1.8.3 → ruby-1.9.3}/internal/node/node_type_descrip.c +48 -57
- data/ext/cached/{ruby-1.6.8 → ruby-1.9.3}/internal/node/nodeinfo.c +589 -740
- data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/node/nodeinfo.h +4 -3
- data/ext/cached/ruby-1.9.3/internal/proc/block.h +12 -0
- data/ext/cached/ruby-1.9.3/internal/tag/tag.h +6 -0
- data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.c +6013 -0
- data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.h +899 -0
- data/ext/cached/ruby-1.9.3/internal/vm/iseq/insns_info.inc +707 -0
- data/ext/cached/ruby-1.9.3/internal/vm/iseq/iseq_load.inc +423 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/addr2line.h +21 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/atomic.h +56 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/constant.h +34 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/debug.h +41 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/dln.h +50 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/encdb.h +167 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/eval_intern.h +234 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/gc.h +98 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/id.h +175 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/internal.h +232 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/iseq.h +125 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/method.h +105 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/node.h +503 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/parse.h +186 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regenc.h +219 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regint.h +850 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/regparse.h +362 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/revision.h +1 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_pthread.h +51 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_win32.h +40 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/timev.h +21 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/transcode_data.h +117 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/transdb.h +189 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/version.h +52 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_core.h +756 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_exec.h +184 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_insnhelper.h +220 -0
- data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_opts.h +51 -0
- data/ext/internal/binding/block.h +20 -0
- data/ext/internal/method/internal_method.h +5 -38
- data/ext/internal/method/internal_method.h.rpp +0 -7
- data/ext/internal/method/method.c +52 -32
- data/ext/internal/module/classpath.c +18 -13
- data/ext/internal/module/classpath.h +3 -3
- data/ext/internal/module/extconf.rb +3 -2
- data/ext/internal/module/getcfp.h +13 -0
- data/ext/internal/module/getcfp.h.rpp +44 -0
- data/ext/internal/module/module.c +58 -21
- data/ext/internal/node/block.h +20 -0
- data/ext/internal/node/extconf.rb +2 -0
- data/ext/internal/node/global_entry.h +69 -13
- data/ext/internal/node/global_entry.h.rpp +11 -2
- data/ext/internal/node/node.c +30 -3
- data/ext/internal/node/node_type_descrip.c +47 -38
- data/ext/internal/node/nodeinfo.c +622 -306
- data/ext/internal/node/nodeinfo.h +1 -4
- data/ext/internal/proc/block.h +20 -0
- data/ext/internal/tag/tag.h +10 -0
- data/ext/internal/thread/thread.c +9 -3
- data/ext/internal/vm/extconf.rb +1 -0
- data/ext/internal/vm/instruction/insns_info.c +3 -5974
- data/ext/internal/vm/instruction/insns_info.h +0 -878
- data/ext/internal/vm/iseq/extconf.rb +1 -0
- data/ext/internal/vm/iseq/iseq.c +38 -4
- data/ext/internal/vm/iseq/iseq_load.inc.rpp +23 -5
- data/ext/internal/vm/vm.c +28 -0
- data/lib/internal/classtree.rb +28 -0
- data/lib/internal/debug.rb +10 -2
- data/lib/internal/method/as_code.rb +25 -0
- data/lib/internal/method/as_expression.rb +2 -3
- data/lib/internal/method/origin.rb +29 -0
- data/lib/internal/method/signature.rb +5 -300
- data/lib/internal/method/signature/argument.rb +102 -0
- data/lib/internal/method/signature/iseq.rb +52 -0
- data/lib/internal/method/signature/node.rb +160 -0
- data/lib/internal/method/signature/signature.rb +23 -0
- data/lib/internal/proc/as_code.rb +2 -0
- data/lib/internal/proc/as_expression.rb +2 -0
- data/lib/internal/vm/bytedecoder.rb +5 -5
- data/lib/internal/vm/iseq/as_code.rb +2 -2
- data/lib/internal/vm/iseq/as_expression.rb +2 -2
- data/test/test_dump_method.rb +1 -1
- data/test/test_method.rb +21 -3
- data/test/test_node.rb +20 -4
- metadata +152 -155
- data/ext/cached/ruby-1.6.8/internal/binding/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.6.8/internal/module/classpath.c +0 -3
- data/ext/cached/ruby-1.6.8/internal/module/classpath.h +0 -8
- data/ext/cached/ruby-1.6.8/internal/node/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/node/global_entry.h +0 -15
- data/ext/cached/ruby-1.6.8/internal/node/node_type_descrip.c +0 -149
- data/ext/cached/ruby-1.6.8/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.6.8/internal/proc/block.h +0 -35
- data/ext/cached/ruby-1.6.8/internal/tag/tag.h +0 -15
- data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.6.8/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.6.8/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.0/internal/binding/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.0/internal/module/classpath.c +0 -27
- data/ext/cached/ruby-1.8.0/internal/node/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.0/internal/node/node_type_descrip.c +0 -155
- data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.c +0 -5744
- data/ext/cached/ruby-1.8.0/internal/proc/block.h +0 -37
- data/ext/cached/ruby-1.8.0/internal/tag/tag.h +0 -15
- data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.0/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.0/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.1/internal/binding/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.1/internal/module/classpath.c +0 -27
- data/ext/cached/ruby-1.8.1/internal/module/classpath.h +0 -14
- data/ext/cached/ruby-1.8.1/internal/node/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.1/internal/node/node_type_descrip.c +0 -154
- data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.1/internal/proc/block.h +0 -31
- data/ext/cached/ruby-1.8.1/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.1/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.1/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.2/internal/binding/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/method/method.h +0 -19
- data/ext/cached/ruby-1.8.2/internal/module/classpath.c +0 -45
- data/ext/cached/ruby-1.8.2/internal/module/classpath.h +0 -17
- data/ext/cached/ruby-1.8.2/internal/node/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.2/internal/node/node_type_descrip.c +0 -154
- data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.2/internal/proc/block.h +0 -32
- data/ext/cached/ruby-1.8.2/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.2/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.2/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.3/internal/binding/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/module/classpath.c +0 -45
- data/ext/cached/ruby-1.8.3/internal/module/classpath.h +0 -17
- data/ext/cached/ruby-1.8.3/internal/node/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.c +0 -5736
- data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.h +0 -69
- data/ext/cached/ruby-1.8.3/internal/proc/block.h +0 -32
- data/ext/cached/ruby-1.8.3/internal/tag/tag.h +0 -16
- data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.c +0 -39
- data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.h +0 -21
- data/ext/cached/ruby-1.8.3/internal/vm/iseq/insns_info.inc +0 -12
- data/ext/cached/ruby-1.8.3/internal/vm/iseq/iseq_load.inc +0 -9
- data/ext/cached/ruby-1.8.7/internal/method/method.h +0 -20
- data/ext/cached/ruby-1.9.0/internal/module/classpath.c +0 -42
- data/ext/cached/ruby-1.9.0/internal/node/global_entry.h +0 -10
- data/ext/cached/ruby-1.9.0/internal/vm/iseq/iseq_load.inc +0 -13
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/id.h +0 -83
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/revision.h +0 -1
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/transdb.h +0 -67
- data/ext/cached/ruby-1.9.0/internal/yarv-headers/version.h +0 -57
- data/ext/internal/module/cfp.h +0 -13
@@ -7,6 +7,26 @@
|
|
7
7
|
#include "env.h"
|
8
8
|
#endif
|
9
9
|
|
10
|
+
struct BLOCK {
|
11
|
+
NODE *var;
|
12
|
+
NODE *body;
|
13
|
+
VALUE self;
|
14
|
+
struct FRAME frame;
|
15
|
+
struct SCOPE *scope;
|
16
|
+
VALUE klass;
|
17
|
+
NODE *cref;
|
18
|
+
int iter;
|
19
|
+
int vmode;
|
20
|
+
int flags;
|
21
|
+
int uniq;
|
22
|
+
struct RVarmap *dyna_vars;
|
23
|
+
VALUE orig_thread;
|
24
|
+
VALUE wrapper;
|
25
|
+
VALUE block_obj;
|
26
|
+
struct BLOCK *outer;
|
27
|
+
struct BLOCK *prev;
|
28
|
+
};
|
29
|
+
|
10
30
|
|
11
31
|
#endif
|
12
32
|
|
@@ -18,48 +18,15 @@
|
|
18
18
|
#endif
|
19
19
|
|
20
20
|
struct METHOD {
|
21
|
+
VALUE klass, rklass;
|
21
22
|
VALUE recv;
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
};
|
26
|
-
|
27
|
-
static void
|
28
|
-
bm_mark(void *ptr)
|
29
|
-
{
|
30
|
-
struct METHOD *data = ptr;
|
31
|
-
rb_gc_mark(data->rclass);
|
32
|
-
rb_gc_mark(data->recv);
|
33
|
-
rb_mark_method_entry(&data->me);
|
34
|
-
}
|
35
|
-
|
36
|
-
static void
|
37
|
-
bm_free(void *ptr)
|
38
|
-
{
|
39
|
-
struct METHOD *data = ptr;
|
40
|
-
rb_method_definition_t *def = data->me.def;
|
41
|
-
if (def->alias_count == 0)
|
42
|
-
xfree(def);
|
43
|
-
else if (def->alias_count > 0)
|
44
|
-
def->alias_count--;
|
45
|
-
xfree(ptr);
|
46
|
-
}
|
47
|
-
|
48
|
-
static size_t
|
49
|
-
bm_memsize(const void *ptr)
|
50
|
-
{
|
51
|
-
return ptr ? sizeof(struct METHOD) : 0;
|
52
|
-
}
|
53
|
-
|
54
|
-
static const rb_data_type_t method_data_type = {
|
55
|
-
"method",
|
56
|
-
bm_mark,
|
57
|
-
bm_free,
|
58
|
-
bm_memsize,
|
23
|
+
ID id, oid;
|
24
|
+
int safe_level;
|
25
|
+
NODE *body;
|
59
26
|
};
|
60
27
|
|
61
28
|
#define METHOD_OCLASS(m) m->klass
|
62
|
-
#define METHOD_RCLASS(m) m->
|
29
|
+
#define METHOD_RCLASS(m) m->rklass
|
63
30
|
|
64
31
|
#endif
|
65
32
|
|
@@ -38,13 +38,6 @@
|
|
38
38
|
when /^struct (METHOD)/
|
39
39
|
write = true
|
40
40
|
stopwrite = false
|
41
|
-
when /rb_data_type_t method_data_type = {/
|
42
|
-
write = true
|
43
|
-
stopwrite = false
|
44
|
-
when /^(bm_mark|bm_free|bm_memsize)/
|
45
|
-
puts prev_line
|
46
|
-
write = true
|
47
|
-
stopwrite = false
|
48
41
|
when /^\}/
|
49
42
|
stopwrite = true
|
50
43
|
when /VALUE oclass/
|
@@ -23,11 +23,33 @@ static VALUE rb_cUnboundMethod = Qnil;
|
|
23
23
|
#endif
|
24
24
|
|
25
25
|
#ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
|
26
|
+
|
26
27
|
# define UNWRAP_METHOD(method, m) \
|
27
|
-
TypedData_Get_Struct(method, struct METHOD,
|
28
|
+
TypedData_Get_Struct(method, struct METHOD, p_method_data_type, m);
|
29
|
+
|
30
|
+
static rb_data_type_t const * p_method_data_type;
|
31
|
+
|
32
|
+
static void init_method_data_type()
|
33
|
+
{
|
34
|
+
/* Create a METHOD object -- doesn't matter which method we use */
|
35
|
+
VALUE retval = rb_funcall(
|
36
|
+
rb_cObject, rb_intern("method"), 1, ID2SYM(rb_intern("__id__")));
|
37
|
+
p_method_data_type = RTYPEDDATA_TYPE(retval);
|
38
|
+
}
|
39
|
+
|
28
40
|
#else
|
41
|
+
|
29
42
|
# define UNWRAP_METHOD(method, m) \
|
30
43
|
Data_Get_Struct(method, struct METHOD, m)
|
44
|
+
|
45
|
+
#endif
|
46
|
+
|
47
|
+
#if RUBY_VERSION_CODE >= 193
|
48
|
+
# define METHOD_DEF(method) method->me->def
|
49
|
+
# define METHOD_KLASS(method) method->me->klass
|
50
|
+
#elif RUBY_VERSION_CODE >= 192
|
51
|
+
# define METHOD_DEF(method) method->me.def
|
52
|
+
# define METHOD_KLASS(method) method->me.klass
|
31
53
|
#endif
|
32
54
|
|
33
55
|
static VALUE rb_mMarshal;
|
@@ -99,10 +121,8 @@ static VALUE method_oid(VALUE method)
|
|
99
121
|
{
|
100
122
|
struct METHOD * m;
|
101
123
|
UNWRAP_METHOD(method, m);
|
102
|
-
#if RUBY_VERSION_CODE >=
|
103
|
-
return ID2SYM(m->
|
104
|
-
#elif RUBY_VERSION_CODE >= 192
|
105
|
-
return ID2SYM(m->me.def->original_id);
|
124
|
+
#if RUBY_VERSION_CODE >= 192
|
125
|
+
return ID2SYM(METHOD_DEF(m)->original_id);
|
106
126
|
#else
|
107
127
|
return ID2SYM(m->oid);
|
108
128
|
#endif
|
@@ -160,10 +180,8 @@ static VALUE method_body(VALUE method)
|
|
160
180
|
rb_raise(rb_eSecurityError, "Insecure: can't get method body");
|
161
181
|
}
|
162
182
|
UNWRAP_METHOD(method, m);
|
163
|
-
#if RUBY_VERSION_CODE >=
|
164
|
-
return m->
|
165
|
-
#elif RUBY_VERSION_CODE >= 192
|
166
|
-
return m->me.def->body.iseq->self; /* TODO: body is a union; is this right? */
|
183
|
+
#if RUBY_VERSION_CODE >= 192
|
184
|
+
return METHOD_DEF(m)->body.iseq->self; /* TODO: body is a union; is this right? */
|
167
185
|
#else
|
168
186
|
return wrap_node(m->body);
|
169
187
|
#endif
|
@@ -193,32 +211,30 @@ static VALUE method_dump(VALUE self, VALUE limit)
|
|
193
211
|
arr = rb_ary_new();
|
194
212
|
UNWRAP_METHOD(self, method);
|
195
213
|
#if RUBY_VERSION_CODE >= 193
|
196
|
-
rb_ary_push(arr, rb_mod_name(method->me->klass));
|
197
|
-
rb_ary_push(arr, Qnil); /* TODO */
|
214
|
+
rb_ary_push(arr, rb_mod_name(method->me->klass)); /* [0] */
|
215
|
+
rb_ary_push(arr, Qnil); /* TODO */ /* [1] */
|
198
216
|
#elif RUBY_VERSION_CODE >= 192
|
199
|
-
rb_ary_push(arr, rb_mod_name(method->me.klass));
|
200
|
-
rb_ary_push(arr, Qnil); /* TODO */
|
217
|
+
rb_ary_push(arr, rb_mod_name(method->me.klass)); /* [0] */
|
218
|
+
rb_ary_push(arr, Qnil); /* TODO */ /* [1] */
|
201
219
|
#else
|
202
|
-
rb_ary_push(arr, rb_mod_name(METHOD_OCLASS(method)));
|
203
|
-
rb_ary_push(arr, rb_mod_name(METHOD_RCLASS(method)));
|
220
|
+
rb_ary_push(arr, rb_mod_name(METHOD_OCLASS(method))); /* [2] */
|
221
|
+
rb_ary_push(arr, rb_mod_name(METHOD_RCLASS(method))); /* [3] */
|
204
222
|
#endif
|
205
223
|
if(rb_class_of(self) == rb_cUnboundMethod)
|
206
224
|
{
|
207
|
-
rb_ary_push(arr, Qnil);
|
225
|
+
rb_ary_push(arr, Qnil); /* [4] */
|
208
226
|
}
|
209
227
|
else
|
210
228
|
{
|
211
|
-
rb_ary_push(arr, method->recv);
|
229
|
+
rb_ary_push(arr, method->recv); /* [4] */
|
212
230
|
}
|
213
231
|
rb_ary_push(arr, ID2SYM(method->id));
|
214
|
-
#if RUBY_VERSION_CODE >=
|
215
|
-
rb_ary_push(arr, ID2SYM(method->
|
216
|
-
#elif RUBY_VERSION_CODE >= 192
|
217
|
-
rb_ary_push(arr, ID2SYM(method->me.def->original_id));
|
232
|
+
#if RUBY_VERSION_CODE >= 192
|
233
|
+
rb_ary_push(arr, ID2SYM(METHOD_DEF(method)->original_id)); /* [5] */
|
218
234
|
#else
|
219
|
-
rb_ary_push(arr, ID2SYM(method->oid));
|
235
|
+
rb_ary_push(arr, ID2SYM(method->oid)); /* [5] */
|
220
236
|
#endif
|
221
|
-
rb_ary_push(arr, method_body(self));
|
237
|
+
rb_ary_push(arr, method_body(self)); /* [6] */
|
222
238
|
|
223
239
|
return marshal_dump(arr, limit);
|
224
240
|
}
|
@@ -232,6 +248,7 @@ static VALUE method_dump(VALUE self, VALUE limit)
|
|
232
248
|
static VALUE method_load(VALUE klass, VALUE str)
|
233
249
|
{
|
234
250
|
struct METHOD * method;
|
251
|
+
|
235
252
|
VALUE rarr = marshal_load(str);
|
236
253
|
VALUE * arr;
|
237
254
|
VALUE retval;
|
@@ -253,17 +270,16 @@ static VALUE method_load(VALUE klass, VALUE str)
|
|
253
270
|
retval = rb_funcall(
|
254
271
|
rb_cObject, rb_intern("method"), 1, ID2SYM(rb_intern("__id__")));
|
255
272
|
UNWRAP_METHOD(retval, method);
|
273
|
+
|
256
274
|
arr = RARRAY_PTR(rarr);
|
257
|
-
#if RUBY_VERSION_CODE >=
|
258
|
-
method
|
259
|
-
rb_funcall(lookup_module_proc, rb_intern("call"), 1, arr[0]);
|
260
|
-
method->me->def->original_id = SYM2ID(arr[4]);
|
261
|
-
GetISeqPtr(arr[5], method->me->def->body.iseq);
|
262
|
-
#elif RUBY_VERSION_CODE >= 192
|
263
|
-
method->me.klass =
|
275
|
+
#if RUBY_VERSION_CODE >= 192
|
276
|
+
METHOD_KLASS(method) =
|
264
277
|
rb_funcall(lookup_module_proc, rb_intern("call"), 1, arr[0]);
|
265
|
-
method
|
266
|
-
|
278
|
+
METHOD_DEF(method) = xmalloc(sizeof(*METHOD_DEF(method)));
|
279
|
+
METHOD_DEF(method)->type = VM_METHOD_TYPE_ISEQ;
|
280
|
+
METHOD_DEF(method)->original_id = SYM2ID(arr[4]);
|
281
|
+
METHOD_DEF(method)->alias_count = 0;
|
282
|
+
GetISeqPtr(arr[5], METHOD_DEF(method)->body.iseq);
|
267
283
|
#else
|
268
284
|
METHOD_OCLASS(method) =
|
269
285
|
rb_funcall(lookup_module_proc, rb_intern("call"), 1, arr[0]);
|
@@ -321,5 +337,9 @@ void Init_method(void)
|
|
321
337
|
|
322
338
|
lookup_module_proc = rb_eval_string(lookup_module_str);
|
323
339
|
rb_global_variable(&lookup_module_proc);
|
340
|
+
|
341
|
+
#ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
|
342
|
+
init_method_data_type();
|
343
|
+
#endif
|
324
344
|
}
|
325
345
|
|
@@ -1,38 +1,43 @@
|
|
1
1
|
#include "classpath.h"
|
2
2
|
|
3
3
|
VALUE
|
4
|
-
class2path(
|
4
|
+
class2path(klass)
|
5
|
+
VALUE klass;
|
5
6
|
{
|
6
7
|
VALUE path = rb_class_path(klass);
|
7
|
-
|
8
|
+
char *n = RSTRING(path)->ptr;
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
if (n[0] == '#') {
|
11
|
+
rb_raise(rb_eTypeError, "can't dump anonymous %s %s",
|
12
|
+
(TYPE(klass) == T_CLASS ? "class" : "module"),
|
13
|
+
n);
|
14
|
+
}
|
15
|
+
if (rb_path2class(n) != rb_class_real(klass)) {
|
16
|
+
rb_raise(rb_eTypeError, "%s can't be referred", n);
|
12
17
|
}
|
13
18
|
return path;
|
14
19
|
}
|
15
20
|
|
16
21
|
VALUE
|
17
|
-
path2class(
|
22
|
+
path2class(path)
|
23
|
+
const char *path;
|
18
24
|
{
|
19
|
-
VALUE v =
|
25
|
+
VALUE v = rb_path2class(path);
|
20
26
|
|
21
27
|
if (TYPE(v) != T_CLASS) {
|
22
|
-
rb_raise(rb_eArgError, "
|
23
|
-
(int)RSTRING_LEN(path), RSTRING_PTR(path));
|
28
|
+
rb_raise(rb_eArgError, "%s does not refer class", path);
|
24
29
|
}
|
25
30
|
return v;
|
26
31
|
}
|
27
32
|
|
28
33
|
VALUE
|
29
|
-
path2module(
|
34
|
+
path2module(path)
|
35
|
+
const char *path;
|
30
36
|
{
|
31
|
-
VALUE v =
|
37
|
+
VALUE v = rb_path2class(path);
|
32
38
|
|
33
39
|
if (TYPE(v) != T_MODULE) {
|
34
|
-
rb_raise(rb_eArgError, "
|
35
|
-
(int)RSTRING_LEN(path), RSTRING_PTR(path));
|
40
|
+
rb_raise(rb_eArgError, "%s does not refer module", path);
|
36
41
|
}
|
37
42
|
return v;
|
38
43
|
}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
$: << '../..'
|
2
2
|
require 'mkmf-ruby-internal'
|
3
3
|
|
4
|
-
have_func('vm_get_ruby_level_cfp', [ 'cfp.h', 'vm_core.h' ])
|
5
|
-
have_func('rb_vm_get_ruby_level_next_cfp', [ 'cfp.h', 'vm_core.h' ])
|
6
4
|
have_header('ruby/node.h') or have_header('node.h')
|
5
|
+
have_header('internal.h')
|
7
6
|
have_struct_member('struct RClass', 'iv_index_tbl')
|
7
|
+
have_type('struct RTypedData')
|
8
|
+
have_func('rb_add_method')
|
8
9
|
|
9
10
|
ruby_version_code = RUBY_VERSION.gsub(/\./, '').to_i
|
10
11
|
$CPPFLAGS << " -DRUBY_VERSION_CODE=#{ruby_version_code}"
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#ifndef getcfp__h
|
2
|
+
#define getcfp__h
|
3
|
+
|
4
|
+
#include "ruby.h"
|
5
|
+
|
6
|
+
#ifdef RUBY_VM
|
7
|
+
|
8
|
+
#include "vm_core.h"
|
9
|
+
|
10
|
+
#ruby <<END
|
11
|
+
$: << '../..'
|
12
|
+
require 'ruby_source_dir'
|
13
|
+
|
14
|
+
vm_c_location = "#{RUBY_SOURCE_DIR}/vm.c"
|
15
|
+
if File.exists?(vm_c_location) then
|
16
|
+
File.open(vm_c_location) do |vm_c|
|
17
|
+
write = false
|
18
|
+
stopwrite = false
|
19
|
+
prev_line = nil
|
20
|
+
while (line = vm_c.gets) != nil do
|
21
|
+
case line
|
22
|
+
when /^(rb_vm_get_ruby_level_next_cfp|vm_get_ruby_level_cfp)/
|
23
|
+
puts "static #{prev_line}"
|
24
|
+
line.gsub!($1, 'getcfp')
|
25
|
+
write = true
|
26
|
+
stopwrite = false
|
27
|
+
when /^\}/
|
28
|
+
stopwrite = true if write
|
29
|
+
end
|
30
|
+
puts line if write
|
31
|
+
if stopwrite then
|
32
|
+
stopwrite = false
|
33
|
+
write = false
|
34
|
+
puts ''
|
35
|
+
end
|
36
|
+
prev_line = line
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
END
|
41
|
+
|
42
|
+
#endif
|
43
|
+
|
44
|
+
#endif
|
@@ -5,12 +5,16 @@
|
|
5
5
|
#include <ruby/st.h>
|
6
6
|
#include "vm_core.h"
|
7
7
|
#include "eval_intern.h"
|
8
|
-
#include "
|
8
|
+
#include "getcfp.h"
|
9
9
|
#else
|
10
10
|
#include <rubysig.h>
|
11
11
|
#include <st.h>
|
12
12
|
#endif
|
13
13
|
|
14
|
+
#ifdef HAVE_INTERNAL_H
|
15
|
+
#include "internal.h"
|
16
|
+
#endif
|
17
|
+
|
14
18
|
#ifndef RCLASS_SUPER
|
15
19
|
#define RCLASS_SUPER(c) RCLASS(c)->super
|
16
20
|
#endif
|
@@ -35,6 +39,22 @@
|
|
35
39
|
#define RARRAY_PTR(a) RARRAY(a)->ptr
|
36
40
|
#endif
|
37
41
|
|
42
|
+
#ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
|
43
|
+
|
44
|
+
# undef GetThreadPtr
|
45
|
+
# define GetThreadPtr(obj, ptr) \
|
46
|
+
TypedData_Get_Struct((obj), rb_thread_t, p_ruby_threadptr_data_type, (ptr))
|
47
|
+
|
48
|
+
static rb_data_type_t const * p_ruby_threadptr_data_type;
|
49
|
+
|
50
|
+
static void init_ruby_threadptr_data_type()
|
51
|
+
{
|
52
|
+
VALUE thread = rb_thread_current();
|
53
|
+
p_ruby_threadptr_data_type = RTYPEDDATA_TYPE(thread);
|
54
|
+
}
|
55
|
+
|
56
|
+
#endif
|
57
|
+
|
38
58
|
static VALUE rb_cNode;
|
39
59
|
|
40
60
|
static VALUE rb_mMarshal;
|
@@ -145,7 +165,7 @@ static VALUE class_restorer_dump(VALUE ruby_class_restorer, VALUE limit)
|
|
145
165
|
|
146
166
|
/*
|
147
167
|
* call-seq:
|
148
|
-
*
|
168
|
+
* Internal::ClassRestorer.load => ClassRestorer
|
149
169
|
*
|
150
170
|
* Do not call this function.
|
151
171
|
*/
|
@@ -170,7 +190,7 @@ static VALUE ruby180_marshal_dump(int argc, VALUE * argv, VALUE klass)
|
|
170
190
|
set_class_restore_state(argv[0]);
|
171
191
|
}
|
172
192
|
|
173
|
-
VALUE str = rb_funcall2(klass, rb_intern("
|
193
|
+
VALUE str = rb_funcall2(klass, rb_intern("_Internal__orig_dump"), argc, argv);
|
174
194
|
|
175
195
|
if(class_restorer != Qnil)
|
176
196
|
{
|
@@ -342,14 +362,12 @@ static VALUE module_name_proc = Qnil;
|
|
342
362
|
|
343
363
|
static void set_cref_stack(rb_iseq_t * iseqdat, VALUE klass, VALUE noex)
|
344
364
|
{
|
345
|
-
|
346
|
-
|
347
|
-
rb_control_frame_t * cfp
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
#error No function to get cfp
|
352
|
-
#endif
|
365
|
+
VALUE thread = rb_thread_current();
|
366
|
+
rb_thread_t * th;
|
367
|
+
rb_control_frame_t * cfp;
|
368
|
+
|
369
|
+
GetThreadPtr(thread, th);
|
370
|
+
cfp = getcfp(th, th->cfp);
|
353
371
|
iseqdat->cref_stack = NEW_BLOCK(klass);
|
354
372
|
iseqdat->cref_stack->nd_visi = noex;
|
355
373
|
iseqdat->cref_stack->nd_next = cfp->iseq->cref_stack; /* TODO: use lfp? */
|
@@ -396,13 +414,27 @@ static VALUE module_add_method(VALUE klass, VALUE id, VALUE node, VALUE noex)
|
|
396
414
|
}
|
397
415
|
|
398
416
|
#if RUBY_VERSION_CODE >= 192
|
399
|
-
|
417
|
+
if(rb_obj_is_kind_of(node, rb_cISeq))
|
418
|
+
{
|
419
|
+
rb_iseq_t *iseqdat = iseq_check(node);
|
420
|
+
set_cref_stack(iseqdat, klass, noex);
|
421
|
+
iseqdat->klass = klass;
|
422
|
+
iseqdat->defined_method_id = SYM2ID(id);
|
423
|
+
|
424
|
+
#ifdef HAVE_RB_ADD_METHOD
|
425
|
+
rb_add_method(klass, SYM2ID(id), VM_METHOD_TYPE_ISEQ, iseqdat, NUM2INT(noex));
|
426
|
+
#else
|
427
|
+
rb_funcall(rb_mRubyVMFrozenCore, rb_intern("core#define_method"), 3, klass, id, node); /* TODO: noex */
|
428
|
+
#endif
|
429
|
+
|
430
|
+
return Qnil;
|
431
|
+
}
|
432
|
+
|
400
433
|
#elif RUBY_VERSION_CODE >= 190
|
401
434
|
if(rb_obj_is_kind_of(node, rb_cISeq))
|
402
435
|
{
|
403
436
|
rb_iseq_t *iseqdat = iseq_check(node);
|
404
|
-
/* TODO: any restrictions on what kinds of iseqs we can add here?
|
405
|
-
*/
|
437
|
+
/* TODO: any restrictions on what kinds of iseqs we can add here? */
|
406
438
|
set_cref_stack(iseqdat, klass, noex);
|
407
439
|
iseqdat->klass = klass;
|
408
440
|
iseqdat->defined_method_id = SYM2ID(id);
|
@@ -422,7 +454,7 @@ static VALUE module_add_method(VALUE klass, VALUE id, VALUE node, VALUE noex)
|
|
422
454
|
Data_Get_Struct(node, NODE, n);
|
423
455
|
|
424
456
|
#if RUBY_VERSION_CODE >= 192
|
425
|
-
rb_raise(rb_eRuntimeError, "
|
457
|
+
rb_raise(rb_eRuntimeError, "Unable to add node on this version of ruby");
|
426
458
|
#elif RUBY_VERSION_CODE >= 190
|
427
459
|
if(nd_type(n) != NODE_METHOD)
|
428
460
|
{
|
@@ -441,10 +473,11 @@ static VALUE module_add_method(VALUE klass, VALUE id, VALUE node, VALUE noex)
|
|
441
473
|
}
|
442
474
|
|
443
475
|
add_node:
|
476
|
+
|
444
477
|
#endif
|
445
478
|
|
446
479
|
#if RUBY_VERSION_CODE >= 192
|
447
|
-
rb_raise(rb_eRuntimeError, "
|
480
|
+
rb_raise(rb_eRuntimeError, "Unable to add node on this version of ruby");
|
448
481
|
#else
|
449
482
|
/* TODO: if noex is NOEX_MODFUNC, add this method as a module function
|
450
483
|
* (that is, both as an instance and singleton method)
|
@@ -477,7 +510,7 @@ static VALUE module_uninclude(int argc, VALUE * argv, VALUE module)
|
|
477
510
|
* call-seq:
|
478
511
|
* remove_features(mod) => mod
|
479
512
|
*
|
480
|
-
* When this module is unincluded from another,
|
513
|
+
* When this module is unincluded from another, Ruby Internal calls
|
481
514
|
* remove_features in this module. The default behavior is to remove
|
482
515
|
* the constants, methods, and module variables of this module from
|
483
516
|
* _mod_. If this module has not been included by _mod_, an exception
|
@@ -653,7 +686,7 @@ static int add_method_iter(VALUE name, VALUE value, VALUE module)
|
|
653
686
|
Data_Get_Struct(value, NODE, n);
|
654
687
|
#if RUBY_VERSION_CODE >= 192
|
655
688
|
rb_raise(rb_eRuntimeError, "NOT SUPPORTED");
|
656
|
-
#
|
689
|
+
#else
|
657
690
|
rb_add_method(module, SYM2ID(name), n->nd_body, n->nd_noex);
|
658
691
|
#endif
|
659
692
|
return ST_CONTINUE;
|
@@ -795,19 +828,23 @@ void Init_module(void)
|
|
795
828
|
|
796
829
|
#if RUBY_VERSION_CODE >= 180
|
797
830
|
{
|
798
|
-
VALUE
|
799
|
-
rb_cClass_Restorer = rb_define_class_under(
|
831
|
+
VALUE rb_mInternal = rb_define_module("Internal");
|
832
|
+
rb_cClass_Restorer = rb_define_class_under(rb_mInternal, "ClassRestorer", rb_cObject);
|
800
833
|
rb_define_method(rb_cClass_Restorer, "_dump", class_restorer_dump, 1);
|
801
834
|
rb_define_singleton_method(rb_cClass_Restorer, "_load", class_restorer_load, 1);
|
802
835
|
}
|
803
836
|
#endif
|
804
837
|
|
805
838
|
#if RUBY_VERSION_CODE == 180
|
806
|
-
rb_alias(CLASS_OF(rb_mMarshal), rb_intern("
|
839
|
+
rb_alias(CLASS_OF(rb_mMarshal), rb_intern("_Internal__orig_dump"), rb_intern("dump"));
|
807
840
|
rb_define_singleton_method(rb_mMarshal, "dump", ruby180_marshal_dump, -1);
|
808
841
|
#endif
|
809
842
|
|
810
843
|
rb_define_method(rb_cModule, "_dump", module_dump, 1);
|
811
844
|
rb_define_singleton_method(rb_cModule, "_load", module_load, 1);
|
845
|
+
|
846
|
+
#ifdef HAVE_TYPE_STRUCT_RTYPEDDATA
|
847
|
+
init_ruby_threadptr_data_type();
|
848
|
+
#endif
|
812
849
|
}
|
813
850
|
|