ruby-internal 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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" },
|