@@ -794,7 +794,7 @@ struct StackCodegen {
794794 func liftExpression( for type: BridgeType ) -> ExprSyntax {
795795 switch type {
796796 case . string, . int, . uint, . bool, . float, . double,
797- . jsObject( nil ) , . swiftStruct, . swiftHeapObject:
797+ . jsObject( nil ) , . jsValue , . swiftStruct, . swiftHeapObject:
798798 return " \( raw: type. swiftType) .bridgeJSLiftParameter() "
799799 case . jsObject( let className? ) :
800800 return " \( raw: className) (unsafelyWrapping: JSObject.bridgeJSLiftParameter()) "
@@ -831,7 +831,7 @@ struct StackCodegen {
831831
832832 func liftArrayExpression( elementType: BridgeType ) -> ExprSyntax {
833833 switch elementType {
834- case . int, . uint, . float, . double, . string, . bool,
834+ case . int, . uint, . float, . double, . string, . bool, . jsValue ,
835835 . jsObject( nil ) , . swiftStruct, . caseEnum, . swiftHeapObject,
836836 . unsafePointer, . rawValueEnum, . associatedValueEnum:
837837 return " [ \( raw: elementType. swiftType) ].bridgeJSLiftParameter() "
@@ -865,7 +865,7 @@ struct StackCodegen {
865865
866866 private func liftOptionalExpression( wrappedType: BridgeType ) -> ExprSyntax {
867867 switch wrappedType {
868- case . string, . int, . uint, . bool, . float, . double, . jsObject( nil ) ,
868+ case . string, . int, . uint, . bool, . float, . double, . jsObject( nil ) , . jsValue ,
869869 . swiftStruct, . swiftHeapObject, . caseEnum, . associatedValueEnum, . rawValueEnum:
870870 return " Optional< \( raw: wrappedType. swiftType) >.bridgeJSLiftParameter() "
871871 case . jsObject( let className? ) :
@@ -900,7 +900,7 @@ struct StackCodegen {
900900 varPrefix: String
901901 ) -> [ CodeBlockItemSyntax ] {
902902 switch type {
903- case . string, . int, . uint, . bool, . float, . double:
903+ case . string, . int, . uint, . bool, . float, . double, . jsValue :
904904 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
905905 case . jsObject( nil ) :
906906 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
@@ -930,7 +930,7 @@ struct StackCodegen {
930930 varPrefix: String
931931 ) -> [ CodeBlockItemSyntax ] {
932932 switch elementType {
933- case . int, . uint, . float, . double, . string, . bool,
933+ case . int, . uint, . float, . double, . string, . bool, . jsValue ,
934934 . jsObject( nil ) , . swiftStruct, . caseEnum, . swiftHeapObject,
935935 . unsafePointer, . rawValueEnum, . associatedValueEnum:
936936 return [ " \( raw: accessor) .bridgeJSLowerReturn() " ]
@@ -1001,7 +1001,7 @@ struct StackCodegen {
10011001 varPrefix: String
10021002 ) -> [ CodeBlockItemSyntax ] {
10031003 switch wrappedType {
1004- case . string, . int, . uint, . bool, . float, . double:
1004+ case . string, . int, . uint, . bool, . float, . double, . jsValue :
10051005 return [ " \( raw: unwrappedVar) .bridgeJSLowerStackReturn() " ]
10061006 case . caseEnum, . rawValueEnum:
10071007 // Enums conform to _BridgedSwiftStackType
@@ -1590,6 +1590,7 @@ extension BridgeType {
15901590 case . float: return " Float "
15911591 case . double: return " Double "
15921592 case . string: return " String "
1593+ case . jsValue: return " JSValue "
15931594 case . jsObject( nil ) : return " JSObject "
15941595 case . jsObject( let name? ) : return name
15951596 case . swiftHeapObject( let name) : return name
@@ -1619,6 +1620,7 @@ extension BridgeType {
16191620 static let double = LiftingIntrinsicInfo ( parameters: [ ( " value " , . f64) ] )
16201621 static let string = LiftingIntrinsicInfo ( parameters: [ ( " bytes " , . i32) , ( " length " , . i32) ] )
16211622 static let jsObject = LiftingIntrinsicInfo ( parameters: [ ( " value " , . i32) ] )
1623+ static let jsValue = LiftingIntrinsicInfo ( parameters: [ ( " kind " , . i32) , ( " payload1 " , . i32) , ( " payload2 " , . f64) ] )
16221624 static let swiftHeapObject = LiftingIntrinsicInfo ( parameters: [ ( " value " , . pointer) ] )
16231625 static let unsafePointer = LiftingIntrinsicInfo ( parameters: [ ( " pointer " , . pointer) ] )
16241626 static let void = LiftingIntrinsicInfo ( parameters: [ ] )
@@ -1636,6 +1638,7 @@ extension BridgeType {
16361638 case . double: return . double
16371639 case . string: return . string
16381640 case . jsObject: return . jsObject
1641+ case . jsValue: return . jsValue
16391642 case . swiftHeapObject: return . swiftHeapObject
16401643 case . unsafePointer: return . unsafePointer
16411644 case . swiftProtocol: return . jsObject
@@ -1669,6 +1672,7 @@ extension BridgeType {
16691672 static let double = LoweringIntrinsicInfo ( returnType: . f64)
16701673 static let string = LoweringIntrinsicInfo ( returnType: nil )
16711674 static let jsObject = LoweringIntrinsicInfo ( returnType: . i32)
1675+ static let jsValue = LoweringIntrinsicInfo ( returnType: nil )
16721676 static let swiftHeapObject = LoweringIntrinsicInfo ( returnType: . pointer)
16731677 static let unsafePointer = LoweringIntrinsicInfo ( returnType: . pointer)
16741678 static let void = LoweringIntrinsicInfo ( returnType: nil )
@@ -1688,6 +1692,7 @@ extension BridgeType {
16881692 case . double: return . double
16891693 case . string: return . string
16901694 case . jsObject: return . jsObject
1695+ case . jsValue: return . jsValue
16911696 case . swiftHeapObject: return . swiftHeapObject
16921697 case . unsafePointer: return . unsafePointer
16931698 case . swiftProtocol: return . jsObject
0 commit comments