Skip to content

Commit b3ddd88

Browse files
committed
Prevent cross-module inlining of f32/f64 @_extern(wasm) functions
1 parent a98e49d commit b3ddd88

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

Sources/JavaScriptKit/BridgeJSIntrinsics.swift

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -723,22 +723,30 @@ where Self: RawRepresentable, RawValue: _BridgedSwiftTypeLoweredIntoSingleWasmCo
723723

724724
#if arch(wasm32)
725725
@_extern(wasm, module: "bjs", name: "swift_js_push_f32")
726-
@_spi(BridgeJS) public func _swift_js_push_f32(_ value: Float32)
726+
private func _swift_js_push_f32_extern(_ value: Float32)
727727
#else
728-
@_spi(BridgeJS) public func _swift_js_push_f32(_ value: Float32) {
728+
private func _swift_js_push_f32_extern(_ value: Float32) {
729729
_onlyAvailableOnWasm()
730730
}
731731
#endif
732732

733+
@_spi(BridgeJS) @inline(never) public func _swift_js_push_f32(_ value: Float32) {
734+
_swift_js_push_f32_extern(value)
735+
}
736+
733737
#if arch(wasm32)
734738
@_extern(wasm, module: "bjs", name: "swift_js_push_f64")
735-
@_spi(BridgeJS) public func _swift_js_push_f64(_ value: Float64)
739+
private func _swift_js_push_f64_extern(_ value: Float64)
736740
#else
737-
@_spi(BridgeJS) public func _swift_js_push_f64(_ value: Float64) {
741+
private func _swift_js_push_f64_extern(_ value: Float64) {
738742
_onlyAvailableOnWasm()
739743
}
740744
#endif
741745

746+
@_spi(BridgeJS) @inline(never) public func _swift_js_push_f64(_ value: Float64) {
747+
_swift_js_push_f64_extern(value)
748+
}
749+
742750
#if arch(wasm32)
743751
@_extern(wasm, module: "bjs", name: "swift_js_pop_i32")
744752
@_spi(BridgeJS) public func _swift_js_pop_i32() -> Int32
@@ -750,22 +758,30 @@ where Self: RawRepresentable, RawValue: _BridgedSwiftTypeLoweredIntoSingleWasmCo
750758

751759
#if arch(wasm32)
752760
@_extern(wasm, module: "bjs", name: "swift_js_pop_f32")
753-
@_spi(BridgeJS) public func _swift_js_pop_f32() -> Float32
761+
private func _swift_js_pop_f32_extern() -> Float32
754762
#else
755-
@_spi(BridgeJS) public func _swift_js_pop_f32() -> Float32 {
763+
private func _swift_js_pop_f32_extern() -> Float32 {
756764
_onlyAvailableOnWasm()
757765
}
758766
#endif
759767

768+
@_spi(BridgeJS) @inline(never) public func _swift_js_pop_f32() -> Float32 {
769+
_swift_js_pop_f32_extern()
770+
}
771+
760772
#if arch(wasm32)
761773
@_extern(wasm, module: "bjs", name: "swift_js_pop_f64")
762-
@_spi(BridgeJS) public func _swift_js_pop_f64() -> Float64
774+
private func _swift_js_pop_f64_extern() -> Float64
763775
#else
764-
@_spi(BridgeJS) public func _swift_js_pop_f64() -> Float64 {
776+
private func _swift_js_pop_f64_extern() -> Float64 {
765777
_onlyAvailableOnWasm()
766778
}
767779
#endif
768780

781+
@_spi(BridgeJS) @inline(never) public func _swift_js_pop_f64() -> Float64 {
782+
_swift_js_pop_f64_extern()
783+
}
784+
769785
// MARK: Struct bridging helpers (JS-side lowering/raising)
770786

771787
#if arch(wasm32)

0 commit comments

Comments
 (0)