Skip to content

fix: real unmodifiable list#8724

Merged
yschimke merged 1 commit intosquare:masterfrom
MukjepScarlet:fix/list
Apr 7, 2025
Merged

fix: real unmodifiable list#8724
yschimke merged 1 commit intosquare:masterfrom
MukjepScarlet:fix/list

Conversation

@MukjepScarlet
Copy link
Contributor

fixes #8721

@MukjepScarlet
Copy link
Contributor Author

@JakeWharton Please review

@MukjepScarlet MukjepScarlet marked this pull request as draft April 6, 2025 07:09
@MukjepScarlet MukjepScarlet marked this pull request as ready for review April 7, 2025 16:01
@yschimke yschimke merged commit da523ca into square:master Apr 7, 2025
20 checks passed
@MukjepScarlet MukjepScarlet deleted the fix/list branch April 8, 2025 03:16

/** Returns the Content-Length as reported by the response headers. */
internal fun Response.headersContentLength(): Long = headers["Content-Length"]?.toLongOrDefault(-1L) ?: -1L
internal fun Response.headersContentLength(): Long = headers["Content-Length"]?.toLongOrNull() ?: -1L
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why make our code slower?

Here’s the Java equivalent of what we had before (IntelliJ ‘Show Kotlin Bytecode’, followed by ‘Decompile’):

   public static final long headersContentLength(@NotNull Response $this$headersContentLength) {
      Intrinsics.checkNotNullParameter($this$headersContentLength, "<this>");
      String var10000 = $this$headersContentLength.headers().get("Content-Length");
      return var10000 != null ? _UtilCommonKt.toLongOrDefault(var10000, -1L) : -1L;
   }

and here’s after:

   public static final long headersContentLength(@NotNull Response $this$headersContentLength) {
      Intrinsics.checkNotNullParameter($this$headersContentLength, "<this>");
      String var10000 = $this$headersContentLength.headers().get("Content-Length");
      long var2;
      if (var10000 != null) {
         Long var1 = StringsKt.toLongOrNull(var10000);
         if (var1 != null) {
            var2 = var1;
            return var2;
         }
      }

      var2 = -1L;
      return var2;
   }

The old code didn’t allocate, and the new code does.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix immutable list creation

4 participants

Comments