Commit graph

996 commits

Author SHA1 Message Date
wolfbeast
9081722152 Stage 1-2: Remove a space after comma in parameter list for generated
function source.
2019-04-13 07:00:21 +08:00
wolfbeast
b68de773fd Stage 1-1: Implement Function.prototype.toString revision proposal.
Tag #960
2019-04-13 07:00:18 +08:00
wolfbeast
09ad6f03c9 Remove AIX 1st party code OS checks, part 2
Issue #186
2019-04-04 20:26:46 +08:00
wolfbeast
fdc5d93422 Remove some HPUX leftovers.
Resolves #185
2019-04-04 20:26:43 +08:00
wolfbeast
769e5dad1e Remove AIX 1st party code OS checks, part 1
Issue #186
2019-04-04 20:26:39 +08:00
wolfbeast
0a50553673 Issue #187: Remove solaris 1st party code OS checks. 2019-04-04 20:26:29 +08:00
wolfbeast
78d61fd2b1 Issue #187: Remove solaris conditional code. 2019-04-04 20:26:26 +08:00
wolfbeast
c3a58ab50b Simplify some alias sets in IonMonkey. 2019-03-29 22:27:39 +08:00
Nicolas B. Pierron
e390f01ef5 Restrict ExtractLinearSum to monotonous operation in infinite math space.
Thanks to Bruno Keith & Niklas Baumstark from the phoenhex team for
finding this issue and reporting it with a proper analysis.
2019-03-29 22:21:19 +08:00
Jon Coppeard
4105e6bba4 Reset nursery position when it's disabled. 2019-03-23 06:44:21 +08:00
wolfbeast
ca54bbe536 Check for dead wrappers in CallerGetterImpl/CallerSetterImpl.
This also removes code duplication by making CallerSetterImpl call
CallerGetterImpl.
2019-03-23 06:44:13 +08:00
Nicolas B. Pierron
c6e54b5208 Force expected crashes on unexpected magic values. 2019-03-23 06:44:11 +08:00
wolfbeast
eb32b5d7e4 Pref the use of unboxed plain objects in JS and disable by default.
This should be all that's needed for #1017, but verification of
impact is definitely desired.
2019-03-23 06:44:08 +08:00
adeshkp
f922e8ae0e Remove a couple of unused variables 2019-03-16 07:04:13 +08:00
wolfbeast
c0871c52e1 Fix possible data race while updating scope object during compacting GC. 2019-02-16 00:28:06 +08:00
wolfbeast
becadd3588 Align instanceof with the final ES6 spec. 2019-02-16 00:28:03 +08:00
wolfbeast
39d5eb7759 Remove NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS 2019-02-16 00:27:49 +08:00
wolfbeast
5aa6fbb0ae Fix build error with JS_HAS_TOSOURCE undefined. 2019-02-16 00:27:44 +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
0c5263683a Restrict ExtractLinearSum to find non-wrapping results. 2019-02-16 00:22:09 +08:00
wolfbeast
518106945b Use canonical function in TypeNewScript::rollbackPartiallyInitializedObjects. 2019-02-16 00:22:06 +08:00
wolfbeast
e4ac0e17f8 Fix mistakingly flagged instructions.
This enables optimizations which were wrongly inhibited before by this typo.
2019-02-16 00:21:23 +08:00
wolfbeast
930cc1db3b Fix a longstanding IndexedDB correctness issue.
Standards Compliance fix, port of Bug 1492737
2019-02-16 00:18:35 +08:00
wolfbeast
acb2819baa Simplify SIMD conversion from Uint64 to Double. 2019-02-16 00:18:22 +08:00
wolfbeast
c554052ddd Don't mark MGetFirstDollarIndex as movable. 2019-02-16 00:18:16 +08:00
wolfbeast
3567db7ccc Code style improvements (no bug). 2019-02-16 00:16:18 +08:00
wolfbeast
f592b614d0 Improve graph edge resolution code.
This is a follow-up to ca7ecd37c94e268972697a37eec4e46771c6e6f2 further improving the DiD resolution for CVE-2018-12386.
2019-02-16 00:16:16 +08:00
wolfbeast
3757eafab3 Bug 1493900.
DiD fix.
2019-02-16 00:15:07 +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
4b23aec47e Don't memset-zero the BacktrackingAllocator::vregs array of non-trivial VirtualRegister instances 2019-02-16 00:13:50 +08:00
trav90
4d089648be Call memset on a void*, not a T*, in js_delete_poison to avoid memset-on-nontrivial warnings with gcc that don't matter for an object whose lifetime is about to end 2019-02-16 00:13:48 +08:00
trav90
fbef1917ad Initialize some asm.js structures using in-class initializers instead of PodZero 2019-02-16 00:13:46 +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
wolfbeast
8c8145e620 Remove all C++ Telemetry Accumulation calls.
This creates a number of stubs and leaves some surrounding code that may be irrelevant (eg. recorded time stamps, status variables).
Stub resolution/removal should be a follow-up to this.
2019-02-16 00:12:32 +08:00
wolfbeast
ac3468d5cc Add extra check for assembler buffer space. 2019-02-16 00:12:29 +08:00
wolfbeast
36a9805617 Revert "Bug 1444668 - Avoid allocating large AssemblerBuffers. r=luke, r=bbouvier, a=RyanVM"
This reverts commit 9472136272f01b858412f2d9d7854d2daa82496f.
2019-02-16 00:12:16 +08:00
trav90
2fabd9fa1b Avoid using memset on a not-trivial type like ServoSizes 2019-02-16 00:11:36 +08:00
trav90
37959f9945 Avoid using memset on a not-trivial type like TabSizes 2019-02-16 00:11:35 +08:00
trav90
6b97ee8cab Avoid doing a memset on a non-POD structure
|entryCount| tracks -- in fast-to-check manner -- the number of entries in the hashtable.  But to actually enumerate entries, we have to loop through all of |table|, checking for entries that are actually live.  A live entry is indicated by a zero |hash| in the entry.  The |memset| would properly zero that; removing the memset will not.

It's not entirely clear whether a memset that overwrites a lot of stuff but is maybe simpler, is faster than compiler-generated likely-SIMD code that zeroes out *just* |hash| fields in all the entries.  But I am going to guess that SIMD is good enough.  For now, we should just do the simple and thing: don't distinguish POD and non-POD, and know that the compiler is going to recognize that |mem.addr()->~T()| is a no-op when T is trivial.  So with POD, the loop should degenerate to just zeroing |hash| at consistent offset, and SIMD will eat that up, and it can't be *that* different from the memset in performance (if it is at all).
2019-02-16 00:11:33 +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