aboutsummaryrefslogtreecommitdiffstats
path: root/vm_opts.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-26 08:11:05 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-26 08:11:05 +0000
commitd3a9ebeb1c49e1cf8dd6accec6485dee32ccff17 (patch)
treeb905c1b8dea5fcca6d8890e748ce031f4011d273 /vm_opts.h
parentee819b0ddb0cbeb9c587e743204988b2e05e7c5d (diff)
downloadruby-d3a9ebeb1c49e1cf8dd6accec6485dee32ccff17.tar.gz
fix OPT_CALL_THREADED_CODE issue.
* insns.def (opt_send_without_block): reorder insn position because `opt_str_freeze` insn refer this insn (function) when OPT_CALL_THREADED_CODE is true. * vm_opts.h (OPT_THREADED_CODE): introduce new macro to select threaded code implementation with a compile option (-D...). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_opts.h')
-rw-r--r--vm_opts.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/vm_opts.h b/vm_opts.h
index 0d87e65654..b21db2b5aa 100644
--- a/vm_opts.h
+++ b/vm_opts.h
@@ -30,9 +30,19 @@
*/
/* C compiler dependent */
-#define OPT_DIRECT_THREADED_CODE 1
-#define OPT_TOKEN_THREADED_CODE 0
-#define OPT_CALL_THREADED_CODE 0
+
+/*
+ * 0: direct (using labeled goto using GCC special)
+ * 1: token (switch/case)
+ * 2: call (function call for each insn dispatch)
+ */
+#ifndef OPT_THREADED_CODE
+#define OPT_THREADED_CODE 0
+#endif
+
+#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
+#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
+#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
/* VM running option */
#define OPT_CHECKED_RUN 1