1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_NAPI_NATIVE_ENGINE_IMPL_JERRYSCRIPT_JERRYSCRIPT_NATIVE_ENGINE_IMPL_H 17 #define FOUNDATION_ACE_NAPI_NATIVE_ENGINE_IMPL_JERRYSCRIPT_JERRYSCRIPT_NATIVE_ENGINE_IMPL_H 18 19 #include "jerryscript_headers.h" 20 #include "jerryscript_native_engine.h" 21 #include "native_engine/native_engine_interface.h" 22 23 24 class JerryScriptNativeEngineImpl : public NativeEngineInterface { 25 public: 26 explicit JerryScriptNativeEngineImpl(NativeEngine* engine, void* jsEngineInterface); 27 virtual ~JerryScriptNativeEngineImpl(); 28 29 virtual void Loop(LoopMode mode, bool needSync = false) override; 30 31 virtual NativeValue* GetGlobal(NativeEngine* engine) override; 32 virtual NativeValue* CreateNull(NativeEngine* engine) override; 33 virtual NativeValue* CreateUndefined(NativeEngine* engine) override; 34 virtual NativeValue* CreateBoolean(NativeEngine* engine, bool value) override; 35 virtual NativeValue* CreateNumber(NativeEngine* engine, int32_t value) override; 36 virtual NativeValue* CreateNumber(NativeEngine* engine, uint32_t value) override; 37 virtual NativeValue* CreateNumber(NativeEngine* engine, int64_t value) override; 38 virtual NativeValue* CreateNumber(NativeEngine* engine, double value) override; 39 virtual NativeValue* CreateBigInt(NativeEngine* engine, int64_t value) override; 40 virtual NativeValue* CreateBigInt(NativeEngine* engine, uint64_t value) override; 41 virtual NativeValue* CreateString(NativeEngine* engine, const char* value, size_t length) override; 42 virtual NativeValue* CreateString16(NativeEngine* engine, const char16_t* value, size_t length) override; 43 44 virtual NativeValue* CreateSymbol(NativeEngine* engine, NativeValue* value) override; 45 virtual NativeValue* CreateExternal(NativeEngine* engine, void* value, 46 NativeFinalize callback, void* hint, size_t nativeBindingSize = 0) override; 47 48 virtual NativeValue* CreateObject(NativeEngine* engine) override; 49 virtual NativeValue* CreateNativeBindingObject(NativeEngine* engine, void* detach, void* attach) override; CreateNBObject(NativeEngine * engine,DetachCallback detach,AttachCallback attach)50 virtual NativeValue* CreateNBObject(NativeEngine* engine, DetachCallback detach, AttachCallback attach) override { return nullptr; }; 51 virtual NativeValue* CreateFunction( 52 NativeEngine* engine, const char* name, size_t length, NativeCallback cb, void* value) override; 53 virtual NativeValue* CreateArray(NativeEngine* engine, size_t length) override; 54 virtual NativeValue* CreateBuffer(NativeEngine* engine, void** value, size_t length) override; 55 virtual NativeValue* CreateBufferCopy( 56 NativeEngine* engine, void** value, size_t length, const void* data) override; 57 virtual NativeValue* CreateBufferExternal( 58 NativeEngine* engine, void* value, size_t length, NativeFinalize cb, void* hint) override; 59 virtual NativeValue* CreateArrayBuffer( 60 NativeEngine* engine, void** value, size_t length) override; 61 virtual NativeValue* CreateArrayBufferExternal( 62 NativeEngine* engine, void* value, size_t length, NativeFinalize cb, void* hint) override; 63 virtual NativeValue* CreateTypedArray(NativeEngine* engine, 64 NativeTypedArrayType type, 65 NativeValue* value, 66 size_t length, 67 size_t offset) override; 68 virtual NativeValue* CreateDataView( 69 NativeEngine* engine, NativeValue* value, size_t length, size_t offset) override; 70 virtual NativeValue* CreatePromise(NativeEngine* engine, NativeDeferred** deferred) override; 71 virtual void SetPromiseRejectCallback(NativeEngine* engine, NativeReference* rejectCallbackRef, 72 NativeReference* checkCallbackRef) override; 73 virtual NativeValue* CreateError(NativeEngine* engine, NativeValue* code, NativeValue* Message) override; 74 75 virtual bool InitTaskPoolThread(NativeEngine* engine, NapiConcurrentCallback callback) override; 76 virtual bool InitTaskPoolFunc(NativeEngine* engine, NativeValue* func) override; 77 78 virtual NativeValue* CallFunction(NativeEngine* engine, 79 NativeValue* thisVar, 80 NativeValue* function, 81 NativeValue* const *argv, 82 size_t argc) override; 83 virtual NativeValue* RunScript(NativeEngine* engine, NativeValue* script) override; RunScriptPath(NativeEngine * engine,const char * path)84 virtual NativeValue* RunScriptPath(NativeEngine* engine, const char* path) override 85 { 86 return nullptr; 87 } RunScriptBuffer(NativeEngine * engine,const char * path,std::vector<uint8_t> & buffer,bool isBundle)88 virtual NativeValue* RunScriptBuffer( 89 NativeEngine* engine, const char* path, std::vector<uint8_t>& buffer, bool isBundle) override 90 { 91 return nullptr; 92 } 93 RunScriptBuffer(const char* path, std::vector<uint8_t>& buffer, bool isBundle) override; 94 virtual NativeValue* RunBufferScript(NativeEngine* engine, std::vector<uint8_t>& buffer) override; 95 virtual NativeValue* RunActor( 96 NativeEngine* engine, std::vector<uint8_t>& buffer, const char *descriptor) override; 97 virtual NativeValue* DefineClass(NativeEngine* engine, 98 const char* name, 99 NativeCallback callback, 100 void* data, 101 const NativePropertyDescriptor* properties, 102 size_t length) override; 103 104 virtual NativeValue* CreateInstance(NativeEngine* engine, 105 NativeValue* constructor, 106 NativeValue* const *argv, 107 size_t argc) override; 108 109 virtual NativeReference* CreateReference(NativeEngine* engine, NativeValue* value, uint32_t initialRefcount, 110 NativeFinalize callback = nullptr, void* data = nullptr, void* hint = nullptr) override; 111 112 virtual bool Throw(NativeValue* error) override; 113 virtual bool Throw(NativeEngine* engine, NativeErrorType type, const char* code, const char* message) override; 114 115 virtual void* CreateRuntime(NativeEngine* engine) override; 116 virtual NativeValue* Serialize(NativeEngine* context, NativeValue* value, NativeValue* transfer) override; 117 virtual NativeValue* Deserialize(NativeEngine* engine, NativeEngine* context, NativeValue* recorder) override; DeleteSerializationData(NativeValue * value)118 virtual void DeleteSerializationData(NativeValue* value) const override {} 119 120 virtual NativeValue* LoadModule(NativeEngine* engine, NativeValue* str, const std::string& fileName) override; 121 122 static NativeValue* JerryValueToNativeValue(JerryScriptNativeEngine* engine, jerry_value_t value); 123 virtual NativeValue* ValueToNativeValue(NativeEngine* engine, JSValueWrapper& value) override; 124 virtual bool TriggerFatalException(NativeValue* error) override; 125 virtual bool AdjustExternalMemory(int64_t ChangeInBytes, int64_t* AdjustedValue) override; 126 virtual NativeValue* CreateDate(NativeEngine* engine, double time) override; 127 virtual NativeValue* CreateBigWords( 128 NativeEngine* engine, int sign_bit, size_t word_count, const uint64_t* words) override; 129 130 void StartCpuProfiler(const std::string& fileName = "") override {} StopCpuProfiler()131 void StopCpuProfiler() override {} 132 ResumeVM()133 void ResumeVM() override {} SuspendVM()134 bool SuspendVM() override 135 { 136 return false; 137 } IsSuspended()138 bool IsSuspended() override 139 { 140 return false; 141 } CheckSafepoint()142 bool CheckSafepoint() override 143 { 144 return false; 145 } 146 147 void DumpHeapSnapshot(const std::string& path, bool isVmMode = true, 148 DumpFormat dumpFormat = DumpFormat::JSON) override {} 149 void DumpHeapSnapshotExt(bool isVmMode = true, DumpFormat dumpFormat = DumpFormat::JSON, 150 bool isPrivate = false) override {} BuildNativeAndJsStackTrace(std::string & stackTraceStr)151 bool BuildNativeAndJsStackTrace(std::string& stackTraceStr) override 152 { 153 return false; 154 } BuildJsStackTrace(std::string & stackTraceStr)155 bool BuildJsStackTrace(std::string& stackTraceStr) override 156 { 157 return false; 158 } BuildJsStackInfoList(uint32_t tid,std::vector<JsFrameInfo> & jsFrames)159 bool BuildJsStackInfoList(uint32_t tid, std::vector<JsFrameInfo>& jsFrames) override 160 { 161 return false; 162 } DeleteWorker(NativeEngine * hostEngine,NativeEngine * workerEngine)163 bool DeleteWorker(NativeEngine* hostEngine, NativeEngine* workerEngine) override 164 { 165 return false; 166 } 167 bool StartHeapTracking(double timeInterval, bool isVmMode = true) override 168 { 169 return false; 170 } StopHeapTracking(const std::string & filePath)171 bool StopHeapTracking(const std::string& filePath) override 172 { 173 return false; 174 } 175 PrintStatisticResult()176 void PrintStatisticResult() override {} StartRuntimeStat()177 void StartRuntimeStat() override {} StopRuntimeStat()178 void StopRuntimeStat() override {} GetArrayBufferSize()179 size_t GetArrayBufferSize() override 180 { 181 return 0; 182 } GetHeapTotalSize()183 size_t GetHeapTotalSize() override 184 { 185 return 0; 186 } GetHeapUsedSize()187 size_t GetHeapUsedSize() override 188 { 189 return 0; 190 } 191 RegisterUncaughtExceptionHandler(UncaughtExceptionCallback callback)192 void RegisterUncaughtExceptionHandler(UncaughtExceptionCallback callback) override {} HandleUncaughtException(NativeEngine * engine)193 void HandleUncaughtException(NativeEngine* engine) override {} 194 }; 195 196 #endif /* FOUNDATION_ACE_NAPI_NATIVE_ENGINE_IMPL_JERRYSCRIPT_JERRYSCRIPT_NATIVE_ENGINE_IMPL_H_ */ 197