Some testdata in parse-tests finishes within 1-2 ms, and `new Data()` is
too rough.
`elapsed()` shell function returns microseconds.
Differential Revision: https://phabricator.services.mozilla.com/D104438
Implement the spread iteration changes from <https://github.com/tc39/ecma262/pull/2216>.
Default derived class constructors are changed to longer use array iteration
in the spread super call `super(...args)`. Instead the contents of the `args`
array are directly passed through to the super call. In our implementation we
can simply pass the `args` rest-array to the super call.
Depends on D104405
Differential Revision: https://phabricator.services.mozilla.com/D104406
When bug 762363 originally added this code, `JOF_SPREAD` didn't yet exist, so
instead we used `JOF_BYTE`, because the only calls using `JOF_BYTE` are spread
calls.
Differential Revision: https://phabricator.services.mozilla.com/D104405
This is an alternate approach to aadbc6deca05.
CTFontCreateWithGraphicsFont seems to give "LastResort" when used on a
system CGFont with variation applied on 10.12-10.14. We can avoid that
by using CTFontCreateWithGraphicsFont with a variation descriptor.
I'm only applying this approach to cairo for now to mimimize the risk
of this breaking something or causing the crashes that we were seeing
before.
See https://github.com/servo/core-foundation-rs/pull/439 for
a standalone test case.
Differential Revision: https://phabricator.services.mozilla.com/D104581
Without this, JS callers which don't explicitly query every element returned
by the enumerator are broken only on MacOS.
Differential Revision: https://phabricator.services.mozilla.com/D104580
Summary of changes:
* Replace the `matchBuckets` pref with `resultBuckets`.
* `resultBuckets` stores a JSON'ed root result bucket object. See the big
javadoc above `makeResultBuckets` in UrlbarPrefs for details.
* Convert existing result groups to more granular groups. This lets us remove
the heuristic-ordering logic in the muxer. It also lets us fix a subtle
inconsistency with regard to remote suggestions and form history; see the
removal of the two comments that start with "Note that the second form history
result appears after the remote suggestions" and "Note that the remote
suggestions appear in between the two form history results" in
test_search_suggestions.js.
* Unlike `matchBuckets`, `resultBuckets` stores *all* buckets, including the
heuristic at the beginning. Modify the muxer so that it discards heuristic
results that are not the first result.
Depends on D103137
Differential Revision: https://phabricator.services.mozilla.com/D99281
This has been on Nightly for almost a year and I don't think we've
seen any breakage, so I think it is time to let it ride the trains.
Differential Revision: https://phabricator.services.mozilla.com/D104555
- Recently we use size allocation event to create wl_subsurface of MozContainer. Unfortunately size allocation event
is not called when a window is opened second time, as its size is already set. Use map_event to create
wl_subsurface in this case.
Depends on D104550
Differential Revision: https://phabricator.services.mozilla.com/D104551
- Try to set subsurface offset even if we mozcontainer size allocation is not finished. Use window decoration size for it.
- Add more logging to mozcontainer code.
Depends on D104549
Differential Revision: https://phabricator.services.mozilla.com/D104550
Rework wl_subsurface creation in these steps:
1) moz_container_wayland_size_allocate() handler is called when
mContainer size/position is known.
It calls moz_container_wayland_surface_create_locked(), registers
a frame callback handler
(moz_container_wayland_frame_callback_handler()).
2) moz_container_wayland_frame_callback_handler() is called
when wl_surface owned by mozContainer is ready.
We call initial_draw_cbs() handler and we can create our wl_subsurface
on top of wl_surface owned by mozContainer.
Also size wl_buffer at WindowSurfaceWayland according to mozcontainer size,
don't use nsWindow bounds for it.
Differential Revision: https://phabricator.services.mozilla.com/D104549
In bug 1580003 I missed two calls that still use isLastMultiSelectChange.
This parameter has no effect and can be removed.
Differential Revision: https://phabricator.services.mozilla.com/D104427
The "Arbitrary module namespace identifier names" spec PR allows to use "*" as
a module export name, so we can no longer use that specific string to denote
star-imports/exports. Probably the easiest way to work around this new
restriction is to replace "*" with a nullptr string.
Spec change: https://github.com/tc39/ecma262/pull/2155
Differential Revision: https://phabricator.services.mozilla.com/D101013
The approach to use "*" for namespace imports/exports no longer works with
module export names. As an alternative add separate ImportNamespaceSpec and
ExportNamespaceSpec parse nodes. They're currently still implemented as binary
nodes, but the next part will change this.
Differential Revision: https://phabricator.services.mozilla.com/D101012
Inline `ModuleBuilder::appendExportFromEntry()` in preparation for the next
part. The `computeLineAndColumn()` call can be moved to the top, because
`spec->pn_pos.begin` is equal to `localNameNode->pn_pos.begin` by construction,
cf. `FullParseHandler::newImportSpec()`.
Drive-by changes:
- Use `auto*` in more places.
- Drop `frontend::` which is redundant with `using namespace js::frontend`.
- Remove the `if (exportName)` check in `ModuleBuilder::appendExportEntry()`,
because `exportName` is never a nullptr.
Differential Revision: https://phabricator.services.mozilla.com/D101011
Import declaration parsing was implemented in `Parser` instead of
`GeneralParser`, which required to add access to several other parsing methods
from `GeneralParser` to `Parser`. We can avoid this by simply moving `import`
declaration parsing into `GeneralParser`.
Differential Revision: https://phabricator.services.mozilla.com/D101010