Bug 1129313 - Scalar Replacement: Remove PostWriteBarrier at the same time as the stores. r=h4writer

This commit is contained in:
Nicolas B. Pierron 2015-02-26 16:18:41 +01:00
parent 7e7c247c0c
commit 375025f95c

View File

@ -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)
{