| 140 | } |
| 141 | |
| 142 | static ExtContext* get(maajs::EnvType env) |
| 143 | { |
| 144 | #ifdef MAA_JS_IMPL_IS_NODEJS |
| 145 | auto ptr = env.GetInstanceData<ExtContext>(); |
| 146 | if (!ptr) { |
| 147 | ptr = new ExtContext { }; |
| 148 | env.SetInstanceData(ptr); |
| 149 | } |
| 150 | return ptr; |
| 151 | #endif |
| 152 | |
| 153 | #ifdef MAA_JS_IMPL_IS_QUICKJS |
| 154 | auto global = env.Global(); |
| 155 | auto ctx = global["__MAA_JS_EXT_CTX"].AsValue(); |
| 156 | if (ctx.IsUndefined()) { |
| 157 | auto ptr = new ExtContext; |
| 158 | global["__MAA_JS_EXT_CTX"] = { env, maajs::NativePointerHolder::make(env, ptr) }; |
| 159 | return ptr; |
| 160 | } |
| 161 | else { |
| 162 | return maajs::NativePointerHolder::take<ExtContext>(env, ctx.peek()); |
| 163 | } |
| 164 | /* |
| 165 | auto ptr = static_cast<ExtContext*>(JS_GetContextOpaque(env)); |
| 166 | if (!ptr) { |
| 167 | ptr = new ExtContext {}; |
| 168 | JS_SetContextOpaque(env, ptr); |
| 169 | JS_AddRuntimeFinalizer(env.runtime, +[](JSRuntime*, void* ptr) { delete static_cast<ExtContext*>(ptr); }, ptr); |
| 170 | } |
| 171 | return ptr; |
| 172 | */ |
| 173 | #endif |
| 174 | } |
| 175 | }; |
nothing calls this directly
no test coverage detected