Граф коммитов

79493 Коммитов

Автор SHA1 Сообщение Дата
Jon Coppeard cef7f2e978 Bug 1671125 - Relax assertions to allow pre-barrier verifier to turn on barriers on the self hosting zone as well as the atoms zone r=sfink
The comments in PreWriteBarrierImpl mention that the per-barrier verifer can
turn on incremental barriers in the atoms zone outside of a GC. This also
applies to the self hosting zone so we just need to relax the assertions to
cover that too.

Differential Revision: https://phabricator.services.mozilla.com/D93760
2020-10-16 14:32:10 +00:00
Jon Coppeard fdba9fd6c3 Bug 948739 - Improve AutoSuppressGC documentation comments r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D93742
2020-10-16 14:28:57 +00:00
David Major d8306f9c33 Bug 1670738 - Try to make autoconf deduce ac_exeext for mingw r=glandium
In clang trunk 12, mingw builds started adding an `.exe` extension by default. We need to have `ac_exeext` know about this so that we'll search for `conftest.exe` rather than `conftest`. Calling `AC_EXEEXT` will go through some logic and set the right value of `ac_exeext`.

Differential Revision: https://phabricator.services.mozilla.com/D93252
2020-10-16 13:14:31 +00:00
Zhao Jiazhong 40b561b9ac Bug 1671534 - [MIPS] Split uint8_clamped from vm/ArrayBufferObject.h r=jandem
Port D92959 to MIPS platform.

Differential Revision: https://phabricator.services.mozilla.com/D93714
2020-10-16 06:35:39 +00:00
Caroline Cullen 679456f10b Bug 1667502 - Set spew channel to RateMyCacheIR in rateMyCacheIR shell function so that it can be called without explicitly setting the environment variable. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D92330
2020-10-15 18:42:46 +00:00
Caroline Cullen fdd56e0138 Bug 1667502 - Create a class to automatically be able to set and unset a StructuredSpewer's channel. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D92329
2020-10-15 18:42:38 +00:00
Caroline Cullen aecebb57ac Bug 1669571 - Disallow the selection of multiple channels for the StructuredSpewer. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D92699
2020-10-15 18:42:30 +00:00
Ricky Stewart 362abcf949 Bug 1670357 - Remove `make` targets for cleaning: `clean`, `realclean`, `clobber`, `distclean`, `clobber_all`, `everything` r=firefox-build-system-reviewers,mhentges
The `clobber` targets are superseded by `mach clobber`, so we don't need them for any reason. The `clean` target is meant to get you to a post-`configure` state, but it doesn't really work, and if it's necessary for you to be in that state for some reason you can just clobber and re-`configure`, so it doesn't seem worth it to get it working again. Instead, delete all of them. Also delete `everything` which is not useful when `clobber` doesn't exist.

Differential Revision: https://phabricator.services.mozilla.com/D93514
2020-10-15 20:37:18 +00:00
Jessica Tallon ad7b0c14de Bug 1671365 - Fix WebAssembly.Global jit-test on release and beta r=lth
Differential Revision: https://phabricator.services.mozilla.com/D93659
2020-10-15 20:33:37 +00:00
Jason Orendorff c2c3c9cdfa Bug 1670959 - Add AbstractGeneratorObject::dump(). r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93379
2020-10-15 19:30:51 +00:00
Jason Orendorff ddaff03448 Bug 1412202 - Part 9: Blank out slots when leaving a lexical scope (in generators only). r=jandem
This fixes bug 1542660 for the usual case (no direct eval, less than
ParseContext::GeneratorFixedSlotLimit locals), so this adds a unit test
contributed by Mathieu Hofman in that bug.

Differential Revision: https://phabricator.services.mozilla.com/D93386
2020-10-15 19:30:51 +00:00
Jason Orendorff 74dcf4f8e8 Bug 1412202 - Part 8: Inhibit the optimization when it would result in too many fixed slots. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93385
2020-10-15 19:28:51 +00:00
Jason Orendorff 2a2b23412a Bug 1412202 - Part 7: Optimize unaliased generator locals into stack slots. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93382
2020-10-15 19:28:43 +00:00
Jason Orendorff b81cedea3b Bug 1412202 - Part 6: Disable remaining debugger tests that examine generator/async scopes in ways that observe the optimization. r=jandem
Without these changes, the tests fail because the engine returns
`{optimizedOut: true}` for some uses of `frame.environment.getVariable` and
`frame.this`. The right solution involves teaching
`DebugEnvironmentProxyHandler::handleUnaliasedAccess` how to access suspended
`GeneratorObject` state.

Differential Revision: https://phabricator.services.mozilla.com/D93388
2020-10-15 19:28:38 +00:00
Jason Orendorff 79847ed968 Bug 1412202 - Part 5: Update DebugEnvironments for generator frames. r=jandem
No effect yet, since there are no stack locals to copy. Without this change,
storing generator locals in the stack would cause several debugger tests to
fail.

Differential Revision: https://phabricator.services.mozilla.com/D93387
2020-10-15 19:28:25 +00:00
Jason Orendorff 0d5d16e02d Bug 1412202 - Part 4: Copy any unaliased locals between stack and GeneratorObject on suspend/resume. r=jandem
No effect yet, as there are no unaliased locals to copy.

Differential Revision: https://phabricator.services.mozilla.com/D93384
2020-10-15 19:28:18 +00:00
Jason Orendorff 6455f787e0 Bug 1412202 - Part 3: Rename from ExpressionStack to StackStorage in anticipation of including optimized local variables in this array. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93383
2020-10-15 19:28:07 +00:00
Jason Orendorff ac831a9dec Bug 1412202 - Part 2: Always consider `.generator` to be closed-over.
No immediate effect, but when we start optimizing generator locals into stack
slots later in this stack, we do not want to optimize `.generator`, as e.g.
js::GetGeneratorObjectForFrame assumes it is stored in the CallObject.

Before this patch, there was no way in the frontend to force binding to be
closed-over.

Previously reviewed by jandem as part of D93381.

Differential Revision: https://phabricator.services.mozilla.com/D93647
2020-10-15 19:27:58 +00:00
Jason Orendorff 825c913ce8 Bug 1412202 - Part 1: Merge BaselineCodeGen::emit_InitialYield and emit_Yield. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93381
2020-10-15 19:27:48 +00:00
Ryan Hunt 0de51c45e6 Bug 1671201 - Remove some TypeUpdate code for TypedObject's. r=jandem
This code is no longer needed as we cannot write to TypedObjects.

Differential Revision: https://phabricator.services.mozilla.com/D93529
2020-10-15 19:17:17 +00:00
Ryan Hunt 516c4266fb Bug 1671201 - Remove CacheIR code for TypedObject's. r=jandem
Remove inline caching code for TypedObjects. Some of these are incorrect,
as we can no longer write to TypedObjects from JS. The rest should just
be removed to reduce code that makes assumptions on the type system of
TypedObjects.

Differential Revision: https://phabricator.services.mozilla.com/D93528
2020-10-15 19:17:09 +00:00
Ryan Hunt acb4e4f467 Bug 1671201 - Remove some dead code and a small unnecessary use of TypedObject.h. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93526
2020-10-15 19:16:51 +00:00
Csoregi Natalia 6069ec14db Backed out 9 changesets (bug 1412202) for bustage on NativeObject-inl.h. CLOSED TREE
Backed out changeset 8127ab469fc8 (bug 1412202)
Backed out changeset 6459dd328f07 (bug 1412202)
Backed out changeset 50ff9b1a922a (bug 1412202)
Backed out changeset 3b4683d1d783 (bug 1412202)
Backed out changeset 71f894279ce5 (bug 1412202)
Backed out changeset 62490c81ec8c (bug 1412202)
Backed out changeset c1f5bdf4ca3c (bug 1412202)
Backed out changeset 3909f706c022 (bug 1412202)
Backed out changeset 4ff48b83bad6 (bug 1412202)
2020-10-15 19:19:58 +03:00
Jason Orendorff 464e9236e4 Bug 1412202 - Part 9: Blank out slots when leaving a lexical scope (in generators only). r=jandem
This fixes bug 1542660 for the usual case (no direct eval, less than
ParseContext::GeneratorFixedSlotLimit locals), so this adds a unit test
contributed by Mathieu Hofman in that bug.

Differential Revision: https://phabricator.services.mozilla.com/D93386
2020-10-15 14:01:24 +00:00
Jason Orendorff af6ed0b04b Bug 1412202 - Part 8: Inhibit the optimization when it would result in too many fixed slots. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93385
2020-10-15 14:01:48 +00:00
Jason Orendorff af997d1aa6 Bug 1412202 - Part 7: Optimize unaliased generator locals into stack slots. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93382
2020-10-15 14:02:02 +00:00
Jason Orendorff 2f1fc09ee3 Bug 1412202 - Part 6: Disable remaining debugger tests that examine generator/async scopes in ways that observe the optimization. r=jandem
Without these changes, the tests fail because the engine returns
`{optimizedOut: true}` for some uses of `frame.environment.getVariable` and
`frame.this`. The right solution involves teaching
`DebugEnvironmentProxyHandler::handleUnaliasedAccess` how to access suspended
`GeneratorObject` state.

Differential Revision: https://phabricator.services.mozilla.com/D93388
2020-10-15 14:02:02 +00:00
Jason Orendorff ecd6a30ad4 Bug 1412202 - Part 5: Update DebugEnvironments for generator frames. r=jandem
No effect yet, since there are no stack locals to copy. Without this change,
storing generator locals in the stack would cause several debugger tests to
fail.

Differential Revision: https://phabricator.services.mozilla.com/D93387
2020-10-15 14:05:08 +00:00
Jason Orendorff 250ff7fccb Bug 1412202 - Part 4: Copy any unaliased locals between stack and GeneratorObject on suspend/resume. r=jandem
No effect yet, as there are no unaliased locals to copy.

Differential Revision: https://phabricator.services.mozilla.com/D93384
2020-10-15 14:05:31 +00:00
Jason Orendorff 61a1c23f13 Bug 1412202 - Part 3: Rename from ExpressionStack to StackStorage in anticipation of including optimized local variables in this array. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93383
2020-10-15 14:00:54 +00:00
Jason Orendorff 848b31e4ce Bug 1412202 - Part 2: Always consider `.generator` to be closed-over. .
No immediate effect, but when we start optimizing generator locals into stack
slots later in this stack, we do not want to optimize `.generator`, as e.g.
js::GetGeneratorObjectForFrame assumes it is stored in the CallObject.

Before this patch, there was no way in the frontend to force binding to be
closed-over.

Previously reviewed by jandem as part of D93381.

Depends on D93381

Differential Revision: https://phabricator.services.mozilla.com/D93647
2020-10-15 14:00:35 +00:00
Jason Orendorff e6aa7a674c Bug 1412202 - Part 1: Merge BaselineCodeGen::emit_InitialYield and emit_Yield. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D93381
2020-10-15 14:02:19 +00:00
Steve Fink 1accae5496 Bug 1670940 - Speed up Atomic jsapi-tests by reusing cx+global r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D93344
2020-10-15 00:20:38 +00:00
Ryan Hunt e10a553221 Bug 1649247 - wasm: Fix tests and add new one for eqref. r=lth
The existing gc tests relied on struct <: externref in various ways,
this commit fixes this.

Additionally a new test is added for checking we have dynamic tests
for eqref on all wasm value entry points.

Differential Revision: https://phabricator.services.mozilla.com/D93002
2020-10-14 21:16:43 +00:00
Ryan Hunt 2cd3bec0ee Bug 1649247 - wasm: Refine struct.narrow and ref.eq to use eqref input types. r=lth
Give ref.eq type of [eqref, eqref] : [i32], closing a corner case where boxed
JS values could be compared for equality.

Restrict struct.narrow to operate on eqref, as that's the super type of structs.
This also allows us to drop an unboxing from externref -> typed object as that
is now done in all wasm entries.

Differential Revision: https://phabricator.services.mozilla.com/D93001
2020-10-14 21:17:15 +00:00
Ryan Hunt 385de45350 Bug 1649247 - wasm: Implement eqref. r=lth
This commit adds support for the eqref value type. It shares the same
representation as externref, with the restriction that all values must
be TypedObject's. Dynamic type checks similar to funcref are added to
stubs.

As fallout from anyref removal, struct types were left as subtypes of
externref. This commit switches them to be subtypes of eqref.

As a small tweak, the ordering on cases when switching on refTypeKind()
were standardized to binary order (i.e. funcref, externref, eqref).

I think we can refactor some code to simplify the process of adding
new reftypes and would like to do that in the future.

Differential Revision: https://phabricator.services.mozilla.com/D93000
2020-10-14 21:17:44 +00:00
Ryan Hunt abc5c67423 Bug 1669784 - Remove TypedObject tests, split part 3. r=jandem
This commit removes all tests that used the old TypedObject API.

We may be able to salvage some of these tests in the future when
the Wasm GC API is clearer, but for now remove them.

Differential Revision: https://phabricator.services.mozilla.com/D92860
2020-10-14 17:56:26 +00:00
Ryan Hunt b522a1592a Bug 1669784 - Remove TypedObject tests, split part 2.
Differential Revision: https://phabricator.services.mozilla.com/D93521
2020-10-14 17:55:59 +00:00
Ryan Hunt 13ce54709f Bug 1669784 - Remove TypedObject tests, split part 1.
Differential Revision: https://phabricator.services.mozilla.com/D93520
2020-10-14 17:55:30 +00:00
Denis Palmeiro e4d44d95b2 Bug 1670348 - Remove call to addTelemetry for JS_TELEMETRY_RUN_TIME_US r=jseward
Unknown crash due to a corrupt scalar type.  It may be caused by this probe, so removing it to see if the crash resolves.

Differential Revision: https://phabricator.services.mozilla.com/D93155
2020-10-14 13:37:05 +00:00
Lars T Hansen d6bfaf0110 Bug 1670983 - Preserve Tls register across callouts to soft div/mod. r=nbp
Soft div/mod are supported on ARMv7 with Ion, and the callouts need to
preserve the Tls register and pass the Tls register offset to
callWithABI.

The introduced code follows the pattern used elsewhere in the file:
push the Tls before setting up the call and record its frame depth;
pass the frame offset to callWithABI; pop the Tls after the call.
Passes all tests on simulator.

Differential Revision: https://phabricator.services.mozilla.com/D93464
2020-10-14 13:33:17 +00:00
Jonatan Klemets 3431ff3dcc Bug 1668249 - Use BytecodeLocation and BytecodeIterator in js::jit::AnalyzeBytecodeForIon. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D93186
2020-10-13 17:30:42 +00:00
André Bargull dad76883e0 Bug 1670355 - Part 2: Add a separate MIR node for GuardFunctionIsNonBuiltinCtor. r=jandem
Add a separate MIR node for `GuardFunctionIsNonBuiltinCtor` instead of trying to
reuse the existing `MGuardFunctionFlags` node.

Depends on D93334

Differential Revision: https://phabricator.services.mozilla.com/D93335
2020-10-14 10:27:16 +00:00
André Bargull b3efe20c6e Bug 1670355 - Part 1: Add comments to MGuardFunctionFlags. r=jandem
Add comments to MGuardFunctionFlags to avoid repeating the same error in the
future.

Differential Revision: https://phabricator.services.mozilla.com/D93334
2020-10-14 07:28:39 +00:00
Lars T Hansen 6b1ef247b0 Bug 1669938 - Promote widening dot product wasm SIMD instruction to accepted status. r=jseward
Background: https://github.com/WebAssembly/simd/pull/127

For the widening dot product instruction:

- remove the internal 'Experimental' opcode suffix in the C++ code
- remove the guard on the instruction in all the C++ decoders
- move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mapping.  V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Differential Revision: https://phabricator.services.mozilla.com/D92929
2020-10-14 09:52:46 +00:00
Lars T Hansen 5ee6736538 Bug 1669938 - Promote pseudo-min/max wasm SIMD instructions to accepted status. r=jseward
Background: https://github.com/WebAssembly/simd/pull/122

For all the pseudo-min/max SIMD instructions:

- remove the internal 'Experimental' opcode suffix in the C++ code
- remove the guard on experimental Wasm instructions in all the C++ decoders
- move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mappings.  V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Differential Revision: https://phabricator.services.mozilla.com/D92928
2020-10-14 09:52:05 +00:00
Lars T Hansen 49c0d8a141 Bug 1669964 - Fix code generation for pmin/pmax on x86. r=jseward
pmin and pmax handled NaN incorrectly because the wonky semantics of
MINPS and MAXPS require arguments to be reversed to properly handle
NaN for these wasm SIMD instructions.

We fix this the expedient way: we keep the same masm abstraction and
introduce moves to rearrange the arguments.  This should be optimized
eventually and a bug will be filed for that now.

Differential Revision: https://phabricator.services.mozilla.com/D92927
2020-10-14 09:51:36 +00:00
Lars T Hansen dec2b41f88 Bug 1669938 - Promote fp rounding wasm SIMD instructions to accepted status. r=jseward
Background: https://github.com/WebAssembly/simd/pull/232

For all the rounding SIMD instructions:

- remove the internal 'Experimental' opcode suffix in the C++ code
- remove the guard on experimental Wasm instructions in all the C++ decoders
- move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mappings.  V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Drive-by bug fix: the test predicate for f64 square root was wrong, it
would round its argument to float.  This did not matter for the test
inputs we had but started to matter when I added more difficult inputs
for testing rounding.

Differential Revision: https://phabricator.services.mozilla.com/D92926
2020-10-14 09:50:46 +00:00
Jon Coppeard 16aaee1d65 Bug 1668825 - Change GenericTracer API so that it doesn't include details of heap storage r=sfink
The final patch in this series. This changes the GenericTracer APIs to take a
thing pointer and return a possibly updated versions, rather than taking a
double pointer to the thing. This means that we can change the details of how
pointers are stored in the heap without chaning this interface.

Differential Revision: https://phabricator.services.mozilla.com/D93336
2020-10-14 09:17:27 +00:00
Jan de Mooij aa914154fa Bug 1668532 part 2 - Assert resumeAfter is only used with non-movable instructions. r=iain
This caught some isEffectful instructions that were marked isMovable. That doesn't
really make sense, but this also doesn't fix any actual issues because optimizations
check both.

Depends on D92579

Differential Revision: https://phabricator.services.mozilla.com/D92580
2020-10-08 00:47:56 +00:00