Skip to content

Commit

Permalink
* eval_intern.h, yarvcore.h: move declaration of sysstack_error
Browse files Browse the repository at this point in the history
  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
  • Loading branch information
ko1 committed Jul 1, 2007
1 parent 1ccf555 commit 9c708ba
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 28 deletions.
10 changes: 10 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
Mon Jul 2 08:53:47 2007 Koichi Sasada <[email protected]>

* 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 <[email protected]>

* compile.c, iseq.c: fix iseq some of load/store process.
Expand Down
1 change: 0 additions & 1 deletion eval_intern.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,6 @@ char *strrchr _((const char *, const char));
}

extern VALUE exception_error;
extern VALUE sysstack_error;

void rb_thread_cleanup _((void));
void rb_thread_wait_other_threads _((void));
Expand Down
34 changes: 17 additions & 17 deletions iseq.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,13 +358,13 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)

if (type_map == 0) {
type_map = st_init_numtable();
st_insert(type_map, ID2SYM(rb_intern("toplevel")), ISEQ_TYPE_TOP);
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("class")), ISEQ_TYPE_CLASS);
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("eval")), ISEQ_TYPE_EVAL);
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("block")), ISEQ_TYPE_BLOCK);
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("ensure")), ISEQ_TYPE_ENSURE);
st_insert(type_map, ID2SYM(rb_intern("eval")), ISEQ_TYPE_EVAL);
}

if (st_lookup(type_map, type, &iseq_type) == 0) {
Expand Down Expand Up @@ -1125,20 +1125,20 @@ iseq_data_to_ary(rb_iseq_t *iseq)
static VALUE insn_syms[YARV_MAX_INSTRUCTION_SIZE];
struct st_table *labels_table = st_init_numtable();

DECL_SYMBOL(toplevel);
DECL_SYMBOL(top);
DECL_SYMBOL(method);
DECL_SYMBOL(block);
DECL_SYMBOL(class);
DECL_SYMBOL(rescue);
DECL_SYMBOL(ensure);
DECL_SYMBOL(eval);

if (sym_toplevel == 0) {
if (sym_top == 0) {
int i;
for (i=0; i<YARV_MAX_INSTRUCTION_SIZE; i++) {
insn_syms[i] = ID2SYM(rb_intern(insn_name(i)));
}
INIT_SYMBOL(toplevel);
INIT_SYMBOL(top);
INIT_SYMBOL(method);
INIT_SYMBOL(block);
INIT_SYMBOL(class);
Expand All @@ -1149,13 +1149,13 @@ iseq_data_to_ary(rb_iseq_t *iseq)

/* type */
switch(iseq->type) {
case ISEQ_TYPE_TOP: type = sym_toplevel; break;
case ISEQ_TYPE_METHOD: type = sym_method; break;
case ISEQ_TYPE_BLOCK: type = sym_block; break;
case ISEQ_TYPE_CLASS: type = sym_class; break;
case ISEQ_TYPE_RESCUE: type = sym_rescue; break;
case ISEQ_TYPE_ENSURE: type = sym_ensure; break;
case ISEQ_TYPE_EVAL: type = sym_eval; break;
case ISEQ_TYPE_TOP: type = sym_top; break;
case ISEQ_TYPE_METHOD: type = sym_method; break;
case ISEQ_TYPE_BLOCK: type = sym_block; break;
case ISEQ_TYPE_CLASS: type = sym_class; break;
case ISEQ_TYPE_RESCUE: type = sym_rescue; break;
case ISEQ_TYPE_ENSURE: type = sym_ensure; break;
case ISEQ_TYPE_EVAL: type = sym_eval; break;
default: rb_bug("unsupported iseq type");
};

Expand Down
2 changes: 1 addition & 1 deletion lib/vm/instruction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -839,7 +839,7 @@ def make_insn_def insn
file = insn.body.instance_variable_get(:@file)
ret << "#line #{line+1} \"#{file}\"" << "\n"
ret << insn.body
ret << '#line __CURRENT_LINE__ "vm.inc"' << "\n"
ret << '#line __CURRENT_LINE__ "__CURRENT_FILE__"' << "\n"
else
ret << insn.body
end
Expand Down
18 changes: 9 additions & 9 deletions template/vm.inc.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
*/

<%=
ret = ''
offset = 15
line_no = 0
vm_body.each_line{|line|
if line =~ /^\#line __CURRENT_LINE__/
ret << line.sub(/__CURRENT_LINE__/, "#{line_no+offset}")
line = 15
vm_body.gsub(/\n|__CURRENT_LINE__|__CURRENT_FILE__/){|e|
case e
when '__CURRENT_LINE__'
line.to_s
when '__CURRENT_FILE__'
"vm.inc"
else
ret <<line
line += 1
e
end
line_no += 1
}
ret
%>

2 changes: 2 additions & 0 deletions yarvcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,8 @@ int vm_get_sourceline(rb_control_frame_t *);
VALUE yarvcore_eval_parsed(NODE *node, VALUE file);
VALUE yarvcore_eval(VALUE self, VALUE str, VALUE file, VALUE line);

RUBY_EXTERN VALUE sysstack_error;

/* for thread */

#if RUBY_VM_THREAD_MODEL == 2
Expand Down

0 comments on commit 9c708ba

Please sign in to comment.