From de3a015ba31e651dda6cf4d347ceb5c91cfa04fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Sun, 5 Jan 2025 11:51:22 +0100 Subject: [PATCH 1/2] Remove dead code in `OptimizerCore`. --- .../frontend/optimizer/OptimizerCore.scala | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala b/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala index 584e269323..4aa187b975 100644 --- a/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala +++ b/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala @@ -5725,8 +5725,6 @@ private[optimizer] object OptimizerCore { private final class TooManyRollbacksException extends scala.util.control.ControlThrowable - private val AnonFunctionClassPrefix = "sjsr_AnonFunction" - private type CancelFun = () => Nothing private type PreTransCont = PreTransform => TailRec[Tree] @@ -5736,12 +5734,6 @@ private[optimizer] object OptimizerCore { def isNullable: Boolean = base.isNullable def isNothingType: Boolean = base == NothingType - - def toNonNullable: RefinedType = { - if (!isNullable) this - else if (base == NullType) RefinedType.Nothing - else RefinedType(base.toNonNullable, isExact, allocationSite) - } } private object RefinedType { @@ -5768,7 +5760,6 @@ private[optimizer] object OptimizerCore { } val NoRefinedType = RefinedType(VoidType) - val Nothing = RefinedType(NothingType) } /** @@ -6018,12 +6009,6 @@ private[optimizer] object OptimizerCore { copy(implsBeingInlined = implsBeingInlined + impl) } - def inlining(impls: Set[Scope.InliningID]): Scope = { - val intersection = implsBeingInlined.intersect(impls) - assert(intersection.isEmpty, s"Circular inlining of $intersection") - copy(implsBeingInlined = implsBeingInlined ++ impls) - } - def withImportReplacement(importReplacement: ImportReplacement): Scope = { assert(this.importReplacement.isEmpty, "Alreadying replacing " + s"$this.importReplacement while trying to replace $importReplacement") @@ -6418,10 +6403,6 @@ private[optimizer] object OptimizerCore { if (y >= 0) x-y <= x else x-y > x - /** Tests whether `-x` is valid without falling out of range. */ - private def canNegateLong(x: Long): Boolean = - x != Long.MinValue - private final class Intrinsics(intrinsicsMap: Map[(ClassName, MethodName), Int]) { def apply(flags: ApplyFlags, target: AbstractMethodID): Int = { if (flags.isPrivate || flags.isConstructor) { From 67fac71cc04aea45e045aef11f90b7f68f6a6499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Sun, 5 Jan 2025 12:26:38 +0100 Subject: [PATCH 2/2] Inline `RefinedType.NoRefinedType` at its unique use site. The other code paths in the method have to allocate a `RefinedType` anyway, so there was no strong reason to avoid the allocation there. --- .../org/scalajs/linker/frontend/optimizer/OptimizerCore.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala b/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala index 4aa187b975..53b8a11ee5 100644 --- a/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala +++ b/linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala @@ -384,7 +384,7 @@ private[optimizer] abstract class OptimizerCore( * `Return`s we produce in order to decide whether we can remove * the `Labeled`. */ - info.returnedTreeTypes.value ::= RefinedType.NoRefinedType + info.returnedTreeTypes.value ::= RefinedType(VoidType) Return(newExpr, newLabel) } } else if (!info.acceptRecords) { @@ -5758,8 +5758,6 @@ private[optimizer] object OptimizerCore { } RefinedType(tpe, isExact) } - - val NoRefinedType = RefinedType(VoidType) } /**