• 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_H
17 #define FOUNDATION_ACE_NAPI_NATIVE_ENGINE_IMPL_JERRYSCRIPT_JERRYSCRIPT_NATIVE_ENGINE_H
18 
19 #include "jerryscript_headers.h"
20 #include "native_engine/native_engine.h"
21 
22 class JerryScriptNativeEngine : public NativeEngine {
23 public:
24     JerryScriptNativeEngine(void* jsEngine);
25     JerryScriptNativeEngine(NativeEngineInterface* engineImpl, void* jsEngine, bool isAppModule);
26     virtual ~JerryScriptNativeEngine();
27 
28     virtual void Loop(LoopMode mode, bool needSync = false) override;
29 
30     virtual NativeValue* GetGlobal() override;
31     virtual NativeValue* CreateNull() override;
32     virtual NativeValue* CreateUndefined() override;
33     virtual NativeValue* CreateBoolean(bool value) override;
34     virtual NativeValue* CreateNumber(int32_t value) override;
35     virtual NativeValue* CreateNumber(uint32_t value) override;
36     virtual NativeValue* CreateNumber(int64_t value) override;
37     virtual NativeValue* CreateNumber(double value) override;
38     virtual NativeValue* CreateBigInt(int64_t value) override;
39     virtual NativeValue* CreateBigInt(uint64_t value) override;
40     virtual NativeValue* CreateString(const char* value, size_t length) override;
41     virtual NativeValue* CreateString16(const char16_t* value, size_t length) override;
42 
43     virtual NativeValue* CreateSymbol(NativeValue* value) override;
44     virtual NativeValue* CreateExternal(void* value, NativeFinalize callback, void* hint,
45         size_t nativeBindingSize = 0) override;
46 
47     virtual NativeValue* CreateObject() override;
48     virtual NativeValue* CreateNativeBindingObject(void* detach, void* attach) override;
CreateNBObject(DetachCallback detach,AttachCallback attach)49     virtual NativeValue* CreateNBObject(DetachCallback detach, AttachCallback attach) override { return nullptr; };
50     virtual NativeValue* CreateFunction(const char* name, size_t length, NativeCallback cb, void* value) override;
51     virtual NativeValue* CreateArray(size_t length) override;
52     virtual NativeValue* CreateBuffer(void** value, size_t length) override;
53     virtual NativeValue* CreateBufferCopy(void** value, size_t length, const void* data) override;
54     virtual NativeValue* CreateBufferExternal(void* value, size_t length, NativeFinalize cb, void* hint) override;
55     virtual NativeValue* CreateArrayBuffer(void** value, size_t length) override;
56     virtual NativeValue* CreateArrayBufferExternal(void* value, size_t length, NativeFinalize cb, void* hint) override;
57 
58     virtual NativeValue* CreateTypedArray(NativeTypedArrayType type,
59                                           NativeValue* value,
60                                           size_t length,
61                                           size_t offset) override;
62     virtual NativeValue* CreateDataView(NativeValue* value, size_t length, size_t offset) override;
63     virtual NativeValue* CreatePromise(NativeDeferred** deferred) override;
64     virtual void SetPromiseRejectCallback(NativeReference* rejectCallbackRef,
65                                           NativeReference* checkCallbackRef) override;
66     virtual NativeValue* CreateError(NativeValue* code, NativeValue* Message) override;
67 
68     virtual bool InitTaskPoolThread(NativeEngine* engine, NapiConcurrentCallback callback) override;
69     virtual bool InitTaskPoolFunc(NativeEngine* engine, NativeValue* func) override;
70 
71     virtual NativeValue* CallFunction(NativeValue* thisVar,
72                                       NativeValue* function,
73                                       NativeValue* const* argv,
74                                       size_t argc) override;
75     virtual NativeValue* RunScript(NativeValue* script) override;
RunScriptPath(const char * path)76     virtual NativeValue* RunScriptPath(const char* path) override
77     {
78         return nullptr;
79     }
RunScriptBuffer(const char * path,std::vector<uint8_t> & buffer,bool isBundle)80     virtual NativeValue* RunScriptBuffer(const char* path, std::vector<uint8_t>& buffer, bool isBundle) override
81     {
82         return nullptr;
83     }
84     virtual NativeValue* RunBufferScript(std::vector<uint8_t>& buffer) override;
85     virtual NativeValue* RunActor(std::vector<uint8_t>& buffer, const char *descriptor) override;
86     virtual NativeValue* DefineClass(const char* name,
87                                      NativeCallback callback,
88                                      void* data,
89                                      const NativePropertyDescriptor* properties,
90                                      size_t length) override;
91 
92     virtual NativeValue* CreateInstance(NativeValue* constructor,
93                                         NativeValue* const* argv,
94                                         size_t argc) override;
95 
96     virtual NativeReference* CreateReference(NativeValue* value, uint32_t initialRefcount,
97         NativeFinalize callback = nullptr, void* data = nullptr, void* hint = nullptr) override;
98 
99     virtual bool Throw(NativeValue* error) override;
100     virtual bool Throw(NativeErrorType type, const char* code, const char* message) override;
101 
102     virtual void* CreateRuntime() override;
103     virtual NativeValue* Serialize(NativeEngine* context, NativeValue* value, NativeValue* transfer) override;
104     virtual NativeValue* Deserialize(NativeEngine* context, NativeValue* recorder) override;
105     virtual void DeleteSerializationData(NativeValue* value) const override;
106 
107     virtual NativeValue* LoadModule(NativeValue* str, const std::string& fileName) override;
108 
109     static NativeValue* JerryValueToNativeValue(JerryScriptNativeEngine* engine, jerry_value_t value);
110     virtual NativeValue* ValueToNativeValue(JSValueWrapper& value) override;
111     virtual bool TriggerFatalException(NativeValue* error) override;
112     virtual bool AdjustExternalMemory(int64_t ChangeInBytes, int64_t* AdjustedValue) override;
113     virtual NativeValue* CreateDate(double time) override;
114     virtual NativeValue* CreateBigWords(int sign_bit, size_t word_count, const uint64_t* words) override;
115 
116     void StartCpuProfiler(const std::string& fileName = "") override;
117     void StopCpuProfiler() override;
118 
119     void ResumeVM() override;
120     bool SuspendVM() override;
121     bool IsSuspended() override;
122     bool CheckSafepoint() override;
123 
124     void DumpHeapSnapshot(const std::string& path, bool isVmMode = true,
125         DumpFormat dumpFormat = DumpFormat::JSON) override;
126     void DumpHeapSnapshot(bool isVmMode = true, DumpFormat dumpFormat = DumpFormat::JSON,
127         bool isPrivate = false) override;
128     bool BuildNativeAndJsStackTrace(std::string& stackTraceStr) override;
129     bool BuildJsStackTrace(std::string& stackTraceStr) override;
130     bool BuildJsStackInfoList(uint32_t tid, std::vector<JsFrameInfo>& jsFrames) override;
131     bool DeleteWorker(NativeEngine* hostEngine, NativeEngine* workerEngine) override;
132     bool StartHeapTracking(double timeInterval, bool isVmMode = true) override;
133     bool StopHeapTracking(const std::string& filePath) override;
134 
135     void PrintStatisticResult() override;
136     void StartRuntimeStat() override;
137     void StopRuntimeStat() override;
138     size_t GetArrayBufferSize() override;
139     size_t GetHeapTotalSize() override;
140     size_t GetHeapUsedSize() override;
NotifyApplicationState(bool inBackground)141     void NotifyApplicationState(bool inBackground) override {}
NotifyIdleTime(int idleMicroSec)142     void NotifyIdleTime(int idleMicroSec) override {}
143     void NotifyMemoryPressure(bool inHighMemoryPressure = false) override {}
144 
145     void RegisterUncaughtExceptionHandler(UncaughtExceptionCallback callback) override;
146     void HandleUncaughtException() override;
147     bool HasPendingException() override;
148 };
149 
150 #endif /* FOUNDATION_ACE_NAPI_NATIVE_ENGINE_IMPL_JERRYSCRIPT_JERRYSCRIPT_NATIVE_ENGINE_H_ */
151