Change information
Commit message:
[maglev] Fix conversion node leak from FixedDoubleArray vobject load
When --maglev-object-tracking is enabled, BuildLoadFixedDoubleArrayElement
returns the value stored in a virtual FixedDoubleArray directly. For
arrays initialized via the inlined Array(...) constructor with elements
of PACKED_DOUBLE_ELEMENTS kind, the stored values can be conversion nodes
(e.g. ChangeInt32ToFloat64), which is permitted for initializing stores.
However, conversion nodes must not leak into the interpreter frame state
(set/set_accumulator DCHECKs on !value->is_conversion()), since
conversions belong in NodeInfo as alternative representations.
Unwrap the conversion when reading from the virtual object, returning
the underlying input value. The Float64 alternative remains available in
NodeInfo for callers that need it.
Bug: 500177421
Change-Id: I319acf53f5910ef82087ae04c37aa6b4621e5adf
Cr-Commit-Position: refs/heads/main@{#106894}
Files:
- M src/maglev/maglev-graph-builder.cc
- A test/mjsunit/maglev/regress-500177421.js
Change size: S
Delta: 2 files changed, 27 insertions(+), 1 deletion(-)
Branch: refs/heads/main
Submit Requirements:
Code-Review: +1 by Jakob Linke