Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html
Go to file
Julian Seward 2c3173600a Bug 1797933, part 2 - initial implementation of struct.{new,set,get} and ref.cast for Ion. r=rhunt.
This patch implements struct.{new,set,get} and ref.cast for Ion.  The
implementation is in principle straightforward and is derived from the
baseline equivalents.  There are however many pieces that need to be
coordinated.  Changes:

* Compiler gating logic -- enable Ion for wasm GC extensions.

* Pertaining to the above, extend the guard conditions in many of the wasm/gc
  test cases so as to limit them to baseline only, for now, so that we don't
  get failures as a result of gc insns that are currently unimplemented in
  Ion.  This will need to be incrementally undone as more gc insns get
  implemented in Ion.

* Pertaining to testing (lib/wasm-binary.js), remove wasm gc opcodes from the
  lists of opcodes that we check are unimplemented.

* New test file wasm/gc/structs2.js, that tests 8- and 16-bit field accesses,
  since the existing structs.js file doesn't.

* Add support to MIR and LIR to handle 8- and 16-bit memory accesses.  One
  possibility would have been to add MIRType::Int16 and MIRType::Int8, but I
  didn't want to destabilise the existing, probably carefully-balanced MIR
  optimisation machinery for JS.  So I chose to add auxiliary descriptors just
  for the 4 relevant MIR/LIR nodes instead:

  - New enums MNarrowingOp and MWideningOp, to describe how to narrow to /
    widen from Int32.

  - Renamed wasm::FieldExtension to wasm::FieldWideningOp for consistency with
    the above.  Note MWideningOp and wasm::FieldWideningOp both need to exist;
    neither can exactly do the job of the other.

  - LIRGenerator::visitWasmLoadObjectField/LoadObjectFieldWithKA
    /StoreObjectFieldWithKA: handle 8- and 16-bit accesses.
    WasmStoreObjectRefFieldWithKA is unaffected since a ref can't be 8- or
    16-bits long.

  - CodeGenerator::visitWasm{Store,Load}Slot: handle 8- and 16-bit accesses.

* The actual implementations of struct.{new,set,get} and ref.cast, which are
  pretty straightforward.  They use the following new helper functions inside
  class FunctionCompiler:

  - FunctionCompiler::loadGcCanon, same function as the baseline version

  - FunctionCompiler::writeValueToStructField, used for both struct.new
    and struct.set.

  - FunctionCompiler::readValueFromStructField, used for struct.get.

  - FunctionCompiler::trapIfZero, used for ref.cast.

  - FunctionCompiler::refCast, used for ref.cast.

  - FunctionCompiler::field{Load,Store}InfoToMIR, used to create the right MIR
    descriptions for 8- and 16-bit transactions.

  It is envisaged that these helpers will be further refined in subsequent
  patches to support accesses for the array instructions.

* Ridealong fix: FunctionCompiler::loadExceptionValues: add missing OOM check
  for `auto* data = ..`.

