Closed Bug 1177515 Opened 9 years ago Closed 9 years ago

Use ObjectGroup TypeInfo to speed up marking

Categories

(Core :: JavaScript: GC, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla42
Tracking Status
firefox42 --- fixed

People

(Reporter: terrence, Assigned: jonco)

References

(Blocks 1 open bug)

Details

Attachments

(1 file, 1 obsolete file)

For example, if we know that an Array does not contain any markable Values, we can skip marking it.
Attached patch bug1177515-skip-tracing-elements (obsolete) — Splinter Review
Here's a patch to do this, skipping tracing of dense elements if type information indicates that the object has no markable values in integer indexed properties.

I'm not really familiar with the type inference code and had to do some experimentation to make this work.  Brian, could you check what I've done is sane?
Assignee: terrence → jcoppeard
Attachment #8627182 - Flags: feedback?(bhackett1024)
Comment on attachment 8627182 [details] [diff] [review]
bug1177515-skip-tracing-elements

Review of attachment 8627182 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/gc/Marking.cpp
@@ +1181,5 @@
>      return true;
>  }
>  
> +inline static bool
> +ObjectElementsMayBeMarkable(NativeObject* nobj)

ObjectDenseElementsMayBeMarkable?

@@ +1189,5 @@
> +     * to see if the object's elements contain any GC pointers.  If not, we
> +     * don't need to trace them.
> +     */
> +    const unsigned MinElementsLength = 32;
> +    if (nobj->getDenseInitializedLength() < MinElementsLength || nobj->hasLazyGroup())

Instead of hasLazyGroup() here, this should call isSingleton().  hasLazyGroup() implies isSingleton(), and the isSingleton() test will also account for the fact that type information is lazily tracked for singletons (the property is not created until something actually needs it).
Attachment #8627182 - Flags: feedback?(bhackett1024) → feedback+
Attachment #8627182 - Attachment is obsolete: true
Attachment #8627650 - Flags: review?(terrence)
Comment on attachment 8627650 [details] [diff] [review]
bug1177515-skip-tracing-elements v2

Review of attachment 8627650 [details] [diff] [review]:
-----------------------------------------------------------------

Wow! Nice! Will be interesting to see if it wins us some epsilon of throughput on octane.
Attachment #8627650 - Flags: review?(terrence) → review+
https://hg.mozilla.org/mozilla-central/rev/799982d6a1b8
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: