summaryrefslogtreecommitdiff
path: root/mjit.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-20 09:39:41 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-20 09:39:41 +0000
commit64072aa8e199fa0a3af85e3908c0af46f759f1ba (patch)
tree03a898b39fdb654048e603129421979245b70da4 /mjit.c
parentb2033b8b8418b0c1ceed54bdc170c03dd45d1cf8 (diff)
mjit.c: separate call from macro
* mjit.c (convert_unit_to_func): separate a function call from a macro, which evaluates the argument multiple times. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'mjit.c')
-rw-r--r--mjit.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/mjit.c b/mjit.c
index a64a56b3a6..502769c52b 100644
--- a/mjit.c
+++ b/mjit.c
@@ -827,10 +827,14 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
in_jit = TRUE;
CRITICAL_SECTION_FINISH(3, "before mjit_compile to wait GC finish");
- verbose(2, "start compile: %s@%s:%d -> %s", RSTRING_PTR(unit->iseq->body->location.label),
- RSTRING_PTR(rb_iseq_path(unit->iseq)), FIX2INT(unit->iseq->body->location.first_lineno), c_file);
- fprintf(f, "/* %s@%s:%d */\n\n", RSTRING_PTR(unit->iseq->body->location.label),
- RSTRING_PTR(rb_iseq_path(unit->iseq)), FIX2INT(unit->iseq->body->location.first_lineno));
+ {
+ VALUE s = rb_iseq_path(unit->iseq);
+ const char *label = RSTRING_PTR(unit->iseq->body->location.label);
+ const char *path = RSTRING_PTR(s);
+ int lineno = FIX2INT(unit->iseq->body->location.first_lineno);
+ verbose(2, "start compile: %s@%s:%d -> %s", label, path, lineno, c_file);
+ fprintf(f, "/* %s@%s:%d */\n\n", label, path, lineno);
+ }
success = mjit_compile(f, unit->iseq->body, funcname);
/* release blocking mjit_gc_start_hook */