searching for reviewer(luke)
371ea5445585: Bug 1490993 part 5 - Always use braces for if/for/while statements in js/src/jit/arm64. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 13 Sep 2018 17:17:30 +0000 - rev 436643
Push 107893 by shindli@mozilla.com at 2018-09-16 21:42 +0000
Bug 1490993 part 5 - Always use braces for if/for/while statements in js/src/jit/arm64. r=luke Depends on D5765 Differential Revision: https://phabricator.services.mozilla.com/D5766
91fc6c048c07: Bug 1490594 - Always use braces for if/for/while statements in jsapi-tests. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Wed, 12 Sep 2018 14:23:43 +0000 - rev 436038
Push 107782 by dvarga@mozilla.com at 2018-09-13 02:51 +0000
Bug 1490594 - Always use braces for if/for/while statements in jsapi-tests. r=luke Differential Revision: https://phabricator.services.mozilla.com/D5649
ec5fe5d123b1: Bug 1490594 - Always use braces for if/for/while statements in jsapi-tests. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Wed, 12 Sep 2018 14:23:43 +0000 - rev 435970
Push 107758 by dluca@mozilla.com at 2018-09-12 18:37 +0000
Bug 1490594 - Always use braces for if/for/while statements in jsapi-tests. r=luke Differential Revision: https://phabricator.services.mozilla.com/D5649
20142eb6afd6: Bug 1488698 - Always use braces for if/for/while statements in js/src/wasm, part 4. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 06 Sep 2018 11:26:16 +0200 - rev 435720
Push 107708 by jandemooij@gmail.com at 2018-09-11 14:33 +0000
Bug 1488698 - Always use braces for if/for/while statements in js/src/wasm, part 4. r=luke
ab68962c6c3f: Bug 1488698 - Always use braces for if/for/while statements in js/src/wasm, part 3. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 06 Sep 2018 11:25:07 +0200 - rev 435719
Push 107708 by jandemooij@gmail.com at 2018-09-11 14:33 +0000
Bug 1488698 - Always use braces for if/for/while statements in js/src/wasm, part 3. r=luke
78d8957d12e2: Bug 1488698 - Always use braces for if/for/while statements in js/src/vm, part 4. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 06 Sep 2018 11:13:06 +0200 - rev 435708
Push 107708 by jandemooij@gmail.com at 2018-09-11 14:33 +0000
Bug 1488698 - Always use braces for if/for/while statements in js/src/vm, part 4. r=luke
b7954f956259: Bug 1469027: Move wasm types shared with Cranelift in a WasmBinaryConstants.h; r=luke
Benjamin Bouvier <benj@benj.me> - Fri, 07 Sep 2018 18:30:06 +0200 - rev 435467
Push 107649 by bbouvier@mozilla.com at 2018-09-10 14:42 +0000
Bug 1469027: Move wasm types shared with Cranelift in a WasmBinaryConstants.h; r=luke
9347f5a5365d: Bug 1469027: Add a --wasm-force-cranelift flag to the shell; r=luke
Benjamin Bouvier <benj@benj.me> - Fri, 07 Sep 2018 13:42:16 +0200 - rev 435466
Push 107649 by bbouvier@mozilla.com at 2018-09-10 14:42 +0000
Bug 1469027: Add a --wasm-force-cranelift flag to the shell; r=luke
e951ad8147a7: Bug 722345 part 3 - Remove request API. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 28 Aug 2018 09:53:30 +0200 - rev 434750
Push 107484 by jandemooij@gmail.com at 2018-09-05 09:11 +0000
Bug 722345 part 3 - Remove request API. r=luke Differential Revision: https://phabricator.services.mozilla.com/D4424
8542dc7212b4: Bug 722345 part 2 - Remove AutoCheckRequestDepth, rename CHECK_REQUEST to CHECK_THREAD. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 28 Aug 2018 10:02:11 +0200 - rev 434749
Push 107484 by jandemooij@gmail.com at 2018-09-05 09:11 +0000
Bug 722345 part 2 - Remove AutoCheckRequestDepth, rename CHECK_REQUEST to CHECK_THREAD. r=luke Differential Revision: https://phabricator.services.mozilla.com/D4423
6f17ffaad886: Bug 722345 part 1 - Remove now unused activity callback API. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 28 Aug 2018 09:19:17 +0200 - rev 434748
Push 107484 by jandemooij@gmail.com at 2018-09-05 09:11 +0000
Bug 722345 part 1 - Remove now unused activity callback API. r=luke Differential Revision: https://phabricator.services.mozilla.com/D4422
e99f9ea18046: Bug 1487327 - Custom section for opting in to GC feature work. r=luke
Lars T Hansen <lhansen@mozilla.com> - Fri, 31 Aug 2018 08:50:24 +0200 - rev 434743
Push 107480 by lhansen@mozilla.com at 2018-09-05 08:10 +0000
Bug 1487327 - Custom section for opting in to GC feature work. r=luke We introduce a new numbered section which must be the first section in the .wasm file if it is present at all. This section, GcFeatureOptIn, carries the version number of the GC feature the module wants to opt in to. During validation we signal an error if we can't satisfy the requirement; and we signal errors for all the GC feature aspects (anyref, ref, struct, and all the ref-type instructions) if no opt-in section was present. This patch does not affect how we generate code for stubs; that code is controlled by the --wasm-gc flag, as it is module-independent. This patch also does not change how we choose the compiler; that is still based on --wasm-gc. But once --wasm-gc disappears we will be using the opt-in section to control compiler selection until Ion can support the GC feature. Currently the only supported GC feature version is 1. As the engine evolves to accomodate new versions we will accept old version numbers provided the engine remains completely backward compatible. (We can also provide version-triggered backward compatibility but I question the utility.)
6029e0377dda: Bug 1487238 - Do realm checks instead of compartment checks in the expression decompiler code. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 04 Sep 2018 14:07:28 +0000 - rev 434696
Push 107467 by btara@mozilla.com at 2018-09-04 23:45 +0000
Bug 1487238 - Do realm checks instead of compartment checks in the expression decompiler code. r=luke Another option is to allow same-compartment realms here, but this seems simpler and safer (to ensure we don't leak any information in document.domain cases or if we ever change from CPO to something else). A principals check is probably not worth the complexity. Differential Revision: https://phabricator.services.mozilla.com/D4868
c91d997687bf: Bug 1487327 - Custom section for opting in to GC feature work. r=luke
Lars T Hansen <lhansen@mozilla.com> - Fri, 31 Aug 2018 08:50:24 +0200 - rev 434463
Push 107381 by lhansen@mozilla.com at 2018-09-03 12:27 +0000
Bug 1487327 - Custom section for opting in to GC feature work. r=luke We introduce a new numbered section which must be the first section in the .wasm file if it is present at all. This section, GcFeatureOptIn, carries the version number of the GC feature the module wants to opt in to. During validation we signal an error if we can't satisfy the requirement; and we signal errors for all the GC feature aspects (anyref, ref, struct, and all the ref-type instructions) if no opt-in section was present. This patch does not affect how we generate code for stubs; that code is controlled by the --wasm-gc flag, as it is module-independent. This patch also does not change how we choose the compiler; that is still based on --wasm-gc. But once --wasm-gc disappears we will be using the opt-in section to control compiler selection until Ion can support the GC feature. Currently the only supported GC feature version is 1. As the engine evolves to accomodate new versions we will accept old version numbers provided the engine remains completely backward compatible. (We can also provide version-triggered backward compatibility but I question the utility.)
653e1282f4ce: Bug 1481793 part 5 - Use JSObject::nonCCWRealm instead of JSObject::deprecatedRealm in JSContext::enterRealmOf. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 30 Aug 2018 09:27:10 +0200 - rev 434050
Push 107243 by jandemooij@gmail.com at 2018-08-30 12:56 +0000
Bug 1481793 part 5 - Use JSObject::nonCCWRealm instead of JSObject::deprecatedRealm in JSContext::enterRealmOf. r=luke
a7eeb1ba63b4: Bug 1477921 part 2 - Remove now unused JSAutoRealmAllowCCW. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Wed, 29 Aug 2018 10:23:49 +0200 - rev 433873
Push 107193 by jandemooij@gmail.com at 2018-08-29 15:33 +0000
Bug 1477921 part 2 - Remove now unused JSAutoRealmAllowCCW. r=luke Differential Revision: https://phabricator.services.mozilla.com/D4519
9dc02964e87f: Bug 1477921 part 1 - Use JSAutoRealm instead of JSAutoRealmAllowCCW in JS_CopyPropert{ies,y}From and fix some stale comments. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Wed, 29 Aug 2018 10:08:36 +0200 - rev 433872
Push 107193 by jandemooij@gmail.com at 2018-08-29 15:33 +0000
Bug 1477921 part 1 - Use JSAutoRealm instead of JSAutoRealmAllowCCW in JS_CopyPropert{ies,y}From and fix some stale comments. r=luke Differential Revision: https://phabricator.services.mozilla.com/D4518
9fcca8293f56: Bug 1479794 - Do not expose Ref types outside the defining module. r=luke
Lars T Hansen <lhansen@mozilla.com> - Mon, 27 Aug 2018 18:16:13 +0200 - rev 433860
Push 107183 by lhansen@mozilla.com at 2018-08-29 13:00 +0000
Bug 1479794 - Do not expose Ref types outside the defining module. r=luke For the time being, we do not want to expose struct types outside of the module where they are defined, and so there must be restrictions on how functions and global variables that traffic in struct types can be used. At the same time, intra-module uses of functions and globals that use struct types must be allowed to the greatest extent possible. Terminology: A function that takes a Ref parameter or returns a Ref result is "exposed for Ref", as is a global of Ref type. Anyref is OK though, in all cases. To keep it simple we have the following restrictions that can all be checked statically. - Exported and imported functions cannot be exposed for Ref. - If the module has an exported or imported table then no function stored in that table by the module (by means of an element segment) can be exposed for Ref. - If the module has an exported or imported table then no call_indirect via that table may reference a type that is exposed for Ref. - An exported or imported global cannot be exposed for Ref. Conversely, - If a module has a private table then it can contain private functions that are exposed for Ref and it is possible to call those functions via that table. - If a module has a private global then it can be exposed for ref. Note that code generators can work around the restrictions by instead using functions and globals that use anyref, and by using downcasts to check that the types are indeed correct. (Though the meaning of downcast will change as the GC feature evolves.) All the code implementing the restrictions is under an #ifdef so that we can easily find it later; all the test cases testing the restrictions are in a separate file. Few existing tests needed to be adapted, and none substantially.
24f835f7926d: Bug 1486553 - Only set .external on the table if necessary. r=luke
Lars T Hansen <lhansen@mozilla.com> - Mon, 27 Aug 2018 21:01:56 +0200 - rev 433859
Push 107183 by lhansen@mozilla.com at 2018-08-29 13:00 +0000
Bug 1486553 - Only set .external on the table if necessary. r=luke Previously we would unconditionally set the .external flag on a table if it had an element segment, but we should only do this if the table is initialized with an imported function and so may contain functions from multiple instances.
df8bd3f469f9: Bug 1486731: wasm profiling: Don't look at FP's tagged bit in non-function call situations; r=luke
Benjamin Bouvier <benj@benj.me> - Tue, 28 Aug 2018 15:10:09 +0200 - rev 433710
Push 107172 by bbouvier@mozilla.com at 2018-08-29 09:33 +0000
Bug 1486731: wasm profiling: Don't look at FP's tagged bit in non-function call situations; r=luke
b415b7af0bf6: Bug 1437065: Tests; r=luke
Benjamin Bouvier <benj@benj.me> - Thu, 23 Aug 2018 15:28:16 +0200 - rev 433308
Push 107032 by bbouvier@mozilla.com at 2018-08-24 17:38 +0000
Bug 1437065: Tests; r=luke
79e9e6a709b0: Bug 1437065: Inline monomorphic calls to wasm; r=luke, r=jandem
Benjamin Bouvier <benj@benj.me> - Fri, 24 Aug 2018 15:27:20 +0200 - rev 433307
Push 107032 by bbouvier@mozilla.com at 2018-08-24 17:38 +0000
Bug 1437065: Inline monomorphic calls to wasm; r=luke, r=jandem
87a88fb8b1a6: Bug 1466118 part 9 - Some more cleanup. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Wed, 22 Aug 2018 11:54:31 +0200 - rev 433008
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 9 - Some more cleanup. r=luke
64a85b3753ac: Bug 1466118 part 8 - Change compartment check to realm check for JSScript and AbstractFramePtr. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 13:14:23 +0200 - rev 433007
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 8 - Change compartment check to realm check for JSScript and AbstractFramePtr. r=luke
ff5cb8442b5d: Bug 1466118 part 6 - Rename CompartmentChecker to ContextChecks and support realm checks. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 12:48:03 +0200 - rev 433005
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 6 - Rename CompartmentChecker to ContextChecks and support realm checks. r=luke
af49f7a464d5: Bug 1466118 part 5 - Replace assertSameCompartmentImpl with JSContext::checkImpl. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 12:34:18 +0200 - rev 433004
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 5 - Replace assertSameCompartmentImpl with JSContext::checkImpl. r=luke
239b363ac50d: Bug 1466118 part 4 - Replace assertSameCompartment with JSContext::check. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 12:18:21 +0200 - rev 433003
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 4 - Replace assertSameCompartment with JSContext::check. r=luke
224b09c2e661: Bug 1466118 part 3 - Replace assertSameCompartmentDebugOnly with JSContext::debugOnlyCheck. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 12:11:52 +0200 - rev 433002
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 3 - Replace assertSameCompartmentDebugOnly with JSContext::debugOnlyCheck. r=luke
5cb4cd7c449e: Bug 1466118 part 2 - Replace releaseAssertSameCompartment with JSContext::releaseCheck. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 12:07:57 +0200 - rev 433001
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 2 - Replace releaseAssertSameCompartment with JSContext::releaseCheck. r=luke
3bf5eb6fe16d: Bug 1466118 part 1 - Use variadic templates for assertSameCompartment functions. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Tue, 21 Aug 2018 11:57:49 +0200 - rev 433000
Push 106942 by jandemooij@gmail.com at 2018-08-23 10:26 +0000
Bug 1466118 part 1 - Use variadic templates for assertSameCompartment functions. r=luke
e2b35cf75610: Bug 1480725 - stress test wasm atomics. r=luke
Lars T Hansen <lhansen@mozilla.com> - Thu, 09 Aug 2018 15:47:30 +0200 - rev 432988
Push 106938 by lhansen@mozilla.com at 2018-08-23 09:30 +0000
Bug 1480725 - stress test wasm atomics. r=luke Atomic operations are stress-tested by having multiple workers work on the same location in ways that would reveal non-atomicity in an incorrect result. We run these tests only on native implementations, not on simulators. Our simulators don't implement atomicity well. This patch has the bare minimum, testing multiple agents that perform the same operation. It's possible to do more, notably, to combine different operations.
aa3d1b33b0e9: Bug 1467632 - Specialize ReadScalar<ExprType>. r=luke
Lars T Hansen <lhansen@mozilla.com> - Tue, 21 Aug 2018 09:17:05 +0200 - rev 432987
Push 106938 by lhansen@mozilla.com at 2018-08-23 09:30 +0000
Bug 1467632 - Specialize ReadScalar<ExprType>. r=luke Normally ReadScalar uses memcpy from the source stream to the destination object. This is only well-defined if the destination argument is a POD type, which ExprType is not. So specialize ReadScalar for ExprType and make the memcpy target the data payload in that type instead.
a0883c99c897: Bug 1467632 - Make AsmJSGlobal's pod field be POD. r=luke, r=waldo
Lars T Hansen <lhansen@mozilla.com> - Mon, 20 Aug 2018 17:14:19 +0200 - rev 432986
Push 106938 by lhansen@mozilla.com at 2018-08-23 09:30 +0000
Bug 1467632 - Make AsmJSGlobal's pod field be POD. r=luke, r=waldo The pod member needs to be POD but has members that have evolved no longer to be POD - a ValType and a LitVal. We work around the problem locally by using ValType's representation type PackedTypeCode to represent types, and by specializing LitVal as LitValPOD for use in this structure.
c3bb26f98555: Bug 1483182 - Do report OOM failures in HashTable::reserve(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 21 Aug 2018 19:07:20 +1000 - rev 432750
Push 106855 by nnethercote@mozilla.com at 2018-08-22 06:55 +0000
Bug 1483182 - Do report OOM failures in HashTable::reserve(). r=luke This fixes a typo.
8116d3ee3a5a: Bug 1483182 - Don't allocate in HashTable::lookupOrAdd(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 21 Aug 2018 13:49:17 +1000 - rev 432749
Push 106855 by nnethercote@mozilla.com at 2018-08-22 06:55 +0000
Bug 1483182 - Don't allocate in HashTable::lookupOrAdd(). r=luke Currently lookupOrAdd() will allocate if the table has no storage. But it doesn't report an error if the allocation fails, which can cause problems. This patch changes things so that lookupOrAdd() doesn't allocate when the table has no storage. Instead, it returns an AddPtr that is not *valid* (its mTable is empty) but it is *live*, and can be used in add(), whereupon the allocation will occur. The patch also makes Ptr::isValid() and AddPtr::isValid() non-public, because the valid vs. live distinction is non-obvious and best kept hidden within the classes.
8695f16b39ed: Bug 1479430 - Make sure TypeNewScript::maybeAnalyze is called in the group's realm. r=luke
Jan de Mooij <jdemooij@mozilla.com> - Thu, 16 Aug 2018 11:59:19 +0200 - rev 432569
Push 106782 by jandemooij@gmail.com at 2018-08-21 12:06 +0000
Bug 1479430 - Make sure TypeNewScript::maybeAnalyze is called in the group's realm. r=luke
5f3c40ffdfed: Bug 1437065: Rename interpCodeRangeIndex to funcCodeRangeIndex; r=luke
Benjamin Bouvier <benj@benj.me> - Mon, 20 Aug 2018 15:38:36 +0200 - rev 432533
Push 106774 by bbouvier@mozilla.com at 2018-08-21 09:43 +0000
Bug 1437065: Rename interpCodeRangeIndex to funcCodeRangeIndex; r=luke
3d252d6f57ec: Bug 1437065: Have LookupCode reset the codeRange out-param if it didn't find a Code; r=luke
Benjamin Bouvier <benj@benj.me> - Tue, 07 Aug 2018 16:04:58 +0200 - rev 432531
Push 106774 by bbouvier@mozilla.com at 2018-08-21 09:43 +0000
Bug 1437065: Have LookupCode reset the codeRange out-param if it didn't find a Code; r=luke
dc7413a25676: Bug 1484605 - Tweak some lookupForAdd() uses. r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 21 Aug 2018 11:53:47 +1000 - rev 432514
Push 106764 by nnethercote@mozilla.com at 2018-08-21 04:46 +0000
Bug 1484605 - Tweak some lookupForAdd() uses. r=luke These are cases where the existing code is a little dubious or sub-optimal.
da46bfc2c089: Bug 1483062 - Inline and remove HashTable::{over,under}loaded(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Thu, 16 Aug 2018 09:10:17 +1000 - rev 431857
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Inline and remove HashTable::{over,under}loaded(). r=luke Because they each only have a single call site, and the "too many items removed?" test is already encapsulated within rehashIfOverloaded().
ca2edc3b4c1a: Bug 1483062 - Merge HashTable::wouldBeUnderloaded() into underloaded(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Wed, 15 Aug 2018 11:11:13 +1000 - rev 431856
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Merge HashTable::wouldBeUnderloaded() into underloaded(). r=luke
a3bf3a494b0b: Bug 1483062 - Inline and remove HashTable::overRemoved(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Wed, 15 Aug 2018 11:10:56 +1000 - rev 431855
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Inline and remove HashTable::overRemoved(). r=luke
2d9e3360e858: Bug 1483062 - Rename HashTable::rehashIfOverRemoved(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 14 Aug 2018 11:56:55 +1000 - rev 431854
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Rename HashTable::rehashIfOverRemoved(). r=luke infallibleRehashIfOverloaded() actually matches what it does. Also, the patch removes the `overloaded()` test within the function, because `rehashIfOverloaded()` has the same test.
43e351bda401: Bug 1483062 - Rename some HashTable methods. r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 14 Aug 2018 11:19:39 +1000 - rev 431853
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Rename some HashTable methods. r=luke Specifically: - checkOverloaded -> rehashIfOverloaded - checkUnderloaded -> shrinkIfUnderloaded - checkOverRemoved -> rehashIfOverRemoved Because I've always found that the `check` prefix doesn't clearly explain that the table might be changed, And: - shouldCompressTable -> overRemoved Because that matches `overloaded` and `underloaded`.
f1e1cf1d42ec: Bug 1483062 - Rename HashTable::findFreeEntry() as findNonLiveEntry(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Tue, 14 Aug 2018 09:36:00 +1000 - rev 431852
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Rename HashTable::findFreeEntry() as findNonLiveEntry(). r=luke Because that's a more accurate description of what it does -- it finds free *and* removed entries.
e483b91eafbc: Bug 1483062 - Remove HashTable::maybeCreateTable. r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Thu, 09 Aug 2018 14:19:49 +1000 - rev 431851
Push 106571 by nnethercote@mozilla.com at 2018-08-16 07:57 +0000
Bug 1483062 - Remove HashTable::maybeCreateTable. r=luke It's dead.
9112406a54a2: Bug 1481171 - Properly emit signal handling metadata for wasm on aarch64. r=luke
Lars T Hansen <lhansen@mozilla.com> - Fri, 10 Aug 2018 11:09:44 +0200 - rev 431176
Push 106372 by lhansen@mozilla.com at 2018-08-13 09:37 +0000
Bug 1481171 - Properly emit signal handling metadata for wasm on aarch64. r=luke As the aarch64 instruction emitters do not return the BufferOffset of the access instruction, we have to resort to AutoForbidPools to keep the metadata emitted at the correct address of the access. Manual inspection of the assembler code and the addressing modes used reveals that this is viable, if it's done just so. I've added comments to highlight the fact that it is a little brittle, and the AutoForbidPools with an instruction window of 1 instruction will cause failures if assumptions about the machine code should be violated accidentally in the future.
ad30dc53e38e: Bug 1481998 - Make mozilla::Hash{Map,Set}'s entry storage allocation lazy. r=luke,sfink
Nicholas Nethercote <nnethercote@mozilla.com> - Fri, 10 Aug 2018 18:00:29 +1000 - rev 431168
Push 106367 by nnethercote@mozilla.com at 2018-08-13 01:19 +0000
Bug 1481998 - Make mozilla::Hash{Map,Set}'s entry storage allocation lazy. r=luke,sfink Entry storage allocation now occurs on the first lookupForAdd()/put()/putNew(). This removes the need for init() and initialized(), and matches how PLDHashTable/nsTHashtable work. It also removes the need for init() functions in a lot of types that are built on top of mozilla::Hash{Map,Set}. Pros: - No need for init() calls and subsequent checks. - No memory allocated for empty tables, which are not that uncommon. Cons: - An extra branch in lookup() and lookupForAdd(), but not in put()/putNew(), because the existing checkOverloaded() can handle it. Specifics: - Construction now can take a length parameter. - init() is removed. Explicit length-setting, when necessary, now occurs in the constructors. - initialized() is removed. - capacity() now returns zero when the entry storage is absent. - lookupForAdd() is no longer `const`, because it can instantiate the storage, which requires modifications. - lookupForAdd() can now return an invalid AddPtr in two cases: - old: hashing failure (due to OOM in the hasher) - new: OOM while instantiating entry storage The existing failure handling paths for the old case work for the new case. - clear(), finish(), and clearAndShrink() are replaced by clear(), compact(), and reserve(). The old compactIfUnderloaded() is also removed. - Capacity computation code is now in its own functions, bestCapacity() and hashShift(). setTableSizeLog2() is removed. - uint32_t is used throughout for capacities, instead of size_t, for consistency with other similar values. - changeTableSize() now takes a capacity instead of a deltaLog2, and it can now handle !mTable. Measurements: - Total source code size is reduced by over 900 lines. Also, lots of existing lines got shorter (i.e. two checks were reduced to one). - Executable size barely changed, down by 2 KiB on Linux64. The extra branches are compensated for by the lack of init() calls. - Speed changed negligibly. The instruction count for Bench_Cpp_MozHash increased from 2.84 billion to 2.89 billion but any execution time change was well below noise.
223884f0ad76: Bug 1481998 - Define lookup() in terms of readonlyThreadsafeLookup(). r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Fri, 10 Aug 2018 15:35:13 +1000 - rev 431167
Push 106366 by nnethercote@mozilla.com at 2018-08-13 00:45 +0000
Bug 1481998 - Define lookup() in terms of readonlyThreadsafeLookup(). r=luke The two functions are almost identical. This change minimizes duplication.
6bb61989d9ae: Bug 1481998 - Change sJSObjWrappers initialization. r=luke
Nicholas Nethercote <nnethercote@mozilla.com> - Thu, 09 Aug 2018 14:15:42 +1000 - rev 431166
Push 106366 by nnethercote@mozilla.com at 2018-08-13 00:45 +0000
Bug 1481998 - Change sJSObjWrappers initialization. r=luke GCHashMap will shortly lose its initialized() function, so we need another way to indicate whether this table has been created. This patch changes it to use a pointer instead.