Skip to content

Commit fcd2b53

Browse files
authored
Merge pull request #628 from PassiveLogic/kr/f32f64-inline-never-fix
Benchmarks: Prevent cross-module inlining of f32/f64 @_extern(wasm) functions
2 parents 56933d2 + b3ddd88 commit fcd2b53

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
@@ -729,22 +729,30 @@ where Self: RawRepresentable, RawValue: _BridgedSwiftTypeLoweredIntoSingleWasmCo
729729

730730
#if arch(wasm32)
731731
@_extern(wasm, module: "bjs", name: "swift_js_push_f32")
732-
@_spi(BridgeJS) public func _swift_js_push_f32(_ value: Float32)
732+
private func _swift_js_push_f32_extern(_ value: Float32)
733733
#else
734-
@_spi(BridgeJS) public func _swift_js_push_f32(_ value: Float32) {
734+
private func _swift_js_push_f32_extern(_ value: Float32) {
735735
_onlyAvailableOnWasm()
736736
}
737737
#endif
738738

739+
@_spi(BridgeJS) @inline(never) public func _swift_js_push_f32(_ value: Float32) {
740+
_swift_js_push_f32_extern(value)
741+
}
742+
739743
#if arch(wasm32)
740744
@_extern(wasm, module: "bjs", name: "swift_js_push_f64")
741-
@_spi(BridgeJS) public func _swift_js_push_f64(_ value: Float64)
745+
private func _swift_js_push_f64_extern(_ value: Float64)
742746
#else
743-
@_spi(BridgeJS) public func _swift_js_push_f64(_ value: Float64) {
747+
private func _swift_js_push_f64_extern(_ value: Float64) {
744748
_onlyAvailableOnWasm()
745749
}
746750
#endif
747751

752+
@_spi(BridgeJS) @inline(never) public func _swift_js_push_f64(_ value: Float64) {
753+
_swift_js_push_f64_extern(value)
754+
}
755+
748756
#if arch(wasm32)
749757
@_extern(wasm, module: "bjs", name: "swift_js_pop_i32")
750758
@_spi(BridgeJS) public func _swift_js_pop_i32() -> Int32
@@ -756,22 +764,30 @@ where Self: RawRepresentable, RawValue: _BridgedSwiftTypeLoweredIntoSingleWasmCo
756764

757765
#if arch(wasm32)
758766
@_extern(wasm, module: "bjs", name: "swift_js_pop_f32")
759-
@_spi(BridgeJS) public func _swift_js_pop_f32() -> Float32
767+
private func _swift_js_pop_f32_extern() -> Float32
760768
#else
761-
@_spi(BridgeJS) public func _swift_js_pop_f32() -> Float32 {
769+
private func _swift_js_pop_f32_extern() -> Float32 {
762770
_onlyAvailableOnWasm()
763771
}
764772
#endif
765773

774+
@_spi(BridgeJS) @inline(never) public func _swift_js_pop_f32() -> Float32 {
775+
_swift_js_pop_f32_extern()
776+
}
777+
766778
#if arch(wasm32)
767779
@_extern(wasm, module: "bjs", name: "swift_js_pop_f64")
768-
@_spi(BridgeJS) public func _swift_js_pop_f64() -> Float64
780+
private func _swift_js_pop_f64_extern() -> Float64
769781
#else
770-
@_spi(BridgeJS) public func _swift_js_pop_f64() -> Float64 {
782+
private func _swift_js_pop_f64_extern() -> Float64 {
771783
_onlyAvailableOnWasm()
772784
}
773785
#endif
774786

787+
@_spi(BridgeJS) @inline(never) public func _swift_js_pop_f64() -> Float64 {
788+
_swift_js_pop_f64_extern()
789+
}
790+
775791
// MARK: Struct bridging helpers (JS-side lowering/raising)
776792

777793
#if arch(wasm32)

0 commit comments

Comments
 (0)