Ruby
2.1.3p242(2014-09-19revision47630)
Main Page
Modules
Data Structures
Files
File List
Globals
iseq.h
Go to the documentation of this file.
1
/**********************************************************************
2
3
iseq.h -
4
5
$Author: ko1 $
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
RUBY_SYMBOL_EXPORT_BEGIN
16
17
/* compile.c */
18
VALUE
rb_iseq_compile_node
(
VALUE
self
,
NODE
*node);
19
int
rb_iseq_translate_threaded_code
(
rb_iseq_t
*iseq);
20
VALUE
rb_iseq_build_from_ary
(
rb_iseq_t
*iseq,
VALUE
locals,
VALUE
args,
21
VALUE
exception,
VALUE
body);
22
23
/* iseq.c */
24
void
rb_iseq_add_mark_object
(
rb_iseq_t
*iseq,
VALUE
obj);
25
VALUE
rb_iseq_load
(
VALUE
data,
VALUE
parent,
VALUE
opt);
26
VALUE
rb_iseq_parameters
(
const
rb_iseq_t
*iseq,
int
is_proc);
27
struct
st_table
*
ruby_insn_make_insn_table
(
void
);
28
unsigned
int
rb_iseq_line_no
(
const
rb_iseq_t
*iseq,
size_t
pos);
29
30
int
rb_iseq_line_trace_each
(
VALUE
iseqval,
int
(*
func
)(
int
line,
rb_event_flag_t
*events_ptr,
void
*d),
void
*data);
31
VALUE
rb_iseq_line_trace_all
(
VALUE
iseqval);
32
VALUE
rb_iseq_line_trace_specify
(
VALUE
iseqval,
VALUE
pos,
VALUE
set
);
33
34
/* proc.c */
35
rb_iseq_t
*
rb_method_get_iseq
(
VALUE
body);
36
rb_iseq_t
*
rb_proc_get_iseq
(
VALUE
proc,
int
*is_proc);
37
38
struct
rb_compile_option_struct
{
39
int
inline_const_cache
;
40
int
peephole_optimization
;
41
int
tailcall_optimization
;
42
int
specialized_instruction
;
43
int
operands_unification
;
44
int
instructions_unification
;
45
int
stack_caching
;
46
int
trace_instruction
;
47
int
debug_level
;
48
};
49
50
struct
iseq_line_info_entry
{
51
unsigned
int
position
;
52
unsigned
int
line_no
;
53
};
54
55
struct
iseq_catch_table_entry
{
56
enum
catch_type
{
57
CATCH_TYPE_RESCUE
=
INT2FIX
(1),
58
CATCH_TYPE_ENSURE
=
INT2FIX
(2),
59
CATCH_TYPE_RETRY
=
INT2FIX
(3),
60
CATCH_TYPE_BREAK
=
INT2FIX
(4),
61
CATCH_TYPE_REDO
=
INT2FIX
(5),
62
CATCH_TYPE_NEXT
=
INT2FIX
(6)
63
}
type
;
64
VALUE
iseq
;
65
unsigned
long
start
;
66
unsigned
long
end
;
67
unsigned
long
cont
;
68
unsigned
long
sp
;
69
};
70
71
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
72
73
struct
iseq_compile_data_storage
{
74
struct
iseq_compile_data_storage
*
next
;
75
unsigned
long
pos
;
76
unsigned
long
size
;
77
char
*
buff
;
78
};
79
80
struct
iseq_compile_data
{
81
/* GC is needed */
82
const
VALUE
err_info
;
83
VALUE
mark_ary
;
84
const
VALUE
catch_table_ary
;
/* Array */
85
86
/* GC is not needed */
87
struct
iseq_label_data
*
start_label
;
88
struct
iseq_label_data
*
end_label
;
89
struct
iseq_label_data
*
redo_label
;
90
VALUE
current_block
;
91
VALUE
ensure_node
;
92
VALUE
for_iseq
;
93
struct
iseq_compile_data_ensure_node_stack
*
ensure_node_stack
;
94
int
loopval_popped
;
/* used by NODE_BREAK */
95
int
cached_const
;
96
struct
iseq_compile_data_storage
*
storage_head
;
97
struct
iseq_compile_data_storage
*
storage_current
;
98
int
last_line
;
99
int
last_coverable_line
;
100
int
label_no
;
101
int
node_level
;
102
const
rb_compile_option_t
*
option
;
103
#if SUPPORT_JOKE
104
st_table
*labels_table;
105
#endif
106
};
107
108
/* defined? */
109
110
enum
defined_type
{
111
DEFINED_NIL
= 1,
112
DEFINED_IVAR
,
113
DEFINED_LVAR
,
114
DEFINED_GVAR
,
115
DEFINED_CVAR
,
116
DEFINED_CONST
,
117
DEFINED_METHOD
,
118
DEFINED_YIELD
,
119
DEFINED_ZSUPER
,
120
DEFINED_SELF
,
121
DEFINED_TRUE
,
122
DEFINED_FALSE
,
123
DEFINED_ASGN
,
124
DEFINED_EXPR
,
125
DEFINED_IVAR2
,
126
DEFINED_REF
,
127
DEFINED_FUNC
128
};
129
130
VALUE
rb_iseq_defined_string
(
enum
defined_type
type
);
131
132
#define DEFAULT_SPECIAL_VAR_COUNT 2
133
134
RUBY_SYMBOL_EXPORT_END
135
136
#endif
/* RUBY_COMPILE_H */
137
Generated on Mon Sep 22 2014 11:05:33 for Ruby by
1.8.2