Unify implementation of JSOP_CHECKOBJCOERCIBLE and the self-hosted RequireObjectCoercible function
Categories
(Core :: JavaScript Engine, enhancement, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox79 | --- | fixed |
People
(Reporter: shu, Assigned: evilpie)
References
(Blocks 2 open bugs)
Details
(Keywords: triage-deferred)
Attachments
(2 files)
Updated•7 years ago
|
Assignee | ||
Comment 1•4 years ago
|
||
We should do this. We have a call to RequireObjectCoercible
in all string methods. With this fixed we should be able to be in a place where for many string methods we aren't calling another functions from Baseline and Warp.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 2•4 years ago
|
||
I prototyped this, but sadly it makes an already bad error message worse.
Before we get "can't convert null to object", when using CheckObjCoercible
: "this is null". For reference Chrome gives "String.prototype.blink called on null or undefined", which is much better.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
Depends on D79615
Assignee | ||
Comment 4•4 years ago
|
||
Depends on D79655
Assignee | ||
Comment 5•4 years ago
|
||
I mostly wrote these patches for the improved error messages. If we actually want to improve the performance with Warp/baseline it might make sense to add a IsNullOrUndefined
JSOp to replace the two strict equality comparisons. Luckily we already have this as a MIR/LIR instruction.
Assignee | ||
Comment 6•4 years ago
|
||
I hadn't noticed this before locally. But jit-test/tests/ion/dce-with-rinstructions.js
fails with Assertion failure: input()->isRecoveredOnBailout() == mustBeRecovered_
. The failing test seems to be rstr_split
.
Assignee | ||
Comment 7•4 years ago
|
||
Turns out changing the call to and if + call would get us right over the inlinig limit for String_split. Setting --ion-limit-script-size=off when running the test is a simple fix suggested by Jan.
Comment 9•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/a634c5346591
https://hg.mozilla.org/mozilla-central/rev/7b278c9988df
Description
•