Commit graph

69 commits

Author SHA1 Message Date
wolfbeast
f5923f0626 Add Atomics.notify instead of Atomics.wake according to revised spec.
- Keep .wake as an alias until we're certain it can be removed.
- Enable SAB memory
2019-06-15 06:27:46 +08:00
wolfbeast
2db998a4f8 Remove Unboxed Objects from vm/ - Part 2 2019-05-24 21:56:16 +08:00
wolfbeast
cc936df2e5 Remove unboxed object code from jit, Part 1 2019-05-24 21:56:13 +08:00
wolfbeast
37315e4898 Remove Unboxed Objects from vm/ Part 1 + fix deprot 2019-05-24 21:56:09 +08:00
wolfbeast
fb23522087 Remove initial chunk of Unboxed Objects machinery part 2 2019-05-24 21:55:50 +08:00
wolfbeast
7b0eb7be8c remove unboxed code chunk (wip1) 2019-05-24 21:55:45 +08:00
wolfbeast
3538814b92 Implement array.flat and array.flatMap
Self-hosted implementation that adds both functions and adds them to
@@unscopables as specced in ES2019.
Resolves #1095
2019-05-24 21:54:58 +08:00
wolfbeast
dee48511aa Implement String.prototype.trimStart and trimEnd.
This renames our internal function names because *Left and *Right might
be deprecated and have to be removed later, making that trivial.
Resolves #1089
2019-05-17 22:17:20 +08:00
wolfbeast
78d61fd2b1 Issue #187: Remove solaris conditional code. 2019-04-04 20:26:26 +08:00
adeshkp
f922e8ae0e Remove a couple of unused variables 2019-03-16 07:04:13 +08:00
wolfbeast
becadd3588 Align instanceof with the final ES6 spec. 2019-02-16 00:28:03 +08:00
adeshkp
521c918660 Remove telemetry leftovers from JS engine. 2019-02-16 00:27:38 +08:00
David Teller
7d0bef1093 Reduce number of allocations in AutoStopwatch
This patch fixes two related issues.
1. The AutoStopwatch uses a stack-allocated `mozilla::Vector` to
communicate with its callback during each compartment switch.
This vector was designed to allow its contents to be stack-allocated
but they turned out to be accidentally heap-allocated.

2. During each tick, the stopwatch fills a vector `recentGroups_`.
This vector always started with minimal capacity and had to grow
repeatedly as groups were added, causing repeated reallocations.
This patch preallocates `recentGroups_` to have the same capacity as the
previous tick. We expect that this should eventually reach a stable size
that closely matches the actual needs of the process.
2019-02-16 00:27:30 +08:00
wolfbeast
dce38e8d76 Revert "Reduce number of allocations in AutoStopwatch"
This reverts commit 3476c1d60ec29c5497123194acd7a9310b1023d2.
2019-02-16 00:27:29 +08:00
David Teller
059aeea416 Reduce number of allocations in AutoStopwatch
This patch fixes two related issues.
1. The AutoStopwatch uses a stack-allocated `mozilla::Vector` to
communicate with its callback during each compartment switch.
This vector was designed to allow its contents to be stack-allocated
but they turned out to be accidentally heap-allocated.

