ruby/iseq.h

105 строки
2.8 KiB
C
Исходник Обычный вид История

/**********************************************************************
iseq.h -
$Author$
created at: 04/01/01 23:36:57 JST
Copyright (C) 2004-2008 Koichi Sasada
**********************************************************************/
#ifndef RUBY_COMPILE_H
#define RUBY_COMPILE_H
/* compile.c */
VALUE rb_iseq_compile_node(VALUE self, NODE *node);
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq);
VALUE rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
VALUE exception, VALUE body);
/* iseq.c */
* iseq.c (rb_iseq_load): renamed from ruby_iseq_load, since it is for C extensions or the ruby core. [ruby-core:21407] Index: compile.c =================================================================== --- compile.c (revision 21649) +++ compile.c (working copy) @@ -5078,5 +5078,5 @@ iseq_build_exception(rb_iseq_t *iseq, st } else { - eiseqval = ruby_iseq_load(ptr[1], iseq->self, Qnil); + eiseqval = rb_iseq_load(ptr[1], iseq->self, Qnil); } @@ -5162,5 +5162,5 @@ iseq_build_body(rb_iseq_t *iseq, LINK_AN if (op != Qnil) { if (TYPE(op) == T_ARRAY) { - argv[j] = ruby_iseq_load(op, iseq->self, Qnil); + argv[j] = rb_iseq_load(op, iseq->self, Qnil); } else if (CLASS_OF(op) == rb_cISeq) { Index: iseq.c =================================================================== --- iseq.c (revision 21649) +++ iseq.c (working copy) @@ -448,5 +448,5 @@ iseq_s_load(int argc, VALUE *argv, VALUE VALUE -ruby_iseq_load(VALUE data, VALUE parent, VALUE opt) +rb_iseq_load(VALUE data, VALUE parent, VALUE opt) { return iseq_load(rb_cISeq, data, parent, opt); Index: iseq.h =================================================================== --- iseq.h (revision 21649) +++ iseq.h (working copy) @@ -21,5 +21,5 @@ VALUE ruby_iseq_build_from_ary(rb_iseq_t /* iseq.c */ -VALUE ruby_iseq_load(VALUE data, VALUE parent, VALUE opt); +VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt); struct st_table *ruby_insn_make_insn_table(void); git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-18 22:05:15 +03:00
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
struct st_table *ruby_insn_make_insn_table(void);
#define ISEQ_TYPE_TOP INT2FIX(1)
#define ISEQ_TYPE_METHOD INT2FIX(2)
#define ISEQ_TYPE_BLOCK INT2FIX(3)
#define ISEQ_TYPE_CLASS INT2FIX(4)
#define ISEQ_TYPE_RESCUE INT2FIX(5)
#define ISEQ_TYPE_ENSURE INT2FIX(6)
#define ISEQ_TYPE_EVAL INT2FIX(7)
#define ISEQ_TYPE_MAIN INT2FIX(8)
#define ISEQ_TYPE_DEFINED_GUARD INT2FIX(9)
#define CATCH_TYPE_RESCUE ((int)INT2FIX(1))
#define CATCH_TYPE_ENSURE ((int)INT2FIX(2))
#define CATCH_TYPE_RETRY ((int)INT2FIX(3))
#define CATCH_TYPE_BREAK ((int)INT2FIX(4))
#define CATCH_TYPE_REDO ((int)INT2FIX(5))
#define CATCH_TYPE_NEXT ((int)INT2FIX(6))
struct iseq_insn_info_entry {
unsigned short position;
unsigned short line_no;
unsigned short sp;
};
struct iseq_catch_table_entry {
VALUE type;
VALUE iseq;
unsigned long start;
unsigned long end;
unsigned long cont;
unsigned long sp;
};
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
struct iseq_compile_data_storage {
struct iseq_compile_data_storage *next;
unsigned long pos;
unsigned long size;
char *buff;
};
struct iseq_compile_data {
/* GC is needed */
VALUE err_info;
VALUE mark_ary;
VALUE catch_table_ary; /* Array */
/* GC is not needed */
struct iseq_label_data *start_label;
struct iseq_label_data *end_label;
struct iseq_label_data *redo_label;
VALUE current_block;
VALUE ensure_node;
VALUE for_iseq;
struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
int loopval_popped; /* used by NODE_BREAK */
int cached_const;
struct iseq_compile_data_storage *storage_head;
struct iseq_compile_data_storage *storage_current;
int last_line;
int last_coverable_line;
int flip_cnt;
int label_no;
int node_level;
const rb_compile_option_t *option;
};
/* defined? */
#define DEFINED_IVAR INT2FIX(1)
#define DEFINED_IVAR2 INT2FIX(2)
#define DEFINED_GVAR INT2FIX(3)
#define DEFINED_CVAR INT2FIX(4)
#define DEFINED_CONST INT2FIX(5)
#define DEFINED_METHOD INT2FIX(6)
#define DEFINED_YIELD INT2FIX(7)
#define DEFINED_REF INT2FIX(8)
#define DEFINED_ZSUPER INT2FIX(9)
#define DEFINED_FUNC INT2FIX(10)
#endif /* RUBY_COMPILE_H */