Ruby  2.1.3p242(2014-09-19revision47630)
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 
16 
17 /* compile.c */
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);
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);
33 
34 /* proc.c */
36 rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
37 
48 };
49 
51  unsigned int position;
52  unsigned int line_no;
53 };
54 
56  enum catch_type {
63  } type;
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 
75  unsigned long pos;
76  unsigned long size;
77  char *buff;
78 };
79 
81  /* GC is needed */
82  const VALUE err_info;
84  const VALUE catch_table_ary; /* Array */
85 
86  /* GC is not needed */
94  int loopval_popped; /* used by NODE_BREAK */
98  int last_line;
100  int label_no;
103 #if SUPPORT_JOKE
104  st_table *labels_table;
105 #endif
106 };
107 
108 /* defined? */
109 
128 };
129 
131 
132 #define DEFAULT_SPECIAL_VAR_COUNT 2
133 
135 
136 #endif /* RUBY_COMPILE_H */
137