The compile-time base offset for global side metadata layout. We treat offsets as relative
(starting from zero) and add the runtime base address when computing actual addresses.
The base address for the local side metadata space available to VM bindings, to be used for the per-object metadata.
VM bindings must use this to avoid overlap with core internal local side metadata.
The run-time base address for side metadata. This is initialized at startup by mmapping necessary memory address for side metadata,
and should be used as the base when computing actual side metadata addresses.
We use OnceLock to ensure it is only initialized once. To eliminate the cost of accessing OnceLock after initialization, we can use get().unwrap_unchecked().
TODO: use OncLock::get_unchecked() once it is stabilized.
The base address for the global side metadata space available to VM bindings, to be used for the per-object metadata.
VM bindings must use this to avoid overlap with core internal global side metadata.