summaryrefslogtreecommitdiff
path: root/vm_callinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'vm_callinfo.h')
-rw-r--r--vm_callinfo.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/vm_callinfo.h b/vm_callinfo.h
index e938092926..14027fc112 100644
--- a/vm_callinfo.h
+++ b/vm_callinfo.h
@@ -229,6 +229,23 @@ vm_ci_new_runtime_(ID mid, unsigned int flag, unsigned int argc, const struct rb
return vm_ci_new_(mid, flag, argc, kwarg, file, line);
}
+#define VM_CALLINFO_NOT_UNDER_GC IMEMO_FL_USER0
+
+static inline bool
+vm_ci_markable(const struct rb_callinfo *ci)
+{
+ if (! ci) {
+ return false; /* or true? This is Qfalse... */
+ }
+ else if (vm_ci_packed_p(ci)) {
+ return true;
+ }
+ else {
+ VM_ASSERT(IMEMO_TYPE_P(ci, imemo_callinfo));
+ return ! FL_ANY_RAW((VALUE)ci, VM_CALLINFO_NOT_UNDER_GC);
+ }
+}
+
typedef VALUE (*vm_call_handler)(
struct rb_execution_context_struct *ec,
struct rb_control_frame_struct *cfp,