summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-27 00:43:23 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-27 00:43:23 +0000
commit9f1c00ce65ed8762d5ab9f133145e19d1951a7f3 (patch)
tree2a48a117c2f710389db21b09bed2230a84d796ac /iseq.c
parent2734867c16fdb8a786219ceb9c157be893da8c05 (diff)
Relax `rb_bug()` condition.
* iseq.c (rb_iseq_trace_set): simply return immediately if ISeq::compile_data is available. Not sure why this state is allowed, but exception during compile (or `ISeq::load`) can make such states. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'iseq.c')
-rw-r--r--iseq.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/iseq.c b/iseq.c
index 382ddec437..fb88fd89ae 100644
--- a/iseq.c
+++ b/iseq.c
@@ -2327,6 +2327,10 @@ rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events)
if (iseq->aux.trace_events == turnon_events) {
return;
}
+ if (iseq->flags & ISEQ_USE_COMPILE_DATA) {
+ /* this is building ISeq */
+ return;
+ }
else {
unsigned int i;
VALUE *iseq_encoded = (VALUE *)iseq->body->iseq_encoded;
@@ -2336,9 +2340,6 @@ rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events)
#else
const VALUE *code = iseq->body->iseq_encoded;
#endif
- if (iseq->flags & ISEQ_USE_COMPILE_DATA) {
- rb_bug("ISEQ_USE_COMPILE_DATA should not be enabled: %s:%d\n", RSTRING_PTR(rb_iseq_path(iseq)), FIX2INT(rb_iseq_first_lineno(iseq)));
- }
((rb_iseq_t *)iseq)->aux.trace_events = turnon_events;
for (i=0; i<iseq->body->iseq_size;) {