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