2. During each tick, the stopwatch fills a vector `recentGroups_`.
This vector always started with minimal capacity and had to grow
repeatedly as groups were added, causing repeated reallocations.
This patch preallocates `recentGroups_` to have the same capacity as the
previous tick. We expect that this should eventually reach a stable size
that closely matches the actual needs of the process.
2019-02-16 00:27:28 +08:00
adeshkp
aea50f182f Telemetry: Remove stubs and related code 2019-02-16 00:24:04 +08:00
wolfbeast
518106945b Use canonical function in TypeNewScript::rollbackPartiallyInitializedObjects. 2019-02-16 00:22:06 +08:00
trav90
7ccaa52ace Rename TypeSet::clone to TypeSet::cloneIntoUninitialized to indicate that it freshly initializes the TemporaryTypeSet* provided to it.
Also removes existing code that, quite unnecessarily, partly initialized that argument.
2019-02-16 00:14:12 +08:00
trav90
74983ef77e Don't use PodCopy/PodMove to implement typed-array element-to-element copying
Standard std::copy and std::copy_n are readily optimized to the same thing, and they don't have a non-obvious requirement that the type being copied be trivial.
2019-02-16 00:14:10 +08:00
trav90
3bfbbf5d40 Give uint8_clamped a defaulted (and also trivial) default constructor, copy constructor, and copy-assignment operator.
This also allows uint8_clamped to be permissibly memmove'd and memcpy'd.
2019-02-16 00:14:09 +08:00
trav90
02e07860b2 Stop using PodZero in several places to initialize values of non-trivial type 2019-02-16 00:13:45 +08:00
trav90
fc1e50d7e9 Fix build bustage 2019-02-16 00:13:01 +08:00
trav90
78d0ec7fc9 Call the relevant scope-data constructor when allocating it, and poison/mark as undefined the memory for the trailing array of BindingNames, ratther than impermissibly PodZero-ing non-trivial classes. 2019-02-16 00:12:59 +08:00
trav90
4cbf54089a Convert the trailing array of BindingNames at the end of the various kinds of scope data into raw unsigned chars into which those BindingNames are placement-new'd, rather than memcpy-ing non-trivial classes around and failing to comply with the C++ object model 2019-02-16 00:12:57 +08:00
trav90
4f91b109d0 Simplify HeapSlot to make it trivially copyable
This removes the constructors, which were never called since we allocate arrays of HeapSlot with pod_malloc. The destructor is only ever called explicitly since we free this memory with js_free so it has been renamed to destroy(). Also removed is an unused manual barrier.
2019-02-16 00:11:06 +08:00
trav90
413f205479 Avoid using memcpy on HeapSlot that is not trivially copyable. 2019-02-16 00:11:05 +08:00
janekptacijarabaci
d57aa4fc94 Fix Build Bustage - with "--enable-debug" 2019-02-16 00:08:38 +08:00
Jon Coppeard
89e332cfec Bug 1465108 - Use function pointers rather than virtual run method for GC parallel tasks r=sfink a=abillings a=RyanVM 2019-02-16 00:01:53 +08:00
wolfbeast
0795e50d87 Refactor structured clone JSAPI to prevent mismatched scopes.
Roll-up of bugs 1442722, 1455071, 1433642, 1456604 and 1458320.
2019-02-16 00:01:32 +08:00
wolfbeast
8f16d02c34 Change inlining of intrinsics. 2019-02-16 00:01:15 +08:00
wolfbeast
e3e1be66db Make InitRuntimeNumberState's return type reflect its infallible nature. 2019-02-15 23:56:18 +08:00
wolfbeast
8e9e42c7d8 Issue #325 Part 14: Remove EXPOSE_INTL_API conditionals. 2019-02-15 23:56:17 +08:00
wolfbeast
d1c16b1326 Issue #325 Part 5: Remove non-Intl legacy code paths from js. 2019-02-15 23:56:03 +08:00
janekptacijarabaci
5381ebe25c Bug 1287677 - Add mozIntl.getDisplayNames API 2019-02-15 23:44:41 +08:00
trav90
10b24b8110 Fix Value::isGCThing footgun, stop returning true for NullValue 2019-02-15 23:41:26 +08:00
janekptacijarabaci
ac07311b18 Bug 1357075 - Pad a nop to unwind to the scope just before a destructuring iterator close trynote
Issue #74
2019-02-15 23:39:34 +08:00
janekptacijarabaci
8af5664922 Bug 1346862 - Fix IteratorClose due to non-local jumps being catchable by try statements inside for-of
Issue #74
2019-02-15 23:39:32 +08:00
janekptacijarabaci
444483bf81 Bug 1342553, Bug 1343072, Bug 1344753 (details in the description)
Bug 1342553 - Part 0.1: Use try-catch for IteratorClose in for-of
Bug 1343072 - Update HasLiveStackValueAtDepth to follow the change in
JSTRY_FOR_OF
Bug 1344753 - Update for-of stack depth in
ControlFlowGenerator::processWhileOrForInLoop

Issue #74
2019-02-15 23:39:29 +08:00
janekptacijarabaci
4ac4296fce Bug 1331585 - Allow falsy "done" values for IteratorClose due to exception during array destructuring
Issue #74
2019-02-15 23:39:26 +08:00
janekptacijarabaci
95390009cc Bug 1147371: Implement calling IteratorClose and "return" on iterators in yield*
Issue #74
2019-02-15 23:39:07 +08:00
janekptacijarabaci
d36d40760a Bug 1147371: Implement IteratorClose for array destructuring
Issue #74
2019-02-15 23:39:05 +08:00
janekptacijarabaci
10ee43a416 Bug 1147371: Rename allowContentSpread to allowContentIter
Issue #74
2019-02-15 23:39:02 +08:00
janekptacijarabaci
5f3e5dc3fb Bug 1147371: Implement IteratorClose for for-of
Issue #74
2019-02-15 23:39:00 +08:00
janekptacijarabaci
2f27d8433c Bug 1204028: Evaluate LHS reference before RHS in destructuring
Issue #73
[Depends on] Bug 1147371: Implement IteratorClose
2019-02-15 23:38:57 +08:00
janekptacijarabaci
748c69d7fd Part 1: Implement ES6 function name property semantics
Issue #78
2019-02-15 23:38:44 +08:00
janekptacijarabaci
e7ee7caf1e Bug 1320388: Move JSFunction::HAS_REST to JSScript and LazyScript
Issue #78
[Depends on] Bug 883377: Implement ES6 function "name" property
semantics
2019-02-15 23:38:38 +08:00
janekptacijarabaci
d275a63a71 Use ordinary object for RegExp prototype
Issue #77
2019-02-15 23:38:32 +08:00
janekptacijarabaci
09ace5ee98 Add TI for error properties assigned by the initial shape (follow up) 2019-02-15 23:38:28 +08:00
janekptacijarabaci
38fabf8122 Add TI for error properties assigned by the initial shape 2019-02-15 23:38:22 +08:00
janekptacijarabaci
4fad420bb8 Handle the now ordinary error prototype object in stack 2019-02-15 23:38:19 +08:00