#pragma once #include #include namespace ivm { namespace detail { extern std::atomic IsolateSpecificSize; } /** * Like thread_local data, but specific to an Isolate instead. */ template class IsolateSpecific { template friend class IsolateSpecific; public: IsolateSpecific() = default; template auto Deref(Functor callback) -> v8::Local; private: size_t key{detail::IsolateSpecificSize++}; union HandleConvert { explicit HandleConvert(v8::Local data) : data{data} {} v8::Local data; v8::Local value; }; }; } // namespace ivm #include "environment.h"