-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.type-performanceIssue relates to performance or code sizeIssue relates to performance or code sizevm-aot-code-sizeRelated to improvements in AOT code sizeRelated to improvements in AOT code size
Description
When looking at native code produced for scaleRadii from Flutter dart:ui, I see us emitting code like this:
v3 <- Constant(#1.0) T{_Double}
...
v420 <- Constant(#0) [0, 0] T{_Smi}
...
66: B155[target]:116
68: PushArgument(v3)
70: PushArgument(v420)
72: v400 <- StaticCall:126( ==<0> v3, v420, recognized_kind = Double_equal, result_type = T{bool}) T{bool}
73: ParallelMove r0 <- r0
74: Branch if StrictCompare:130(===, v400, v38) goto (156, 158)
and
78: v603 <- Box(v220) T{_Double}
80: PushArgument(v603)
82: v404 <- StaticCall:134( get:isNegative<0> v603, recognized_kind = Double_getIsNegative, result_type = T{bool}) T{bool}
83: ParallelMove r0 <- r0
84: Branch if StrictCompare:138(===, v404, v38) goto (161, 159)
This generates more code then we would get by ensuring that methods isNegative and == are inlined.
We should investigate why and how often it happens and ensure that they are inlined.
Metadata
Metadata
Assignees
Labels
area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.type-performanceIssue relates to performance or code sizeIssue relates to performance or code sizevm-aot-code-sizeRelated to improvements in AOT code sizeRelated to improvements in AOT code size