VM/ia32: Bad register allocation in _StringBase._createOneByteString if it is inlined into createFromCharCodes #37800
Labels
area-vm
Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
type-performance
Issue relates to performance or code size
On IA32, Base64Encoder golem benchmark:
If
_StringBase._createOneByteString
is inlined into_StringBase.createFromCharCodes
, this slows down benchmark:Hot loop in
_StringBase._createOneByteString
:The same loop if
_StringBase._createOneByteString
is inlined:The following patch can be used to reproduce the problem:
Note that
_StringBase._createOneByteString
satisfies ourinlining_callee_call_sites_threshold
heuristic if all integer operations are recognized. Currently it is not inlined because not all integer operations are recognized (there is a remaining unrecognized call). However, with bytecode all integer operations are replaced with BinarySmiOp and_StringBase._createOneByteString
is inlined causing performance regression./cc @mraleph @mkustermann @aartbik
The text was updated successfully, but these errors were encountered: