summaryrefslogtreecommitdiffstats
path: root/js/src/vm
Commit message (Collapse)AuthorAgeLines
* Issue #618 - Simplify module resolve hook to be a function pointerMoonchild2020-08-30-23/+15
| | | | | This is an ahead-of time port to try and address #1624. This is based on BZ 1461751 and Jon Coppeard's work in it.
* Issue #618 - Use a single slot for the module's environment object.Moonchild2020-08-30-12/+0
| | | | | | | | | | | | | | | | | | | | According to the spec this isn't created until the module is instantiated, but we create it when we compile the module. We stored this previously in InitialEnvironmentSlot and copied it to EnvironmentSlot when it was supposed to be created, but we can just store it in the latter slot straight away and check the module's status and return null if it shouldn't exist yet. This reduces the number of slots needed on a moduleObject to 17. Re: BZ 1420412 Part 1 We can't implement the second part to further reduce our number of slots, because it relies on SetProxyReservedSlot which in turn relies on rearchitecturing JS proxies to make reserved slots dynamic. That's a rabbit hole we really don't want to fall into. So, we'll end up being a bit slower because it can't be in-line allocated with having more than 16 slots, but so be it. I sincerely doubt it will make any practical difference.
* Issue #618 - Align error handling for module scripts with the spec (again)Moonchild2020-08-30-2/+1
| | | | | | | | This updates module implementation to match spec regarding handling of instantiation errors, after it was changed yet again, this time to not remember instantiation errors, but instead immediately rethrow applicable ones. Ref: BZ 1420420
* [js] Get the class pointer from the ObjectGroup in NativeObject::slotSpanMoonchild2020-07-10-1/+4
| | | | | | This changes NativeObject::slotSpan() to get the class from the object group rather than getting it from the base shape to avoid a race between Shape::ensureOwnBaseShape and background sweeping.
* Issue #618 - Report source position information (line/column)Moonchild2020-07-10-0/+46
| | | | | | Report source position information for module export resolution failures. Ref: BZ 1362098
* Issue #618 - Align module instantiation/errors with the updated spec.Moonchild2020-07-10-18/+5
| | | | | Store and re-throw module instantiation and evaluation errors. Ref: BZ 1374239, 1394492
* Issue #1570 - Implement globalThiswolfbeast2020-06-01-0/+36
| | | | This resolves #1570
* Revert 1320408 part 15: Make addDataProperty staticwolfbeast2020-04-14-18/+18
|
* [js] Remove pointless MakeMRegExpHoistable optimization.wolfbeast2020-04-14-6/+0
| | | | It's a lot of code with no measurable effect.
* Revert #1091 Remove unboxed object code phase 1 + extras.wolfbeast2020-04-14-5/+445
| | | | | | This should be the last code backout for this. merging this branch should get us back to the way we were (+ additional code changes for later changes) as fasr as the unused unboxed code is concerned.
* Revert #1137 - Remove unboxed arrayswolfbeast2020-04-14-88/+1814
| | | | | - accounting for removal of watch()/unwatch() - updated for intermediate code changes.
* Revert #1142 - Remove unboxed objectswolfbeast2020-04-14-20/+1765
| | | | - accounting for removal of watch()/unwatch()
* Issue #1322 - Part 1: Remove the DOM Promise guts.wolfbeast2019-12-19-28/+0
| | | | This removes all the parts guarded by SPIDERMONKEY_PROMISE
* Bug 1390082 - Implement AsyncGeneratorQueue with simpler array operations.Gaming4JC2019-12-17-10/+52
| | | | | | Tag #1287 Note: Without ReadableStream implementation
* Bug 1379525 - Part 1: Await on the value before yielding or returning inside ↵Gaming4JC2019-12-17-97/+88
| | | | | | async generator. Tag #1287
* Bug 1331092 - Part 7: Implement Async Generator yield*.Gaming4JC2019-12-17-29/+159
| | | | Tag #1287
* Bug 1331092 - Part 2: Implement Async Generator except yield*.Gaming4JC2019-12-17-2/+823
| | | | Tag #1287
* Bug 1317389: Change property attributes for generator and async functions to ↵Gaming4JC2019-12-17-12/+22
| | | | | | match ES2015/2017. Tag #1287
* Bug 1316098 - Optimize out result object allocation for await/return in ↵Gaming4JC2019-12-17-34/+11
| | | | | | async function. Tag #1287
* Bug 1343481 - Part 4: Add Add GeneratorObject.{isAfterYield,isAfterAwait}.Gaming4JC2019-12-17-0/+38
| | | | Tag #1287
* Bug 1343481 - Part 3: Add JSOP_AWAIT and rename {yieldIndex,yieldOffset} to ↵Gaming4JC2019-12-17-34/+47
| | | | | | {yieldAndAwaitIndex,yieldAndAwaitOffset}. Tag #1287
* Bug 1343481 - Part 2: Stop using StarGegerator for async function.Gaming4JC2019-12-17-3/+3
| | | | Tag #1287
* Bug 1343481 - Part 1: Remove {JSFunction,JSScript,LazyScript}.isGenerator() ↵Gaming4JC2019-12-17-13/+33
| | | | | | method. Tag #1287
* Bug 1336705 - Part 2: Add self-hosting intrinsics for resolving/rejecting ↵Gaming4JC2019-12-17-0/+108
| | | | | | Promises and adding reactions. Tag #1287
* Issue #1302 - Add self-hosted implementation for string regex .matchAllwolfbeast2019-11-26-56/+55
| | | | This resolves #1302.
* Issue #1284 - Implement /s (dotAll) for regular expressions, v2.wolfbeast2019-11-18-4/+10
| | | | Resolves #1284.
* Revert "Issue #1284 - Implement /s (dotAll) for regular expressions."wolfbeast2019-11-18-5/+2
| | | | This reverts commit f31b04a303607cd82757e7c4f60bb536658c8a30.
* Issue #1284 - Implement /s (dotAll) for regular expressions.wolfbeast2019-11-18-2/+5
| | | | Resolves #1284.
* Issue #1283 - Implement Promise.prototype.finally()André Bargull2019-11-12-0/+19
| | | | This resolves #1283.
* Merge branch 'master' into js-moduleswolfbeast2019-11-10-4746/+1280
|\ | | | | | | | | # Conflicts: # modules/libpref/init/all.js
| * Merge pull request #1262 from athenian200/solaris-workMoonchild2019-11-02-0/+12
| |\ | | | | | | Support Modern Solaris
| | * MoonchildProductions#1251 - Part 1: Restore initial Solaris support, fixed up.athenian2002019-10-21-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compared with what Pale Moon had for Solaris originally, this is mostly the same zero point I started patching from, but I've made the following changes here after reviewing all this initial code I never looked at closely before. 1. In package-manifest.in for both Basilisk and Pale Moon, I've made the SPARC code for libfreebl not interefere with the x86 code, use the proper build flags, and also updated it to allow a SPARC64 build which is more likely to be used than the 32-bit SPARC code we had there. 2. See Mozilla bug #832272 and the old rules.mk patch from around Firefox 30 in oracle/solaris-userland. I believe they screwed up NSINSTALL on Solaris when they were trying to streamline the NSS buildsystem, because they started having unexplained issues with it around that time after Firefox 22 that they never properly resolved until Mozilla began building NSS with gyp files. I'm actually not even sure how relevant the thing they broke actually is to Solaris at this point, bug 665509 is so old it predates Firefox itself and goes back to the Mozilla suite days. I believe $(INSTALL) -t was wrong, and they meant $(NSINSTALL) -t because that makes more sense and is closer to what was there originally. It's what they have for WINNT, and it's possible a fix more like that could serve for Solaris as well. Alternatively, we could get rid of all these half-broken Makefiles and start building NSS with gyp files like Mozilla did. 3. I've completely cut out support for the Sun compiler and taken into account the reality that everyone builds Firefox (and therefore its forks) with GCC now on Solaris. This alone helped clean up a lot of the uglier parts of the code. 4. I've updated all remaining SOLARIS build flags to the newer XP_SOLARIS, because the SOLARIS flag is no longer set when building Solaris. 5. I've confirmed the workaround in gtxFontconfigFonts.cpp is no longer necessary. The Solaris people got impatient about implementing a half-baked patch for a fontconfig feature that wasn't ready yet back in 2009, and somehow convinced Mozilla to patch their software to work around it when really they should have just fixed or removed their broken fontconfig patch. The feature they wanted has since been implemented properly, and no version of Solaris still uses the broken patch that required this fix. If anyone had ever properly audited this code, it would have been removed a long time ago.
| * | Issue #1257 - Part 2: Remove watch/unwatch and JS watchpoint class.wolfbeast2019-10-27-79/+60
| | |
| * | Issue #1257 - Part1: Remove watch class-hook and proxy trap.wolfbeast2019-10-26-3/+0
| |/
| * Use the correct group for JIT constraints.wolfbeast2019-09-05-7/+136
| | | | | | | | | | | | | | This fixes a rare crash/CTD in JS. This adds information about the constraints to a new RAII class so we can finish all constraints at the end. Based on changes in BZ 1568397
| * 1339395 - Part 3: Add BytecodeEmitter support for object rest and spread ↵Gaming4JC2019-07-18-0/+2
| | | | | | | | properties.
| * 1344477 - Part 2: Optimize Array.prototype.splice with JSOP_NORVCALL.Gaming4JC2019-07-18-1/+1
| |
| * 1344477 - Part 1: Add JSOP_CALL_IGNORES_RV for function call that ignores ↵Gaming4JC2019-07-18-4/+32
| | | | | | | | return value.
| * 1216630 - Print class source when calling toString on the constructor.Gaming4JC2019-07-18-5/+20
| | | | | | | | | | | | | | | | | | | | This is accomplished in the following ways. LazyScripts and JSScripts now have 4 offsets: - Source begin and end for the actual source. This is used for lazy parsing. - toString begin and end for toString. Some kinds of functions, like async, only have a different begin offset. Class constructors have different offsets for both begin and end. For syntactically present (i.e. non-default) constructors, the class source span is remembered directly on the LazyScript or JSScript. The toString implementation then splices out the substring directly. For default constructors, a new SRC_CLASS SrcNote type is added. It's binary and has as its arguments the begin and end offsets of the class expression or statement. MakeDefaultConstructor reads the note and overrides the cloned self-hosted function's source object. This is probably the least intrusive way to accomplish this.
| * Fix a thread assertion in NewCopiedArrayTryUseGroupGaming4JC2019-07-18-2/+2
| |
| * 1336783 - Part 1: Rework on reserved word and remove TokenStream::KeywordIsName.Gaming4JC2019-07-18-68/+32
| |
| * 1283712 - Part 10: Support notes in getLastWarning shell-only testing function.Gaming4JC2019-07-18-0/+1
| |
| * 1332245 - Move nsScriptError from js/xpconnect to dom/bindings.Gaming4JC2019-07-18-0/+215
| |
| * 1283712 - Part 5: Support notes in Debugger.Gaming4JC2019-07-18-0/+36
| |
| * 1339137 - Don't do Annex B lexical function behavior when redeclaring a ↵Gaming4JC2019-07-18-4/+15
| | | | | | | | parameter name in a function with parameter expressions.
| * 1320408 - Part 26: Remove Shape::set declaration.Gaming4JC2019-07-18-3/+0
| |
| * 1320408 - Part 25: Change NativeObject::toDictionaryMode to static method.Gaming4JC2019-07-18-19/+17
| |
| * 1320408 - Part 24: Change ↵Gaming4JC2019-07-18-33/+34
| | | | | | | | NativeObject::{fillInAfterSwap,replaceWithNewEquivalentShape,generateOwnShape,shadowingShapeChange} to static method.
| * 1320408 - Part 23: Change ↵Gaming4JC2019-07-18-19/+21
| | | | | | | | RegExpObject::{getShared,createShared,dumpBytecode} to static method.
| * 1320408 - Part 22: Remove JSContext* parameter from ProxyObject::renew and ↵Gaming4JC2019-07-18-1/+1
| | | | | | | | Wrapper::Renew.