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
@@ -1,35 +0,0 @@
|
|
1
|
-
#ifndef ruby_internal_block__h_
|
2
|
-
#define ruby_internal_block__h_
|
3
|
-
|
4
|
-
#include <ruby.h>
|
5
|
-
|
6
|
-
#ifndef RUBY_VM
|
7
|
-
#include "env.h"
|
8
|
-
#endif
|
9
|
-
|
10
|
-
struct BLOCKTAG {
|
11
|
-
struct RBasic super;
|
12
|
-
long dst;
|
13
|
-
long flags;
|
14
|
-
};
|
15
|
-
|
16
|
-
struct BLOCK {
|
17
|
-
NODE *var;
|
18
|
-
NODE *body;
|
19
|
-
VALUE self;
|
20
|
-
struct FRAME frame;
|
21
|
-
struct SCOPE *scope;
|
22
|
-
struct BLOCKTAG *tag;
|
23
|
-
VALUE klass;
|
24
|
-
int iter;
|
25
|
-
int vmode;
|
26
|
-
int flags;
|
27
|
-
struct RVarmap *dyna_vars;
|
28
|
-
VALUE orig_thread;
|
29
|
-
VALUE wrapper;
|
30
|
-
struct BLOCK *prev;
|
31
|
-
};
|
32
|
-
|
33
|
-
|
34
|
-
#endif
|
35
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
#ifndef ruby_internal_method__h_
|
2
|
-
#define ruby_internal_method__h_
|
3
|
-
|
4
|
-
#include <ruby.h>
|
5
|
-
|
6
|
-
#include "internal/node/ruby_internal_node.h"
|
7
|
-
|
8
|
-
struct METHOD {
|
9
|
-
VALUE klass, oklass;
|
10
|
-
VALUE recv;
|
11
|
-
ID id, oid;
|
12
|
-
NODE *body;
|
13
|
-
};
|
14
|
-
|
15
|
-
#define METHOD_OCLASS(m) m->klass
|
16
|
-
#define METHOD_RCLASS(m) m->klass
|
17
|
-
|
18
|
-
#endif
|
19
|
-
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#ifndef ruby_internal_block__h_
|
2
|
-
#define ruby_internal_block__h_
|
3
|
-
|
4
|
-
#include <ruby.h>
|
5
|
-
|
6
|
-
#ifndef RUBY_VM
|
7
|
-
#include "env.h"
|
8
|
-
#endif
|
9
|
-
|
10
|
-
struct BLOCKTAG {
|
11
|
-
struct RBasic super;
|
12
|
-
long dst;
|
13
|
-
long flags;
|
14
|
-
};
|
15
|
-
|
16
|
-
struct BLOCK {
|
17
|
-
NODE *var;
|
18
|
-
NODE *body;
|
19
|
-
VALUE self;
|
20
|
-
struct FRAME frame;
|
21
|
-
struct SCOPE *scope;
|
22
|
-
struct BLOCKTAG *tag;
|
23
|
-
VALUE klass;
|
24
|
-
int iter;
|
25
|
-
int vmode;
|
26
|
-
int flags;
|
27
|
-
struct RVarmap *dyna_vars;
|
28
|
-
VALUE orig_thread;
|
29
|
-
VALUE wrapper;
|
30
|
-
struct BLOCK *prev;
|
31
|
-
};
|
32
|
-
|
33
|
-
|
34
|
-
#endif
|
35
|
-
|
@@ -1,149 +0,0 @@
|
|
1
|
-
#include "node_type_descrip.h"
|
2
|
-
#include "version.h"
|
3
|
-
|
4
|
-
Node_Type_Descrip node_type_descrips_unsorted[] = {
|
5
|
-
{ NODE_ALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "ALIAS" },
|
6
|
-
#ifdef HAVE_NODE_ALLOCA
|
7
|
-
{ NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "ALLOCA" },
|
8
|
-
#endif
|
9
|
-
{ NODE_AND, NEN_1ST, NEN_2ND, NEN_NONE, "AND" },
|
10
|
-
{ NODE_ARGS, NEN_REST, NEN_OPT, NEN_CNT, "ARGS" },
|
11
|
-
{ NODE_ARGSCAT, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSCAT" },
|
12
|
-
{ NODE_ARGSPUSH, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSPUSH" },
|
13
|
-
{ NODE_ARRAY, NEN_HEAD, NEN_ALEN, NEN_NEXT, "ARRAY" },
|
14
|
-
{ NODE_ATTRSET, NEN_VID, NEN_NONE, NEN_NONE, "ATTRSET" },
|
15
|
-
{ NODE_BACK_REF, NEN_NTH, NEN_CNT, NEN_NONE, "BACK_REF" },
|
16
|
-
{ NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
|
17
|
-
{ NODE_BLOCK, NEN_HEAD, NEN_NEXT, NEN_NONE, "BLOCK" },
|
18
|
-
{ NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
|
19
|
-
{ NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
|
20
|
-
{ NODE_BMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "BMETHOD" },
|
21
|
-
{ NODE_BREAK, NEN_STTS, NEN_NONE, NEN_NONE, "BREAK" },
|
22
|
-
{ NODE_CALL, NEN_ARGS, NEN_MID, NEN_RECV, "CALL" },
|
23
|
-
{ NODE_CASE, NEN_HEAD, NEN_BODY, NEN_NEXT, "CASE" },
|
24
|
-
{ NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
|
25
|
-
{ NODE_CFUNC, NEN_CFNC, NEN_ARGC, NEN_NONE, "CFUNC" },
|
26
|
-
{ NODE_CLASS, NEN_BODY, NEN_CNAME, NEN_SUPER, "CLASS" },
|
27
|
-
{ NODE_COLON2, NEN_HEAD, NEN_MID, NEN_NONE, "COLON2" },
|
28
|
-
{ NODE_COLON3, NEN_MID, NEN_NONE, NEN_NONE, "COLON3" },
|
29
|
-
{ NODE_CONST, NEN_VID, NEN_NONE, NEN_NONE, "CONST" },
|
30
|
-
{ NODE_CREF, NEN_BODY, NEN_NEXT, NEN_CLSS, "CREF" },
|
31
|
-
{ NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
|
32
|
-
{ NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
|
33
|
-
{ NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
|
34
|
-
{ NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
|
35
|
-
{ NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
|
36
|
-
{ NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
|
37
|
-
{ NODE_DEFN, NEN_DEFN, NEN_MID, NEN_NOEX, "DEFN" },
|
38
|
-
{ NODE_DEFS, NEN_DEFN, NEN_MID, NEN_RECV, "DEFS" },
|
39
|
-
{ NODE_DMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "DMETHOD" },
|
40
|
-
{ NODE_DOT2, NEN_BEG, NEN_END, NEN_STATE, "DOT2" },
|
41
|
-
{ NODE_DOT3, NEN_BEG, NEN_END, NEN_STATE, "DOT3" },
|
42
|
-
{ NODE_DREGX, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX" },
|
43
|
-
{ NODE_DREGX_ONCE, NEN_LIT, NEN_CFLAG, NEN_NEXT, "DREGX_ONCE" },
|
44
|
-
{ NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
|
45
|
-
{ NODE_DVAR, NEN_VID, NEN_NONE, NEN_NONE, "DVAR" },
|
46
|
-
{ NODE_DXSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DXSTR" },
|
47
|
-
{ NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
|
48
|
-
{ NODE_EVSTR, NEN_LIT, NEN_NONE, NEN_NONE, "EVSTR" },
|
49
|
-
{ NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
|
50
|
-
{ NODE_FBODY, NEN_HEAD, NEN_ORIG, NEN_MID, "FBODY" },
|
51
|
-
{ NODE_FCALL, NEN_ARGS, NEN_MID, NEN_NONE, "FCALL" },
|
52
|
-
{ NODE_FLIP2, NEN_BEG, NEN_END, NEN_CNT, "FLIP2" },
|
53
|
-
{ NODE_FLIP3, NEN_BEG, NEN_END, NEN_CNT, "FLIP3" },
|
54
|
-
{ NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
|
55
|
-
{ NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
|
56
|
-
{ NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
|
57
|
-
{ NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
|
58
|
-
{ NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
|
59
|
-
{ NODE_IF, NEN_COND, NEN_BODY, NEN_ELSE, "IF" },
|
60
|
-
{ NODE_IFUNC, NEN_CFNC, NEN_TVAL, NEN_STATE, "IFUNC" },
|
61
|
-
{ NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
|
62
|
-
{ NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
|
63
|
-
{ NODE_LASGN, NEN_VALUE, NEN_VID, NEN_CNT, "LASGN" },
|
64
|
-
{ NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
|
65
|
-
{ NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
|
66
|
-
{ NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
|
67
|
-
{ NODE_MATCH, NEN_HEAD, NEN_VALUE, NEN_NONE, "MATCH" },
|
68
|
-
{ NODE_MATCH2, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH2" },
|
69
|
-
{ NODE_MATCH3, NEN_VALUE, NEN_RECV, NEN_NONE, "MATCH3" },
|
70
|
-
{ NODE_MEMO, NEN_NONE, NEN_NONE, NEN_NONE, "MEMO" },
|
71
|
-
{ NODE_METHOD, NEN_BODY, NEN_NOEX, NEN_NONE, "METHOD" },
|
72
|
-
{ NODE_MODULE, NEN_BODY, NEN_CNAME, NEN_NONE, "MODULE" },
|
73
|
-
{ NODE_NEWLINE, NEN_NEXT, NEN_NONE, NEN_NONE, "NEWLINE" },
|
74
|
-
{ NODE_NEXT, NEN_STTS, NEN_NONE, NEN_NONE, "NEXT" },
|
75
|
-
{ NODE_NIL, NEN_NONE, NEN_NONE, NEN_NONE, "NIL" },
|
76
|
-
{ NODE_NOT, NEN_BODY, NEN_NONE, NEN_NONE, "NOT" },
|
77
|
-
{ NODE_NTH_REF, NEN_NTH, NEN_CNT, NEN_NONE, "NTH_REF" },
|
78
|
-
{ NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
|
79
|
-
{ NODE_OP_ASGN1, NEN_ARGS, NEN_MID, NEN_RECV, "OP_ASGN1" },
|
80
|
-
{ NODE_OP_ASGN2, NEN_VALUE, NEN_NEXT, NEN_RECV, "OP_ASGN2" },
|
81
|
-
{ NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID, NEN_MID, "OP_ASGN2_ARG" },
|
82
|
-
{ NODE_OP_ASGN_AND, NEN_VALUE, NEN_RECV, NEN_NONE, "OP_ASGN_AND" },
|
83
|
-
{ NODE_OP_ASGN_OR, NEN_AID, NEN_VALUE, NEN_RECV, "OP_ASGN_OR" },
|
84
|
-
{ NODE_OR, NEN_1ST, NEN_2ND, NEN_NONE, "OR" },
|
85
|
-
{ NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
|
86
|
-
{ NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
|
87
|
-
{ NODE_RESBODY, NEN_HEAD, NEN_ARGS, NEN_BODY, "RESBODY" },
|
88
|
-
{ NODE_RESCUE, NEN_HEAD, NEN_ELSE, NEN_RESQ, "RESCUE" },
|
89
|
-
{ NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
|
90
|
-
{ NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
|
91
|
-
{ NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
|
92
|
-
{ NODE_SCOPE, NEN_TBL, NEN_RVAL, NEN_NEXT, "SCOPE" },
|
93
|
-
{ NODE_SELF, NEN_NONE, NEN_NONE, NEN_NONE, "SELF" },
|
94
|
-
{ NODE_STR, NEN_LIT, NEN_NONE, NEN_NONE, "STR" },
|
95
|
-
{ NODE_SUPER, NEN_ARGS, NEN_NONE, NEN_NONE, "SUPER" },
|
96
|
-
{ NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
|
97
|
-
{ NODE_UNDEF, NEN_MID, NEN_NONE, NEN_NONE, "UNDEF" },
|
98
|
-
{ NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
|
99
|
-
{ NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
|
100
|
-
{ NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
|
101
|
-
{ NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
|
102
|
-
{ NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
|
103
|
-
{ NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
|
104
|
-
{ NODE_YIELD, NEN_HEAD, NEN_STATE, NEN_NONE, "YIELD" },
|
105
|
-
{ NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
|
106
|
-
{ NODE_ZSUPER, NEN_NONE, NEN_NONE, NEN_NONE, "ZSUPER" },
|
107
|
-
{ NODE_LAST, NEN_NONE, NEN_NONE, NEN_NONE, "LAST" },
|
108
|
-
};
|
109
|
-
|
110
|
-
static Node_Type_Descrip * node_type_descrips[NUM_NODE_TYPE_DESCRIPS];
|
111
|
-
static int node_type_descrips_initialized = 0;
|
112
|
-
|
113
|
-
static void init_node_type_descrips()
|
114
|
-
{
|
115
|
-
if(!node_type_descrips_initialized)
|
116
|
-
{
|
117
|
-
Node_Type_Descrip * descrip;
|
118
|
-
memset(node_type_descrips, 0, sizeof(node_type_descrips));
|
119
|
-
for(descrip = node_type_descrips_unsorted;
|
120
|
-
descrip->nt != NODE_LAST;
|
121
|
-
++descrip)
|
122
|
-
{
|
123
|
-
if(node_type_descrips[descrip->nt])
|
124
|
-
{
|
125
|
-
rb_raise(rb_eRuntimeError, "duplicate entry for node type %d (%s is also %s)\n", descrip->nt, descrip->name, node_type_descrips[descrip->nt]->name);
|
126
|
-
}
|
127
|
-
else
|
128
|
-
{
|
129
|
-
node_type_descrips[descrip->nt] = descrip;
|
130
|
-
}
|
131
|
-
}
|
132
|
-
node_type_descrips_initialized = 1;
|
133
|
-
}
|
134
|
-
}
|
135
|
-
|
136
|
-
/* Given a node, find out the types of the three elements it contains */
|
137
|
-
Node_Type_Descrip const * node_type_descrip(enum node_type nt)
|
138
|
-
{
|
139
|
-
init_node_type_descrips();
|
140
|
-
if(node_type_descrips[nt])
|
141
|
-
{
|
142
|
-
return node_type_descrips[nt];
|
143
|
-
}
|
144
|
-
else
|
145
|
-
{
|
146
|
-
rb_raise(rb_eArgError, "Unknown node type %d", nt);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
|
@@ -1,69 +0,0 @@
|
|
1
|
-
#ifndef nodeinfo_h
|
2
|
-
#define nodeinfo_h
|
3
|
-
|
4
|
-
#include "ruby_internal_node.h"
|
5
|
-
|
6
|
-
#include "ruby.h"
|
7
|
-
|
8
|
-
enum Node_Elem_Name
|
9
|
-
{
|
10
|
-
NEN_NONE,
|
11
|
-
NEN_1ST,
|
12
|
-
NEN_2ND,
|
13
|
-
NEN_AID,
|
14
|
-
NEN_ALEN,
|
15
|
-
NEN_ARGC,
|
16
|
-
NEN_ARGS,
|
17
|
-
NEN_BEG,
|
18
|
-
NEN_BODY,
|
19
|
-
NEN_CFLAG,
|
20
|
-
NEN_CFNC,
|
21
|
-
NEN_CLSS,
|
22
|
-
NEN_CNAME,
|
23
|
-
NEN_CNT,
|
24
|
-
NEN_COND,
|
25
|
-
NEN_CVAL,
|
26
|
-
NEN_DEFN,
|
27
|
-
NEN_ELSE,
|
28
|
-
NEN_END,
|
29
|
-
NEN_ENSR,
|
30
|
-
NEN_ENTRY,
|
31
|
-
NEN_FRML,
|
32
|
-
NEN_HEAD,
|
33
|
-
NEN_IBDY,
|
34
|
-
NEN_ITER,
|
35
|
-
NEN_LIT,
|
36
|
-
NEN_MID,
|
37
|
-
NEN_MODL,
|
38
|
-
NEN_NEW,
|
39
|
-
NEN_NEXT,
|
40
|
-
NEN_NOEX,
|
41
|
-
NEN_NTH,
|
42
|
-
NEN_OLD,
|
43
|
-
NEN_OPT,
|
44
|
-
NEN_ORIG,
|
45
|
-
NEN_RECV,
|
46
|
-
NEN_RESQ,
|
47
|
-
NEN_REST,
|
48
|
-
NEN_RVAL,
|
49
|
-
NEN_STATE,
|
50
|
-
NEN_STTS,
|
51
|
-
NEN_SUPER,
|
52
|
-
NEN_TAG,
|
53
|
-
NEN_TBL,
|
54
|
-
NEN_TVAL,
|
55
|
-
NEN_VALUE,
|
56
|
-
NEN_VAR,
|
57
|
-
NEN_VID,
|
58
|
-
};
|
59
|
-
|
60
|
-
VALUE dump_node_elem(enum Node_Elem_Name nen, NODE * n, VALUE node_hash);
|
61
|
-
void load_node_elem(enum Node_Elem_Name nen, VALUE v, NODE * n, VALUE node_hash, VALUE id_hash);
|
62
|
-
VALUE node_s_members(VALUE klass);
|
63
|
-
void define_node_subclass_methods();
|
64
|
-
|
65
|
-
#define NODE_OP_ASGN2_ARG NODE_LAST + 1
|
66
|
-
#define NUM_NODE_TYPE_DESCRIPS NODE_OP_ASGN2_ARG + 1
|
67
|
-
|
68
|
-
#endif
|
69
|
-
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#ifndef ruby_internal_block__h_
|
2
|
-
#define ruby_internal_block__h_
|
3
|
-
|
4
|
-
#include <ruby.h>
|
5
|
-
|
6
|
-
#ifndef RUBY_VM
|
7
|
-
#include "env.h"
|
8
|
-
#endif
|
9
|
-
|
10
|
-
struct BLOCKTAG {
|
11
|
-
struct RBasic super;
|
12
|
-
long dst;
|
13
|
-
long flags;
|
14
|
-
};
|
15
|
-
|
16
|
-
struct BLOCK {
|
17
|
-
NODE *var;
|
18
|
-
NODE *body;
|
19
|
-
VALUE self;
|
20
|
-
struct FRAME frame;
|
21
|
-
struct SCOPE *scope;
|
22
|
-
struct BLOCKTAG *tag;
|
23
|
-
VALUE klass;
|
24
|
-
int iter;
|
25
|
-
int vmode;
|
26
|
-
int flags;
|
27
|
-
struct RVarmap *dyna_vars;
|
28
|
-
VALUE orig_thread;
|
29
|
-
VALUE wrapper;
|
30
|
-
struct BLOCK *prev;
|
31
|
-
};
|
32
|
-
|
33
|
-
|
34
|
-
#endif
|
35
|
-
|
@@ -1,15 +0,0 @@
|
|
1
|
-
#include <ruby.h>
|
2
|
-
|
3
|
-
#ifdef RUBY_VM
|
4
|
-
#include "eval_intern.h"
|
5
|
-
#endif
|
6
|
-
|
7
|
-
#define TAG_RETURN 0x1
|
8
|
-
#define TAG_BREAK 0x2
|
9
|
-
#define TAG_NEXT 0x3
|
10
|
-
#define TAG_RETRY 0x4
|
11
|
-
#define TAG_REDO 0x5
|
12
|
-
#define TAG_RAISE 0x6
|
13
|
-
#define TAG_THROW 0x7
|
14
|
-
#define TAG_FATAL 0x8
|
15
|
-
#define TAG_MASK 0xf
|
@@ -1,39 +0,0 @@
|
|
1
|
-
#include "insns_info.h"
|
2
|
-
|
3
|
-
#ifdef RUBY_VM
|
4
|
-
|
5
|
-
|
6
|
-
VALUE instruction_class[VM_INSTRUCTION_SIZE];
|
7
|
-
|
8
|
-
static ID operand_type_name_of(int operand_type)
|
9
|
-
{
|
10
|
-
char const * retval = "????";
|
11
|
-
|
12
|
-
switch(operand_type)
|
13
|
-
{
|
14
|
-
case TS_ISEQ: retval = "iseq"; break;
|
15
|
-
case TS_GENTRY: retval = "gentry"; break;
|
16
|
-
case TS_OFFSET: retval = "operand"; break;
|
17
|
-
case TS_DINDEX: retval = "dindex"; break;
|
18
|
-
case TS_VARIABLE: retval = "variable"; break;
|
19
|
-
case TS_CDHASH: retval = "cdhash"; break;
|
20
|
-
case TS_IC: retval = "ic"; break;
|
21
|
-
case TS_ID: retval = "id"; break;
|
22
|
-
case TS_VALUE: retval = "value"; break;
|
23
|
-
case TS_LINDEX: retval = "lindex"; break;
|
24
|
-
case TS_NUM: retval = "num"; break;
|
25
|
-
}
|
26
|
-
|
27
|
-
return rb_intern(retval);
|
28
|
-
}
|
29
|
-
|
30
|
-
|
31
|
-
void define_instruction_subclasses(VALUE rb_cInstruction)
|
32
|
-
{
|
33
|
-
/* For rdoc: rb_cVM = rb_define_class("VM", rb_cObject); */
|
34
|
-
/* For rdoc: rb_cInstruction = rb_define_class_under(rb_cVM, "Instruction", rb_cObject); */
|
35
|
-
|
36
|
-
}
|
37
|
-
|
38
|
-
#endif
|
39
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
#ifndef insns_info__h_
|
2
|
-
#define insns_info__h_
|
3
|
-
|
4
|
-
#include "ruby.h"
|
5
|
-
|
6
|
-
#ifdef RUBY_VM
|
7
|
-
|
8
|
-
#include "vm_core.h"
|
9
|
-
|
10
|
-
#ifdef HAVE_VM_H
|
11
|
-
#include "vm.h"
|
12
|
-
#endif
|
13
|
-
|
14
|
-
|
15
|
-
extern VALUE instruction_class[VM_INSTRUCTION_SIZE];
|
16
|
-
void define_instruction_subclasses(VALUE rb_cInstruction);
|
17
|
-
|
18
|
-
#endif
|
19
|
-
|
20
|
-
#endif
|
21
|
-
|