| Auto-Submit | +1 |
if (alloc->is_returned_value_from_inline_call()) {Victor GomesThat's behind `DEBUG` right now.
Indeed. And I think it should continue like that.
After some thinking, the problem is not just here, but in TryGetPossibleMaps. It is reading the last object associated to the inlined allocation, an object that it might not be visible by the virtual object list. So I fixed that instead. We return no possible maps, which returns kMayBeInPrototypeChain.
TryGetPossibleMaps was actually wrong already, we need to do a FindAllocatedWith, since we could have 2 branches, the first modify the object in the InlinedAllocation (last modified object), and then the second needs to find the correct (previous version) of the object.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
LGTM
return VirtualObjectList(as_interpreted().last_virtual_object());Please add a comment why we can only have a single VO here.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Auto-Submit | +1 |
| Commit-Queue | +2 |
return VirtualObjectList(as_interpreted().last_virtual_object());Please add a comment why we can only have a single VO here.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
4 is the latest approved patch-set.
The change was submitted with unreviewed changes in the following files:
```
The name of the file: src/maglev/maglev-interpreter-frame-state.h
Insertions: 2, Deletions: 0.
@@ -1294,6 +1294,8 @@
inline VirtualObjectList DeoptFrame::GetVirtualObjects() const {
if (type() == DeoptFrame::FrameType::kInterpretedFrame) {
+ // Recover virtual object list using the last object before the
+ // deopt frame creation.
return VirtualObjectList(as_interpreted().last_virtual_object());
}
DCHECK_NOT_NULL(parent());
```
[maglev] Prevent constant folding `instanceof` checks
... when the receiver is a virtual object that was created in a
different, non-eagerly inlined function.
To fix this, we move the virtual object list from the interpreter frame
state to the known node aspects. This gives `TryGetPossibleMaps` the
correct context to find the correct object for this allocation site.
If the object isn't found in the current scope's VO list, we can infer
it leaked from another inlining operation.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |