Having this kind of method will let us know what the states of interest are.
If all the states are cached we can return them without inquiring the full state.
Differential Revision: https://phabricator.services.mozilla.com/D69130
--HG--
extra : moz-landing-system : lando
In this patch set I'll introduce state caching, so I thought it's a good idea
to first add a bunch of tests to features that will be touched.
Differential Revision: https://phabricator.services.mozilla.com/D69129
--HG--
extra : moz-landing-system : lando
This commit updates our tests to use the new GC syntax.
* Removes (gc_feature_opt_in)
* Switches (ref T) to (ref opt T)
* Fix some manual binary encoding tests
Differential Revision: https://phabricator.services.mozilla.com/D69411
--HG--
extra : moz-landing-system : lando
The wat update now uses a different message for duplicate identifier errors.
Differential Revision: https://phabricator.services.mozilla.com/D69410
--HG--
extra : moz-landing-system : lando
The V8/wabt prototype uses a different struct field encoding by putting the
flags for a field after the value type. This commit updates our decoder to
match.
Differential Revision: https://phabricator.services.mozilla.com/D69409
--HG--
extra : moz-landing-system : lando
The (ref T) in the GC proposal is non-nullable, while our (ref T) may be null.
This commit renames our (ref T) value type to be an (optref T). Eventually we
will want to implement the proper (ref T) to be more compatible with V8 which
only implements (ref T).
Differential Revision: https://phabricator.services.mozilla.com/D69408
--HG--
extra : moz-landing-system : lando
The V8/wabt prototype uses a dedicated prefix opcode for most of the GC
operations. This commit adds this prefix and switches the instructions over
to it.
The encoding for ref/optref is left to its own commit as that implies a larger
change to rename the actual TypeCode.
Differential Revision: https://phabricator.services.mozilla.com/D69407
--HG--
extra : moz-landing-system : lando
This feature was useful when we were the only implementation prototyping this,
but now there is another implementation that doesn't require this flag. A later
commit will remove these from the tests.
Differential Revision: https://phabricator.services.mozilla.com/D69406
--HG--
extra : moz-landing-system : lando
This commit updates the wat version in tree.
* Implements MVP GC syntax
* Updated abs SIMD opcodes
Differential Revision: https://phabricator.services.mozilla.com/D69405
--HG--
extra : moz-landing-system : lando
If we add JSScript::initSharedData(), we no longer need to mark CopyScript as
a friend of JSScript and can simplify some things.
Differential Revision: https://phabricator.services.mozilla.com/D69058
--HG--
extra : moz-landing-system : lando
Depends on D65397
Now that we removed all options available for the TabDescriptor, we can just remove the constructor argument and related code.
Differential Revision: https://phabricator.services.mozilla.com/D65398
--HG--
extra : moz-landing-system : lando
Depends on D69331
This changeset adds a new getFavicon API on the TabDescriptorActor and uses it from about:debugging to retrieve the favicons for the tabs.
Currently, the TabDescriptorActor (living in the parent process) modifies the form of its BrowsingContextTargetActor (living in the content process) to add a "favicon" property on it. The reason we do this is that the API to get favicons can only be used from the parent process. Before tab descriptors, we had "frame-prox(ies)" instead in the parent process and the client could not directly query those frame proxies (they were not actors, and had no corresponding front). That's why we used this workaround of modifying the target actor form.
But now clients can directly call APIs on the TabDescriptor, so we don't have to insert the favicon information in the form of the target actor anymore.
Differential Revision: https://phabricator.services.mozilla.com/D65360
--HG--
extra : moz-landing-system : lando
I had to upstream a patch rewriting irregexp's error handling to make this work, but we should have very nearly the same syntax errors as the old implementation. There are a few small exceptions in cases where we added unicode support after importing, and decided to report slightly different things, but nothing that seems like it should matter. There are two dead error messages. I have made a note to remove them after the old implementation is gone and no longer needs them.
ReportSyntaxError is based as closely as possible on the existing implementation in irregexp/RegExpParser.cpp.
Differential Revision: https://phabricator.services.mozilla.com/D69262
--HG--
extra : moz-landing-system : lando
This is the first point at which we can actually run irregexp code. For now, it doesn't do much: it can verify that a regexp has valid syntax, but actually reporting syntax errors doesn't happen until the next patch, and we hit a MOZ_CRASH if you try to actually execute the regexp. (Nevertheless, it works well enough to expose some dumb off-by-one errors in the shim code.)
Depends on D69260
Differential Revision: https://phabricator.services.mozilla.com/D69261
--HG--
extra : moz-landing-system : lando
This is the interface for SM-to-irregexp calls. Eventually it will support CheckPatternSyntax, CompilePattern, and Execute. For now, we just hook things up so that JSContext owns an Isolate.
Depends on D69259
Differential Revision: https://phabricator.services.mozilla.com/D69260
--HG--
extra : moz-landing-system : lando
If we are using the new import, we don't need the old one.
Note about the testing functions: disRegExp appears to have been broken since we added unicode support. parseRegExp is used for a set of tests (in jit_test/tests/regexp_parse) that hardcode an expected parse tree for various expressions. I don't think either function provides much value.
Differential Revision: https://phabricator.services.mozilla.com/D69259
--HG--
extra : moz-landing-system : lando
Few of the counters actually have anything to do with IPC although they all relate to events of layout transactions.
Depends on D69414
Differential Revision: https://phabricator.services.mozilla.com/D69415
--HG--
extra : moz-landing-system : lando
Instead of collecting so-called ipc counters when receving the SetDisplayList on the render backend, pass the information through the scene builder thread and update the profile on the render backend after the scene is swapped. This prevents ipc counters to be displayed while the transaction is still being processed by the scene builder thread.
Differential Revision: https://phabricator.services.mozilla.com/D69414
--HG--
extra : moz-landing-system : lando
It moves when DL building + IPC + scene building takes more than 100ms.
Depends on D69247
Differential Revision: https://phabricator.services.mozilla.com/D69254
--HG--
extra : moz-landing-system : lando
This removes the WebRender side of the previous slow frame indicator and replace it with a simple implementation that only looks at the CPU time on the render backend and renderer thread involved for building a frame.
A followup patch will add a separate indicator for when the displaylist/ipc/scene bits take too long.
Differential Revision: https://phabricator.services.mozilla.com/D69247
--HG--
extra : moz-landing-system : lando
Instead, use resetArgsUsageAnalysis(). We no longer set the arguments flags
for lazy scripts since the mutable flags are imprecise until the BCE is
complete.
Differential Revision: https://phabricator.services.mozilla.com/D69310
--HG--
extra : moz-landing-system : lando
This replaces the dedicated bools in FunctionBox with the associated
ImmutableFlags. The results in AlwaysNeedsArgsObj now being initialized
consistently for lazy scripts as well.
Differential Revision: https://phabricator.services.mozilla.com/D69309
--HG--
extra : moz-landing-system : lando
Adds a new startup cache info service to expose some of the internal
state of the startup cache.
Differential Revision: https://phabricator.services.mozilla.com/D69298
--HG--
extra : moz-landing-system : lando
Also move MOZ_MUST_USE before function declarations' specifiers and return type. While clang and gcc's __attribute__((warn_unused_result)) can appear before, between, or after function specifiers and return types, the [[nodiscard]] attribute must precede the function specifiers.
Differential Revision: https://phabricator.services.mozilla.com/D69315
--HG--
extra : moz-landing-system : lando