Skip to content
This repository was archived by the owner on Jul 12, 2024. It is now read-only.

Commit 5a803ac

Browse files
committed
Simplify patchIRFiles.
Now that we only *add* classes instead of *replacing* some existing classes, we can use a simpler algorithm in `patchIRFiles`.
1 parent 1d28680 commit 5a803ac

File tree

1 file changed

+5
-14
lines changed

1 file changed

+5
-14
lines changed

Diff for: wasm/src/main/scala/ir2wasm/LibraryPatches.scala

+5-14
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,22 @@ import wasm.utils.MemClassDefIRFile
1717
/** Patches that we apply to the standard library classes to make them wasm-friendly. */
1818
object LibraryPatches {
1919
def patchIRFiles(irFiles: Seq[IRFile])(implicit ec: ExecutionContext): Future[Seq[IRFile]] = {
20-
val derivedCharBox = new java.util.concurrent.atomic.AtomicReference[IRFile](null)
21-
val derivedLongBox = new java.util.concurrent.atomic.AtomicReference[IRFile](null)
22-
23-
val patched1: Future[Seq[IRFile]] = Future.traverse(irFiles) { irFile =>
20+
val derivedIRFiles: Future[Seq[Option[IRFile]]] = Future.traverse(irFiles) { irFile =>
2421
val irFileImpl = IRFileImpl.fromIRFile(irFile)
2522
irFileImpl.entryPointsInfo.flatMap { entryPointsInfo =>
2623
entryPointsInfo.className match {
2724
case BoxedCharacterClass | BoxedLongClass =>
2825
irFileImpl.tree.map { classDef =>
29-
val derivedBox = MemClassDefIRFile(deriveBoxClass(classDef))
30-
if (classDef.className == BoxedCharacterClass)
31-
derivedCharBox.set(derivedBox)
32-
else
33-
derivedLongBox.set(derivedBox)
34-
irFile
26+
Some(MemClassDefIRFile(deriveBoxClass(classDef)))
3527
}
3628
case _ =>
37-
Future.successful(irFile)
29+
Future.successful(None)
3830
}
3931
}
4032
}
4133

42-
patched1.map { irFiles1 =>
43-
val extra = List(derivedCharBox.get(), derivedLongBox.get())
44-
extra ++ irFiles1
34+
derivedIRFiles.map { derived =>
35+
derived.flatten ++ irFiles
4536
}
4637
}
4738

0 commit comments

Comments
 (0)