We should be able to call into mark (and related) functions even when not tracing without it raising. That way code that might be profiled can call it unconditionally.
If not currently available, a function may need to be added to check whether tracing is active or not.