proc.c: assume rb_iseq_location_t::first_lineno is always a Fixnum
Do not check for the value of rb_iseq_constant_body::line_info_table as it is no longer related. The checks seem to be the remains from the day before the dedicated 'first_lineno' field was introduced. Remove them. Note, rb_iseq_constant_body::line_info_table can be NULL only when the iseq does not contain any instructions that originate from Ruby code, for example, an iseq created with 'proc {}' under a non-default compile options where trace instructions are disabled. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9ec0e8cb35
commit
c54ede0560
15
proc.c
15
proc.c
@ -1076,12 +1076,8 @@ iseq_location(const rb_iseq_t *iseq)
|
|||||||
if (!iseq) return Qnil;
|
if (!iseq) return Qnil;
|
||||||
rb_iseq_check(iseq);
|
rb_iseq_check(iseq);
|
||||||
loc[0] = iseq->body->location.path;
|
loc[0] = iseq->body->location.path;
|
||||||
if (iseq->body->line_info_table) {
|
loc[1] = iseq->body->location.first_lineno;
|
||||||
loc[1] = rb_iseq_first_lineno(iseq);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
loc[1] = Qnil;
|
|
||||||
}
|
|
||||||
return rb_ary_new4(2, loc);
|
return rb_ary_new4(2, loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1234,12 +1230,9 @@ proc_to_s_(VALUE self, const rb_proc_t *proc)
|
|||||||
case block_type_iseq:
|
case block_type_iseq:
|
||||||
{
|
{
|
||||||
const rb_iseq_t *iseq = rb_iseq_check(block->as.captured.code.iseq);
|
const rb_iseq_t *iseq = rb_iseq_check(block->as.captured.code.iseq);
|
||||||
int first_lineno = 0;
|
|
||||||
if (iseq->body->line_info_table) {
|
|
||||||
first_lineno = FIX2INT(rb_iseq_first_lineno(iseq));
|
|
||||||
}
|
|
||||||
str = rb_sprintf("#<%s:%p@%"PRIsVALUE":%d%s>", cname, (void *)self,
|
str = rb_sprintf("#<%s:%p@%"PRIsVALUE":%d%s>", cname, (void *)self,
|
||||||
iseq->body->location.path, first_lineno, is_lambda);
|
iseq->body->location.path,
|
||||||
|
FIX2INT(iseq->body->location.first_lineno), is_lambda);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case block_type_symbol:
|
case block_type_symbol:
|
||||||
|
10
thread.c
10
thread.c
@ -788,19 +788,13 @@ thread_initialize(VALUE thread, VALUE args)
|
|||||||
}
|
}
|
||||||
GetThreadPtr(thread, th);
|
GetThreadPtr(thread, th);
|
||||||
if (th->first_args) {
|
if (th->first_args) {
|
||||||
VALUE proc = th->first_proc, line, loc;
|
VALUE proc = th->first_proc, loc;
|
||||||
VALUE file;
|
|
||||||
if (!proc || !RTEST(loc = rb_proc_location(proc))) {
|
if (!proc || !RTEST(loc = rb_proc_location(proc))) {
|
||||||
rb_raise(rb_eThreadError, "already initialized thread");
|
rb_raise(rb_eThreadError, "already initialized thread");
|
||||||
}
|
}
|
||||||
file = RARRAY_AREF(loc, 0);
|
|
||||||
if (NIL_P(line = RARRAY_AREF(loc, 1))) {
|
|
||||||
rb_raise(rb_eThreadError,
|
|
||||||
"already initialized thread - %"PRIsVALUE, file);
|
|
||||||
}
|
|
||||||
rb_raise(rb_eThreadError,
|
rb_raise(rb_eThreadError,
|
||||||
"already initialized thread - %"PRIsVALUE":%"PRIsVALUE,
|
"already initialized thread - %"PRIsVALUE":%"PRIsVALUE,
|
||||||
file, line);
|
RARRAY_AREF(loc, 0), RARRAY_AREF(loc, 1));
|
||||||
}
|
}
|
||||||
return thread_create_core(thread, args, 0);
|
return thread_create_core(thread, args, 0);
|
||||||
}
|
}
|
||||||
|
@ -563,9 +563,9 @@ rb_method_entry_make(VALUE klass, ID mid, VALUE defined_class, rb_method_visibil
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (iseq && !NIL_P(iseq->body->location.path)) {
|
if (iseq) {
|
||||||
int line = iseq->body->line_info_table ? FIX2INT(rb_iseq_first_lineno(iseq)) : 0;
|
rb_compile_warning(RSTRING_PTR(iseq->body->location.path),
|
||||||
rb_compile_warning(RSTRING_PTR(iseq->body->location.path), line,
|
FIX2INT(iseq->body->location.first_lineno),
|
||||||
"previous definition of %"PRIsVALUE" was here",
|
"previous definition of %"PRIsVALUE" was here",
|
||||||
rb_id2str(old_def->original_id));
|
rb_id2str(old_def->original_id));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user