• 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 #include "jerryscript_native_engine.h"
17 
18 #include "jerryscript-ext/handler.h"
19 #include "jerryscript_native_deferred.h"
20 #include "jerryscript_native_reference.h"
21 #include "jerryscript_native_engine_impl.h"
22 
23 #include "native_value/jerryscript_native_array.h"
24 #include "native_value/jerryscript_native_array_buffer.h"
25 #include "native_value/jerryscript_native_big_int.h"
26 #include "native_value/jerryscript_native_boolean.h"
27 #include "native_value/jerryscript_native_buffer.h"
28 #include "native_value/jerryscript_native_data_view.h"
29 #include "native_value/jerryscript_native_date.h"
30 #include "native_value/jerryscript_native_external.h"
31 #include "native_value/jerryscript_native_function.h"
32 #include "native_value/jerryscript_native_number.h"
33 #include "native_value/jerryscript_native_object.h"
34 #include "native_value/jerryscript_native_string.h"
35 #include "native_value/jerryscript_native_typed_array.h"
36 #include "utils/log.h"
37 
JerryScriptNativeEngine(void * jsEngine)38 JerryScriptNativeEngine::JerryScriptNativeEngine(void* jsEngine) : NativeEngine(jsEngine)
39 {
40     nativeEngineImpl_ = new JerryScriptNativeEngineImpl(this, jsEngine);
41 }
42 
JerryScriptNativeEngine(NativeEngineInterface * engineImpl,void * jsEngine,bool isAppModule)43 JerryScriptNativeEngine::JerryScriptNativeEngine(NativeEngineInterface* engineImpl,
44     void* jsEngine, bool isAppModule) : NativeEngine(jsEngine)
45 {
46     nativeEngineImpl_ = engineImpl;
47     isAppModule_ = isAppModule;
48 }
49 
~JerryScriptNativeEngine()50 JerryScriptNativeEngine::~JerryScriptNativeEngine()
51 {
52     HILOG_INFO("JerryScriptNativeEngine::~JerryScriptNativeEngine");
53 }
54 
Loop(LoopMode mode,bool needSync)55 void JerryScriptNativeEngine::Loop(LoopMode mode, bool needSync)
56 {
57     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
58     jerryscriptNativeEngineImpl->Loop(mode, needSync);
59 }
60 
GetGlobal()61 NativeValue* JerryScriptNativeEngine::GetGlobal()
62 {
63     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
64     return jerryscriptNativeEngineImpl->GetGlobal(this);
65 }
66 
CreateNull()67 NativeValue* JerryScriptNativeEngine::CreateNull()
68 {
69     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
70     return jerryscriptNativeEngineImpl->CreateNull(this);
71 }
72 
CreateUndefined()73 NativeValue* JerryScriptNativeEngine::CreateUndefined()
74 {
75     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
76     return jerryscriptNativeEngineImpl->CreateUndefined(this);
77 }
78 
CreateBoolean(bool value)79 NativeValue* JerryScriptNativeEngine::CreateBoolean(bool value)
80 {
81     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
82     return jerryscriptNativeEngineImpl->CreateBoolean(this, value);
83 }
84 
CreateNumber(int32_t value)85 NativeValue* JerryScriptNativeEngine::CreateNumber(int32_t value)
86 {
87     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
88     return jerryscriptNativeEngineImpl->CreateNumber(this, value);
89 }
90 
CreateNumber(uint32_t value)91 NativeValue* JerryScriptNativeEngine::CreateNumber(uint32_t value)
92 {
93     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
94     return jerryscriptNativeEngineImpl->CreateNumber(this, value);
95 }
96 
CreateNumber(int64_t value)97 NativeValue* JerryScriptNativeEngine::CreateNumber(int64_t value)
98 {
99     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
100     return jerryscriptNativeEngineImpl->CreateNumber(this, value);
101 }
102 
CreateNumber(double value)103 NativeValue* JerryScriptNativeEngine::CreateNumber(double value)
104 {
105     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
106     return jerryscriptNativeEngineImpl->CreateNumber(this, value);
107 }
108 
CreateString(const char * value,size_t length)109 NativeValue* JerryScriptNativeEngine::CreateString(const char* value, size_t length)
110 {
111     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
112     return jerryscriptNativeEngineImpl->CreateString(this, value, length);
113 }
114 
CreateSymbol(NativeValue * value)115 NativeValue* JerryScriptNativeEngine::CreateSymbol(NativeValue* value)
116 {
117     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
118     return jerryscriptNativeEngineImpl->CreateSymbol(this, value);
119 }
120 
CreateExternal(void * value,NativeFinalize callback,void * hint,size_t nativeBindingSize)121 NativeValue* JerryScriptNativeEngine::CreateExternal(void* value, NativeFinalize callback, void* hint,
122     size_t nativeBindingSize)
123 {
124     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
125     return jerryscriptNativeEngineImpl->CreateExternal(this, value, callback, hint, nativeBindingSize);
126 }
127 
CreateObject()128 NativeValue* JerryScriptNativeEngine::CreateObject()
129 {
130     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
131     return jerryscriptNativeEngineImpl->CreateObject(this);
132 }
133 
CreateNativeBindingObject(void * detach,void * attach)134 NativeValue* JerryScriptNativeEngine::CreateNativeBindingObject(void* detach, void* attach)
135 {
136     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
137     return jerryscriptNativeEngineImpl->CreateNativeBindingObject(this, detach, attach);
138 }
139 
CreateFunction(const char * name,size_t length,NativeCallback cb,void * value)140 NativeValue* JerryScriptNativeEngine::CreateFunction(const char* name, size_t length, NativeCallback cb, void* value)
141 {
142     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
143     return jerryscriptNativeEngineImpl->CreateFunction(this, name, length, cb, value);
144 }
145 
CreateArray(size_t length)146 NativeValue* JerryScriptNativeEngine::CreateArray(size_t length)
147 {
148     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
149     return jerryscriptNativeEngineImpl->CreateArray(this, length);
150 }
151 
CreateArrayBuffer(void ** value,size_t length)152 NativeValue* JerryScriptNativeEngine::CreateArrayBuffer(void** value, size_t length)
153 {
154     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
155     return jerryscriptNativeEngineImpl->CreateArrayBuffer(this, value, length);
156 }
157 
CreateArrayBufferExternal(void * value,size_t length,NativeFinalize cb,void * hint)158 NativeValue* JerryScriptNativeEngine::CreateArrayBufferExternal(
159     void* value, size_t length, NativeFinalize cb, void* hint)
160 {
161     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
162     return jerryscriptNativeEngineImpl->CreateArrayBufferExternal(this, value, length, cb, hint);
163 }
164 
CreateBuffer(void ** value,size_t length)165 NativeValue* JerryScriptNativeEngine::CreateBuffer(void** value, size_t length)
166 {
167     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
168     return jerryscriptNativeEngineImpl->CreateBuffer(this, value, length);
169 }
170 
CreateBufferCopy(void ** value,size_t length,const void * data)171 NativeValue* JerryScriptNativeEngine::CreateBufferCopy(void** value, size_t length, const void* data)
172 {
173     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
174     return jerryscriptNativeEngineImpl->CreateBufferCopy(this, value, length, data);
175 }
176 
CreateBufferExternal(void * value,size_t length,NativeFinalize cb,void * hint)177 NativeValue* JerryScriptNativeEngine::CreateBufferExternal(void* value, size_t length, NativeFinalize cb, void* hint)
178 {
179     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
180     return jerryscriptNativeEngineImpl->CreateBufferExternal(this, value, length, cb, hint);
181 }
182 
CreateTypedArray(NativeTypedArrayType type,NativeValue * value,size_t length,size_t offset)183 NativeValue* JerryScriptNativeEngine::CreateTypedArray(
184     NativeTypedArrayType type, NativeValue* value, size_t length, size_t offset)
185 {
186     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
187     return jerryscriptNativeEngineImpl->CreateTypedArray(this, type, value, length, offset);
188 }
189 
CreateDataView(NativeValue * value,size_t length,size_t offset)190 NativeValue* JerryScriptNativeEngine::CreateDataView(NativeValue* value, size_t length, size_t offset)
191 {
192     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
193     return jerryscriptNativeEngineImpl->CreateDataView(this, value, length, offset);
194 }
195 
CreatePromise(NativeDeferred ** deferred)196 NativeValue* JerryScriptNativeEngine::CreatePromise(NativeDeferred** deferred)
197 {
198     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
199     return jerryscriptNativeEngineImpl->CreatePromise(this, deferred);
200 }
201 
CreateError(NativeValue * code,NativeValue * message)202 NativeValue* JerryScriptNativeEngine::CreateError(NativeValue* code, NativeValue* message)
203 {
204     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
205     return jerryscriptNativeEngineImpl->CreateError(this, code, message);
206 }
207 
CallFunction(NativeValue * thisVar,NativeValue * function,NativeValue * const * argv,size_t argc)208 NativeValue* JerryScriptNativeEngine::CallFunction(
209     NativeValue* thisVar, NativeValue* function, NativeValue* const *argv, size_t argc)
210 {
211     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
212     return jerryscriptNativeEngineImpl->CallFunction(this, thisVar, function, argv, argc);
213 }
214 
RunScript(NativeValue * script)215 NativeValue* JerryScriptNativeEngine::RunScript(NativeValue* script)
216 {
217     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
218     return jerryscriptNativeEngineImpl->RunScript(this, script);
219 }
220 
RunBufferScript(std::vector<uint8_t> & buffer)221 NativeValue* JerryScriptNativeEngine::RunBufferScript(std::vector<uint8_t>& buffer)
222 {
223     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
224     return jerryscriptNativeEngineImpl->RunBufferScript(this, buffer);
225 }
226 
RunActor(std::vector<uint8_t> & buffer,const char * descriptor)227 NativeValue* JerryScriptNativeEngine::RunActor(std::vector<uint8_t>& buffer, const char* descriptor)
228 {
229     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
230     return jerryscriptNativeEngineImpl->RunActor(this, buffer, descriptor);
231 }
232 
DefineClass(const char * name,NativeCallback callback,void * data,const NativePropertyDescriptor * properties,size_t length)233 NativeValue* JerryScriptNativeEngine::DefineClass(
234     const char* name, NativeCallback callback, void* data, const NativePropertyDescriptor* properties, size_t length)
235 {
236     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
237     return jerryscriptNativeEngineImpl->DefineClass(this, name, callback, data, properties, length);
238 }
239 
CreateInstance(NativeValue * constructor,NativeValue * const * argv,size_t argc)240 NativeValue* JerryScriptNativeEngine::CreateInstance(NativeValue* constructor, NativeValue* const *argv, size_t argc)
241 {
242     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
243     return jerryscriptNativeEngineImpl->CreateInstance(this, constructor, argv, argc);
244 }
245 
CreateReference(NativeValue * value,uint32_t initialRefcount,NativeFinalize callback,void * data,void * hint)246 NativeReference* JerryScriptNativeEngine::CreateReference(NativeValue* value, uint32_t initialRefcount,
247     NativeFinalize callback, void* data, void* hint)
248 {
249     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
250     return jerryscriptNativeEngineImpl->CreateReference(this, value, initialRefcount, callback, data, hint);
251 }
252 
Throw(NativeValue * error)253 bool JerryScriptNativeEngine::Throw(NativeValue* error)
254 {
255     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
256     return jerryscriptNativeEngineImpl->Throw(error);
257 }
258 
Throw(NativeErrorType type,const char * code,const char * message)259 bool JerryScriptNativeEngine::Throw(NativeErrorType type, const char* code, const char* message)
260 {
261     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
262     return jerryscriptNativeEngineImpl->Throw(this, type, code, message);
263 }
264 
CreateRuntime()265 void* JerryScriptNativeEngine::CreateRuntime()
266 {
267     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
268     return jerryscriptNativeEngineImpl->CreateRuntime(this);
269 }
270 
Serialize(NativeEngine * context,NativeValue * value,NativeValue * transfer)271 NativeValue* JerryScriptNativeEngine::Serialize(NativeEngine* context, NativeValue* value,
272     NativeValue* transfer)
273 {
274     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
275     return jerryscriptNativeEngineImpl->Serialize(context, value, transfer);
276 }
277 
Deserialize(NativeEngine * context,NativeValue * recorder)278 NativeValue* JerryScriptNativeEngine::Deserialize(NativeEngine* context, NativeValue* recorder)
279 {
280     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
281     return jerryscriptNativeEngineImpl->Deserialize(this, context, recorder);
282 }
283 
LoadModule(NativeValue * str,const std::string & fileName)284 NativeValue* JerryScriptNativeEngine::LoadModule(NativeValue* str, const std::string& fileName)
285 {
286     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
287     return jerryscriptNativeEngineImpl->LoadModule(this, str, fileName);
288 }
289 
JerryValueToNativeValue(JerryScriptNativeEngine * engine,jerry_value_t value)290 NativeValue* JerryScriptNativeEngine::JerryValueToNativeValue(JerryScriptNativeEngine* engine, jerry_value_t value)
291 {
292     NativeValue* result = nullptr;
293     switch (jerry_value_get_type(value)) {
294         case JERRY_TYPE_NONE:
295             result = new JerryScriptNativeValue(engine, value);
296             break;
297         case JERRY_TYPE_UNDEFINED:
298             result = new JerryScriptNativeValue(engine, value);
299             break;
300         case JERRY_TYPE_NULL:
301             result = new JerryScriptNativeValue(engine, value);
302             break;
303         case JERRY_TYPE_BOOLEAN:
304             result = new JerryScriptNativeBoolean(engine, value);
305             break;
306         case JERRY_TYPE_NUMBER:
307             result = new JerryScriptNativeNumber(engine, value);
308             break;
309         case JERRY_TYPE_STRING:
310             result = new JerryScriptNativeString(engine, value);
311             break;
312         case JERRY_TYPE_OBJECT:
313             if (jerry_value_is_array(value)) {
314                 result = new JerryScriptNativeArray(engine, value);
315             } else if (jerry_value_is_arraybuffer(value)) {
316                 result = new JerryScriptNativeArrayBuffer(engine, value);
317             } else if (jerry_value_is_dataview(value)) {
318                 result = new JerryScriptNativeDataView(engine, value);
319             } else if (jerry_value_is_typedarray(value)) {
320                 result = new JerryScriptNativeTypedArray(engine, value);
321             } else if (jerry_value_is_external(value)) {
322                 result = new JerryScriptNativeExternal(engine, value);
323             } else if (jerry_is_date(value)) {
324                 result = new JerryScriptNativeDate(engine, value);
325             } else {
326                 result = new JerryScriptNativeObject(engine, value);
327             }
328             break;
329         case JERRY_TYPE_FUNCTION:
330             result = new JerryScriptNativeFunction(engine, value);
331             break;
332         case JERRY_TYPE_ERROR:
333             result = new JerryScriptNativeObject(engine, value);
334             break;
335         case JERRY_TYPE_SYMBOL:
336             result = new JerryScriptNativeValue(engine, value);
337             break;
338 #if JERRY_API_MINOR_VERSION > 3
339         case JERRY_TYPE_BIGINT:
340                 result = new JerryScriptNativeBigInt(engine, value);
341                 break;
342 #endif
343         default:;
344     }
345     return result;
346 }
347 
ValueToNativeValue(JSValueWrapper & value)348 NativeValue* JerryScriptNativeEngine::ValueToNativeValue(JSValueWrapper& value)
349 {
350     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
351     return jerryscriptNativeEngineImpl->ValueToNativeValue(this, value);
352 }
353 
TriggerFatalException(NativeValue * error)354 bool JerryScriptNativeEngine::TriggerFatalException(NativeValue* error)
355 {
356     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
357     return jerryscriptNativeEngineImpl->TriggerFatalException(error);
358 }
359 
AdjustExternalMemory(int64_t ChangeInBytes,int64_t * AdjustedValue)360 bool JerryScriptNativeEngine::AdjustExternalMemory(int64_t ChangeInBytes, int64_t* AdjustedValue)
361 {
362     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
363     return jerryscriptNativeEngineImpl->AdjustExternalMemory(ChangeInBytes, AdjustedValue);
364 }
365 
CreateDate(double time)366 NativeValue* JerryScriptNativeEngine::CreateDate(double time)
367 {
368     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
369     return jerryscriptNativeEngineImpl->CreateDate(this, time);
370 }
371 
SetPromiseRejectCallback(NativeReference * rejectCallbackRef,NativeReference * checkCallbackRef)372 void JerryScriptNativeEngine::SetPromiseRejectCallback(NativeReference* rejectCallbackRef,
373                                                        NativeReference* checkCallbackRef)
374 {
375     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
376     return jerryscriptNativeEngineImpl->SetPromiseRejectCallback(this, rejectCallbackRef, checkCallbackRef);
377 }
378 
CreateBigWords(int sign_bit,size_t word_count,const uint64_t * words)379 NativeValue* JerryScriptNativeEngine::CreateBigWords(int sign_bit, size_t word_count, const uint64_t* words)
380 {
381     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
382     return jerryscriptNativeEngineImpl->CreateBigWords(this, sign_bit, word_count, words);
383 }
384 
CreateBigInt(int64_t value)385 NativeValue* JerryScriptNativeEngine::CreateBigInt(int64_t value)
386 {
387     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
388     return jerryscriptNativeEngineImpl->CreateBigInt(this, value);
389 }
390 
CreateBigInt(uint64_t value)391 NativeValue* JerryScriptNativeEngine::CreateBigInt(uint64_t value)
392 {
393     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
394     return jerryscriptNativeEngineImpl->CreateBigInt(this, value);
395 }
396 
CreateString16(const char16_t * value,size_t length)397 NativeValue* JerryScriptNativeEngine::CreateString16(const char16_t* value, size_t length)
398 {
399     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
400     return jerryscriptNativeEngineImpl->CreateString16(this, value, length);
401 }
402 
StartCpuProfiler(const std::string & fileName)403 void JerryScriptNativeEngine::StartCpuProfiler(const std::string& fileName)
404 {
405     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
406     jerryscriptNativeEngineImpl->StartCpuProfiler(fileName);
407 }
StopCpuProfiler()408 void JerryScriptNativeEngine::StopCpuProfiler()
409 {
410     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
411     jerryscriptNativeEngineImpl->StopCpuProfiler();
412 }
413 
ResumeVM()414 void JerryScriptNativeEngine::ResumeVM()
415 {
416     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
417     jerryscriptNativeEngineImpl->ResumeVM();
418 }
SuspendVM()419 bool JerryScriptNativeEngine::SuspendVM()
420 {
421     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
422     return jerryscriptNativeEngineImpl->SuspendVM();
423 }
IsSuspended()424 bool JerryScriptNativeEngine::IsSuspended()
425 {
426     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
427     return jerryscriptNativeEngineImpl->IsSuspended();
428 }
CheckSafepoint()429 bool JerryScriptNativeEngine::CheckSafepoint()
430 {
431     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
432     return jerryscriptNativeEngineImpl->CheckSafepoint();
433 }
434 
DumpHeapSnapshot(const std::string & path,bool isVmMode,DumpFormat dumpFormat)435 void JerryScriptNativeEngine::DumpHeapSnapshot(
436     const std::string& path, bool isVmMode, DumpFormat dumpFormat)
437 {
438     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
439     jerryscriptNativeEngineImpl->DumpHeapSnapshot(path, isVmMode, dumpFormat);
440 }
441 
DumpHeapSnapshot(bool isVmMode,DumpFormat dumpFormat,bool isPrivate)442 void JerryScriptNativeEngine::DumpHeapSnapshot(bool isVmMode, DumpFormat dumpFormat, bool isPrivate)
443 {
444     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
445     jerryscriptNativeEngineImpl->DumpHeapSnapshotExt(isVmMode, dumpFormat, isPrivate);
446 }
447 
BuildNativeAndJsStackTrace(std::string & stackTraceStr)448 bool JerryScriptNativeEngine::BuildNativeAndJsStackTrace(std::string& stackTraceStr)
449 {
450     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
451     return jerryscriptNativeEngineImpl->BuildNativeAndJsStackTrace(stackTraceStr);
452 }
BuildJsStackTrace(std::string & stackTraceStr)453 bool JerryScriptNativeEngine::BuildJsStackTrace(std::string& stackTraceStr)
454 {
455     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
456     return jerryscriptNativeEngineImpl->BuildJsStackTrace(stackTraceStr);
457 }
BuildJsStackInfoList(uint32_t tid,std::vector<JsFrameInfo> & jsFrames)458 bool JerryScriptNativeEngine::BuildJsStackInfoList(uint32_t tid, std::vector<JsFrameInfo>& jsFrames)
459 {
460     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
461     return jerryscriptNativeEngineImpl->BuildJsStackInfoList(tid, jsFrames);
462 }
DeleteWorker(NativeEngine * hostEngine,NativeEngine * workerEngine)463 bool JerryScriptNativeEngine::DeleteWorker(NativeEngine* hostEngine, NativeEngine* workerEngine)
464 {
465     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
466     return jerryscriptNativeEngineImpl->DeleteWorker(hostEngine, workerEngine);
467 }
StartHeapTracking(double timeInterval,bool isVmMode)468 bool JerryScriptNativeEngine::StartHeapTracking(double timeInterval, bool isVmMode)
469 {
470     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
471     return jerryscriptNativeEngineImpl->StartHeapTracking(timeInterval, isVmMode);
472 }
StopHeapTracking(const std::string & filePath)473 bool JerryScriptNativeEngine::StopHeapTracking(const std::string& filePath)
474 {
475     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
476     return jerryscriptNativeEngineImpl->StopHeapTracking(filePath);
477 }
478 
PrintStatisticResult()479 void JerryScriptNativeEngine::PrintStatisticResult()
480 {
481     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
482     jerryscriptNativeEngineImpl->PrintStatisticResult();
483 }
StartRuntimeStat()484 void JerryScriptNativeEngine::StartRuntimeStat()
485 {
486     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
487     jerryscriptNativeEngineImpl->StartRuntimeStat();
488 }
StopRuntimeStat()489 void JerryScriptNativeEngine::StopRuntimeStat()
490 {
491     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
492     jerryscriptNativeEngineImpl->StopRuntimeStat();
493 }
GetArrayBufferSize()494 size_t JerryScriptNativeEngine::GetArrayBufferSize()
495 {
496     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
497     return jerryscriptNativeEngineImpl->GetArrayBufferSize();
498 }
GetHeapTotalSize()499 size_t JerryScriptNativeEngine::GetHeapTotalSize()
500 {
501     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
502     return jerryscriptNativeEngineImpl->GetHeapTotalSize();
503 }
GetHeapUsedSize()504 size_t JerryScriptNativeEngine::GetHeapUsedSize()
505 {
506     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
507     return jerryscriptNativeEngineImpl->GetHeapUsedSize();
508 }
509 
RegisterUncaughtExceptionHandler(UncaughtExceptionCallback callback)510 void JerryScriptNativeEngine::RegisterUncaughtExceptionHandler(UncaughtExceptionCallback callback)
511 {
512     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
513     jerryscriptNativeEngineImpl->RegisterUncaughtExceptionHandler(callback);
514 }
HandleUncaughtException()515 void JerryScriptNativeEngine::HandleUncaughtException()
516 {
517     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
518     jerryscriptNativeEngineImpl->HandleUncaughtException(this);
519 }
HasPendingException()520 bool JerryScriptNativeEngine::HasPendingException()
521 {
522     return false;
523 }
DeleteSerializationData(NativeValue * value) const524 void JerryScriptNativeEngine::DeleteSerializationData(NativeValue* value) const
525 {
526     auto jerryscriptNativeEngineImpl = static_cast<JerryScriptNativeEngineImpl*>(nativeEngineImpl_);
527     jerryscriptNativeEngineImpl->DeleteSerializationData(value);
528 }
529