Differential Revision: https://phabricator.services.mozilla.com/D161253
2022-11-22 13:42:14 +00:00
.cargo Bug 1799402 - Vendor wpf-gpu-raster Rust crate. r=jrmuizel,supply-chain-reviewers 2022-11-12 08:06:43 +00:00
.vscode
accessible Bug 1778433 part 3: Remove defunct *AccessibleWrap types. r=nlapre 2022-11-22 04:55:11 +00:00
browser Bug 1801471 - Handle Private Browsing mode in unified extensions panel. r=rpl 2022-11-22 12:26:23 +00:00
build Backed out changeset e9bd011dbf75 (bug 1799423) for causing toolchains failures. CLOSED TREE 2022-11-22 14:22:00 +02:00
caps Backed out changeset 02a9e51358f1 (bug 1792138) for causing mochitests failures on browser_ext_windows_create_url.js. CLOSED TREE 2022-11-17 18:38:00 +02:00
chrome Bug 1799314 - Convert consumers of testing modules to import ES modules direct (miscellaneous). r=mossop 2022-11-17 12:00:32 +00:00
config Bug 1796543 - Add a subcommand cargo udeps to ./mach. r=glandium,firefox-build-system-reviewers 2022-11-22 06:22:17 +00:00
devtools Bug 1801123 - Enable container queries on nightly. r=dshin 2022-11-21 10:04:31 +00:00
docs Bug 1801738 - Use --enable-project instead of --enable-application. r=firefox-build-system-reviewers,geckoview-reviewers,calu,ahochheiden 2022-11-22 02:09:26 +00:00
docshell Bug 1793834 - part 1/12: adding a mostly-empty about:windows-messages page r=Gijs,fluent-reviewers,flod 2022-11-22 03:44:51 +00:00
dom Bug 1798959 - Ensure all VideoColoSpaceInits work r=padenot 2022-11-22 11:42:56 +00:00
editor Bug 1799314 - Convert consumers of testing modules to import ES modules direct (miscellaneous). r=mossop 2022-11-17 12:00:32 +00:00
extensions Bug 1800927: Fix the Updatebot linter and offending moz.yaml files r=ahal,webdriver-reviewers 2022-11-21 19:35:16 +00:00
gfx Bug 1790816 - Reformat gfx/ with isort. r=jgilbert DONTBUILD 2022-11-22 12:54:40 +00:00
gradle/wrapper
hal Bug 1800412 - Add a preference to control whether the EcoQoS is used for background content processes, r=gsvelto. 2022-11-14 12:10:55 +00:00
image Bug 1800979 - Mark CSS image value loads as not cancelable. r=tnikkel 2022-11-20 00:22:20 +00:00
intl Backed out 2 changesets (bug 1685180) for causing Xpcshell failures at test_l10nCache.js. CLOSED TREE 2022-11-21 19:51:30 +02:00
ipc Bug 1790816 - Reformat ipc/ with isort. r=mccr8 DONTBUILD 2022-11-22 11:07:46 +00:00
js Bug 1797933, part 2 - initial implementation of struct.{new,set,get} and ref.cast for Ion. r=rhunt. 2022-11-22 13:42:14 +00:00
layout Bug 1798396 - Remove appearance: -moz-win-glass, which is unused. r=tnikkel 2022-11-22 10:56:38 +00:00
media Bug 1800927: Fix the Updatebot linter and offending moz.yaml files r=ahal,webdriver-reviewers 2022-11-21 19:35:16 +00:00
memory Bug 1799630 - replace sprintf by snprintf or SprintfLiteral r=emilio 2022-11-10 07:01:11 +00:00
mfbt Bug 1800293 - mfbt: Don't use std::is_literal_type when compiling as C++20. r=glandium 2022-11-16 00:54:27 +00:00
mobile Bug 1790816 - Reformat mobile/ with isort. r=geckoview-reviewers,m_kato DONTBUILD 2022-11-22 11:04:55 +00:00
modules Bug 1801446 - Limit the maximum complexity of paths used with wpf-gpu-raster. r=jrmuizel 2022-11-22 05:25:59 +00:00
mozglue Bug 1799952 - Add rust-analyzer scip index for Searchfox. r=asuth,glandium 2022-11-21 08:07:27 +00:00
netwerk Bug 1790816 - Reformat netwerk/ with isort. r=necko-reviewers,kershaw DONTBUILD 2022-11-22 11:11:55 +00:00
nsprpub
other-licenses Bug 1800048: Don't expose the LINKS_TO relation via ATK and IA2. r=morgan 2022-11-15 06:46:24 +00:00
parser Bug 1709012 - Remove NS_ASSERTION about executor queue being empty upon destruction. r=edgar 2022-11-22 12:30:04 +00:00
python Bug 1801726 - Upgrade psutil to 5.9.4. r=firefox-build-system-reviewers,ahochheiden 2022-11-22 09:12:02 +00:00
remote Bug 1790816 - Reformat remote/ with isort. r=webdriver-reviewers,whimboo DONTBUILD 2022-11-22 10:59:05 +00:00
security No Bug, mozilla-central repo-update HSTS HPKP remote-settings - a=repo-update r=RyanVM 2022-11-21 14:06:35 +00:00
services Bug 1801238 - FxA now checks with the push service whether subscription update is needed. r=teshaq 2022-11-21 17:06:38 +00:00
servo Bug 1798396 - Remove appearance: -moz-win-glass, which is unused. r=tnikkel 2022-11-22 10:56:38 +00:00
startupcache Bug 1796085 - Part 1: Define MOZ_BACKGROUNDTASKS macro globally r=smaug,necko-reviewers,application-update-reviewers,nalexander,valentin 2022-10-19 12:04:08 +00:00
storage Bug 1799314 - Convert consumers of testing modules to import ES modules direct (miscellaneous). r=mossop 2022-11-17 12:00:32 +00:00
supply-chain Bug 1799442 - Update Glean to v51.8.2, rkv to 0.18 r=janerik,supply-chain-reviewers 2022-11-18 13:56:27 +00:00
taskcluster Backed out changeset e9bd011dbf75 (bug 1799423) for causing toolchains failures. CLOSED TREE 2022-11-22 14:22:00 +02:00
testing Bug 1798959 - Ensure all VideoColoSpaceInits work r=padenot 2022-11-22 11:42:56 +00:00
third_party Bug 1800927: Fix the Updatebot linter and offending moz.yaml files r=ahal,webdriver-reviewers 2022-11-21 19:35:16 +00:00
toolkit Bug 1799562 - update version of Cylance to blocklist r=gcp 2022-11-22 12:33:34 +00:00
tools Bug 1801738 - Use --enable-project instead of --enable-application. r=firefox-build-system-reviewers,geckoview-reviewers,calu,ahochheiden 2022-11-22 02:09:26 +00:00
uriloader Backed out changeset 02a9e51358f1 (bug 1792138) for causing mochitests failures on browser_ext_windows_create_url.js. CLOSED TREE 2022-11-17 18:38:00 +02:00
view
widget Bug 1798396 - Remove appearance: -moz-win-glass, which is unused. r=tnikkel 2022-11-22 10:56:38 +00:00
xpcom Bug 1790816 - Reformat xpcom/ with isort. r=mccr8 DONTBUILD 2022-11-22 13:37:48 +00:00
xpfe/appshell Bug 1801031 - Use attribute atoms for screenX/screenY in one more place. r=smaug 2022-11-18 13:32:33 +00:00
.arcconfig
.babel-eslint.rc.js
.clang-format
.clang-format-ignore
.cron.yml Bug 1666491 - Add a eslint-build tester (tier 3) that depends on xpt artifacts. r=nalexander,releng-reviewers,gbrown 2022-11-17 10:57:41 +00:00
.eslintignore Bug 1794693 - [devtools] Convert source-map jest test into mochitests. r=bomsy 2022-11-08 16:01:01 +00:00
.eslintrc-test-paths.js Bug 1774300 - Implement VideoColorSpace r=padenot,jgilbert 2022-10-06 00:37:20 +00:00
.eslintrc.js Bug 1799314 - Convert most of the JSM modules in testing/ to ES modules. r=ahal 2022-11-17 12:00:25 +00:00
.flake8 Bug 1622677 - Make dom/bindings flake8 compliant. r=sylvestre 2022-10-31 17:45:33 +00:00
.git-blame-ignore-revs
.gitattributes
.gitignore
.hg-annotate-ignore-revs
.hg-format-source
.hgignore Bug 1800776 - Remove inline regex flags in .hgignore. r=firefox-build-system-reviewers,andi 2022-11-16 08:26:01 +00:00
.hgtags No bug - tagging 41c78f88417ab2629a8f39dd4f4cbb56e59bbf85 with FIREFOX_NIGHTLY_108_END a=release DONTBUILD CLOSED TREE 2022-11-14 15:13:16 +00:00
.isort.cfg Bug 1492495 - Add flake8-isort plugin to sort Python includes, with support for autofixing through isort. r=linter-reviewers,ahal 2022-11-03 13:50:46 +00:00
.lando.ini
.lldbinit
.mailmap
.prettierignore
.prettierrc
.taskcluster.yml Bug 1795994 - Migrate decision task over to GCP r=ahal,releng-reviewers,jcristau 2022-10-26 15:55:18 +00:00
.trackerignore
.yamllint
.ycm_extra_conf.py
aclocal.m4
AUTHORS
build.gradle Bug 1799442 - Update Glean to v51.8.2, rkv to 0.18 r=janerik,supply-chain-reviewers 2022-11-18 13:56:27 +00:00
Cargo.lock Bug 1801767 - Remove fs::remove_dir_all usage in remove_disk_cache() r=gfx-reviewers,bradwerth 2022-11-22 05:35:25 +00:00
Cargo.toml Bug 1789520 - rust implementation of nssckbi. r=keeler,supply-chain-reviewers 2022-10-31 17:09:43 +00:00
client.mk Bug 1798779 - Stop using double-colon rules in client.mk. r=firefox-build-system-reviewers,nalexander 2022-11-02 22:32:43 +00:00
client.py
CLOBBER Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release 2022-11-14 15:13:23 +00:00
configure
configure.py
GNUmakefile
gradle.properties
gradlew
gradlew.bat
LICENSE
mach Bug 1766497 - Remove early exit on Homebrew Python3.10 now that we're using venv instead of virtualenv r=firefox-build-system-reviewers,nalexander 2022-11-01 07:48:06 +00:00
mach.cmd
mach.ps1
Makefile.in
mots.yaml no bug - mots: remove some useless info r=zeid DONTBUILD 2022-11-18 16:20:10 +00:00
moz.build
moz.configure Bug 1794517 - Make CI plain builds a little closer to local builds. r=firefox-build-system-reviewers,andi 2022-10-11 06:54:45 +00:00
mozilla-config.h.in
old-configure.in Bug 1796518 - Tweak lld flags for faster linkage on developer builds. r=firefox-build-system-reviewers,nalexander 2022-10-25 22:58:25 +00:00
package-lock.json Bug 1792465 - Add eslint-plugin-jsdoc and upgrade node_modules to latest versions. r=mossop 2022-10-03 06:55:28 +00:00
package.json Bug 1792465 - Add eslint-plugin-jsdoc and upgrade node_modules to latest versions. r=mossop 2022-10-03 06:55:28 +00:00
README.txt
settings.gradle Bug 1740799 - Add android-format lint test. r=nalexander,linter-reviewers,sylvestre 2022-11-18 00:55:03 +00:00
substitute-local-geckoview.gradle
test.mozbuild

An explanation of the Firefox Source Code Directory Structure and links to
project pages with documentation can be found at:

    https://firefox-source-docs.mozilla.org/contributing/directory_structure.html

For information on how to build Firefox from the source code and create the patch see:

    https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html

If you have a question about developing Firefox, and can't find the solution
on https://firefox-source-docs.mozilla.org/, you can try asking your question on Matrix at chat.mozilla.org in `Introduction` (https://chat.mozilla.org/#/room/#introduction:mozilla.org) channel.


Nightly development builds can be downloaded from:

    https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
            - or -
    https://www.mozilla.org/firefox/channel/desktop/#nightly

Keep in mind that nightly builds, which are used by Firefox developers for
testing, may be buggy.