• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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