ruby-internal 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/bin/ruby-internal-node-dump +1 -1
- data/bin/ruby-internal-obfuscate +1 -1
- data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +45 -45
- data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +259 -258
- data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +43 -43
- data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +261 -260
- data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +45 -45
- data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +261 -260
- data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +37 -37
- data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +219 -218
- data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +4 -0
- data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +41 -41
- data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +231 -230
- data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +4 -0
- data/ext/cached/ruby-1.9.2/internal/node/node_type_descrip.c +37 -37
- data/ext/cached/ruby-1.9.2/internal/node/nodeinfo.c +206 -205
- data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +4 -0
- data/ext/cached/ruby-1.9.3/internal/node/node_type_descrip.c +41 -41
- data/ext/cached/ruby-1.9.3/internal/node/nodeinfo.c +230 -229
- data/ext/internal/binding/block.h +0 -20
- data/ext/internal/method/internal_method.h +5 -5
- data/ext/internal/module/classpath.c +13 -18
- data/ext/internal/module/classpath.h +3 -3
- data/ext/internal/module/getcfp.h +12 -0
- data/ext/internal/node/block.h +0 -20
- data/ext/internal/node/global_entry.h +31 -42
- data/ext/internal/node/global_entry.h.rpp +1 -1
- data/ext/internal/node/node_type_descrip.c +38 -47
- data/ext/internal/node/nodeinfo.c +311 -626
- data/ext/internal/node/nodeinfo.h +4 -1
- data/ext/internal/proc/block.h +0 -20
- data/ext/internal/tag/tag.h +0 -10
- data/ext/internal/vm/instruction/insns_info.c +5974 -3
- data/ext/internal/vm/instruction/insns_info.h +878 -0
- metadata +37 -51
@@ -7,26 +7,6 @@
|
|
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
|
-
|
30
10
|
|
31
11
|
#endif
|
32
12
|
|
@@ -18,15 +18,15 @@
|
|
18
18
|
#endif
|
19
19
|
|
20
20
|
struct METHOD {
|
21
|
-
VALUE klass, rklass;
|
22
21
|
VALUE recv;
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
VALUE rclass;
|
23
|
+
ID id;
|
24
|
+
rb_method_entry_t *me;
|
25
|
+
struct unlinked_method_entry_list_entry *ume;
|
26
26
|
};
|
27
27
|
|
28
28
|
#define METHOD_OCLASS(m) m->klass
|
29
|
-
#define METHOD_RCLASS(m) m->
|
29
|
+
#define METHOD_RCLASS(m) m->rclass
|
30
30
|
|
31
31
|
#endif
|
32
32
|
|
@@ -1,43 +1,38 @@
|
|
1
1
|
#include "classpath.h"
|
2
2
|
|
3
3
|
VALUE
|
4
|
-
class2path(klass)
|
5
|
-
VALUE klass;
|
4
|
+
class2path(VALUE klass)
|
6
5
|
{
|
7
6
|
VALUE path = rb_class_path(klass);
|
8
|
-
char *n
|
7
|
+
const char *n;
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
n);
|
14
|
-
}
|
15
|
-
if (rb_path2class(n) != rb_class_real(klass)) {
|
16
|
-
rb_raise(rb_eTypeError, "%s can't be referred", n);
|
9
|
+
n = must_not_be_anonymous((TYPE(klass) == T_CLASS ? "class" : "module"), path);
|
10
|
+
if (rb_path_to_class(path) != rb_class_real(klass)) {
|
11
|
+
rb_raise(rb_eTypeError, "%s can't be referred to", n);
|
17
12
|
}
|
18
13
|
return path;
|
19
14
|
}
|
20
15
|
|
21
16
|
VALUE
|
22
|
-
path2class(path)
|
23
|
-
const char *path;
|
17
|
+
path2class(VALUE path)
|
24
18
|
{
|
25
|
-
VALUE v =
|
19
|
+
VALUE v = rb_path_to_class(path);
|
26
20
|
|
27
21
|
if (TYPE(v) != T_CLASS) {
|
28
|
-
rb_raise(rb_eArgError, "
|
22
|
+
rb_raise(rb_eArgError, "%.*s does not refer to class",
|
23
|
+
(int)RSTRING_LEN(path), RSTRING_PTR(path));
|
29
24
|
}
|
30
25
|
return v;
|
31
26
|
}
|
32
27
|
|
33
28
|
VALUE
|
34
|
-
path2module(path)
|
35
|
-
const char *path;
|
29
|
+
path2module(VALUE path)
|
36
30
|
{
|
37
|
-
VALUE v =
|
31
|
+
VALUE v = rb_path_to_class(path);
|
38
32
|
|
39
33
|
if (TYPE(v) != T_MODULE) {
|
40
|
-
rb_raise(rb_eArgError, "
|
34
|
+
rb_raise(rb_eArgError, "%.*s does not refer to module",
|
35
|
+
(int)RSTRING_LEN(path), RSTRING_PTR(path));
|
41
36
|
}
|
42
37
|
return v;
|
43
38
|
}
|
@@ -7,6 +7,18 @@
|
|
7
7
|
|
8
8
|
#include "vm_core.h"
|
9
9
|
|
10
|
+
static rb_control_frame_t *
|
11
|
+
getcfp(rb_thread_t *th, rb_control_frame_t *cfp)
|
12
|
+
{
|
13
|
+
while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {
|
14
|
+
if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
|
15
|
+
return cfp;
|
16
|
+
}
|
17
|
+
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
|
18
|
+
}
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
10
22
|
|
11
23
|
#endif
|
12
24
|
|
data/ext/internal/node/block.h
CHANGED
@@ -7,26 +7,6 @@
|
|
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
|
-
|
30
10
|
|
31
11
|
#endif
|
32
12
|
|
@@ -3,39 +3,39 @@
|
|
3
3
|
|
4
4
|
st_table * rb_global_tbl;
|
5
5
|
|
6
|
+
#define global_variable rb_global_variable
|
7
|
+
#define global_entry rb_global_entry
|
8
|
+
#define gvar_getter_t rb_gvar_getter_t
|
9
|
+
#define gvar_setter_t rb_gvar_setter_t
|
10
|
+
#define gvar_marker_t rb_gvar_marker_t
|
6
11
|
struct trace_var {
|
7
12
|
int removed;
|
8
|
-
void (*func)();
|
13
|
+
void (*func)(VALUE arg, VALUE val);
|
9
14
|
VALUE data;
|
10
15
|
struct trace_var *next;
|
11
16
|
};
|
12
17
|
struct global_variable {
|
13
18
|
int counter;
|
14
19
|
void *data;
|
15
|
-
|
16
|
-
|
17
|
-
|
20
|
+
gvar_getter_t *getter;
|
21
|
+
gvar_setter_t *setter;
|
22
|
+
gvar_marker_t *marker;
|
18
23
|
int block_trace;
|
19
24
|
struct trace_var *trace;
|
20
25
|
};
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
static void undef_marker();
|
28
|
-
static VALUE val_getter();
|
29
|
-
static void val_setter();
|
30
|
-
static void val_marker();
|
26
|
+
#define undef_getter rb_gvar_undef_getter
|
27
|
+
#define undef_setter rb_gvar_undef_setter
|
28
|
+
#define undef_marker rb_gvar_undef_marker
|
29
|
+
#define val_getter rb_gvar_val_getter
|
30
|
+
#define val_setter rb_gvar_val_setter
|
31
|
+
#define val_marker rb_gvar_val_marker
|
31
32
|
struct global_entry*
|
32
|
-
rb_global_entry(id)
|
33
|
-
ID id;
|
33
|
+
rb_global_entry(ID id)
|
34
34
|
{
|
35
35
|
struct global_entry *entry;
|
36
36
|
st_data_t data;
|
37
37
|
|
38
|
-
if (!st_lookup(rb_global_tbl, id, &data)) {
|
38
|
+
if (!st_lookup(rb_global_tbl, (st_data_t)id, &data)) {
|
39
39
|
struct global_variable *var;
|
40
40
|
entry = ALLOC(struct global_entry);
|
41
41
|
var = ALLOC(struct global_variable);
|
@@ -56,20 +56,15 @@ rb_global_entry(id)
|
|
56
56
|
}
|
57
57
|
return entry;
|
58
58
|
}
|
59
|
-
|
60
|
-
undef_getter(id)
|
61
|
-
ID id;
|
59
|
+
VALUE
|
60
|
+
undef_getter(ID id, void *data, struct global_variable *var)
|
62
61
|
{
|
63
62
|
rb_warning("global variable `%s' not initialized", rb_id2name(id));
|
64
63
|
|
65
64
|
return Qnil;
|
66
65
|
}
|
67
|
-
|
68
|
-
undef_setter(val, id, data, var)
|
69
|
-
VALUE val;
|
70
|
-
ID id;
|
71
|
-
void *data;
|
72
|
-
struct global_variable *var;
|
66
|
+
void
|
67
|
+
undef_setter(VALUE val, ID id, void *data, struct global_variable *var)
|
73
68
|
{
|
74
69
|
var->getter = val_getter;
|
75
70
|
var->setter = val_setter;
|
@@ -77,30 +72,24 @@ undef_setter(val, id, data, var)
|
|
77
72
|
|
78
73
|
var->data = (void*)val;
|
79
74
|
}
|
80
|
-
|
81
|
-
undef_marker()
|
75
|
+
void
|
76
|
+
undef_marker(VALUE *var)
|
82
77
|
{
|
83
78
|
}
|
84
|
-
|
85
|
-
val_getter(id,
|
86
|
-
ID id;
|
87
|
-
VALUE val;
|
79
|
+
VALUE
|
80
|
+
val_getter(ID id, void *data, struct global_variable *var)
|
88
81
|
{
|
89
|
-
return
|
82
|
+
return (VALUE)data;
|
90
83
|
}
|
91
|
-
|
92
|
-
val_setter(val, id, data, var)
|
93
|
-
VALUE val;
|
94
|
-
ID id;
|
95
|
-
void *data;
|
96
|
-
struct global_variable *var;
|
84
|
+
void
|
85
|
+
val_setter(VALUE val, ID id, void *data, struct global_variable *var)
|
97
86
|
{
|
98
87
|
var->data = (void*)val;
|
99
88
|
}
|
100
|
-
|
101
|
-
val_marker(
|
102
|
-
VALUE data;
|
89
|
+
void
|
90
|
+
val_marker(VALUE *var)
|
103
91
|
{
|
92
|
+
VALUE data = (VALUE)var;
|
104
93
|
if (data) rb_gc_mark_maybe(data);
|
105
94
|
}
|
106
95
|
|
@@ -28,7 +28,7 @@ st_table * rb_global_tbl;
|
|
28
28
|
puts prev_line
|
29
29
|
write = true
|
30
30
|
stopwrite = false
|
31
|
-
when /^#define (global_entry|gvar_getter_t|gvar_setter_t|gvar_marker_t|undef_getter|undef_setter|undef_marker)/
|
31
|
+
when /^#define (global_entry|global_variable|gvar_getter_t|gvar_setter_t|gvar_marker_t|undef_getter|undef_setter|undef_marker|val_getter|val_setter|val_marker)/
|
32
32
|
puts line
|
33
33
|
when /^\}/
|
34
34
|
stopwrite = true
|
@@ -2,109 +2,100 @@
|
|
2
2
|
#include "version.h"
|
3
3
|
|
4
4
|
Node_Type_Descrip node_type_descrips_unsorted[] = {
|
5
|
-
{ NODE_ALIAS,
|
5
|
+
{ NODE_ALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "ALIAS" },
|
6
6
|
#ifdef HAVE_NODE_ALLOCA
|
7
|
-
{ NODE_ALLOCA,
|
7
|
+
{ NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "ALLOCA" },
|
8
8
|
#endif
|
9
9
|
{ NODE_AND, NEN_2ND, NEN_1ST, NEN_NONE, "AND" },
|
10
|
-
{ NODE_ARGS, NEN_REST,
|
10
|
+
{ NODE_ARGS, NEN_REST, NEN_OPT, NEN_CNT, "ARGS" },
|
11
11
|
{ NODE_ARGSCAT, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSCAT" },
|
12
12
|
{ NODE_ARGSPUSH, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSPUSH" },
|
13
|
-
{ NODE_ARRAY,
|
14
|
-
{ NODE_ATTRASGN,
|
15
|
-
{
|
16
|
-
{ NODE_BACK_REF, NEN_CNT, NEN_NTH, NEN_NONE, "BACK_REF" },
|
13
|
+
{ NODE_ARRAY, NEN_ALEN, NEN_HEAD, NEN_NEXT, "ARRAY" },
|
14
|
+
{ NODE_ATTRASGN, NEN_RECV, NEN_ARGS, NEN_MID, "ATTRASGN" },
|
15
|
+
{ NODE_BACK_REF, NEN_NTH, NEN_CNT, NEN_NONE, "BACK_REF" },
|
17
16
|
{ NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
|
18
|
-
{ NODE_BLOCK,
|
17
|
+
{ NODE_BLOCK, NEN_HEAD, NEN_NEXT, NEN_NONE, "BLOCK" },
|
19
18
|
{ NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
|
20
|
-
{ NODE_BLOCK_PASS,
|
19
|
+
{ NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
|
21
20
|
{ NODE_BMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "BMETHOD" },
|
22
21
|
{ NODE_BREAK, NEN_STTS, NEN_NONE, NEN_NONE, "BREAK" },
|
23
22
|
{ NODE_CALL, NEN_ARGS, NEN_MID, NEN_RECV, "CALL" },
|
24
|
-
{ NODE_CASE,
|
23
|
+
{ NODE_CASE, NEN_HEAD, NEN_BODY, NEN_NEXT, "CASE" },
|
25
24
|
{ NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
|
26
|
-
{ NODE_CFUNC, NEN_ARGC, NEN_CFNC, NEN_NONE, "CFUNC" },
|
27
25
|
{ NODE_CLASS, NEN_SUPER, NEN_CPATH, NEN_BODY, "CLASS" },
|
28
26
|
{ NODE_COLON2, NEN_HEAD, NEN_MID, NEN_NONE, "COLON2" },
|
29
27
|
{ NODE_COLON3, NEN_MID, NEN_NONE, NEN_NONE, "COLON3" },
|
30
28
|
{ NODE_CONST, NEN_VID, NEN_NONE, NEN_NONE, "CONST" },
|
31
|
-
{ NODE_CREF, NEN_NEXT, NEN_BODY, NEN_CLSS, "CREF" },
|
32
29
|
{ NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
|
33
30
|
{ NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
|
34
31
|
{ NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
|
35
32
|
{ NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
|
36
33
|
{ NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
|
37
34
|
{ NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
|
38
|
-
{ NODE_DEFN, NEN_MID, NEN_NOEX,
|
39
|
-
{ NODE_DEFS, NEN_RECV, NEN_MID,
|
40
|
-
{
|
41
|
-
{
|
42
|
-
{
|
43
|
-
{
|
44
|
-
{
|
45
|
-
{
|
46
|
-
{ NODE_DSYM, NEN_NEXT, NEN_LIT, NEN_NONE, "DSYM" },
|
35
|
+
{ NODE_DEFN, NEN_DEFN, NEN_MID, NEN_NOEX, "DEFN" },
|
36
|
+
{ NODE_DEFS, NEN_DEFN, NEN_RECV, NEN_MID, "DEFS" },
|
37
|
+
{ NODE_DOT2, NEN_BEG, NEN_END, NEN_STATE, "DOT2" },
|
38
|
+
{ NODE_DOT3, NEN_BEG, NEN_END, NEN_STATE, "DOT3" },
|
39
|
+
{ NODE_DREGX, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX" },
|
40
|
+
{ NODE_DREGX_ONCE, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX_ONCE" },
|
41
|
+
{ NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
|
42
|
+
{ NODE_DSYM, NEN_LIT, NEN_NEXT, NEN_NONE, "DSYM" },
|
47
43
|
{ NODE_DVAR, NEN_VID, NEN_NONE, NEN_NONE, "DVAR" },
|
48
|
-
{ NODE_DXSTR,
|
44
|
+
{ NODE_DXSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DXSTR" },
|
49
45
|
{ NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
|
50
46
|
{ NODE_EVSTR, NEN_BODY, NEN_NONE, NEN_NONE, "EVSTR" },
|
51
47
|
{ NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
|
52
|
-
{ NODE_FBODY, NEN_ORIG, NEN_HEAD, NEN_MID, "FBODY" },
|
53
48
|
{ NODE_FCALL, NEN_ARGS, NEN_MID, NEN_NONE, "FCALL" },
|
54
|
-
{ NODE_FLIP2, NEN_CNT,
|
55
|
-
{ NODE_FLIP3, NEN_CNT,
|
56
|
-
{ NODE_FOR,
|
57
|
-
{ NODE_GASGN,
|
58
|
-
{ NODE_GVAR,
|
49
|
+
{ NODE_FLIP2, NEN_CNT, NEN_BEG, NEN_END, "FLIP2" },
|
50
|
+
{ NODE_FLIP3, NEN_CNT, NEN_BEG, NEN_END, "FLIP3" },
|
51
|
+
{ NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
|
52
|
+
{ NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
|
53
|
+
{ NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
|
59
54
|
{ NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
|
60
55
|
{ NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
|
61
|
-
{ NODE_IF,
|
62
|
-
{ NODE_IFUNC,
|
63
|
-
{ NODE_ITER,
|
56
|
+
{ NODE_IF, NEN_COND, NEN_BODY, NEN_ELSE, "IF" },
|
57
|
+
{ NODE_IFUNC, NEN_CFNC, NEN_TVAL, NEN_STATE, "IFUNC" },
|
58
|
+
{ NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
|
64
59
|
{ NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
|
65
|
-
{ NODE_LASGN,
|
60
|
+
{ NODE_LASGN, NEN_VALUE, NEN_VID, NEN_CNT, "LASGN" },
|
66
61
|
{ NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
|
67
|
-
{ NODE_LVAR,
|
62
|
+
{ NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
|
68
63
|
{ NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
|
69
64
|
{ NODE_MATCH, NEN_LIT, NEN_VALUE, NEN_NONE, "MATCH" },
|
70
65
|
{ NODE_MATCH2, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH2" },
|
71
66
|
{ NODE_MATCH3, NEN_RECV, NEN_VALUE, NEN_NONE, "MATCH3" },
|
72
67
|
{ NODE_MEMO, NEN_NONE, NEN_NONE, NEN_NONE, "MEMO" },
|
73
|
-
{ NODE_METHOD, NEN_BODY, NEN_NOEX, NEN_NONE, "METHOD" },
|
74
68
|
{ NODE_MODULE, NEN_CPATH, NEN_BODY, NEN_NONE, "MODULE" },
|
75
|
-
{ NODE_NEWLINE, NEN_NEXT, NEN_NONE, NEN_NONE, "NEWLINE" },
|
76
69
|
{ NODE_NEXT, NEN_STTS, NEN_NONE, NEN_NONE, "NEXT" },
|
77
70
|
{ NODE_NIL, NEN_NONE, NEN_NONE, NEN_NONE, "NIL" },
|
78
|
-
{
|
79
|
-
{ NODE_NTH_REF, NEN_CNT, NEN_NTH, NEN_NONE, "NTH_REF" },
|
71
|
+
{ NODE_NTH_REF, NEN_NTH, NEN_CNT, NEN_NONE, "NTH_REF" },
|
80
72
|
{ NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
|
81
73
|
{ NODE_OP_ASGN1, NEN_ARGS, NEN_MID, NEN_RECV, "OP_ASGN1" },
|
82
|
-
{ NODE_OP_ASGN2,
|
83
|
-
{ NODE_OP_ASGN2_ARG, NEN_AID, NEN_MID,
|
74
|
+
{ NODE_OP_ASGN2, NEN_RECV, NEN_NEXT, NEN_VALUE, "OP_ASGN2" },
|
75
|
+
{ NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID, NEN_MID, "OP_ASGN2_ARG" },
|
84
76
|
{ NODE_OP_ASGN_AND, NEN_RECV, NEN_VALUE, NEN_NONE, "OP_ASGN_AND" },
|
85
77
|
{ NODE_OP_ASGN_OR, NEN_AID, NEN_VALUE, NEN_RECV, "OP_ASGN_OR" },
|
86
78
|
{ NODE_OR, NEN_2ND, NEN_1ST, NEN_NONE, "OR" },
|
87
79
|
{ NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
|
88
80
|
{ NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
|
89
|
-
{ NODE_RESBODY,
|
90
|
-
{ NODE_RESCUE,
|
81
|
+
{ NODE_RESBODY, NEN_HEAD, NEN_BODY, NEN_ARGS, "RESBODY" },
|
82
|
+
{ NODE_RESCUE, NEN_HEAD, NEN_RESQ, NEN_ELSE, "RESCUE" },
|
91
83
|
{ NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
|
92
84
|
{ NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
|
93
85
|
{ NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
|
94
|
-
{ NODE_SCOPE,
|
86
|
+
{ NODE_SCOPE, NEN_TBL, NEN_RVAL, NEN_NEXT, "SCOPE" },
|
95
87
|
{ NODE_SELF, NEN_NONE, NEN_NONE, NEN_NONE, "SELF" },
|
96
88
|
{ NODE_SPLAT, NEN_HEAD, NEN_NONE, NEN_NONE, "SPLAT" },
|
97
89
|
{ NODE_STR, NEN_LIT, NEN_NONE, NEN_NONE, "STR" },
|
98
90
|
{ NODE_SUPER, NEN_ARGS, NEN_NONE, NEN_NONE, "SUPER" },
|
99
|
-
{ NODE_SVALUE, NEN_HEAD, NEN_NONE, NEN_NONE, "SVALUE" },
|
100
91
|
{ NODE_TO_ARY, NEN_HEAD, NEN_NONE, NEN_NONE, "TO_ARY" },
|
101
92
|
{ NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
|
102
93
|
{ NODE_UNDEF, NEN_BODY, NEN_NONE, NEN_NONE, "UNDEF" },
|
103
|
-
{ NODE_UNTIL, NEN_BODY,
|
104
|
-
{ NODE_VALIAS,
|
94
|
+
{ NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
|
95
|
+
{ NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
|
105
96
|
{ NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
|
106
|
-
{ NODE_WHEN,
|
107
|
-
{ NODE_WHILE, NEN_BODY,
|
97
|
+
{ NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
|
98
|
+
{ NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
|
108
99
|
{ NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
|
109
100
|
{ NODE_YIELD, NEN_HEAD, NEN_STATE, NEN_NONE, "YIELD" },
|
110
101
|
{ NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
|