Closed Bug 972817 Opened 10 years ago Closed 10 years ago

Consider removing the TI flag and enabling it unconditionally


(Core :: JavaScript Engine, defect)

Not set





(Reporter: jandem, Assigned: bhackett1024)




(1 file)

The prefs/flags we have for the JITs are extremely useful for testing/fuzzing/triage, and we really want to keep them. However, the TI pref isn't all that useful anymore (a lot has been moved into Ion anyway) and I don't think turning off TI noticeably improves memory usage these days.  Also note that we're working on enabling TI and the JITs everywhere (bug 929374, bug 939562).

This would simplify some other parts of the VM as well (for instance, an object's "initialized length" depends on whether TI is enabled). And when we do this we can also remove the --no-ti run from --tbpl, saving resources.

There's one problem I can think of: TI OOMs currently disable TI. I don't know if that's still necessary though.

Brian, what do you think?
TI ooms used to disable TI because the constraint graph got into an inconsistent state we couldn't resolve.  The condtraint graph doesn't exist anymore so we should be able to get rid of the type nuking.  Though it would be good if the TI methods generally stayed infallible and handled failure by marking things unknown, canceling any active compilation, etc.
Depends on: 980630
Attached patch patchSplinter Review
Assignee: nobody → bhackett1024
Attachment #8392239 - Flags: review?(jdemooij)
Comment on attachment 8392239 [details] [diff] [review]

Review of attachment 8392239 [details] [diff] [review]:


Please update this comment in ObjectImpl.h as well:

 ... When type inference is disabled,
 * the initialized length always equals the capacity. When inference is
 * enabled, the initialized length is some value less than or equal to both the
 * object's length and the object's capacity.
 * With inference enabled, ...

::: js/src/jsinfer.cpp
@@ -1875,5 @@
> -TypeZone::init(JSContext *cx)
> -{
> -    if (!cx ||
> -        !cx->runtime()->options().typeInference() ||
> -        !cx->runtime()->jitSupportsFloatingPoint)

I think we rely on this to disable Ion compilation if we've no FPU (--no-fpu shell flag should trigger assertion failures on x86). We could add |cx->runtime()->jitSupportsFloatingPoint| to IsIonEnabled.
Attachment #8392239 - Flags: review?(jdemooij) → review+
gkw/decoder: this patch will remove the --no-ti and --ti shell flags.
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
(In reply to Jan de Mooij [:jandem] from comment #4)
> gkw/decoder: this patch will remove the --no-ti and --ti shell flags.

Jan, thanks for the headsup. I have removed support for --no-ti from the fuzzing harness as of fuzzing rev eb80198dfc4a.
You need to log in before you can comment on or make changes to this bug.