summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-13 12:29:55 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-03-13 12:29:55 +0000
commitd5e93cb5822700e77def28b3b0aa7da425ce5ac8 (patch)
tree136d3e13e63ead15ffa63c93e402adb9aa4035c4
parentccc25765143ef294c0a68b48d829c37d86c93b65 (diff)
mjit_compile.c: disable comment_id by default
Doing `rb_ary_aref` to `global_symbols.ids` is not thread-safe and randomly causes SEGV. https://gist.github.com/k0kubun/ab60727c6be7c0e777d2b4241f59173c But it's convenient for development. So I keep it optionally available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--mjit_compile.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/mjit_compile.c b/mjit_compile.c
index 5bf14a1388..6a48d06703 100644
--- a/mjit_compile.c
+++ b/mjit_compile.c
@@ -78,9 +78,13 @@ compile_case_dispatch_each(VALUE key, VALUE value, VALUE arg)
return ST_CONTINUE;
}
+#define MJIT_COMMENT_ID 0
+
+/* Calling rb_id2str in MJIT worker causes random SEGV. So this is disabled by default. */
static void
comment_id(FILE *f, ID id)
{
+#ifdef MJIT_COMMENT_ID
VALUE name = rb_id2str(id);
const char *p, *e;
char c, prev = '\0';
@@ -98,6 +102,7 @@ comment_id(FILE *f, ID id)
prev = c;
}
fputs("\" */", f);
+#endif
}
static void compile_insns(FILE *f, const struct rb_iseq_constant_body *body, unsigned int stack_size,