Skip to content

Commit f04ca01

Browse files
committed
NFC: BridgeJS: Reduce retained object cleanup warning noise in BridgeJS glue
1 parent 83995af commit f04ca01

File tree

3 files changed

+14
-24
lines changed

3 files changed

+14
-24
lines changed

Plugins/BridgeJS/Sources/BridgeJSLink/JSGlueGen.swift

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3040,16 +3040,7 @@ struct IntrinsicJSFragment: Sendable {
30403040
}
30413041
printer.write("}")
30423042
scope.emitPushI32Parameter("\(idVar) !== undefined ? \(idVar) : 0", printer: printer)
3043-
cleanup.write("if(\(idVar) !== undefined && \(idVar) !== 0) {")
3044-
cleanup.indent {
3045-
cleanup.write("try {")
3046-
cleanup.indent {
3047-
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.getObject(\(idVar));")
3048-
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.release(\(idVar));")
3049-
}
3050-
cleanup.write("} catch(e) {}")
3051-
}
3052-
cleanup.write("}")
3043+
emitRetainedObjectCleanup(idVar: idVar, into: cleanup)
30533044
return [idVar]
30543045
}
30553046
)
@@ -3208,16 +3199,7 @@ struct IntrinsicJSFragment: Sendable {
32083199
}
32093200
printer.write("}")
32103201
scope.emitPushI32Parameter("\(isSomeVar) ? 1 : 0", printer: printer)
3211-
cleanup.write("if(\(idVar) !== undefined && \(idVar) !== 0) {")
3212-
cleanup.indent {
3213-
cleanup.write("try {")
3214-
cleanup.indent {
3215-
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.getObject(\(idVar));")
3216-
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.release(\(idVar));")
3217-
}
3218-
cleanup.write("} catch(e) {}")
3219-
}
3220-
cleanup.write("}")
3202+
emitRetainedObjectCleanup(idVar: idVar, into: cleanup)
32213203
return [idVar]
32223204
} else {
32233205
switch wrappedType {
@@ -3364,6 +3346,18 @@ struct IntrinsicJSFragment: Sendable {
33643346
}
33653347
}
33663348

3349+
private static func emitRetainedObjectCleanup(idVar: String, into cleanup: CodeFragmentPrinter) {
3350+
cleanup.write("if(\(idVar) !== undefined && \(idVar) !== 0) {")
3351+
cleanup.indent {
3352+
cleanup.write("try {")
3353+
cleanup.indent {
3354+
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.release(\(idVar));")
3355+
}
3356+
cleanup.write("} catch(e) {}")
3357+
}
3358+
cleanup.write("}")
3359+
}
3360+
33673361
/// Helper to push optional primitive values to stack-based parameters
33683362
private static func pushOptionalPrimitive(
33693363
value: String,

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/ImportedTypeInExportedInterface.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,11 @@ export async function createInstantiator(options, swift) {
5252
const cleanup = () => {
5353
if(id !== undefined && id !== 0) {
5454
try {
55-
swift.memory.getObject(id);
5655
swift.memory.release(id);
5756
} catch(e) {}
5857
}
5958
if(id1 !== undefined && id1 !== 0) {
6059
try {
61-
swift.memory.getObject(id1);
6260
swift.memory.release(id1);
6361
} catch(e) {}
6462
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/SwiftStruct.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,13 +246,11 @@ export async function createInstantiator(options, swift) {
246246
const cleanup = () => {
247247
if(id !== undefined && id !== 0) {
248248
try {
249-
swift.memory.getObject(id);
250249
swift.memory.release(id);
251250
} catch(e) {}
252251
}
253252
if(id1 !== undefined && id1 !== 0) {
254253
try {
255-
swift.memory.getObject(id1);
256254
swift.memory.release(id1);
257255
} catch(e) {}
258256
}

0 commit comments

Comments
 (0)