Closed Bug 933382 Opened 11 years ago Closed 11 years ago

GenerationalGC: Fix the all-slots post barrier

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla28

People

(Reporter: terrence, Assigned: terrence)

References

Details

Attachments

(1 file, 1 obsolete file)

Attached patch fix_allslots_barrier-v0.diff (obsolete) — Splinter Review
Hannes noticed that the AllSlots post barrier is broken: it skips the barrier if uintptr_t(obj) > nursery->end(). This probably accounts for some random GGC failures.
Attachment #825435 - Flags: review?(hv1989)
Comment on attachment 825435 [details] [diff] [review] fix_allslots_barrier-v0.diff Review of attachment 825435 [details] [diff] [review]: ----------------------------------------------------------------- This is still wrong: You told me this should be: |if (!inNursery(obj)) { ool }| That means: > Register objreg = ToRegister(lir->object()); > masm.branchPtr(Assembler::Below, objreg, ImmWord(nursery.start()), ool->entry()); > masm.branchPtr(Assembler::Below, objreg, ImmWord(nursery.heapEnd()), ool->rejoin()); > + masm.jump(ool->entry()); > masm.bind(ool->rejoin()); or better: > Register objreg = ToRegister(lir->object()); > masm.branchPtr(Assembler::Below, objreg, ImmWord(nursery.start()), ool->entry()); > - masm.branchPtr(Assembler::Below, objreg, ImmWord(nursery.heapEnd()), ool->rejoin()); > + masm.branchPtr(Assembler::AboveOrEqual, objreg, ImmWord(nursery.heapEnd()), ool->entry()); > masm.bind(ool->rejoin());
Attachment #825435 - Flags: review?(hv1989)
Yeah, that was pretty dumb. Lets use your second suggestion.
Attachment #825435 - Attachment is obsolete: true
Attachment #825554 - Flags: review?(hv1989)
Attachment #825554 - Flags: review?(hv1989) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla28
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: