Closed Bug 928378 Opened 11 years ago Closed 11 years ago

Add description of post-barriers

Categories

(Core :: JavaScript Engine, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla29

People

(Reporter: evilpie, Assigned: jonco)

References

Details

(Whiteboard: [qa-])

Attachments

(1 file)

There is very interesting description of per-barriers, but no detailed description of post-barriers. I would be interested in reading that. http://mxr.mozilla.org/mozilla-central/source/js/src/gc/Barrier.h?force=1#98
Severity: normal → enhancement
OS: Linux → All
Hardware: x86_64 → All
Blocks: 673454
Not a JIT bug, but I agree a comment would be nice.
Component: JavaScript Engine: JIT → JavaScript Engine
Attached patch postbarrier-docSplinter Review
I added some comments for this. I could expand this further so let me know if you have any suggestions.
Assignee: nobody → jcoppeard
Attachment #8348092 - Flags: review?(wmccloskey)
Comment on attachment 8348092 [details] [diff] [review] postbarrier-doc Review of attachment 8348092 [details] [diff] [review]: ----------------------------------------------------------------- Thanks for writing this. ::: js/src/gc/Barrier.h @@ +96,5 @@ > * > * POST-BARRIER > * > + * For generational GC, we want to be able to quickly collect the nursery in a > + * minor collection. Part of the way this is acheived is to only mark the achieved @@ +97,5 @@ > * POST-BARRIER > * > + * For generational GC, we want to be able to quickly collect the nursery in a > + * minor collection. Part of the way this is acheived is to only mark the > + * nursery itself - tenured things, which may form the majority of the heap, are I'm used to seeing two or three dash characters instead of one (maybe that's because I'm American though?). A semicolon would probably make sense also. @@ +99,5 @@ > + * For generational GC, we want to be able to quickly collect the nursery in a > + * minor collection. Part of the way this is acheived is to only mark the > + * nursery itself - tenured things, which may form the majority of the heap, are > + * not traced through or marked. This leads to the problem of what to do about > + * tenured objects that have pointers into the nursery -- if such things are not I would use a period or colon here instead of the dash. @@ +106,5 @@ > + * and mark their targets when we start a minor collection. > + * > + * The pointers can be thoughs of as edges in object graph, and the set of edges > + * from the tenured generation into the nursery is know as the remembered set. > + * Post barriers are used to discover this remembered set. Perhaps "record" or "track" instead of "discover"? @@ +110,5 @@ > + * Post barriers are used to discover this remembered set. > + * > + * Whenever a slot which could contain such a pointer is written, we use a write > + * barrier to check if the edge created is in the remembered set, and if so we > + * insert it into the store buffer. This means than when we come to do a minor It might make sense to say something about how the store buffer is just the machine representation of the remembered set. @@ +132,5 @@ > * the "obj->field.init(value)" method instead of "obj->field = value". We use > * the init naming idiom in many places to signify that a field is being > * assigned for the first time. > + * > + * For each of pointers, Values and jsids this file implements three classes, four classes?
Attachment #8348092 - Flags: review?(wmccloskey) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla29
Whiteboard: [qa-]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: