@@ -109,17 +109,7 @@ extension JSGlueVariableScope {
109109 printer. write ( " \( JSGlueVariableScope . reservedPointerStack) .push( \( value) ); " )
110110 }
111111
112- // MARK: Return
113-
114- func emitPushI32Return( _ value: String , printer: CodeFragmentPrinter ) {
115- printer. write ( " \( JSGlueVariableScope . reservedI32Stack) .push( \( value) ); " )
116- }
117- func emitPushF64Return( _ value: String , printer: CodeFragmentPrinter ) {
118- printer. write ( " \( JSGlueVariableScope . reservedF64Stack) .push( \( value) ); " )
119- }
120- func emitPushPointerReturn( _ value: String , printer: CodeFragmentPrinter ) {
121- printer. write ( " \( JSGlueVariableScope . reservedPointerStack) .push( \( value) ); " )
122- }
112+ // MARK: Pop
123113 func popString( ) -> String {
124114 return " \( JSGlueVariableScope . reservedStringStack) .pop() "
125115 }
@@ -204,37 +194,6 @@ struct IntrinsicJSFragment: Sendable {
204194 }
205195 )
206196
207- /// NOTE: JavaScript engine itself converts booleans to integers when passing them to
208- /// Wasm functions, so we don't need to do anything here
209- static let boolLowerParameter = identity
210- static let boolLiftReturn = IntrinsicJSFragment (
211- parameters: [ " value " ] ,
212- printCode: { arguments, _ in
213- return [ " \( arguments [ 0 ] ) !== 0 " ]
214- }
215- )
216- static let boolLiftParameter = IntrinsicJSFragment (
217- parameters: [ " value " ] ,
218- printCode: { arguments, _ in
219- return [ " \( arguments [ 0 ] ) !== 0 " ]
220- }
221- )
222- static let boolLowerReturn = IntrinsicJSFragment (
223- parameters: [ " value " ] ,
224- printCode: { arguments, _ in
225- return [ " \( arguments [ 0 ] ) ? 1 : 0 " ]
226- }
227- )
228-
229- /// Convert signed Int32 to unsigned for UInt values
230- static let uintLiftReturn = IntrinsicJSFragment (
231- parameters: [ " value " ] ,
232- printCode: { arguments, _ in
233- return [ " \( arguments [ 0 ] ) >>> 0 " ]
234- }
235- )
236- static let uintLiftParameter = uintLiftReturn
237-
238197 static let stringLowerParameter = IntrinsicJSFragment (
239198 parameters: [ " value " ] ,
240199 printCode: { arguments, context in
@@ -529,45 +488,20 @@ struct IntrinsicJSFragment: Sendable {
529488 }
530489
531490 static func jsValueLowerReturn( context: BridgeContext ) -> IntrinsicJSFragment {
532- switch context {
533- case . importTS:
534- // Return values from imported JS functions should be delivered to the Swift side
535- // via the parameter stacks that `_swift_js_pop_*` read from.
536- return IntrinsicJSFragment (
537- parameters: [ " value " ] ,
538- printCode: { arguments, context in
539- let ( scope, printer) = ( context. scope, context. printer)
540- let lowered = try jsValueLower. printCode ( arguments, context)
541- let kindVar = lowered [ 0 ]
542- let payload1Var = lowered [ 1 ]
543- let payload2Var = lowered [ 2 ]
544- scope. emitPushI32Parameter ( kindVar, printer: printer)
545- scope. emitPushI32Parameter ( payload1Var, printer: printer)
546- scope. emitPushF64Parameter ( payload2Var, printer: printer)
547- return [ ]
548- }
549- )
550- case . exportSwift:
551- // Kept for symmetry, though JSValue return for export currently relies on Swift pushing
552- // to tmpRet stacks directly.
553- return IntrinsicJSFragment (
554- parameters: [ " value " ] ,
555- printCode: { arguments, context in
556- let ( scope, printer) = ( context. scope, context. printer)
557- let lowered = try jsValueLower. printCode (
558- arguments,
559- context
560- )
561- let kindVar = lowered [ 0 ]
562- let payload1Var = lowered [ 1 ]
563- let payload2Var = lowered [ 2 ]
564- scope. emitPushI32Parameter ( kindVar, printer: printer)
565- scope. emitPushI32Parameter ( payload1Var, printer: printer)
566- scope. emitPushF64Parameter ( payload2Var, printer: printer)
567- return [ ]
568- }
569- )
570- }
491+ return IntrinsicJSFragment (
492+ parameters: [ " value " ] ,
493+ printCode: { arguments, context in
494+ let ( scope, printer) = ( context. scope, context. printer)
495+ let lowered = try jsValueLower. printCode ( arguments, context)
496+ let kindVar = lowered [ 0 ]
497+ let payload1Var = lowered [ 1 ]
498+ let payload2Var = lowered [ 2 ]
499+ scope. emitPushI32Parameter ( kindVar, printer: printer)
500+ scope. emitPushI32Parameter ( payload1Var, printer: printer)
501+ scope. emitPushF64Parameter ( payload2Var, printer: printer)
502+ return [ ]
503+ }
504+ )
571505 }
572506
573507 static let jsValueLift = IntrinsicJSFragment (
@@ -1814,30 +1748,7 @@ struct IntrinsicJSFragment: Sendable {
18141748 )
18151749 }
18161750
1817- static func rawValueEnumHelper( enumDefinition: ExportedEnum ) -> IntrinsicJSFragment {
1818- return IntrinsicJSFragment (
1819- parameters: [ " enumName " ] ,
1820- printCode: { arguments, context in
1821- let printer = context. printer
1822- let enumName = arguments [ 0 ]
1823- printer. write ( " const \( enumName) = { " )
1824- printer. indent {
1825- for (index, enumCase) in enumDefinition. cases. enumerated ( ) {
1826- let caseName = enumCase. name. capitalizedFirstLetter
1827- let value = enumCase. jsValue (
1828- rawType: enumDefinition. rawType,
1829- index: index
1830- )
1831- printer. write ( " \( caseName) : \( value) , " )
1832- }
1833- }
1834- printer. write ( " }; " )
1835- printer. nextLine ( )
18361751
1837- return [ ]
1838- }
1839- )
1840- }
18411752
18421753 private static func associatedValuePushPayload( enumCase: EnumCase ) -> IntrinsicJSFragment {
18431754 return IntrinsicJSFragment (
0 commit comments