8000 Merge pull request #5176 from sjrd/range-unsigned-ints-instead-of-longs · scala-wasm/scala-wasm@29e02bf · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 29e02bf

Browse files
authored
Merge pull request scala-js#5176 from sjrd/range-unsigned-ints-instead-of-longs
Opt: Use unsigned arithmetics in Range, instead of Longs.
2 parents 25d9a5f + d972218 commit 29e02bf
8000

File tree

4 files changed

+324
-187
lines changed

4 files changed

+324
-187
lines changed

linker/shared/src/main/scala/org/scalajs/linker/frontend/optimizer/OptimizerCore.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4167,6 +4167,10 @@ private[optimizer] abstract class OptimizerCore(
41674167
PreTransLit(IntLiteral(y)), z)) =>
41684168
foldBinaryOp(innerOp, PreTransLit(IntLiteral(x + y)), z)
41694169

4170+
// 1 + (-1 ^ x) == 1 + ~x == -x == 0 - x (this appears when optimizing a Range with step == -1)
4171+
case (PreTransLit(IntLiteral(1)), PreTransBinaryOp(Int_^, PreTransLit(IntLiteral(-1)), x)) =>
4172+
foldBinaryOp(Int_-, PreTransLit(IntLiteral(0)), x)
4173+
41704174
case _ => default
41714175
}
41724176

@@ -4435,6 +4439,9 @@ private[optimizer] abstract class OptimizerCore(
44354439
PreTransLit(IntLiteral(z))) =>
44364440
foldBinaryOp(op, y, PreTransLit(IntLiteral(x ^ z)))
44374441

4442+
case (PreTransLocalDef(l), PreTransLocalDef(r)) if l eq r =>
4443+
booleanLit(op == Int_==)
4444+
44384445
case (PreTransLit(_), _) => foldBinaryOp(op, rhs, lhs)
44394446

44404447
case _ => default
@@ -4486,6 +4493,9 @@ private[optimizer] abstract class OptimizerCore(
44864493
case _ => default
44874494
}
44884495

4496+
case (PreTransLocalDef(l), PreTransLocalDef(r)) if l eq r =>
4497+
booleanLit(op == Int_<= || op == Int_>=)
4498+
44894499
case (PreTransLit(IntLiteral(_)), _) =>
44904500
foldBinaryOp(flippedOp, rhs, lhs)
44914501

@@ -4729,6 +4739,9 @@ private[optimizer] abstract class OptimizerCore(
47294739
PreTransLit(LongLiteral(z))) =>
47304740
foldBinaryOp(op, y, PreTransLit(LongLiteral(x ^ z)))
47314741

4742+
case (PreTransLocalDef(l), PreTransLocalDef(r)) if l eq r =>
4743+
booleanLit(positive)
4744+
47324745
case (PreTransLit(LongLiteral(_)), _) => foldBinaryOp(op, rhs, lhs)
47334746

47344747
case _ => default
@@ -4852,6 +4865,9 @@ private[optimizer] abstract class OptimizerCore(
48524865
} (finishTransform(isStat = false))(emptyScope)
48534866
}.toPreTransform
48544867

4868+
case (PreTransLocalDef(l), PreTransLocalDef(r)) if l eq r =>
4869+
booleanLit(op == Long_<= || op == Long_>=)
4870+
48554871
case (PreTransLit(LongLiteral(_)), _) =>
48564872
foldBinaryOp(flippedOp, rhs, lhs)
48574873

project/Build.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2053,32 +2053,32 @@ object Build {
20532053
case `default212Version` =>
20542054
if (!useMinifySizes) {
20552055
Some(ExpectedSizes(
2056-
fastLink = 626000 to 627000,
2057-
fullLink = 96000 to 97000,
2056+
fastLink = 624000 to 625000,
2057+
fullLink = 94000 to 95000,
20582058
fastLinkGz = 75000 to 79000,
2059-
fullLinkGz = 25000 to 26000,
2059+
fullLinkGz = 24000 to 25000,
20602060
))
20612061
} else {
20622062
Some(ExpectedSizes(
2063-
fastLink = 425000 to 426000,
2064-
fullLink = 283000 to 284000,
2065-
fastLinkGz = 61000 to 62000,
2063+
fastLink = 424000 to 425000,
2064+
fullLink = 281000 to 282000,
2065+
fastLinkGz = 60000 to 61000,
20662066
fullLinkGz = 43000 to 44000,
20672067
))
20682068
}
20692069

20702070
case `default213Version` =>
20712071
if (!useMinifySizes) {
20722072
Some(ExpectedSizes(
2073-
fastLink = 443000 to 444000,
2074-
fullLink = 92000 to 93000,
2073+
fastLink = 442000 to 443000,
2074+
fullLink = 90000 to 91000,
20752075
fastLinkGz = 57000 to 58000,
2076-
fullLinkGz = 25000 to 26000,
2076+
fullLinkGz = 24000 to 25000,
20772077
))
20782078
} else {
20792079
Some(ExpectedSizes(
2080-
fastLink = 301000 to 302000,
2081-
fullLink = 258000 to 259000,
2080+
fastLink = 299000 to 300000,
2081+
fullLink = 257000 to 258000,
20822082
fastLinkGz = 47000 to 48000,
20832083
fullLinkGz = 42000 to 43000,
20842084
))

0 commit comments

Comments
 (0)
0