1eace7efcSopenharmony_ci/* 2eace7efcSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3eace7efcSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4eace7efcSopenharmony_ci * you may not use this file except in compliance with the License. 5eace7efcSopenharmony_ci * You may obtain a copy of the License at 6eace7efcSopenharmony_ci * 7eace7efcSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8eace7efcSopenharmony_ci * 9eace7efcSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10eace7efcSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11eace7efcSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12eace7efcSopenharmony_ci * See the License for the specific language governing permissions and 13eace7efcSopenharmony_ci * limitations under the License. 14eace7efcSopenharmony_ci */ 15eace7efcSopenharmony_ci 16eace7efcSopenharmony_ci#include "runtime.h" 17eace7efcSopenharmony_ci 18eace7efcSopenharmony_ci#ifdef CJ_FRONTEND 19eace7efcSopenharmony_ci#include "cj_runtime.h" 20eace7efcSopenharmony_ci#endif 21eace7efcSopenharmony_ci#include "js_runtime.h" 22eace7efcSopenharmony_ci 23eace7efcSopenharmony_cinamespace OHOS { 24eace7efcSopenharmony_cinamespace AbilityRuntime { 25eace7efcSopenharmony_cinamespace { 26eace7efcSopenharmony_cistd::unique_ptr<Runtime> g_preloadedInstance; 27eace7efcSopenharmony_ci} 28eace7efcSopenharmony_ci 29eace7efcSopenharmony_cistd::unique_ptr<Runtime> Runtime::Create(const Runtime::Options& options) 30eace7efcSopenharmony_ci{ 31eace7efcSopenharmony_ci switch (options.lang) { 32eace7efcSopenharmony_ci case Runtime::Language::JS: 33eace7efcSopenharmony_ci return JsRuntime::Create(options); 34eace7efcSopenharmony_ci#ifdef CJ_FRONTEND 35eace7efcSopenharmony_ci case Runtime::Language::CJ: 36eace7efcSopenharmony_ci return CJRuntime::Create(options); 37eace7efcSopenharmony_ci#endif 38eace7efcSopenharmony_ci default: 39eace7efcSopenharmony_ci return std::unique_ptr<Runtime>(); 40eace7efcSopenharmony_ci } 41eace7efcSopenharmony_ci} 42eace7efcSopenharmony_ci 43eace7efcSopenharmony_civoid Runtime::SavePreloaded(std::unique_ptr<Runtime>&& instance) 44eace7efcSopenharmony_ci{ 45eace7efcSopenharmony_ci if (instance) { 46eace7efcSopenharmony_ci instance->FinishPreload(); 47eace7efcSopenharmony_ci } 48eace7efcSopenharmony_ci g_preloadedInstance = std::move(instance); 49eace7efcSopenharmony_ci} 50eace7efcSopenharmony_ci 51eace7efcSopenharmony_cistd::unique_ptr<Runtime> Runtime::GetPreloaded() 52eace7efcSopenharmony_ci{ 53eace7efcSopenharmony_ci return std::move(g_preloadedInstance); 54eace7efcSopenharmony_ci} 55eace7efcSopenharmony_ci} // namespace AbilityRuntime 56eace7efcSopenharmony_ci} // namespace OHOS 57