Because most of the recent changes to irregexp were patches I contributed myself, we barely need to change any of the shim code.
The only notable change is the addition of '#define COMPILING_IRREGEXP_FOR_EXTERNAL_EMBEDDER'. This is the solution that Jakob Gruber and I eventually came up with for the question of what to do with awkward V8 code that SM doesn't want. For example, NativeRegExpMacroAssembler::Match (in regexp-macro-assembler.cc) gets down in the muck with the internal details of V8's String implementation. It would be most convenient for SM if that function just didn't exist; we aren't going to use it, and we don't want to have to define a bunch of unused string API gunk in our shim. The answer is to wrap functions we don't need in "#ifndef COMPILING_IRREGEXP_FOR_EXTERNAL_EMBEDDER", which solves our problem and is minimally disruptive upstream.
Depends on D67718
Differential Revision: https://phabricator.services.mozilla.com/D67719
--HG--
extra : moz-landing-system : lando
In V8, gen-regexp-special-case.cc is compiled and run as a special build step to produce special-case.cc. That's a waste of time for us. special-case.cc can only change if one of the following occurs:
1. The Unicode consortium changes the case-folding behaviour of characters in the Basic Multilingual Plane. Given that there are only 16 undefined codepoints remaining in the BMP, this is not expected to happen often, if indeed it ever happens again.
2. Changes are made to gen-regexp-special-case.cc.
Because of this, special-case.cc is checked in directly in SpiderMonkey.
As it happens, one of the patches that I contributed back upstream to V8 fixed a number of bugs with /iu (ignoreCase, non-unicode) matches. Fixing that bug involved rewriting gen-regexp-special-case.cc to match the JS spec.
This patch checks in the resulting changes to special-case.cc.
Depends on D67717
Differential Revision: https://phabricator.services.mozilla.com/D67718
--HG--
extra : moz-landing-system : lando
The contents of this patch were automatically generated using import-irregexp.py.
This is up to date with upstream V8 as of March 19, 2020.
Depends on D67716
Differential Revision: https://phabricator.services.mozilla.com/D67717
--HG--
extra : moz-landing-system : lando
This script handles all the mechanical steps of importing irregexp from v8:
1. Acquire the source: either from github, or optionally from a local copy of v8.
2. Copy the contents of v8/src/regexp into js/src/new-regexp
- Exclude files that we have chosen not to import.
3. While doing so, update #includes:
- Change "src/regexp/*" to "new-regexp/*".
- Remove other v8-specific headers completely.
(This subsumes the previous "update-headers.py" script.)
4. Add '#include "new-regexp/regexp-shim.h" in the necessary places.
5. Update the VERSION file to include the correct git hash.
The only remaining task is to try compiling the code and see whether any of the shim code needs to be updated.
Differential Revision: https://phabricator.services.mozilla.com/D67716
--HG--
extra : moz-landing-system : lando
A `ProfileBufferChunk` represents a single chunk of memory, with an optional
link to the next chunk.
In the new Fission-compatible profiler storage, chunks will be allocated by a
chunk manager, filled with data by the profiler, and then released back to the
chunk manager.
The chunk manager may decide to destroy or recycle old chunks based on memory
limits (per process, or for the entire Firefox app).
Differential Revision: https://phabricator.services.mozilla.com/D67272
--HG--
extra : moz-landing-system : lando
This is no longer as important, with picture caching. Removing it
will simplify the planned changes to switch to a simpler segment
model based on nine-patch rectangles during scene building.
Differential Revision: https://phabricator.services.mozilla.com/D67792
--HG--
extra : moz-landing-system : lando
Also fix two other installer problems that were getting missed because of this:
one build error in PostUpdate and one use of an uninitialized value in the
installer, causing it to record that it had not registered the task when it had.
Differential Revision: https://phabricator.services.mozilla.com/D67915
--HG--
extra : moz-landing-system : lando
This patch adds the boilerplate necessary to support a new regexp flag. Externally visible changes (parsing the flag, the dotAll property on the prototype) are guarded behind ENABLE_NEW_REGEXP. Note: RegExpFlagsGetter turns out to be externally visible because it can be called on a non-regexp object with the dotAll property defined.
The actual implementation of dotAll comes for free with the fresh import of irregexp (bug 1367105).
There are two tests (tests/non262/RegExp/prototype.js and tests/non262/RegExp/flags.js) that need to be updated when this is turned on to add s/dotAll to the list of expected properties on the RegExp prototype. I will attach those changes to my patch that flips ENABLE_NEW_REGEXP to be on by default.
Differential Revision: https://phabricator.services.mozilla.com/D66844
--HG--
extra : moz-landing-system : lando
Previously, we kept the object IDs managed on content side only.
The GPU side would work with given indices.
When an object is destroyed, we'd free the ID on the content side and signal the GPU to delete the object.
Problem is that on the GPU process the object may still be kept alive for as long as any dependants are alive.
What this change is doing - hooking up the callbacks to the *actual* freeing of IDs on the GPU side.
These callbacks end up in messages from WebGPUParent to WebGPUChild, and only then the IDs are freed
on the content side and able to be reused.
Differential Revision: https://phabricator.services.mozilla.com/D67211
--HG--
extra : moz-landing-system : lando
Clamping of the blur radius depends on transform scale factors. This info is not available until later in the WebRender pipeline, so we need to delegate blur radius clamping to WebRender.
Differential Revision: https://phabricator.services.mozilla.com/D65804
--HG--
extra : moz-landing-system : lando
To avoid extra copy operations, we directly construct new FlexItem at
the end of current FlexLine, and we move the item to the next line if
the previous line needs to wrap.
Differential Revision: https://phabricator.services.mozilla.com/D67266
--HG--
extra : moz-landing-system : lando
Rather than inserting FlexLines and FlexItems at the front of the array,
which is inefficient, we reverse them after they are fully constructed.
nsTArray::Reverse() (or std::reverse()) is implemented by std::swap.In
order for FlexItem to be swappable, it needs to have an assignment
operator, which needs to be able to modify FlexItem's member variables.
To achieve this, we must drop the const qualifiers for the member
variables. And conveniently, this results in a compiler-generated
assignment operator which will do the right thing.
Differential Revision: https://phabricator.services.mozilla.com/D67587
--HG--
extra : moz-landing-system : lando
Notable changes in this part.
* FirstItem() and LastItem() now returns a reference to the FlexItem (if
such an item exists). The caller is required to ensure the FlexLine is
non-empty before calling the two methods.
* Deploy range-based for-loop to iterate all FlexItem in a FlexLine via
a new Items() method.
* The bookkeeping mNumItems is no longer needed as nsTArray::Length() is
sufficient.
* Use "." instead "->" because we now store FlexItem in an nsTArray.
Differential Revision: https://phabricator.services.mozilla.com/D67264
--HG--
extra : moz-landing-system : lando
In a later part, we are going to change nsFlexLine::mItems to store in
nsTArray and remove mNumItems.
Differential Revision: https://phabricator.services.mozilla.com/D67262
--HG--
extra : moz-landing-system : lando
By and large, this change accomplishes two things:
1. Run db.close() in finally clauses so that even if db access fails, we close
our connections. It also tries to avoid waiting on other, non-DB operations
before calling close, to avoid the DB connection needlessly hanging around.
2. Intercept all async database operations from the remote settings client to
kinto and ensuring they complete before the end of `profile-before-change`.
Any operations started after Services.startup.isShuttingDown (so after
quit/restart is initiated by the user) will throw. Operations started
beforehand are put in a set of operations, and remove themselves once
complete. We AsyncShutdown block on that set of operations completing.
Differential Revision: https://phabricator.services.mozilla.com/D66995
--HG--
extra : moz-landing-system : lando
This commit includes all the changes needed to get 'wasm/regress/' passing
jit-tests.
Differential Revision: https://phabricator.services.mozilla.com/D67259
--HG--
extra : moz-landing-system : lando
This commit includes all the changes necessary to get 'wasm/gc' jit-tests
passing.
Differential Revision: https://phabricator.services.mozilla.com/D67257
--HG--
extra : moz-landing-system : lando
This commit includes all the manual changes needed to get 'wasm/bigint'
jit-tests passing.
Differential Revision: https://phabricator.services.mozilla.com/D67256
--HG--
extra : moz-landing-system : lando
This commit includes all the manual changes needed to get 'wasm/' jit-tests
passing.
Differential Revision: https://phabricator.services.mozilla.com/D67255
--HG--
extra : moz-landing-system : lando