Ruby  2.0.0p247(2013-06-27revision41674)
iseq.h
Go to the documentation of this file.
1 /**********************************************************************
2 
3  iseq.h -
4 
5  $Author: nobu $
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 #if defined __GNUC__ && __GNUC__ >= 4
16 #pragma GCC visibility push(default)
17 #endif
18 
19 /* compile.c */
23  VALUE exception, VALUE body);
24 
25 /* iseq.c */
26 VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
27 VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
29 unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
30 
31 int rb_iseq_line_trace_each(VALUE iseqval, int (*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data);
34 
35 /* proc.c */
37 rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
38 
49 };
50 
52  unsigned int position;
53  unsigned int line_no;
54 };
55 
57  enum catch_type {
64  } type;
66  unsigned long start;
67  unsigned long end;
68  unsigned long cont;
69  unsigned long sp;
70 };
71 
72 #define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
73 
76  unsigned long pos;
77  unsigned long size;
78  char *buff;
79 };
80 
82  /* GC is needed */
85  VALUE catch_table_ary; /* Array */
86 
87  /* GC is not needed */
95  int loopval_popped; /* used by NODE_BREAK */
99  int last_line;
101  int label_no;
104 #if SUPPORT_JOKE
105  st_table *labels_table;
106 #endif
107 };
108 
109 /* defined? */
110 
129 };
130 
132 
133 #define DEFAULT_SPECIAL_VAR_COUNT 2
134 
135 #if defined __GNUC__ && __GNUC__ >= 4
136 #pragma GCC visibility pop
137 #endif
138 
139 #endif /* RUBY_COMPILE_H */
VALUE data
Definition: tcltklib.c:3368
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1098
catch_type
Definition: iseq.h:57
unsigned long size
Definition: iseq.h:77
VALUE rb_iseq_line_trace_all(VALUE iseqval)
Definition: iseq.c:2136
unsigned long end
Definition: iseq.h:67
Definition: iseq.h:60
int rb_iseq_line_trace_each(VALUE iseqval, int(*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data)
Definition: iseq.c:2089
VALUE proc
Definition: tcltklib.c:2959
SSL_METHOD *(* func)(void)
Definition: ossl_ssl.c:108
struct iseq_compile_data_storage * storage_head
Definition: iseq.h:97
VALUE catch_table_ary
Definition: iseq.h:85
struct st_table * ruby_insn_make_insn_table(void)
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
Definition: compile.c:559
VALUE rb_iseq_defined_string(enum defined_type type)
Definition: iseq.c:1988
struct iseq_label_data * start_label
Definition: iseq.h:88
struct iseq_compile_data_storage * next
Definition: iseq.h:75
VALUE rb_iseq_compile_node(VALUE self, NODE *node)
Definition: compile.c:461
struct iseq_compile_data_ensure_node_stack * ensure_node_stack
Definition: iseq.h:94
VALUE VALUE args
Definition: tcltklib.c:2561
d
Definition: strlcat.c:58
VALUE current_block
Definition: iseq.h:91
unsigned long rb_event_flag_t
Definition: ripper.y:1603
const rb_compile_option_t * option
Definition: iseq.h:103
Definition: ripper.y:240
enum iseq_catch_table_entry::catch_type type
unsigned long pos
Definition: iseq.h:76
int specialized_instruction
Definition: iseq.h:43
Definition: iseq.h:58
VALUE mark_ary
Definition: iseq.h:84
int instructions_unification
Definition: iseq.h:45
int last_line
Definition: iseq.h:99
#define INT2FIX(i)
unsigned long start
Definition: iseq.h:66
Definition: iseq.h:59
Definition: iseq.h:63
defined_type
Definition: iseq.h:111
VALUE rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args, VALUE exception, VALUE body)
Definition: compile.c:5758
struct iseq_label_data * redo_label
Definition: iseq.h:90
rb_iseq_t * rb_proc_get_iseq(VALUE proc, int *is_proc)
Definition: proc.c:713
int type
Definition: tcltklib.c:111
Definition: iseq.h:56
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
Definition: iseq.c:559
Definition: iseq.h:61
VALUE err_info
Definition: iseq.h:83
Definition: iseq.h:62
VALUE rb_iseq_line_trace_specify(VALUE iseqval, VALUE pos, VALUE set)
Definition: iseq.c:2183
unsigned long sp
Definition: iseq.h:69
unsigned int position
Definition: iseq.h:52
VALUE ensure_node
Definition: iseq.h:92
int cached_const
Definition: iseq.h:96
VALUE for_iseq
Definition: iseq.h:93
struct iseq_compile_data_storage * storage_current
Definition: iseq.h:98
int last_coverable_line
Definition: iseq.h:100
rb_iseq_t * rb_method_get_iseq(VALUE body)
Definition: proc.c:1859
unsigned long cont
Definition: iseq.h:68
struct iseq_label_data * end_label
Definition: iseq.h:89
int loopval_popped
Definition: iseq.h:95
VALUE iseq
Definition: iseq.h:65
unsigned long VALUE
Definition: ripper.y:104
Definition: iseq.h:51
int node_level
Definition: iseq.h:102
unsigned int line_no
Definition: iseq.h:53
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
Definition: iseq.c:1914