* eval_intern.h, yarvcore.h: move declaration of sysstack_error
to yarvcore.h. * iseq.c: fix symbol name (:toplevel -> :top). * lib/vm/instruction.rb, template/vm.inc.tmpl: replacable current file name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12677 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1ccf555a70
commit
9c708baa2d
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
Mon Jul 2 08:53:47 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* eval_intern.h, yarvcore.h: move declaration of sysstack_error
|
||||||
|
to yarvcore.h.
|
||||||
|
|
||||||
|
* iseq.c: fix symbol name (:toplevel -> :top).
|
||||||
|
|
||||||
|
* lib/vm/instruction.rb, template/vm.inc.tmpl: replacable
|
||||||
|
current file name.
|
||||||
|
|
||||||
Mon Jul 2 05:29:07 2007 Koichi Sasada <ko1@atdot.net>
|
Mon Jul 2 05:29:07 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* compile.c, iseq.c: fix iseq some of load/store process.
|
* compile.c, iseq.c: fix iseq some of load/store process.
|
||||||
|
@ -178,7 +178,6 @@ char *strrchr _((const char *, const char));
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern VALUE exception_error;
|
extern VALUE exception_error;
|
||||||
extern VALUE sysstack_error;
|
|
||||||
|
|
||||||
void rb_thread_cleanup _((void));
|
void rb_thread_cleanup _((void));
|
||||||
void rb_thread_wait_other_threads _((void));
|
void rb_thread_wait_other_threads _((void));
|
||||||
|
34
iseq.c
34
iseq.c
@ -358,13 +358,13 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
|
|||||||
|
|
||||||
if (type_map == 0) {
|
if (type_map == 0) {
|
||||||
type_map = st_init_numtable();
|
type_map = st_init_numtable();
|
||||||
st_insert(type_map, ID2SYM(rb_intern("toplevel")), ISEQ_TYPE_TOP);
|
st_insert(type_map, ID2SYM(rb_intern("top")), ISEQ_TYPE_TOP);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("method")), ISEQ_TYPE_METHOD);
|
st_insert(type_map, ID2SYM(rb_intern("method")), ISEQ_TYPE_METHOD);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("block")), ISEQ_TYPE_BLOCK);
|
st_insert(type_map, ID2SYM(rb_intern("block")), ISEQ_TYPE_BLOCK);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("class")), ISEQ_TYPE_CLASS);
|
st_insert(type_map, ID2SYM(rb_intern("class")), ISEQ_TYPE_CLASS);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("rescue")), ISEQ_TYPE_RESCUE);
|
st_insert(type_map, ID2SYM(rb_intern("rescue")), ISEQ_TYPE_RESCUE);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("ensure")), ISEQ_TYPE_ENSURE);
|
st_insert(type_map, ID2SYM(rb_intern("ensure")), ISEQ_TYPE_ENSURE);
|
||||||
st_insert(type_map, ID2SYM(rb_intern("eval")), ISEQ_TYPE_EVAL);
|
st_insert(type_map, ID2SYM(rb_intern("eval")), ISEQ_TYPE_EVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (st_lookup(type_map, type, &iseq_type) == 0) {
|
if (st_lookup(type_map, type, &iseq_type) == 0) {
|
||||||
@ -1125,7 +1125,7 @@ iseq_data_to_ary(rb_iseq_t *iseq)
|
|||||||
static VALUE insn_syms[YARV_MAX_INSTRUCTION_SIZE];
|
static VALUE insn_syms[YARV_MAX_INSTRUCTION_SIZE];
|
||||||
struct st_table *labels_table = st_init_numtable();
|
struct st_table *labels_table = st_init_numtable();
|
||||||
|
|
||||||
DECL_SYMBOL(toplevel);
|
DECL_SYMBOL(top);
|
||||||
DECL_SYMBOL(method);
|
DECL_SYMBOL(method);
|
||||||
DECL_SYMBOL(block);
|
DECL_SYMBOL(block);
|
||||||
DECL_SYMBOL(class);
|
DECL_SYMBOL(class);
|
||||||
@ -1133,12 +1133,12 @@ iseq_data_to_ary(rb_iseq_t *iseq)
|
|||||||
DECL_SYMBOL(ensure);
|
DECL_SYMBOL(ensure);
|
||||||
DECL_SYMBOL(eval);
|
DECL_SYMBOL(eval);
|
||||||
|
|
||||||
if (sym_toplevel == 0) {
|
if (sym_top == 0) {
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<YARV_MAX_INSTRUCTION_SIZE; i++) {
|
for (i=0; i<YARV_MAX_INSTRUCTION_SIZE; i++) {
|
||||||
insn_syms[i] = ID2SYM(rb_intern(insn_name(i)));
|
insn_syms[i] = ID2SYM(rb_intern(insn_name(i)));
|
||||||
}
|
}
|
||||||
INIT_SYMBOL(toplevel);
|
INIT_SYMBOL(top);
|
||||||
INIT_SYMBOL(method);
|
INIT_SYMBOL(method);
|
||||||
INIT_SYMBOL(block);
|
INIT_SYMBOL(block);
|
||||||
INIT_SYMBOL(class);
|
INIT_SYMBOL(class);
|
||||||
@ -1149,13 +1149,13 @@ iseq_data_to_ary(rb_iseq_t *iseq)
|
|||||||
|
|
||||||
/* type */
|
/* type */
|
||||||
switch(iseq->type) {
|
switch(iseq->type) {
|
||||||
case ISEQ_TYPE_TOP: type = sym_toplevel; break;
|
case ISEQ_TYPE_TOP: type = sym_top; break;
|
||||||
case ISEQ_TYPE_METHOD: type = sym_method; break;
|
case ISEQ_TYPE_METHOD: type = sym_method; break;
|
||||||
case ISEQ_TYPE_BLOCK: type = sym_block; break;
|
case ISEQ_TYPE_BLOCK: type = sym_block; break;
|
||||||
case ISEQ_TYPE_CLASS: type = sym_class; break;
|
case ISEQ_TYPE_CLASS: type = sym_class; break;
|
||||||
case ISEQ_TYPE_RESCUE: type = sym_rescue; break;
|
case ISEQ_TYPE_RESCUE: type = sym_rescue; break;
|
||||||
case ISEQ_TYPE_ENSURE: type = sym_ensure; break;
|
case ISEQ_TYPE_ENSURE: type = sym_ensure; break;
|
||||||
case ISEQ_TYPE_EVAL: type = sym_eval; break;
|
case ISEQ_TYPE_EVAL: type = sym_eval; break;
|
||||||
default: rb_bug("unsupported iseq type");
|
default: rb_bug("unsupported iseq type");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -839,7 +839,7 @@ module RubyVM
|
|||||||
file = insn.body.instance_variable_get(:@file)
|
file = insn.body.instance_variable_get(:@file)
|
||||||
ret << "#line #{line+1} \"#{file}\"" << "\n"
|
ret << "#line #{line+1} \"#{file}\"" << "\n"
|
||||||
ret << insn.body
|
ret << insn.body
|
||||||
ret << '#line __CURRENT_LINE__ "vm.inc"' << "\n"
|
ret << '#line __CURRENT_LINE__ "__CURRENT_FILE__"' << "\n"
|
||||||
else
|
else
|
||||||
ret << insn.body
|
ret << insn.body
|
||||||
end
|
end
|
||||||
|
@ -12,17 +12,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
<%=
|
<%=
|
||||||
ret = ''
|
line = 15
|
||||||
offset = 15
|
vm_body.gsub(/\n|__CURRENT_LINE__|__CURRENT_FILE__/){|e|
|
||||||
line_no = 0
|
case e
|
||||||
vm_body.each_line{|line|
|
when '__CURRENT_LINE__'
|
||||||
if line =~ /^\#line __CURRENT_LINE__/
|
line.to_s
|
||||||
ret << line.sub(/__CURRENT_LINE__/, "#{line_no+offset}")
|
when '__CURRENT_FILE__'
|
||||||
|
"vm.inc"
|
||||||
else
|
else
|
||||||
ret <<line
|
line += 1
|
||||||
|
e
|
||||||
end
|
end
|
||||||
line_no += 1
|
|
||||||
}
|
}
|
||||||
ret
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
@ -687,6 +687,8 @@ int vm_get_sourceline(rb_control_frame_t *);
|
|||||||
VALUE yarvcore_eval_parsed(NODE *node, VALUE file);
|
VALUE yarvcore_eval_parsed(NODE *node, VALUE file);
|
||||||
VALUE yarvcore_eval(VALUE self, VALUE str, VALUE file, VALUE line);
|
VALUE yarvcore_eval(VALUE self, VALUE str, VALUE file, VALUE line);
|
||||||
|
|
||||||
|
RUBY_EXTERN VALUE sysstack_error;
|
||||||
|
|
||||||
/* for thread */
|
/* for thread */
|
||||||
|
|
||||||
#if RUBY_VM_THREAD_MODEL == 2
|
#if RUBY_VM_THREAD_MODEL == 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user