Skip to content

Commit 9a4df3d

Browse files
committed
refactor(ffi): clean direct Hermes backend
1 parent 55a1f20 commit 9a4df3d

67 files changed

Lines changed: 10634 additions & 18532 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ packages/*/types
6565
SwiftBindgen
6666

6767
# Generated Objective-C/C dispatch wrappers
68-
NativeScript/ffi/shared/GeneratedSignatureDispatch.inc
69-
NativeScript/ffi/shared/GeneratedSignatureDispatch.inc.stamp
68+
NativeScript/ffi/napi/GeneratedSignatureDispatch.inc
69+
NativeScript/ffi/napi/GeneratedSignatureDispatch.inc.stamp
7070

7171
# React Native TurboModule package staging
7272
packages/react-native/dist/

NativeScript/CMakeLists.txt

Lines changed: 8 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,6 @@ endif()
174174
if(NS_GSD_BACKEND STREQUAL "auto")
175175
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct")
176176
set(NS_EFFECTIVE_GSD_BACKEND "none")
177-
elseif(TARGET_ENGINE_V8)
178-
set(NS_EFFECTIVE_GSD_BACKEND "v8")
179-
elseif(TARGET_ENGINE_JSC)
180-
set(NS_EFFECTIVE_GSD_BACKEND "jsc")
181-
elseif(TARGET_ENGINE_QUICKJS)
182-
set(NS_EFFECTIVE_GSD_BACKEND "quickjs")
183-
elseif(TARGET_ENGINE_HERMES)
184-
set(NS_EFFECTIVE_GSD_BACKEND "hermes")
185177
else()
186178
set(NS_EFFECTIVE_GSD_BACKEND "napi")
187179
endif()
@@ -208,29 +200,25 @@ endif()
208200
if(NS_EFFECTIVE_GSD_BACKEND STREQUAL "hermes" AND NOT TARGET_ENGINE_HERMES)
209201
message(FATAL_ERROR "NS_GSD_BACKEND=hermes requires TARGET_ENGINE=hermes")
210202
endif()
203+
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi" AND
204+
NOT (NS_EFFECTIVE_GSD_BACKEND STREQUAL "napi" OR
205+
NS_EFFECTIVE_GSD_BACKEND STREQUAL "none"))
206+
message(FATAL_ERROR
207+
"NS_FFI_BACKEND=napi is the pure Node-API FFI backend and only supports "
208+
"NS_GSD_BACKEND=napi or none.")
209+
endif()
211210

212211
message(STATUS "NS_GSD_BACKEND = ${NS_GSD_BACKEND} (${NS_EFFECTIVE_GSD_BACKEND})")
213212

214213
# Set up sources
215214
include_directories(
216215
./
217216
ffi/shared
218-
ffi/hermes/jsi
219217
../metadata-generator/include
220218
napi/common
221219
libffi/${LIBFFI_BUILD}/include
222220
)
223221

224-
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
225-
include_directories(
226-
ffi/napi/engine/shared
227-
ffi/napi/engine/v8
228-
ffi/napi/engine/hermes
229-
ffi/napi/engine/jsc
230-
ffi/napi/engine/quickjs
231-
)
232-
endif()
233-
234222
set(FFI_SHARED_SOURCE_FILES
235223
ffi/shared/Tasks.cpp
236224
)
@@ -258,36 +246,10 @@ set(FFI_NAPI_SOURCE_FILES
258246
ffi/napi/ClassBuilder.mm
259247
)
260248

261-
set(FFI_NAPI_ENGINE_SOURCE_FILES
262-
ffi/napi/engine/shared/EngineDirectCall.mm
263-
)
264-
265-
set(FFI_NAPI_V8_SOURCE_FILES
266-
ffi/napi/engine/v8/V8FastConversion.mm
267-
ffi/napi/engine/v8/V8FastNativeApi.mm
268-
ffi/napi/engine/v8/V8FastNativeWrapper.mm
269-
)
270-
271249
set(FFI_HERMES_DIRECT_SOURCE_FILES
272250
ffi/hermes/jsi/NativeApiJsi.mm
273251
)
274252

275-
set(FFI_NAPI_HERMES_SOURCE_FILES
276-
ffi/napi/engine/hermes/HermesFastConversion.mm
277-
ffi/napi/engine/hermes/HermesFastNativeApi.mm
278-
)
279-
280-
set(FFI_NAPI_QUICKJS_SOURCE_FILES
281-
ffi/napi/engine/quickjs/QuickJSFastConversion.mm
282-
ffi/napi/engine/quickjs/QuickJSFastNativeApi.mm
283-
ffi/napi/engine/quickjs/QuickJSFastReturn.mm
284-
)
285-
286-
set(FFI_NAPI_JSC_SOURCE_FILES
287-
ffi/napi/engine/jsc/JSCFastConversion.mm
288-
ffi/napi/engine/jsc/JSCFastNativeApi.mm
289-
)
290-
291253
set(SOURCE_FILES
292254
${FFI_SHARED_SOURCE_FILES}
293255
runtime/NativeScriptException.mm
@@ -297,7 +259,6 @@ if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
297259
set(SOURCE_FILES
298260
${SOURCE_FILES}
299261
${FFI_NAPI_SOURCE_FILES}
300-
${FFI_NAPI_ENGINE_SOURCE_FILES}
301262
)
302263
endif()
303264

@@ -345,13 +306,6 @@ if(ENABLE_JS_RUNTIME)
345306
napi/v8/SimpleAllocator.cpp
346307
)
347308

348-
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
349-
set(SOURCE_FILES
350-
${SOURCE_FILES}
351-
${FFI_NAPI_V8_SOURCE_FILES}
352-
)
353-
endif()
354-
355309
elseif(TARGET_ENGINE_HERMES)
356310
set(HERMES_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Frameworks/hermes-headers")
357311

@@ -376,12 +330,7 @@ if(ENABLE_JS_RUNTIME)
376330
napi/hermes/jsr.cpp
377331
)
378332

379-
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
380-
set(SOURCE_FILES
381-
${SOURCE_FILES}
382-
${FFI_NAPI_HERMES_SOURCE_FILES}
383-
)
384-
else()
333+
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct")
385334
set(SOURCE_FILES
386335
${SOURCE_FILES}
387336
${FFI_HERMES_DIRECT_SOURCE_FILES}
@@ -420,13 +369,6 @@ if(ENABLE_JS_RUNTIME)
420369
napi/quickjs/jsr.cpp
421370
)
422371

423-
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
424-
set(SOURCE_FILES
425-
${SOURCE_FILES}
426-
${FFI_NAPI_QUICKJS_SOURCE_FILES}
427-
)
428-
endif()
429-
430372
elseif(TARGET_ENGINE_JSC)
431373
include_directories(
432374
napi/jsc
@@ -439,12 +381,6 @@ if(ENABLE_JS_RUNTIME)
439381
napi/jsc/jsr.cpp
440382
)
441383

442-
if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "napi")
443-
set(SOURCE_FILES
444-
${SOURCE_FILES}
445-
${FFI_NAPI_JSC_SOURCE_FILES}
446-
)
447-
endif()
448384
endif()
449385
else()
450386
include_directories(

NativeScript/ffi/hermes/jsi/NativeApiJsi.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ struct NativeApiJsiConfig {
2121
const void* metadataPtr = nullptr;
2222
const char* globalName = "__nativeScriptNativeApi";
2323
std::shared_ptr<NativeApiJsiScheduler> scheduler = nullptr;
24+
std::function<void(std::function<void()>)> nativeInvocationInvoker = nullptr;
25+
std::function<void(std::function<void()>)> nativeCallbackInvoker = nullptr;
26+
std::function<void(std::function<void()>)> jsThreadCallbackInvoker = nullptr;
2427
bool installGlobalSymbols = false;
2528
};
2629

0 commit comments

Comments
 (0)