mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1129313 - Scalar Replacement: Remove PostWriteBarrier at the same time as the stores. r=h4writer
This commit is contained in:
parent
7e7c247c0c
commit
375025f95c
@ -143,6 +143,9 @@ IsObjectEscaped(MInstruction *ins, JSObject *objDefault = nullptr)
|
||||
JitSpewDef(JitSpew_Escape, " is escaped by\n", def);
|
||||
return true;
|
||||
|
||||
case MDefinition::Op_PostWriteBarrier:
|
||||
break;
|
||||
|
||||
case MDefinition::Op_Slots: {
|
||||
#ifdef DEBUG
|
||||
// Assert that MSlots are only used by MStoreSlot and MLoadSlot.
|
||||
@ -245,6 +248,7 @@ class ObjectMemoryView : public MDefinitionVisitorDefaultNoop
|
||||
void visitObjectState(MObjectState *ins);
|
||||
void visitStoreFixedSlot(MStoreFixedSlot *ins);
|
||||
void visitLoadFixedSlot(MLoadFixedSlot *ins);
|
||||
void visitPostWriteBarrier(MPostWriteBarrier *ins);
|
||||
void visitStoreSlot(MStoreSlot *ins);
|
||||
void visitLoadSlot(MLoadSlot *ins);
|
||||
void visitGuardShape(MGuardShape *ins);
|
||||
@ -451,6 +455,17 @@ ObjectMemoryView::visitLoadFixedSlot(MLoadFixedSlot *ins)
|
||||
ins->block()->discard(ins);
|
||||
}
|
||||
|
||||
void
|
||||
ObjectMemoryView::visitPostWriteBarrier(MPostWriteBarrier *ins)
|
||||
{
|
||||
// Skip loads made on other objects.
|
||||
if (ins->object() != obj_)
|
||||
return;
|
||||
|
||||
// Remove original instruction.
|
||||
ins->block()->discard(ins);
|
||||
}
|
||||
|
||||
void
|
||||
ObjectMemoryView::visitStoreSlot(MStoreSlot *ins)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user