From 93be9ea1609514b81a8a9331e04faa54cfffb057 Mon Sep 17 00:00:00 2001 From: Pierre Ricadat Date: Tue, 9 Apr 2024 19:04:35 +0900 Subject: [PATCH] Avoid allocation in ZEnvironment.get (#8713) --- core/shared/src/main/scala/zio/ZEnvironment.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/shared/src/main/scala/zio/ZEnvironment.scala b/core/shared/src/main/scala/zio/ZEnvironment.scala index 2b4f7241414..8af2401dafe 100644 --- a/core/shared/src/main/scala/zio/ZEnvironment.scala +++ b/core/shared/src/main/scala/zio/ZEnvironment.scala @@ -164,9 +164,8 @@ final class ZEnvironment[+R] private ( getOrElse(tag, throw new Error(s"Defect in zio.ZEnvironment: Could not find ${tag} inside ${self}")) private[ZEnvironment] def getOrElse[A](tag: LightTypeTag, default: => A)(implicit unsafe: Unsafe): A = - self.cache.get(tag) match { - case Some(a) => a.asInstanceOf[A] - case None => + self.cache.getOrElse(tag, null) match { + case null => var index = -1 val iterator = self.map.iterator var service: A = null.asInstanceOf[A] @@ -182,6 +181,7 @@ final class ZEnvironment[+R] private ( self.cache = self.cache.updated(tag, service) service } + case a => a.asInstanceOf[A] } private[ZEnvironment] def update[A >: R](tag: LightTypeTag, f: A => A)(implicit