searching for reviewer(lth)
4065a1a701bb90d7183e9e1e09eb0c89bb79b512: Bug 1666939 - Add support for v128 in typed select instructions. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:43:06 +0000 - rev 550642
Push 127402 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:45:54 +0000
Bug 1666939 - Add support for v128 in typed select instructions. r=lth * Add support to baseline and ion for v128 select. * Split off and extend test for select instruction. - Add tests for typed select with reftypes - Add tests for typed select with v128 Differential Revision: https://phabricator.services.mozilla.com/D91448
61bba9a27759e8396ab8b25b88ee85d8d9797862: Bug 1664361 - wasm: Combine all callImport_X into callImport_general. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:23:14 +0000 - rev 550640
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Combine all callImport_X into callImport_general. r=lth When calling an import through the interpreter entry, if there is a register result then a special callImport_X is used which defers to callImport for everything except for converting the final result and writing it to the argv[0] slot for the stub to return via register. With non-nullable references, callImport_anyref/funcref are no longer correct, as they don't have the type info and bypass the general ToWebAssemblyValue function which checks non-nullable values. I went through several small changes for fixing this, and wasn't very happy with any of them. This commit moves the responsibility for converting the register result and storing it in argv[0] to UnpackResults, and drops all special cases of callImport_X. This allows us to re-use the type information already present in that function for checking the non-nullable values. In the future we'll likely need the type information for validating type indices as well. I seem to recall there was some reasoning for keeping these separate entry points during the multivalue development effort, but I couldn't find it anywhere. If there is a concern, we can attempt a different solution. Differential Revision: https://phabricator.services.mozilla.com/D91315
37bffa82ccd3acb4ad861c5ad372839430f56d71: Bug 1664361 - wasm: Standardize Wasm feature test names in JS shell. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:23:12 +0000 - rev 550639
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Standardize Wasm feature test names in JS shell. r=lth This commit standardizes the naming of the feature testing functions to: wasmFeatureEnabled() It seemed to be most common naming, although I'd be fine with a different convention. Differential Revision: https://phabricator.services.mozilla.com/D90517
faf7ed9d3e06b3b61a7e97a63eb77d4038b29758: Bug 1664361 - wasm: Fix ref-types jit-test directives to remove GC dependency. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:20:15 +0000 - rev 550638
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Fix ref-types jit-test directives to remove GC dependency. r=lth The ref-types jit-tests don't require the GC functionality so the feature flag can be removed from the test matrix. Differential Revision: https://phabricator.services.mozilla.com/D90516
f5994b6544faeea74385687a031a700e825a872c: Bug 1664361 - wasm: Update spec-tests to exclude unreached-invalid.wast.js. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:20:07 +0000 - rev 550637
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Update spec-tests to exclude unreached-invalid.wast.js. r=lth This test fails when there is a bottom-type and should be excluded. Differential Revision: https://phabricator.services.mozilla.com/D90515
dbf55928263ab1a83bf7bd131a4693c9ee4887dd: Bug 1664361 - wasm: Add tests for the function-references proposal. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:19:59 +0000 - rev 550636
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Add tests for the function-references proposal. r=lth This commit adds basic tests for: * non-nullable references * ref.as_non_null * br_on_null Some common code for enumerating example externref JS-values was factored out to a common global variable. Differential Revision: https://phabricator.services.mozilla.com/D89862
5141932d63a4fbcadef73813179848147fe27129: Bug 1664361 - wasm: Update skip directives for GC tests. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:19:46 +0000 - rev 550635
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Update skip directives for GC tests. r=lth Now that the GC proposal requires the function-references proposal, we need to skip GC tests when the function-references flag is disabled. This is a bit annoying, as we already have to check for reference-types support and gets a bit verbose. Differential Revision: https://phabricator.services.mozilla.com/D89861
0171ca7d43c138b5e9bee601d0a14f337f7eb973: Bug 1664361 - wasm: Add br_on_null and ref.as_non_null instructions. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:19:27 +0000 - rev 550634
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Add br_on_null and ref.as_non_null instructions. r=lth This commit adds the br_on_null and ref.as_non_null instructions to validation and the baseline compiler. Differential Revision: https://phabricator.services.mozilla.com/D89860
42077f4ab24854cd212dfec0907140363eb9e76f: Bug 1664361 - wasm: Disallow non-nullable locals. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:19:09 +0000 - rev 550633
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Disallow non-nullable locals. r=lth Non-nullable references have no default value and cannot be used in locals. This can be prevented by tweaking validation. Differential Revision: https://phabricator.services.mozilla.com/D89859
a698c9a28a636fecda652019f73a881ba020a2df: Bug 1664361 - wasm: Move non-nullable references to the function-references proposal. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:19:01 +0000 - rev 550632
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Move non-nullable references to the function-references proposal. r=lth The ability to use non-nullable references is moved behind the function-references feature flag. The ability to use (ref $index) is still behind the GC flag. This commit also finishes the refactoring related to FeatureArgs by switching all feature parameters passed by argument in validation to pass the FeatureArgs struct by reference. This was pretty mechanical with one semantic change regarding readRefType. Previously the method assumed that refTypesEnabled=true, whereas by passing the FeatureArgs of the module environment this may not always be true. The old behavior was only useful for one case when decoding table types and we want to be able to decode funcref even if reftypes is disabled. That one callsite was updated to workaround this. Differential Revision: https://phabricator.services.mozilla.com/D89858
4dc6e085887fa9b1266ad6436a6458305beea192: Bug 1664361 - wasm: Add function-references configuration option and runtime flag. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:18:48 +0000 - rev 550631
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Add function-references configuration option and runtime flag. r=lth This commit adds the boilerplate machinery for the function-references proposal. The interesting piece is that the GC proposal is moved to require the function-references proposal to be enabled. The configuration machinery for features is refactored in this commit to avoid passing 6 different booleans around as parameters to functions. * A FeatureArgs struct is added with values for all 'feature' configuration options - A feature is defined as an option that affects validation or semantics - Essentially everything besides 'debug', 'mode', 'tier' * All feature configuration responsibility is removed from CompilerEnvironment * ModuleEnvironment is modified to accept a FeatureArgs in addition to a CompilerEnvironment - The CompilerEnvironment field may eventually be removed, as it's not needed within function validation, and is only used by the compilers later Differential Revision: https://phabricator.services.mozilla.com/D89857
0184737401d390046bb7106dc64a96561e393548: Bug 1664361 - wasm: Add bottom type back to function validation. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:18:15 +0000 - rev 550630
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Add bottom type back to function validation. r=lth The bottom type was removed from the reference-types proposal when subtyping was removed. The function-references proposal adds it back, and is useful for type checking ref.as_non_null/br_on_null when the input reference type is from a polymorphic stack. Example: ``` (func br 0 ref.as_non_null ) ``` The stack is polymorphic after the branch and so the following instructions are valid if any sequence of value types could be input to them. Without a bottom type, the validator would need to track that value output from ref.as_non_null is a non-nullable reference of an unknown heap type. With a bottom type, we can just validate it using that principal type. Differential Revision: https://phabricator.services.mozilla.com/D89856
c5f028ba32b76cdbb1a2d0ac001aa02ffbfba1bc: Bug 1664361 - wasm: Improve wasm::ToString formating for reference types. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:18:08 +0000 - rev 550629
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Improve wasm::ToString formating for reference types. r=lth Fixes two issues: * Extra spacing with non-nullable references * (ref externref) => (ref extern) Differential Revision: https://phabricator.services.mozilla.com/D89855
0ef32bc8a0a4595db49098b5db2b62eadfdce10e: Bug 1664361 - wasm: Fix comment regarding the abstract reference type code. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 28 Sep 2020 19:18:00 +0000 - rev 550628
Push 127400 by rhunt@eqrion.net at Mon, 28 Sep 2020 19:31:17 +0000
Bug 1664361 - wasm: Fix comment regarding the abstract reference type code. r=lth This was not updated when the constant was added. Differential Revision: https://phabricator.services.mozilla.com/D89854
0bd465435b9faa04a7d9c247360516d66deedac5: Bug 1666867 - Fix warning with imprecise integer conversion to double on clang 11. r=lth
Steve Fink <sfink@mozilla.com> - Fri, 25 Sep 2020 17:47:59 +0000 - rev 550474
Push 127304 by sfink@mozilla.com at Fri, 25 Sep 2020 23:52:42 +0000
Bug 1666867 - Fix warning with imprecise integer conversion to double on clang 11. r=lth Differential Revision: https://phabricator.services.mozilla.com/D91213
254796f3755971d23ddab5efb862adf6651df44a: Bug 1666494 part 2 - Remove TypedObjectArray.redimension. r=lth
Jan de Mooij <jdemooij@mozilla.com> - Thu, 24 Sep 2020 10:40:55 +0000 - rev 550295
Push 127225 by jdemooij@mozilla.com at Fri, 25 Sep 2020 07:25:56 +0000
Bug 1666494 part 2 - Remove TypedObjectArray.redimension. r=lth Differential Revision: https://phabricator.services.mozilla.com/D91255
f9d65fd50034f350383b14c02ff12373352bd991: Bug 1666481 - Fix broken wasm web platform test r=lth
Jessica Tallon <jtallon@igalia.com> - Thu, 24 Sep 2020 09:27:03 +0000 - rev 550143
Push 127123 by dluca@mozilla.com at Thu, 24 Sep 2020 11:21:26 +0000
Bug 1666481 - Fix broken wasm web platform test r=lth This addresses a problem for the failing tests surrounding WASM Memory and table constructors. The type reflection feature added a minimum parameter which is enabled on nightly but not beta and relese. This fixes the expectations so they it's expected they fail in those situations. It also addresses a problem in a failing test which always passed due to a missing new keyword. Differential Revision: https://phabricator.services.mozilla.com/D91152
3e8c9bd69de2d60c9ffcf10ba18ff1692d0ad50b: Bug 1666494 part 1 - Remove some TypedObject array helpers. r=lth
Jan de Mooij <jdemooij@mozilla.com> - Thu, 24 Sep 2020 09:10:54 +0000 - rev 550136
Push 127118 by jdemooij@mozilla.com at Thu, 24 Sep 2020 10:26:52 +0000
Bug 1666494 part 1 - Remove some TypedObject array helpers. r=lth Differential Revision: https://phabricator.services.mozilla.com/D91104
0357c218f266cf50080ef21abc4eea633300bcd1: Bug 1665106 - wasm: Only save the module name if the subsection finishes validation correctly. r=lth
Ryan Hunt <rhunt@eqrion.net> - Mon, 21 Sep 2020 14:31:10 +0000 - rev 549528
Push 126847 by rhunt@eqrion.net at Tue, 22 Sep 2020 00:18:12 +0000
Bug 1665106 - wasm: Only save the module name if the subsection finishes validation correctly. r=lth In a name section of length 0, the first call to DecodeModuleNameSubsection will decode a name but fail when finishNameSubsection detects the currentOffset is past the declared length of the section. This failure result will bubble to the finish label of DecodeNameSection and be ignored. This is okay, but we need to not set the moduleName until the subsection is completely validated. Differential Revision: https://phabricator.services.mozilla.com/D90514
f2317098f7e39c67119e839de2c3af9e1fd2d2b4: Bug 1651725 - Add 'minimum' argument to WASM's Memory & Table r=lth
Jessica Tallon <jtallon@igalia.com> - Mon, 21 Sep 2020 11:01:19 +0000 - rev 549434
Push 126778 by btara@mozilla.com at Mon, 21 Sep 2020 11:10:52 +0000
Bug 1651725 - Add 'minimum' argument to WASM's Memory & Table r=lth This adds a 'minimum' argument to the JS-API for the WebAssembly.Memory and WebAssembly.Table objects. This parameter represents the minimum size of the object which was specified by the 'initial' parameter. This supports using either initial or minimum to specify the parameter. This commit is part of the work to add type reflections to the WebAssembly JS-API as specified in the js-types proposal. Differential Revision: https://phabricator.services.mozilla.com/D85887
2550e7f176e49dc7f44fbe449a7e7c75e0b2c1bd: Bug 1664979 - Fix tls offset in case of widenFloatToDouble is true [fast fix]. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Mon, 21 Sep 2020 05:18:59 +0000 - rev 549407
Push 126758 by lhansen@mozilla.com at Mon, 21 Sep 2020 05:27:57 +0000
Bug 1664979 - Fix tls offset in case of widenFloatToDouble is true [fast fix]. r=lth When we do Push(srcSingle) inside outOfLineTruncateSlow but we don't adjust tlsOffset. Differential Revision: https://phabricator.services.mozilla.com/D90537
f999994ff31263695f15c5313b29c7e8b3b01441: Bug 1664953 - Fast fix for null pointer dereference in EmitTruncate. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 17 Sep 2020 16:36:04 +0000 - rev 549284
Push 126673 by archaeopteryx@coole-files.de at Fri, 18 Sep 2020 11:08:48 +0000
Bug 1664953 - Fast fix for null pointer dereference in EmitTruncate. r=lth Differential Revision: https://phabricator.services.mozilla.com/D90242
09390cf1d66716146aeb3112f0ac640e317890d9: Bug 1639153 - Part 6.6: Add tls dependency for truncate i32. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Mon, 14 Sep 2020 05:19:44 +0000 - rev 548492
Push 126220 by ccoroiu@mozilla.com at Mon, 14 Sep 2020 05:44:05 +0000
Bug 1639153 - Part 6.6: Add tls dependency for truncate i32. r=lth We generate builtin call for MTruncateToInt32 operation for floating points types, so we need to add a tls dependency. I inserted NYI for arm64 because Ion doesn't support arm64. Differential Revision: https://phabricator.services.mozilla.com/D89550
83a3ed07220dfe4c8a2d16a2c48cfa8d49635362: Bug 1639153 - Part 6.3: Establish dependency from tls for arm callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Mon, 14 Sep 2020 04:00:18 +0000 - rev 548491
Push 126219 by csabou@mozilla.com at Mon, 14 Sep 2020 04:32:00 +0000
Bug 1639153 - Part 6.3: Establish dependency from tls for arm callWithABI div/mod i64. r=lth To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime in div/mod i64 for arm. Differential Revision: https://phabricator.services.mozilla.com/D88762
659b24c3626c6a299ef34ce4a0109fca2e2a9112: Bug 1639153 - Part 6.4: Add tls dependency for WasmTruncateToInt64 and Int64ToFloatingPoint for arm. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Fri, 11 Sep 2020 12:02:42 +0000 - rev 548328
Push 126110 by btara@mozilla.com at Fri, 11 Sep 2020 12:06:16 +0000
Bug 1639153 - Part 6.4: Add tls dependency for WasmTruncateToInt64 and Int64ToFloatingPoint for arm. r=lth In this patch we add a tls dependency for the remaining nodes which use BuiltinThunk to call c++ runtime. By ABI requirements WasmTlsReg should be set. Differential Revision: https://phabricator.services.mozilla.com/D89239
174a622bf334e32f911e97ca76c36b0a80d51f94: Bug 1639153 - Part 6.5: Add tls dependency for WasmModD. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Fri, 11 Sep 2020 11:20:20 +0000 - rev 548320
Push 126105 by btara@mozilla.com at Fri, 11 Sep 2020 11:27:04 +0000
Bug 1639153 - Part 6.5: Add tls dependency for WasmModD. r=lth We generate builtin call for Mod operation for Double types, so we need to add a tls dependency. In this patch I've added it. Differential Revision: https://phabricator.services.mozilla.com/D89243
444f4554ea9456909908f2872d1359495d9ff8d3: Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Fri, 11 Sep 2020 09:30:56 +0000 - rev 548310
Push 126097 by lhansen@mozilla.com at Fri, 11 Sep 2020 09:34:08 +0000
Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth x86 has few register so to do div/mod for i64 it call the runtime and clobber almost all gp registers including WasmTlsReg. To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime. Differential Revision: https://phabricator.services.mozilla.com/D88524
62480de389ffba353998de24760993b2e1531232: Bug 1639153 - Part 5: Remove remaining uses of Frame::tls. r=lth. CLOSED TREE
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 27 Aug 2020 10:53:04 +0000 - rev 548306
Push 126093 by abutkovits@mozilla.com at Fri, 11 Sep 2020 09:06:02 +0000
Bug 1639153 - Part 5: Remove remaining uses of Frame::tls. r=lth. CLOSED TREE Here we remove remaining uses of Frame::tls. There are many places where we use it: in debug frames, in profiling frames, in jit activation, etc. All these places require short fixes to use our new scheme for getting tls, so I gathered them together. Differential Revision: https://phabricator.services.mozilla.com/D83051 Depends on D83045
f2e486f1be1760e1751cf50acea1ab50cb3cfa90: Bug 1639153 - Part 4: Untie frame iteration from Frame::tls. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 27 Aug 2020 10:30:46 +0000 - rev 548305
Push 126093 by abutkovits@mozilla.com at Fri, 11 Sep 2020 09:06:02 +0000
Bug 1639153 - Part 4: Untie frame iteration from Frame::tls. r=lth Here we replace usage of Frame::tls in frame iteration with GetNearestEffectiveTls. We also maintain current tls for frame iteration object to not to call GetNearestEffectiveTls everytime. Differential Revision: https://phabricator.services.mozilla.com/D83045 Depends on D83044
b79c89e6ac82e947d6805ce7fb4ee52f28c55a5a: Bug 1639153 - Part 3: Implement the algorithm for obtaining tls and use it for wasm signal handling. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 27 Aug 2020 10:26:17 +0000 - rev 548304
Push 126093 by abutkovits@mozilla.com at Fri, 11 Sep 2020 09:06:02 +0000
Bug 1639153 - Part 3: Implement the algorithm for obtaining tls and use it for wasm signal handling. r=lth This is the third part of series of patches to Frame without tls pointer. Here we preserve initial tls in all entry stubs and then use it to find a proper tls instance for a given frame. To find the TlsData* for specific frame we start from a entry stub's tls and then track tls through all possible cross-instance calls. This logic is implemented in GetNearestEffectiveTls procedure. Then, we use this new procedure to make singal handling free from Frame::tls. Differential Revision: https://phabricator.services.mozilla.com/D83044 Depends on D82888
ab5825b43bb56cdb7b50e536e4cab3734c35088f: Bug 1639153 - Part 2: Preserve callee and caller tls'es. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 27 Aug 2020 09:02:50 +0000 - rev 548303
Push 126093 by abutkovits@mozilla.com at Fri, 11 Sep 2020 09:06:02 +0000
Bug 1639153 - Part 2: Preserve callee and caller tls'es. r=lth This is a followup patch for removing Frame::tls. Now, we are preserving caller's and callee's tls'es for all possible cross-instance calls in the previously allocated abi slots. We also use preserved tls values to restore the caller's tls in Ion. Baseline doesn't need this because it restores the caller tls from its private stack slot after the call. Differential Revision: https://phabricator.services.mozilla.com/D82888 Depends on D82881
1b94af3458ce8bf47b776e03ac74f0c1b5a72c65: Bug 1639153 - Part 1: Reserve two slots after stack arguments for the future tls preservation. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 27 Aug 2020 08:56:29 +0000 - rev 548302
Push 126093 by abutkovits@mozilla.com at Fri, 11 Sep 2020 09:06:02 +0000
Bug 1639153 - Part 1: Reserve two slots after stack arguments for the future tls preservation. r=lth We are going to remove Frame::tls and support trampolines for indirect calls, so we need to get rid of using Frame::tls. In this and the followup patches I will iteratively remove all dependencies of Frame::tls and remove it eventually. In this patch I changed wasm ABI to allocate two stack slots after stack args to preserve caller's and callee's tls'es in the near future. Differential Revision: https://phabricator.services.mozilla.com/D82881
aad37f6cbf034f5ec3e0b04989aa025c7c899697: Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Fri, 11 Sep 2020 08:05:01 +0000 - rev 548292
Push 126089 by abutkovits@mozilla.com at Fri, 11 Sep 2020 08:10:56 +0000
Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth x86 has few register so to do div/mod for i64 it call the runtime and clobber almost all gp registers including WasmTlsReg. To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime. Differential Revision: https://phabricator.services.mozilla.com/D88524
1e582b17eab7abf3958e46bc52ea3eeafa764eeb: Bug 1639153 - Part 6.6: Add tls dependency for truncate i32. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 08:59:55 +0000 - rev 548285
Push 126083 by btara@mozilla.com at Fri, 11 Sep 2020 05:47:53 +0000
Bug 1639153 - Part 6.6: Add tls dependency for truncate i32. r=lth We generate builtin call for MTruncateToInt32 operation for floating points types, so we need to add a tls dependency. I inserted NYI for arm64 because Ion doesn't support arm64. Differential Revision: https://phabricator.services.mozilla.com/D89550
a309060018a82aee73dd70019905ba5e71f06f18: Bug 1639153 - Part 6.5: Add tls dependency for WasmModD. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 06:37:59 +0000 - rev 548284
Push 126083 by btara@mozilla.com at Fri, 11 Sep 2020 05:47:53 +0000
Bug 1639153 - Part 6.5: Add tls dependency for WasmModD. r=lth We generate builtin call for Mod operation for Double types, so we need to add a tls dependency. In this patch I've added it. Differential Revision: https://phabricator.services.mozilla.com/D89243
69a27bde5003c70c97e8c31202c1fcf3e13d173e: Bug 1639153 - Part 6.4: Add tls dependency for WasmTruncateToInt64 and Int64ToFloatingPoint for arm. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 10:48:09 +0000 - rev 548283
Push 126083 by btara@mozilla.com at Fri, 11 Sep 2020 05:47:53 +0000
Bug 1639153 - Part 6.4: Add tls dependency for WasmTruncateToInt64 and Int64ToFloatingPoint for arm. r=lth In this patch we add a tls dependency for the remaining nodes which use BuiltinThunk to call c++ runtime. By ABI requirements WasmTlsReg should be set. Differential Revision: https://phabricator.services.mozilla.com/D89239
9b42e0b690b639f4651b855d545e1f8c8ccc3744: Bug 1639153 - Part 6.3: Establish dependency from tls for arm callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 09:50:35 +0000 - rev 548282
Push 126083 by btara@mozilla.com at Fri, 11 Sep 2020 05:47:53 +0000
Bug 1639153 - Part 6.3: Establish dependency from tls for arm callWithABI div/mod i64. r=lth To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime in div/mod i64 for arm. Differential Revision: https://phabricator.services.mozilla.com/D88762
fd8adea7aa17b82a6d48c72836823b11ae4c7c66: Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Fri, 11 Sep 2020 05:40:14 +0000 - rev 548281
Push 126083 by btara@mozilla.com at Fri, 11 Sep 2020 05:47:53 +0000
Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth x86 has few register so to do div/mod for i64 it call the runtime and clobber almost all gp registers including WasmTlsReg. To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime. Differential Revision: https://phabricator.services.mozilla.com/D88524
a267f4e6ba1d497b76b9ce2c2e597e425a9cb097: Bug 1656588 - Create a disnative command to print the assembly of the JITed function r=lth
Tom Ritter <tom@mozilla.com> - Thu, 10 Sep 2020 14:46:34 +0000 - rev 548172
Push 126025 by malexandru@mozilla.com at Thu, 10 Sep 2020 15:12:04 +0000
Bug 1656588 - Create a disnative command to print the assembly of the JITed function r=lth Differential Revision: https://phabricator.services.mozilla.com/D85624
db6f7a903c64cf78ee7ae47a89623db6a8887b2c: Bug 1651725 - Add 'minimum' argument to WASM's Memory & Table r=lth
Jessica Tallon <jtallon@igalia.com> - Thu, 10 Sep 2020 14:24:35 +0000 - rev 548165
Push 126023 by Ms2ger@gmail.com at Thu, 10 Sep 2020 15:01:09 +0000
Bug 1651725 - Add 'minimum' argument to WASM's Memory & Table r=lth This adds a 'minimum' argument to the JS-API for the WebAssembly.Memory and WebAssembly.Table objects. This parameter represents the minimum size of the object which was specified by the 'initial' parameter. This supports using either initial or minimum to specify the parameter. This commit is part of the work to add type reflections to the WebAssembly JS-API as specified in the js-types proposal. Differential Revision: https://phabricator.services.mozilla.com/D85887
4732105c36be47d73395bfac6744ea9ed6190443: Bug 1663895: aarch64: define the MEMBARRIER_CMD when they don't exist; r=lth
Benjamin Bouvier <benj@benj.me> - Thu, 10 Sep 2020 06:21:40 +0000 - rev 548107
Push 125998 by bbouvier@mozilla.com at Thu, 10 Sep 2020 09:27:51 +0000
Bug 1663895: aarch64: define the MEMBARRIER_CMD when they don't exist; r=lth Values taken from the Linux kernel source, and confirmed in Android source's code. Differential Revision: https://phabricator.services.mozilla.com/D89581
d9612ded4ee87528a9519a7e6c60480fcc7acf15: Bug 1663862 - Check OOM from wasm::ToString(). r=lth
Ryan Hunt <rhunt@eqrion.net> - Thu, 10 Sep 2020 06:08:45 +0000 - rev 548093
Push 125988 by lhansen@mozilla.com at Thu, 10 Sep 2020 06:19:46 +0000
Bug 1663862 - Check OOM from wasm::ToString(). r=lth wasm::ToCString() couldn't OOM, but wasm::ToString() can, so the all the use cases need to check for OOM and propagate it. Differential Revision: https://phabricator.services.mozilla.com/D89671
eb35fdc507996da61eaceffeb9f9e9b12f3ba0ca: Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Thu, 10 Sep 2020 05:18:04 +0000 - rev 548091
Push 125986 by abutkovits@mozilla.com at Thu, 10 Sep 2020 05:53:22 +0000
Bug 1639153 - Part 6.2: Establish dependency from tls for x86 callWithABI div/mod i64. r=lth x86 has few register so to do div/mod for i64 it call the runtime and clobber almost all gp registers including WasmTlsReg. To be able to call c++ runtime via Builtin thunk we need to set up WasmTlsReg. In this patch I create dependencies from MIR level to Codegen to be sure that WasmTlsReg is alive when we call runtime. Differential Revision: https://phabricator.services.mozilla.com/D88524
93f3b8aa5bc50a2e4d4e61c7ba0e839b681518a2: Bug 1639153 - Part 6.1: Untie callWithAbi from Frame::tls for Baseline. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 09:22:39 +0000 - rev 547990
Push 125915 by ccoroiu@mozilla.com at Wed, 09 Sep 2020 13:15:39 +0000
Bug 1639153 - Part 6.1: Untie callWithAbi from Frame::tls for Baseline. r=lth We have a tls dependency in callWithABI for wasm because we call builtins via BuiltinThunk. Last one requires that tls to be loaded. In this patch I gradually extend callWithABI interface to pass offset to tls. This allows us to preserve tls and load it by offset in callWithABI and frees us from the Frame::tls dependency. Differential Revision: https://phabricator.services.mozilla.com/D88426
e4342a12fdc0e504149e897e9247577f36837621: Bug 1663616 - Use the helper thread lock for off-thread wasm compilation r=lth
Jon Coppeard <jcoppeard@mozilla.com> - Wed, 09 Sep 2020 09:57:45 +0000 - rev 547977
Push 125905 by jcoppeard@mozilla.com at Wed, 09 Sep 2020 10:31:13 +0000
Bug 1663616 - Use the helper thread lock for off-thread wasm compilation r=lth Currently wasm uses its own mutex for off-thread compilation. This leads to the sitation where the CompileTask structure can be freed while the helper thread is still running (the ModuleGenerator destructor synchronises on its mutex, but the helper thread run method releases this mutex before it returns). Using the helper thread lock here makes sense. The helper thread lock is already required to start the compiation task so I don't think there's much gain from using a separate mutex. Differential Revision: https://phabricator.services.mozilla.com/D89471
f1af63fb5986e30fa5695a26b9ed7cd506475e1d: Bug 1639153 - Part 6: Force Ion to preserve its tls. r=lth
Dmitry Bezhetskov <dbezhetskov@igalia.com> - Wed, 09 Sep 2020 08:55:17 +0000 - rev 547972
Push 125900 by malexandru@mozilla.com at Wed, 09 Sep 2020 09:13:49 +0000
Bug 1639153 - Part 6: Force Ion to preserve its tls. r=lth Let's see following code and let's assume that wasm-compiler is ion: call foo call bar Ion can clobber tls inside foo and then it can go with clobbered tls into bar. There will be a crash if bar uses tls. At compile-time we don't know whether bar will use tls or not. It works when we restore tls each time when we are returning from a function because of the current frame structure. But now, when we want to get rid of Frame::tls we should guarantee that Ion doesn't clobber tls inside a function. In fact we forces Ion to restore tls iff it clobbers it and it is a rare case. Baseline doesn't need such logic because of its private stack slot for tls. Differential Revision: https://phabricator.services.mozilla.com/D83061
d393c620ee6d7f34e7699952c5a06450e4d0014c: Bug 1656588 - Create a disnative command to print the assembly of the JITed function r=lth
Tom Ritter <tom@mozilla.com> - Tue, 08 Sep 2020 16:24:05 +0000 - rev 547897
Push 125849 by nbeleuzu@mozilla.com at Tue, 08 Sep 2020 16:38:26 +0000
Bug 1656588 - Create a disnative command to print the assembly of the JITed function r=lth Differential Revision: https://phabricator.services.mozilla.com/D85624
304aadc6f2c115bee787d753e19128d628241663: Bug 1661016: aarch64: slightly refactor the check that membarrier is available; r=lth
Benjamin Bouvier <benj@benj.me> - Mon, 07 Sep 2020 12:21:02 +0000 - rev 547761
Push 125757 by bbouvier@mozilla.com at Mon, 07 Sep 2020 13:44:39 +0000
Bug 1661016: aarch64: slightly refactor the check that membarrier is available; r=lth Depends on D89366 Differential Revision: https://phabricator.services.mozilla.com/D89367
abc629d4684265520b6fc61d4654a53c54736d82: Bug 1663030: include unistd.h in MozCpu-vixl.cpp on Android too; r=lth
Benjamin Bouvier <benj@benj.me> - Mon, 07 Sep 2020 12:19:10 +0000 - rev 547760
Push 125757 by bbouvier@mozilla.com at Mon, 07 Sep 2020 13:44:39 +0000
Bug 1663030: include unistd.h in MozCpu-vixl.cpp on Android too; r=lth This includes the declaration of the syscall(2) function. Differential Revision: https://phabricator.services.mozilla.com/D89366
1a1b718e929a38f91e91008048ee0fcd7baf298e: Bug 1662668: Test for the presence of a simulator when enabling Cranelift; r=lth
Benjamin Bouvier <benj@benj.me> - Wed, 02 Sep 2020 09:02:46 +0000 - rev 547448
Push 125539 by bbouvier@mozilla.com at Wed, 02 Sep 2020 11:21:02 +0000
Bug 1662668: Test for the presence of a simulator when enabling Cranelift; r=lth Differential Revision: https://phabricator.services.mozilla.com/D89109