ruby-internal 0.7.2 → 0.7.3
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/bin/ruby-internal-node-dump +1 -1
- data/bin/ruby-internal-obfuscate +1 -1
- data/ext/internal/method/extconf.rb +4 -0
- data/ext/internal/method/internal_method.h +65 -0
- data/ext/internal/method/{method.h.rpp → internal_method.h.rpp} +21 -0
- data/ext/internal/method/method.c +69 -13
- data/ext/internal/module/classpath.c +12 -14
- data/ext/internal/module/extconf.rb +3 -2
- data/ext/internal/module/module.c +36 -15
- data/ext/internal/node/block.h.rpp +1 -0
- data/ext/internal/node/extconf.rb +0 -22
- data/ext/internal/node/global_entry.h +45 -3
- data/ext/internal/node/global_entry.h.rpp +12 -3
- data/ext/internal/node/node.c +42 -15
- data/ext/internal/node/node_type_descrip.c +16 -20
- data/ext/internal/node/node_type_descrip.c.rpp +1 -0
- data/ext/internal/node/nodeinfo.c +133 -281
- data/ext/internal/node/nodeinfo.c.rpp +8 -4
- data/ext/internal/node/nodeinfo.h.rpp +2 -1
- data/ext/internal/noex/noex.c +4 -0
- data/ext/internal/proc/proc.c +2 -2
- data/ext/internal/vm/constants/constants.c +2 -0
- data/ext/internal/vm/constants/extconf.rb +2 -0
- data/ext/internal/vm/control_frame/control_frame.c +21 -3
- data/ext/internal/vm/control_frame/extconf.rb +4 -0
- data/ext/internal/vm/inline_cache/inline_cache.c +12 -5
- data/ext/internal/vm/instruction/insns_info.c +141 -64
- data/ext/internal/vm/instruction/insns_info.c.rpp +3 -0
- data/ext/internal/vm/instruction/insns_info.h +80 -71
- data/ext/internal/vm/iseq/iseq.c +6 -6
- data/ext/internal/vm/iseq/iseq_load.inc.rpp +6 -3
- data/ext/mkmf-ruby-internal.rb +21 -1
- data/ext/ruby_source_dir.rb +6 -2
- data/post-setup.rb +1 -0
- data/pre-config.rb +9 -0
- data/run_tests.rb +1 -0
- data/test/test_method.rb +1 -1
- data/test/test_module.rb +1 -1
- metadata +309 -321
- data/ext/internal/method/method.h +0 -20
- data/ext/internal/yarv-headers/debug.h +0 -36
- data/ext/internal/yarv-headers/dln.h +0 -41
- data/ext/internal/yarv-headers/encdb.h +0 -147
- data/ext/internal/yarv-headers/eval_intern.h +0 -215
- data/ext/internal/yarv-headers/gc.h +0 -75
- data/ext/internal/yarv-headers/id.h +0 -163
- data/ext/internal/yarv-headers/iseq.h +0 -103
- data/ext/internal/yarv-headers/node.h +0 -516
- data/ext/internal/yarv-headers/parse.h +0 -188
- data/ext/internal/yarv-headers/regenc.h +0 -207
- data/ext/internal/yarv-headers/regint.h +0 -842
- data/ext/internal/yarv-headers/regparse.h +0 -351
- data/ext/internal/yarv-headers/revision.h +0 -1
- data/ext/internal/yarv-headers/thread_pthread.h +0 -24
- data/ext/internal/yarv-headers/thread_win32.h +0 -33
- data/ext/internal/yarv-headers/transcode_data.h +0 -106
- data/ext/internal/yarv-headers/transdb.h +0 -147
- data/ext/internal/yarv-headers/version.h +0 -54
- data/ext/internal/yarv-headers/vm_core.h +0 -646
- data/ext/internal/yarv-headers/vm_exec.h +0 -184
- data/ext/internal/yarv-headers/vm_insnhelper.h +0 -195
- data/ext/internal/yarv-headers/vm_opts.h +0 -51
- data/ext/rubypp.rb +0 -97
@@ -1,75 +0,0 @@
|
|
1
|
-
|
2
|
-
#ifndef RUBY_GC_H
|
3
|
-
#define RUBY_GC_H 1
|
4
|
-
|
5
|
-
#if defined(__i386) && defined(__GNUC__)
|
6
|
-
#define SET_MACHINE_STACK_END(p) __asm__("mov %%esp, %0" : "=r" (*p))
|
7
|
-
#else
|
8
|
-
NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
|
9
|
-
#define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
|
10
|
-
#define USE_CONSERVATIVE_STACK_END
|
11
|
-
#endif
|
12
|
-
|
13
|
-
/* for GC debug */
|
14
|
-
|
15
|
-
#ifndef RUBY_MARK_FREE_DEBUG
|
16
|
-
#define RUBY_MARK_FREE_DEBUG 0
|
17
|
-
#endif
|
18
|
-
|
19
|
-
#if RUBY_MARK_FREE_DEBUG
|
20
|
-
extern int ruby_gc_debug_indent;
|
21
|
-
|
22
|
-
static void
|
23
|
-
rb_gc_debug_indent(void)
|
24
|
-
{
|
25
|
-
printf("%*s", ruby_gc_debug_indent, "");
|
26
|
-
}
|
27
|
-
|
28
|
-
static void
|
29
|
-
rb_gc_debug_body(char *mode, char *msg, int st, void *ptr)
|
30
|
-
{
|
31
|
-
if (st == 0) {
|
32
|
-
ruby_gc_debug_indent--;
|
33
|
-
}
|
34
|
-
rb_gc_debug_indent();
|
35
|
-
printf("%s: %s %s (%p)\n", mode, st ? "->" : "<-", msg, ptr);
|
36
|
-
|
37
|
-
if (st) {
|
38
|
-
ruby_gc_debug_indent++;
|
39
|
-
}
|
40
|
-
|
41
|
-
fflush(stdout);
|
42
|
-
}
|
43
|
-
|
44
|
-
#define RUBY_MARK_ENTER(msg) rb_gc_debug_body("mark", msg, 1, ptr)
|
45
|
-
#define RUBY_MARK_LEAVE(msg) rb_gc_debug_body("mark", msg, 0, ptr)
|
46
|
-
#define RUBY_FREE_ENTER(msg) rb_gc_debug_body("free", msg, 1, ptr)
|
47
|
-
#define RUBY_FREE_LEAVE(msg) rb_gc_debug_body("free", msg, 0, ptr)
|
48
|
-
#define RUBY_GC_INFO rb_gc_debug_indent(); printf
|
49
|
-
|
50
|
-
#else
|
51
|
-
#define RUBY_MARK_ENTER(msg)
|
52
|
-
#define RUBY_MARK_LEAVE(msg)
|
53
|
-
#define RUBY_FREE_ENTER(msg)
|
54
|
-
#define RUBY_FREE_LEAVE(msg)
|
55
|
-
#define RUBY_GC_INFO if(0)printf
|
56
|
-
#endif
|
57
|
-
|
58
|
-
#define RUBY_MARK_UNLESS_NULL(ptr) if(RTEST(ptr)){rb_gc_mark(ptr);}
|
59
|
-
#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);}
|
60
|
-
|
61
|
-
#if STACK_GROW_DIRECTION > 0
|
62
|
-
# define STACK_UPPER(x, a, b) a
|
63
|
-
#elif STACK_GROW_DIRECTION < 0
|
64
|
-
# define STACK_UPPER(x, a, b) b
|
65
|
-
#else
|
66
|
-
RUBY_EXTERN int ruby_stack_grow_direction;
|
67
|
-
int ruby_get_stack_grow_direction(VALUE *addr);
|
68
|
-
# define stack_growup_p(x) ( \
|
69
|
-
(ruby_stack_grow_direction ? \
|
70
|
-
ruby_stack_grow_direction : \
|
71
|
-
ruby_get_stack_grow_direction(x)) > 0)
|
72
|
-
# define STACK_UPPER(x, a, b) (stack_growup_p(x) ? a : b)
|
73
|
-
#endif
|
74
|
-
|
75
|
-
#endif /* RUBY_GC_H */
|
@@ -1,163 +0,0 @@
|
|
1
|
-
/* DO NOT EDIT THIS FILE DIRECTLY */
|
2
|
-
/**********************************************************************
|
3
|
-
|
4
|
-
id.h -
|
5
|
-
|
6
|
-
$Author: nobu $
|
7
|
-
created at: Sun Oct 19 21:12:51 2008
|
8
|
-
|
9
|
-
Copyright (C) 2007 Koichi Sasada
|
10
|
-
|
11
|
-
**********************************************************************/
|
12
|
-
|
13
|
-
#ifndef RUBY_ID_H
|
14
|
-
#define RUBY_ID_H
|
15
|
-
|
16
|
-
#define ID_SCOPE_SHIFT 3
|
17
|
-
#define ID_SCOPE_MASK 0x07
|
18
|
-
#define ID_LOCAL 0x00
|
19
|
-
#define ID_INSTANCE 0x01
|
20
|
-
#define ID_GLOBAL 0x03
|
21
|
-
#define ID_ATTRSET 0x04
|
22
|
-
#define ID_CONST 0x05
|
23
|
-
#define ID_CLASS 0x06
|
24
|
-
#define ID_JUNK 0x07
|
25
|
-
#define ID_INTERNAL ID_JUNK
|
26
|
-
|
27
|
-
#ifdef USE_PARSE_H
|
28
|
-
#include "parse.h"
|
29
|
-
#endif
|
30
|
-
|
31
|
-
#define symIFUNC ID2SYM(idIFUNC)
|
32
|
-
#define symCFUNC ID2SYM(idCFUNC)
|
33
|
-
|
34
|
-
#if !defined tLAST_TOKEN && defined YYTOKENTYPE
|
35
|
-
#define tLAST_TOKEN tLAST_TOKEN
|
36
|
-
#endif
|
37
|
-
|
38
|
-
enum ruby_method_ids {
|
39
|
-
#ifndef tLAST_TOKEN
|
40
|
-
tUPLUS = 321,
|
41
|
-
tUMINUS = 322,
|
42
|
-
tPOW = 323,
|
43
|
-
tCMP = 324,
|
44
|
-
tEQ = 325,
|
45
|
-
tEQQ = 326,
|
46
|
-
tNEQ = 327,
|
47
|
-
tGEQ = 328,
|
48
|
-
tLEQ = 329,
|
49
|
-
tANDOP = 330,
|
50
|
-
tOROP = 331,
|
51
|
-
tMATCH = 332,
|
52
|
-
tNMATCH = 333,
|
53
|
-
tDOT2 = 334,
|
54
|
-
tDOT3 = 335,
|
55
|
-
tAREF = 336,
|
56
|
-
tASET = 337,
|
57
|
-
tLSHFT = 338,
|
58
|
-
tRSHFT = 339,
|
59
|
-
tLAMBDA = 352,
|
60
|
-
idNULL = 365,
|
61
|
-
idRespond_to = 366,
|
62
|
-
idIFUNC = 367,
|
63
|
-
idCFUNC = 368,
|
64
|
-
idThrowState = 369,
|
65
|
-
id_core_set_method_alias = 370,
|
66
|
-
id_core_set_variable_alias = 371,
|
67
|
-
id_core_undef_method = 372,
|
68
|
-
id_core_define_method = 373,
|
69
|
-
id_core_define_singleton_method = 374,
|
70
|
-
id_core_set_postexe = 375,
|
71
|
-
tLAST_TOKEN = 376,
|
72
|
-
#endif
|
73
|
-
idPLUS = '+',
|
74
|
-
idMINUS = '-',
|
75
|
-
idMULT = '*',
|
76
|
-
idDIV = '/',
|
77
|
-
idMOD = '%',
|
78
|
-
idLT = '<',
|
79
|
-
idLTLT = tLSHFT,
|
80
|
-
idLE = tLEQ,
|
81
|
-
idGT = '>',
|
82
|
-
idGE = tGEQ,
|
83
|
-
idEq = tEQ,
|
84
|
-
idEqq = tEQQ,
|
85
|
-
idNeq = tNEQ,
|
86
|
-
idNot = '!',
|
87
|
-
idBackquote = '`',
|
88
|
-
idEqTilde = tMATCH,
|
89
|
-
idAREF = tAREF,
|
90
|
-
idASET = tASET,
|
91
|
-
idLAST_TOKEN = tLAST_TOKEN >> ID_SCOPE_SHIFT,
|
92
|
-
tIntern,
|
93
|
-
tMethodMissing,
|
94
|
-
tLength,
|
95
|
-
tGets,
|
96
|
-
tSucc,
|
97
|
-
tEach,
|
98
|
-
tLambda,
|
99
|
-
tSend,
|
100
|
-
t__send__,
|
101
|
-
tInitialize,
|
102
|
-
#if SUPPORT_JOKE
|
103
|
-
tBitblt,
|
104
|
-
tAnswer,
|
105
|
-
#endif
|
106
|
-
tLAST_ID,
|
107
|
-
#define TOKEN2ID(n) id##n = ((t##n<<ID_SCOPE_SHIFT)|ID_LOCAL)
|
108
|
-
#if SUPPORT_JOKE
|
109
|
-
TOKEN2ID(Bitblt),
|
110
|
-
TOKEN2ID(Answer),
|
111
|
-
#endif
|
112
|
-
TOKEN2ID(Intern),
|
113
|
-
TOKEN2ID(MethodMissing),
|
114
|
-
TOKEN2ID(Length),
|
115
|
-
TOKEN2ID(Gets),
|
116
|
-
TOKEN2ID(Succ),
|
117
|
-
TOKEN2ID(Each),
|
118
|
-
TOKEN2ID(Lambda),
|
119
|
-
TOKEN2ID(Send),
|
120
|
-
TOKEN2ID(__send__),
|
121
|
-
TOKEN2ID(Initialize)
|
122
|
-
};
|
123
|
-
|
124
|
-
#ifdef tLAST_TOKEN
|
125
|
-
struct ruby_method_ids_check {
|
126
|
-
#define ruby_method_id_check_for(name, value) \
|
127
|
-
int checking_for_##name[name == value ? 1 : -1]
|
128
|
-
ruby_method_id_check_for(tUPLUS, 321);
|
129
|
-
ruby_method_id_check_for(tUMINUS, 322);
|
130
|
-
ruby_method_id_check_for(tPOW, 323);
|
131
|
-
ruby_method_id_check_for(tCMP, 324);
|
132
|
-
ruby_method_id_check_for(tEQ, 325);
|
133
|
-
ruby_method_id_check_for(tEQQ, 326);
|
134
|
-
ruby_method_id_check_for(tNEQ, 327);
|
135
|
-
ruby_method_id_check_for(tGEQ, 328);
|
136
|
-
ruby_method_id_check_for(tLEQ, 329);
|
137
|
-
ruby_method_id_check_for(tANDOP, 330);
|
138
|
-
ruby_method_id_check_for(tOROP, 331);
|
139
|
-
ruby_method_id_check_for(tMATCH, 332);
|
140
|
-
ruby_method_id_check_for(tNMATCH, 333);
|
141
|
-
ruby_method_id_check_for(tDOT2, 334);
|
142
|
-
ruby_method_id_check_for(tDOT3, 335);
|
143
|
-
ruby_method_id_check_for(tAREF, 336);
|
144
|
-
ruby_method_id_check_for(tASET, 337);
|
145
|
-
ruby_method_id_check_for(tLSHFT, 338);
|
146
|
-
ruby_method_id_check_for(tRSHFT, 339);
|
147
|
-
ruby_method_id_check_for(tLAMBDA, 352);
|
148
|
-
ruby_method_id_check_for(idNULL, 365);
|
149
|
-
ruby_method_id_check_for(idRespond_to, 366);
|
150
|
-
ruby_method_id_check_for(idIFUNC, 367);
|
151
|
-
ruby_method_id_check_for(idCFUNC, 368);
|
152
|
-
ruby_method_id_check_for(idThrowState, 369);
|
153
|
-
ruby_method_id_check_for(id_core_set_method_alias, 370);
|
154
|
-
ruby_method_id_check_for(id_core_set_variable_alias, 371);
|
155
|
-
ruby_method_id_check_for(id_core_undef_method, 372);
|
156
|
-
ruby_method_id_check_for(id_core_define_method, 373);
|
157
|
-
ruby_method_id_check_for(id_core_define_singleton_method, 374);
|
158
|
-
ruby_method_id_check_for(id_core_set_postexe, 375);
|
159
|
-
ruby_method_id_check_for(tLAST_TOKEN, 376);
|
160
|
-
};
|
161
|
-
#endif
|
162
|
-
|
163
|
-
#endif /* RUBY_ID_H */
|
@@ -1,103 +0,0 @@
|
|
1
|
-
/**********************************************************************
|
2
|
-
|
3
|
-
iseq.h -
|
4
|
-
|
5
|
-
$Author: yugui $
|
6
|
-
created at: 04/01/01 23:36:57 JST
|
7
|
-
|
8
|
-
Copyright (C) 2004-2008 Koichi Sasada
|
9
|
-
|
10
|
-
**********************************************************************/
|
11
|
-
|
12
|
-
#ifndef RUBY_COMPILE_H
|
13
|
-
#define RUBY_COMPILE_H
|
14
|
-
|
15
|
-
/* compile.c */
|
16
|
-
VALUE rb_iseq_compile_node(VALUE self, NODE *node);
|
17
|
-
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq);
|
18
|
-
VALUE rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
|
19
|
-
VALUE exception, VALUE body);
|
20
|
-
|
21
|
-
/* iseq.c */
|
22
|
-
VALUE ruby_iseq_load(VALUE data, VALUE parent, VALUE opt);
|
23
|
-
struct st_table *ruby_insn_make_insn_table(void);
|
24
|
-
|
25
|
-
#define ISEQ_TYPE_TOP INT2FIX(1)
|
26
|
-
#define ISEQ_TYPE_METHOD INT2FIX(2)
|
27
|
-
#define ISEQ_TYPE_BLOCK INT2FIX(3)
|
28
|
-
#define ISEQ_TYPE_CLASS INT2FIX(4)
|
29
|
-
#define ISEQ_TYPE_RESCUE INT2FIX(5)
|
30
|
-
#define ISEQ_TYPE_ENSURE INT2FIX(6)
|
31
|
-
#define ISEQ_TYPE_EVAL INT2FIX(7)
|
32
|
-
#define ISEQ_TYPE_MAIN INT2FIX(8)
|
33
|
-
#define ISEQ_TYPE_DEFINED_GUARD INT2FIX(9)
|
34
|
-
|
35
|
-
#define CATCH_TYPE_RESCUE INT2FIX(1)
|
36
|
-
#define CATCH_TYPE_ENSURE INT2FIX(2)
|
37
|
-
#define CATCH_TYPE_RETRY INT2FIX(3)
|
38
|
-
#define CATCH_TYPE_BREAK INT2FIX(4)
|
39
|
-
#define CATCH_TYPE_REDO INT2FIX(5)
|
40
|
-
#define CATCH_TYPE_NEXT INT2FIX(6)
|
41
|
-
|
42
|
-
struct iseq_insn_info_entry {
|
43
|
-
unsigned short position;
|
44
|
-
unsigned short line_no;
|
45
|
-
unsigned short sp;
|
46
|
-
};
|
47
|
-
|
48
|
-
struct iseq_catch_table_entry {
|
49
|
-
VALUE type;
|
50
|
-
VALUE iseq;
|
51
|
-
unsigned long start;
|
52
|
-
unsigned long end;
|
53
|
-
unsigned long cont;
|
54
|
-
unsigned long sp;
|
55
|
-
};
|
56
|
-
|
57
|
-
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
|
58
|
-
|
59
|
-
struct iseq_compile_data_storage {
|
60
|
-
struct iseq_compile_data_storage *next;
|
61
|
-
unsigned long pos;
|
62
|
-
unsigned long size;
|
63
|
-
char *buff;
|
64
|
-
};
|
65
|
-
|
66
|
-
struct iseq_compile_data {
|
67
|
-
/* GC is needed */
|
68
|
-
VALUE err_info;
|
69
|
-
VALUE mark_ary;
|
70
|
-
VALUE catch_table_ary; /* Array */
|
71
|
-
|
72
|
-
/* GC is not needed */
|
73
|
-
struct iseq_label_data *start_label;
|
74
|
-
struct iseq_label_data *end_label;
|
75
|
-
struct iseq_label_data *redo_label;
|
76
|
-
VALUE current_block;
|
77
|
-
VALUE loopval_popped; /* used by NODE_BREAK */
|
78
|
-
VALUE ensure_node;
|
79
|
-
VALUE for_iseq;
|
80
|
-
struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
|
81
|
-
int cached_const;
|
82
|
-
struct iseq_compile_data_storage *storage_head;
|
83
|
-
struct iseq_compile_data_storage *storage_current;
|
84
|
-
int last_line;
|
85
|
-
int flip_cnt;
|
86
|
-
int label_no;
|
87
|
-
int node_level;
|
88
|
-
const rb_compile_option_t *option;
|
89
|
-
};
|
90
|
-
|
91
|
-
/* defined? */
|
92
|
-
#define DEFINED_IVAR INT2FIX(1)
|
93
|
-
#define DEFINED_IVAR2 INT2FIX(2)
|
94
|
-
#define DEFINED_GVAR INT2FIX(3)
|
95
|
-
#define DEFINED_CVAR INT2FIX(4)
|
96
|
-
#define DEFINED_CONST INT2FIX(5)
|
97
|
-
#define DEFINED_METHOD INT2FIX(6)
|
98
|
-
#define DEFINED_YIELD INT2FIX(7)
|
99
|
-
#define DEFINED_REF INT2FIX(8)
|
100
|
-
#define DEFINED_ZSUPER INT2FIX(9)
|
101
|
-
#define DEFINED_FUNC INT2FIX(10)
|
102
|
-
|
103
|
-
#endif /* RUBY_COMPILE_H */
|
@@ -1,516 +0,0 @@
|
|
1
|
-
/**********************************************************************
|
2
|
-
|
3
|
-
node.h -
|
4
|
-
|
5
|
-
$Author: yugui $
|
6
|
-
created at: Fri May 28 15:14:02 JST 1993
|
7
|
-
|
8
|
-
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
9
|
-
|
10
|
-
**********************************************************************/
|
11
|
-
|
12
|
-
#ifndef RUBY_NODE_H
|
13
|
-
#define RUBY_NODE_H 1
|
14
|
-
|
15
|
-
#if defined(__cplusplus)
|
16
|
-
extern "C" {
|
17
|
-
#if 0
|
18
|
-
} /* satisfy cc-mode */
|
19
|
-
#endif
|
20
|
-
#endif
|
21
|
-
|
22
|
-
enum node_type {
|
23
|
-
NODE_METHOD,
|
24
|
-
#define NODE_METHOD NODE_METHOD
|
25
|
-
NODE_FBODY,
|
26
|
-
#define NODE_FBODY NODE_FBODY
|
27
|
-
NODE_CFUNC,
|
28
|
-
#define NODE_CFUNC NODE_CFUNC
|
29
|
-
NODE_SCOPE,
|
30
|
-
#define NODE_SCOPE NODE_SCOPE
|
31
|
-
NODE_BLOCK,
|
32
|
-
#define NODE_BLOCK NODE_BLOCK
|
33
|
-
NODE_IF,
|
34
|
-
#define NODE_IF NODE_IF
|
35
|
-
NODE_CASE,
|
36
|
-
#define NODE_CASE NODE_CASE
|
37
|
-
NODE_WHEN,
|
38
|
-
#define NODE_WHEN NODE_WHEN
|
39
|
-
NODE_OPT_N,
|
40
|
-
#define NODE_OPT_N NODE_OPT_N
|
41
|
-
NODE_WHILE,
|
42
|
-
#define NODE_WHILE NODE_WHILE
|
43
|
-
NODE_UNTIL,
|
44
|
-
#define NODE_UNTIL NODE_UNTIL
|
45
|
-
NODE_ITER,
|
46
|
-
#define NODE_ITER NODE_ITER
|
47
|
-
NODE_FOR,
|
48
|
-
#define NODE_FOR NODE_FOR
|
49
|
-
NODE_BREAK,
|
50
|
-
#define NODE_BREAK NODE_BREAK
|
51
|
-
NODE_NEXT,
|
52
|
-
#define NODE_NEXT NODE_NEXT
|
53
|
-
NODE_REDO,
|
54
|
-
#define NODE_REDO NODE_REDO
|
55
|
-
NODE_RETRY,
|
56
|
-
#define NODE_RETRY NODE_RETRY
|
57
|
-
NODE_BEGIN,
|
58
|
-
#define NODE_BEGIN NODE_BEGIN
|
59
|
-
NODE_RESCUE,
|
60
|
-
#define NODE_RESCUE NODE_RESCUE
|
61
|
-
NODE_RESBODY,
|
62
|
-
#define NODE_RESBODY NODE_RESBODY
|
63
|
-
NODE_ENSURE,
|
64
|
-
#define NODE_ENSURE NODE_ENSURE
|
65
|
-
NODE_AND,
|
66
|
-
#define NODE_AND NODE_AND
|
67
|
-
NODE_OR,
|
68
|
-
#define NODE_OR NODE_OR
|
69
|
-
NODE_MASGN,
|
70
|
-
#define NODE_MASGN NODE_MASGN
|
71
|
-
NODE_LASGN,
|
72
|
-
#define NODE_LASGN NODE_LASGN
|
73
|
-
NODE_DASGN,
|
74
|
-
#define NODE_DASGN NODE_DASGN
|
75
|
-
NODE_DASGN_CURR,
|
76
|
-
#define NODE_DASGN_CURR NODE_DASGN_CURR
|
77
|
-
NODE_GASGN,
|
78
|
-
#define NODE_GASGN NODE_GASGN
|
79
|
-
NODE_IASGN,
|
80
|
-
#define NODE_IASGN NODE_IASGN
|
81
|
-
NODE_IASGN2,
|
82
|
-
#define NODE_IASGN2 NODE_IASGN2
|
83
|
-
NODE_CDECL,
|
84
|
-
#define NODE_CDECL NODE_CDECL
|
85
|
-
NODE_CVASGN,
|
86
|
-
#define NODE_CVASGN NODE_CVASGN
|
87
|
-
NODE_CVDECL,
|
88
|
-
#define NODE_CVDECL NODE_CVDECL
|
89
|
-
NODE_OP_ASGN1,
|
90
|
-
#define NODE_OP_ASGN1 NODE_OP_ASGN1
|
91
|
-
NODE_OP_ASGN2,
|
92
|
-
#define NODE_OP_ASGN2 NODE_OP_ASGN2
|
93
|
-
NODE_OP_ASGN_AND,
|
94
|
-
#define NODE_OP_ASGN_AND NODE_OP_ASGN_AND
|
95
|
-
NODE_OP_ASGN_OR,
|
96
|
-
#define NODE_OP_ASGN_OR NODE_OP_ASGN_OR
|
97
|
-
NODE_CALL,
|
98
|
-
#define NODE_CALL NODE_CALL
|
99
|
-
NODE_FCALL,
|
100
|
-
#define NODE_FCALL NODE_FCALL
|
101
|
-
NODE_VCALL,
|
102
|
-
#define NODE_VCALL NODE_VCALL
|
103
|
-
NODE_SUPER,
|
104
|
-
#define NODE_SUPER NODE_SUPER
|
105
|
-
NODE_ZSUPER,
|
106
|
-
#define NODE_ZSUPER NODE_ZSUPER
|
107
|
-
NODE_ARRAY,
|
108
|
-
#define NODE_ARRAY NODE_ARRAY
|
109
|
-
NODE_ZARRAY,
|
110
|
-
#define NODE_ZARRAY NODE_ZARRAY
|
111
|
-
NODE_VALUES,
|
112
|
-
#define NODE_VALUES NODE_VALUES
|
113
|
-
NODE_HASH,
|
114
|
-
#define NODE_HASH NODE_HASH
|
115
|
-
NODE_RETURN,
|
116
|
-
#define NODE_RETURN NODE_RETURN
|
117
|
-
NODE_YIELD,
|
118
|
-
#define NODE_YIELD NODE_YIELD
|
119
|
-
NODE_LVAR,
|
120
|
-
#define NODE_LVAR NODE_LVAR
|
121
|
-
NODE_DVAR,
|
122
|
-
#define NODE_DVAR NODE_DVAR
|
123
|
-
NODE_GVAR,
|
124
|
-
#define NODE_GVAR NODE_GVAR
|
125
|
-
NODE_IVAR,
|
126
|
-
#define NODE_IVAR NODE_IVAR
|
127
|
-
NODE_CONST,
|
128
|
-
#define NODE_CONST NODE_CONST
|
129
|
-
NODE_CVAR,
|
130
|
-
#define NODE_CVAR NODE_CVAR
|
131
|
-
NODE_NTH_REF,
|
132
|
-
#define NODE_NTH_REF NODE_NTH_REF
|
133
|
-
NODE_BACK_REF,
|
134
|
-
#define NODE_BACK_REF NODE_BACK_REF
|
135
|
-
NODE_MATCH,
|
136
|
-
#define NODE_MATCH NODE_MATCH
|
137
|
-
NODE_MATCH2,
|
138
|
-
#define NODE_MATCH2 NODE_MATCH2
|
139
|
-
NODE_MATCH3,
|
140
|
-
#define NODE_MATCH3 NODE_MATCH3
|
141
|
-
NODE_LIT,
|
142
|
-
#define NODE_LIT NODE_LIT
|
143
|
-
NODE_STR,
|
144
|
-
#define NODE_STR NODE_STR
|
145
|
-
NODE_DSTR,
|
146
|
-
#define NODE_DSTR NODE_DSTR
|
147
|
-
NODE_XSTR,
|
148
|
-
#define NODE_XSTR NODE_XSTR
|
149
|
-
NODE_DXSTR,
|
150
|
-
#define NODE_DXSTR NODE_DXSTR
|
151
|
-
NODE_EVSTR,
|
152
|
-
#define NODE_EVSTR NODE_EVSTR
|
153
|
-
NODE_DREGX,
|
154
|
-
#define NODE_DREGX NODE_DREGX
|
155
|
-
NODE_DREGX_ONCE,
|
156
|
-
#define NODE_DREGX_ONCE NODE_DREGX_ONCE
|
157
|
-
NODE_ARGS,
|
158
|
-
#define NODE_ARGS NODE_ARGS
|
159
|
-
NODE_ARGS_AUX,
|
160
|
-
#define NODE_ARGS_AUX NODE_ARGS_AUX
|
161
|
-
NODE_OPT_ARG,
|
162
|
-
#define NODE_OPT_ARG NODE_OPT_ARG
|
163
|
-
NODE_POSTARG,
|
164
|
-
#define NODE_POSTARG NODE_POSTARG
|
165
|
-
NODE_ARGSCAT,
|
166
|
-
#define NODE_ARGSCAT NODE_ARGSCAT
|
167
|
-
NODE_ARGSPUSH,
|
168
|
-
#define NODE_ARGSPUSH NODE_ARGSPUSH
|
169
|
-
NODE_SPLAT,
|
170
|
-
#define NODE_SPLAT NODE_SPLAT
|
171
|
-
NODE_TO_ARY,
|
172
|
-
#define NODE_TO_ARY NODE_TO_ARY
|
173
|
-
NODE_BLOCK_ARG,
|
174
|
-
#define NODE_BLOCK_ARG NODE_BLOCK_ARG
|
175
|
-
NODE_BLOCK_PASS,
|
176
|
-
#define NODE_BLOCK_PASS NODE_BLOCK_PASS
|
177
|
-
NODE_DEFN,
|
178
|
-
#define NODE_DEFN NODE_DEFN
|
179
|
-
NODE_DEFS,
|
180
|
-
#define NODE_DEFS NODE_DEFS
|
181
|
-
NODE_ALIAS,
|
182
|
-
#define NODE_ALIAS NODE_ALIAS
|
183
|
-
NODE_VALIAS,
|
184
|
-
#define NODE_VALIAS NODE_VALIAS
|
185
|
-
NODE_UNDEF,
|
186
|
-
#define NODE_UNDEF NODE_UNDEF
|
187
|
-
NODE_CLASS,
|
188
|
-
#define NODE_CLASS NODE_CLASS
|
189
|
-
NODE_MODULE,
|
190
|
-
#define NODE_MODULE NODE_MODULE
|
191
|
-
NODE_SCLASS,
|
192
|
-
#define NODE_SCLASS NODE_SCLASS
|
193
|
-
NODE_COLON2,
|
194
|
-
#define NODE_COLON2 NODE_COLON2
|
195
|
-
NODE_COLON3,
|
196
|
-
#define NODE_COLON3 NODE_COLON3
|
197
|
-
NODE_DOT2,
|
198
|
-
#define NODE_DOT2 NODE_DOT2
|
199
|
-
NODE_DOT3,
|
200
|
-
#define NODE_DOT3 NODE_DOT3
|
201
|
-
NODE_FLIP2,
|
202
|
-
#define NODE_FLIP2 NODE_FLIP2
|
203
|
-
NODE_FLIP3,
|
204
|
-
#define NODE_FLIP3 NODE_FLIP3
|
205
|
-
NODE_ATTRSET,
|
206
|
-
#define NODE_ATTRSET NODE_ATTRSET
|
207
|
-
NODE_SELF,
|
208
|
-
#define NODE_SELF NODE_SELF
|
209
|
-
NODE_NIL,
|
210
|
-
#define NODE_NIL NODE_NIL
|
211
|
-
NODE_TRUE,
|
212
|
-
#define NODE_TRUE NODE_TRUE
|
213
|
-
NODE_FALSE,
|
214
|
-
#define NODE_FALSE NODE_FALSE
|
215
|
-
NODE_ERRINFO,
|
216
|
-
#define NODE_ERRINFO NODE_ERRINFO
|
217
|
-
NODE_DEFINED,
|
218
|
-
#define NODE_DEFINED NODE_DEFINED
|
219
|
-
NODE_POSTEXE,
|
220
|
-
#define NODE_POSTEXE NODE_POSTEXE
|
221
|
-
NODE_ALLOCA,
|
222
|
-
#define NODE_ALLOCA NODE_ALLOCA
|
223
|
-
NODE_BMETHOD,
|
224
|
-
#define NODE_BMETHOD NODE_BMETHOD
|
225
|
-
NODE_MEMO,
|
226
|
-
#define NODE_MEMO NODE_MEMO
|
227
|
-
NODE_IFUNC,
|
228
|
-
#define NODE_IFUNC NODE_IFUNC
|
229
|
-
NODE_DSYM,
|
230
|
-
#define NODE_DSYM NODE_DSYM
|
231
|
-
NODE_ATTRASGN,
|
232
|
-
#define NODE_ATTRASGN NODE_ATTRASGN
|
233
|
-
NODE_PRELUDE,
|
234
|
-
#define NODE_PRELUDE NODE_PRELUDE
|
235
|
-
NODE_LAMBDA,
|
236
|
-
#define NODE_LAMBDA NODE_LAMBDA
|
237
|
-
NODE_OPTBLOCK,
|
238
|
-
#define NODE_OPTBLOCK NODE_OPTBLOCK
|
239
|
-
NODE_LAST
|
240
|
-
#define NODE_LAST NODE_LAST
|
241
|
-
};
|
242
|
-
|
243
|
-
typedef struct RNode {
|
244
|
-
unsigned long flags;
|
245
|
-
char *nd_file;
|
246
|
-
union {
|
247
|
-
struct RNode *node;
|
248
|
-
ID id;
|
249
|
-
VALUE value;
|
250
|
-
VALUE (*cfunc)(ANYARGS);
|
251
|
-
ID *tbl;
|
252
|
-
} u1;
|
253
|
-
union {
|
254
|
-
struct RNode *node;
|
255
|
-
ID id;
|
256
|
-
long argc;
|
257
|
-
VALUE value;
|
258
|
-
} u2;
|
259
|
-
union {
|
260
|
-
struct RNode *node;
|
261
|
-
ID id;
|
262
|
-
long state;
|
263
|
-
struct global_entry *entry;
|
264
|
-
long cnt;
|
265
|
-
VALUE value;
|
266
|
-
} u3;
|
267
|
-
} NODE;
|
268
|
-
|
269
|
-
#define RNODE(obj) (R_CAST(RNode)(obj))
|
270
|
-
|
271
|
-
/* 0..4:T_TYPES, 5:FL_MARK, 6:reserved, 7:NODE_FL_NEWLINE */
|
272
|
-
#define NODE_FL_NEWLINE (((VALUE)1)<<7)
|
273
|
-
|
274
|
-
#define NODE_TYPESHIFT 8
|
275
|
-
#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
|
276
|
-
|
277
|
-
#define nd_type(n) ((int) (((RNODE(n))->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
|
278
|
-
#define nd_set_type(n,t) \
|
279
|
-
RNODE(n)->flags=((RNODE(n)->flags&~NODE_TYPEMASK)|(((t)<<NODE_TYPESHIFT)&NODE_TYPEMASK))
|
280
|
-
|
281
|
-
#define NODE_LSHIFT (NODE_TYPESHIFT+7)
|
282
|
-
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
|
283
|
-
#define nd_line(n) ((VALUE)(((RNODE(n))->flags>>NODE_LSHIFT)&NODE_LMASK))
|
284
|
-
#define nd_set_line(n,l) \
|
285
|
-
RNODE(n)->flags=((RNODE(n)->flags&~(-1<<NODE_LSHIFT))|(((l)&NODE_LMASK)<<NODE_LSHIFT))
|
286
|
-
|
287
|
-
#define nd_head u1.node
|
288
|
-
#define nd_alen u2.argc
|
289
|
-
#define nd_next u3.node
|
290
|
-
|
291
|
-
#define nd_cond u1.node
|
292
|
-
#define nd_body u2.node
|
293
|
-
#define nd_else u3.node
|
294
|
-
|
295
|
-
#define nd_orig u3.value
|
296
|
-
|
297
|
-
#define nd_resq u2.node
|
298
|
-
#define nd_ensr u3.node
|
299
|
-
|
300
|
-
#define nd_1st u1.node
|
301
|
-
#define nd_2nd u2.node
|
302
|
-
|
303
|
-
#define nd_stts u1.node
|
304
|
-
|
305
|
-
#define nd_entry u3.entry
|
306
|
-
#define nd_vid u1.id
|
307
|
-
#define nd_cflag u2.id
|
308
|
-
#define nd_cval u3.value
|
309
|
-
|
310
|
-
#define nd_oid u1.id
|
311
|
-
#define nd_cnt u3.cnt
|
312
|
-
#define nd_tbl u1.tbl
|
313
|
-
|
314
|
-
#define nd_var u1.node
|
315
|
-
#define nd_iter u3.node
|
316
|
-
|
317
|
-
#define nd_value u2.node
|
318
|
-
#define nd_aid u3.id
|
319
|
-
|
320
|
-
#define nd_lit u1.value
|
321
|
-
|
322
|
-
#define nd_frml u2.argc
|
323
|
-
#define nd_rest u1.id
|
324
|
-
#define nd_opt u1.node
|
325
|
-
#define nd_pid u1.id
|
326
|
-
#define nd_plen u2.argc
|
327
|
-
|
328
|
-
#define nd_recv u1.node
|
329
|
-
#define nd_mid u2.id
|
330
|
-
#define nd_args u3.node
|
331
|
-
|
332
|
-
#define nd_noex u3.id
|
333
|
-
#define nd_defn u3.node
|
334
|
-
|
335
|
-
#define nd_cfnc u1.cfunc
|
336
|
-
#define nd_argc u2.argc
|
337
|
-
|
338
|
-
#define nd_cpath u1.node
|
339
|
-
#define nd_super u3.node
|
340
|
-
|
341
|
-
#define nd_modl u1.id
|
342
|
-
#define nd_clss u1.value
|
343
|
-
|
344
|
-
#define nd_beg u1.node
|
345
|
-
#define nd_end u2.node
|
346
|
-
#define nd_state u3.state
|
347
|
-
#define nd_rval u2.value
|
348
|
-
|
349
|
-
#define nd_nth u2.argc
|
350
|
-
|
351
|
-
#define nd_tag u1.id
|
352
|
-
#define nd_tval u2.value
|
353
|
-
|
354
|
-
#define nd_visi u2.argc
|
355
|
-
|
356
|
-
#define NEW_NODE(t,a0,a1,a2) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2))
|
357
|
-
|
358
|
-
#define NEW_METHOD(n,x,v) NEW_NODE(NODE_METHOD,x,n,v)
|
359
|
-
#define NEW_FBODY(n,i) NEW_NODE(NODE_FBODY,i,n,0)
|
360
|
-
#define NEW_DEFN(i,a,d,p) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d))
|
361
|
-
#define NEW_DEFS(r,i,a,d) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d))
|
362
|
-
#define NEW_CFUNC(f,c) NEW_NODE(NODE_CFUNC,f,c,0)
|
363
|
-
#define NEW_IFUNC(f,c) NEW_NODE(NODE_IFUNC,f,c,0)
|
364
|
-
#define NEW_SCOPE(a,b) NEW_NODE(NODE_SCOPE,local_tbl(),b,a)
|
365
|
-
#define NEW_BLOCK(a) NEW_NODE(NODE_BLOCK,a,0,0)
|
366
|
-
#define NEW_IF(c,t,e) NEW_NODE(NODE_IF,c,t,e)
|
367
|
-
#define NEW_UNLESS(c,t,e) NEW_IF(c,e,t)
|
368
|
-
#define NEW_CASE(h,b) NEW_NODE(NODE_CASE,h,b,0)
|
369
|
-
#define NEW_WHEN(c,t,e) NEW_NODE(NODE_WHEN,c,t,e)
|
370
|
-
#define NEW_OPT_N(b) NEW_NODE(NODE_OPT_N,0,b,0)
|
371
|
-
#define NEW_WHILE(c,b,n) NEW_NODE(NODE_WHILE,c,b,n)
|
372
|
-
#define NEW_UNTIL(c,b,n) NEW_NODE(NODE_UNTIL,c,b,n)
|
373
|
-
#define NEW_FOR(v,i,b) NEW_NODE(NODE_FOR,v,b,i)
|
374
|
-
#define NEW_ITER(a,b) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b),0)
|
375
|
-
#define NEW_LAMBDA(a) NEW_NODE(NODE_LAMBDA,a,0,0)
|
376
|
-
#define NEW_BREAK(s) NEW_NODE(NODE_BREAK,s,0,0)
|
377
|
-
#define NEW_NEXT(s) NEW_NODE(NODE_NEXT,s,0,0)
|
378
|
-
#define NEW_REDO() NEW_NODE(NODE_REDO,0,0,0)
|
379
|
-
#define NEW_RETRY() NEW_NODE(NODE_RETRY,0,0,0)
|
380
|
-
#define NEW_BEGIN(b) NEW_NODE(NODE_BEGIN,0,b,0)
|
381
|
-
#define NEW_RESCUE(b,res,e) NEW_NODE(NODE_RESCUE,b,res,e)
|
382
|
-
#define NEW_RESBODY(a,ex,n) NEW_NODE(NODE_RESBODY,n,ex,a)
|
383
|
-
#define NEW_ENSURE(b,en) NEW_NODE(NODE_ENSURE,b,0,en)
|
384
|
-
#define NEW_RETURN(s) NEW_NODE(NODE_RETURN,s,0,0)
|
385
|
-
#define NEW_YIELD(a,s) NEW_NODE(NODE_YIELD,a,0,s)
|
386
|
-
#define NEW_LIST(a) NEW_ARRAY(a)
|
387
|
-
#define NEW_ARRAY(a) NEW_NODE(NODE_ARRAY,a,1,0)
|
388
|
-
#define NEW_ZARRAY() NEW_NODE(NODE_ZARRAY,0,0,0)
|
389
|
-
#define NEW_HASH(a) NEW_NODE(NODE_HASH,a,0,0)
|
390
|
-
#define NEW_MASGN(l,r) NEW_NODE(NODE_MASGN,l,0,r)
|
391
|
-
#define NEW_GASGN(v,val) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v))
|
392
|
-
#define NEW_LASGN(v,val) NEW_NODE(NODE_LASGN,v,val,0)
|
393
|
-
#define NEW_DASGN(v,val) NEW_NODE(NODE_DASGN,v,val,0)
|
394
|
-
#define NEW_DASGN_CURR(v,val) NEW_NODE(NODE_DASGN_CURR,v,val,0)
|
395
|
-
#define NEW_IASGN(v,val) NEW_NODE(NODE_IASGN,v,val,0)
|
396
|
-
#define NEW_IASGN2(v,val) NEW_NODE(NODE_IASGN2,v,val,0)
|
397
|
-
#define NEW_CDECL(v,val,path) NEW_NODE(NODE_CDECL,v,val,path)
|
398
|
-
#define NEW_CVASGN(v,val) NEW_NODE(NODE_CVASGN,v,val,0)
|
399
|
-
#define NEW_CVDECL(v,val) NEW_NODE(NODE_CVDECL,v,val,0)
|
400
|
-
#define NEW_OP_ASGN1(p,id,a) NEW_NODE(NODE_OP_ASGN1,p,id,a)
|
401
|
-
#define NEW_OP_ASGN2(r,i,o,val) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o))
|
402
|
-
#define NEW_OP_ASGN22(i,o) NEW_NODE(NODE_OP_ASGN2,i,o,rb_id_attrset(i))
|
403
|
-
#define NEW_OP_ASGN_OR(i,val) NEW_NODE(NODE_OP_ASGN_OR,i,val,0)
|
404
|
-
#define NEW_OP_ASGN_AND(i,val) NEW_NODE(NODE_OP_ASGN_AND,i,val,0)
|
405
|
-
#define NEW_GVAR(v) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v))
|
406
|
-
#define NEW_LVAR(v) NEW_NODE(NODE_LVAR,v,0,0)
|
407
|
-
#define NEW_DVAR(v) NEW_NODE(NODE_DVAR,v,0,0)
|
408
|
-
#define NEW_IVAR(v) NEW_NODE(NODE_IVAR,v,0,0)
|
409
|
-
#define NEW_CONST(v) NEW_NODE(NODE_CONST,v,0,0)
|
410
|
-
#define NEW_CVAR(v) NEW_NODE(NODE_CVAR,v,0,0)
|
411
|
-
#define NEW_NTH_REF(n) NEW_NODE(NODE_NTH_REF,0,n,0)
|
412
|
-
#define NEW_BACK_REF(n) NEW_NODE(NODE_BACK_REF,0,n,0)
|
413
|
-
#define NEW_MATCH(c) NEW_NODE(NODE_MATCH,c,0,0)
|
414
|
-
#define NEW_MATCH2(n1,n2) NEW_NODE(NODE_MATCH2,n1,n2,0)
|
415
|
-
#define NEW_MATCH3(r,n2) NEW_NODE(NODE_MATCH3,r,n2,0)
|
416
|
-
#define NEW_LIT(l) NEW_NODE(NODE_LIT,l,0,0)
|
417
|
-
#define NEW_STR(s) NEW_NODE(NODE_STR,s,0,0)
|
418
|
-
#define NEW_DSTR(s) NEW_NODE(NODE_DSTR,s,1,0)
|
419
|
-
#define NEW_XSTR(s) NEW_NODE(NODE_XSTR,s,0,0)
|
420
|
-
#define NEW_DXSTR(s) NEW_NODE(NODE_DXSTR,s,0,0)
|
421
|
-
#define NEW_DSYM(s) NEW_NODE(NODE_DSYM,s,0,0)
|
422
|
-
#define NEW_EVSTR(n) NEW_NODE(NODE_EVSTR,0,(n),0)
|
423
|
-
#define NEW_CALL(r,m,a) NEW_NODE(NODE_CALL,r,m,a)
|
424
|
-
#define NEW_FCALL(m,a) NEW_NODE(NODE_FCALL,0,m,a)
|
425
|
-
#define NEW_VCALL(m) NEW_NODE(NODE_VCALL,0,m,0)
|
426
|
-
#define NEW_SUPER(a) NEW_NODE(NODE_SUPER,0,0,a)
|
427
|
-
#define NEW_ZSUPER() NEW_NODE(NODE_ZSUPER,0,0,0)
|
428
|
-
#define NEW_ARGS(m,o) NEW_NODE(NODE_ARGS,o,m,0)
|
429
|
-
#define NEW_ARGS_AUX(r,b) NEW_NODE(NODE_ARGS_AUX,r,b,0)
|
430
|
-
#define NEW_OPT_ARG(i,v) NEW_NODE(NODE_OPT_ARG,i,v,0)
|
431
|
-
#define NEW_POSTARG(i,v) NEW_NODE(NODE_POSTARG,i,v,0)
|
432
|
-
#define NEW_ARGSCAT(a,b) NEW_NODE(NODE_ARGSCAT,a,b,0)
|
433
|
-
#define NEW_ARGSPUSH(a,b) NEW_NODE(NODE_ARGSPUSH,a,b,0)
|
434
|
-
#define NEW_SPLAT(a) NEW_NODE(NODE_SPLAT,a,0,0)
|
435
|
-
#define NEW_TO_ARY(a) NEW_NODE(NODE_TO_ARY,a,0,0)
|
436
|
-
#define NEW_BLOCK_ARG(v) NEW_NODE(NODE_BLOCK_ARG,v,0,local_cnt(v))
|
437
|
-
#define NEW_BLOCK_PASS(b) NEW_NODE(NODE_BLOCK_PASS,0,b,0)
|
438
|
-
#define NEW_ALIAS(n,o) NEW_NODE(NODE_ALIAS,n,o,0)
|
439
|
-
#define NEW_VALIAS(n,o) NEW_NODE(NODE_VALIAS,n,o,0)
|
440
|
-
#define NEW_UNDEF(i) NEW_NODE(NODE_UNDEF,0,i,0)
|
441
|
-
#define NEW_CLASS(n,b,s) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b),(s))
|
442
|
-
#define NEW_SCLASS(r,b) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b),0)
|
443
|
-
#define NEW_MODULE(n,b) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b),0)
|
444
|
-
#define NEW_COLON2(c,i) NEW_NODE(NODE_COLON2,c,i,0)
|
445
|
-
#define NEW_COLON3(i) NEW_NODE(NODE_COLON3,0,i,0)
|
446
|
-
#define NEW_DOT2(b,e) NEW_NODE(NODE_DOT2,b,e,0)
|
447
|
-
#define NEW_DOT3(b,e) NEW_NODE(NODE_DOT3,b,e,0)
|
448
|
-
#define NEW_ATTRSET(a) NEW_NODE(NODE_ATTRSET,a,0,0)
|
449
|
-
#define NEW_SELF() NEW_NODE(NODE_SELF,0,0,0)
|
450
|
-
#define NEW_NIL() NEW_NODE(NODE_NIL,0,0,0)
|
451
|
-
#define NEW_TRUE() NEW_NODE(NODE_TRUE,0,0,0)
|
452
|
-
#define NEW_FALSE() NEW_NODE(NODE_FALSE,0,0,0)
|
453
|
-
#define NEW_ERRINFO() NEW_NODE(NODE_ERRINFO,0,0,0)
|
454
|
-
#define NEW_DEFINED(e) NEW_NODE(NODE_DEFINED,e,0,0)
|
455
|
-
#define NEW_PREEXE(b) NEW_SCOPE(b)
|
456
|
-
#define NEW_POSTEXE(b) NEW_NODE(NODE_POSTEXE,0,b,0)
|
457
|
-
#define NEW_BMETHOD(b) NEW_NODE(NODE_BMETHOD,0,0,b)
|
458
|
-
#define NEW_ATTRASGN(r,m,a) NEW_NODE(NODE_ATTRASGN,r,m,a)
|
459
|
-
#define NEW_PRELUDE(p,b) NEW_NODE(NODE_PRELUDE,p,b,0)
|
460
|
-
#define NEW_OPTBLOCK(a) NEW_NODE(NODE_OPTBLOCK,a,0,0)
|
461
|
-
|
462
|
-
#define NOEX_PUBLIC 0x00
|
463
|
-
#define NOEX_NOSUPER 0x01
|
464
|
-
#define NOEX_PRIVATE 0x02
|
465
|
-
#define NOEX_PROTECTED 0x04
|
466
|
-
#define NOEX_MASK 0x06 /* 0110 */
|
467
|
-
#define NOEX_BASIC 0x08
|
468
|
-
|
469
|
-
#define NOEX_UNDEF NOEX_NOSUPER
|
470
|
-
|
471
|
-
#define NOEX_MODFUNC 0x12
|
472
|
-
#define NOEX_SUPER 0x20
|
473
|
-
#define NOEX_VCALL 0x40
|
474
|
-
|
475
|
-
#define NOEX_SAFE(n) (((n) >> 8) & 0x0F)
|
476
|
-
#define NOEX_WITH(n, s) ((s << 8) | (n) | (ruby_running ? 0 : NOEX_BASIC))
|
477
|
-
#define NOEX_WITH_SAFE(n) NOEX_WITH(n, rb_safe_level())
|
478
|
-
|
479
|
-
#define CALL_PUBLIC 0
|
480
|
-
#define CALL_FCALL 1
|
481
|
-
#define CALL_VCALL 2
|
482
|
-
#define CALL_SUPER 3
|
483
|
-
|
484
|
-
#define RUBY_VM_METHOD_NODE NODE_METHOD
|
485
|
-
|
486
|
-
VALUE rb_parser_new(void);
|
487
|
-
VALUE rb_parser_end_seen_p(VALUE);
|
488
|
-
VALUE rb_parser_encoding(VALUE);
|
489
|
-
|
490
|
-
NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
|
491
|
-
NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
|
492
|
-
NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
|
493
|
-
|
494
|
-
NODE *rb_compile_cstr(const char*, const char*, int, int);
|
495
|
-
NODE *rb_compile_string(const char*, VALUE, int);
|
496
|
-
NODE *rb_compile_file(const char*, VALUE, int);
|
497
|
-
|
498
|
-
void rb_add_method(VALUE, ID, NODE *, int);
|
499
|
-
NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
|
500
|
-
|
501
|
-
NODE* rb_method_node(VALUE klass, ID id);
|
502
|
-
int rb_node_arity(NODE* node);
|
503
|
-
|
504
|
-
struct global_entry *rb_global_entry(ID);
|
505
|
-
VALUE rb_gvar_get(struct global_entry *);
|
506
|
-
VALUE rb_gvar_set(struct global_entry *, VALUE);
|
507
|
-
VALUE rb_gvar_defined(struct global_entry *);
|
508
|
-
|
509
|
-
#if defined(__cplusplus)
|
510
|
-
#if 0
|
511
|
-
{ /* satisfy cc-mode */
|
512
|
-
#endif
|
513
|
-
} /* extern "C" { */
|
514
|
-
#endif
|
515
|
-
|
516
|
-
#endif /* RUBY_NODE_H */
|