Commit Graph
44 Commits
Author SHA1 Message Date
Basilisk-Dev 19504eed91 Issue #2229 - add better comments on top level await code 2026-02-10 14:59:26 -05:00
Basilisk-Dev 7c72b41e2c Issue #2229 - Initial implementation of top level await functionality 2026-02-10 14:59:04 -05:00
Brian Smith 65d318f307 Issue #2387 - Collection of fixes related to a crash while canceling a dynamic import.
Add AddRef/Release hooks for embedding's script or module private value and set this script source object where appropriate.
https://bugzilla.mozilla.org/show_bug.cgi?id=1519140 Partial, no Value passing changes.
Clear the list of dynamic import requests after cancelling them in ScriptLoader::ParsingComplete as we do for other requests.
https://bugzilla.mozilla.org/show_bug.cgi?id=1291535
ScriptLoader::OnStreamComplete never returns a failure.
https://bugzilla.mozilla.org/show_bug.cgi?id=1627275
Also cancel the correct kind of parser for Modules.
2023-11-27 23:30:25 -06:00
FranklinDM e381dd84c2 Issue #2234 - Part 2: Ensure that the created async function wrapper is valid
This excludes the GC-related changes (cell pointer asserts) since we don't have them. This bug should be revisited if we'd ever plan on porting those asserts over.

Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1402649
2023-05-07 01:01:22 +08:00
FranklinDM 4b516daf13 Issue #2234 - Part 1: Create async function wrapper when instantiating module functions
This excludes the change that removes "excessive" rooting from the Lambda* methods in Interpreter.cpp.

Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1382306
2023-05-07 01:01:21 +08:00
Job Bautista 9baae9a47e Issue #1691 - Follow-up: Fix CallSelfHostedFunction deprot introduced by Part 4. 2023-04-30 21:11:01 +08:00
Brian Smith c961285752 Issue #1691 - Part 6e: Fix problems due to divergent codebases. This gets basic dynamic import working.
Fix a problem in Part 5b where Mozilla used toGCThing() and we don't.
Fix a problem in Part 4 where runtime() returns nullptr in our codebase since it runs on JS Helper thread.
We need to get the runtime via runtimeFromAnyThread() instead.

(cherry picked from commit dddb46225bbd1adff11f635e32934aee36923e47)
2023-04-27 13:34:05 -05:00
Brian Smith 1a4146cead Issue #1691 - Part 5b: Stop modules from entraining the top-level JSScript.
https://bugzilla.mozilla.org/show_bug.cgi?id=1489477

(cherry picked from commit 6ce0af856186e65fb4987daf4e06dc68fb3f7483)
2023-04-27 13:33:17 -05:00
Brian Smith 130d9f4d91 Issue #1691 - Part 4: Finish implementing call import.
https://bugzilla.mozilla.org/show_bug.cgi?id=1499140

(cherry picked from commit 7bf7d64887944b127a72090dd62eb57f67c5089d)
2023-04-27 13:33:00 -05:00
Brian Smith 6eecfad57c Issue #1691 - Part 3: Finish implementing import meta.
https://bugzilla.mozilla.org/show_bug.cgi?id=1427610

(cherry picked from commit a8625238ac846fb7eb103646ddb8634a5860f067)
2023-04-27 13:32:52 -05:00
Brian Smith 7223fb518d Issue #1691 - Part 1: Provide a way of associating a private value with a script
or module.

This is a prerequisite for dynamic import

(cherry picked from commit 2e2972647ee29340df51a804f05e40fc1da2c89b)
2023-04-27 13:28:56 -05:00
Martok 0c7e7591b7 Issue #2173 - Separate CodeNode into FunctionNode and ModuleNode
ModuleNode only has a body and FunctionNode has many more attributes,
and will get more in the following commit.

Based-on: 1518391/2
2023-04-03 16:50:24 +02:00
Martok 88f7cba9c9 Issue #2173 - Add accessors to NameNode, CodeNode, RegExpLiteral, and add NumericLiteral
Based-on: m-c 1479659/{5,9,10}, m-c 1491147
2023-04-03 16:50:23 +02:00
Martok 6cea01f811 Issue #2173 - Add accessors to UnaryNode and subclasses
Based-on: m-c 1479659/4
2023-04-03 16:50:22 +02:00
Martok 0fdd23e0b4 Issue #2173 - Add accessors to BinaryNode and subclasses
Based-on: m-c 1479659/3
2023-04-03 16:50:22 +02:00
Martok cc14ee0148 Issue #2173 - Add accessors to ListNode
Based-on: m-c 1479659/{1,12}
2023-04-03 16:50:22 +02:00
Martok 3481496454 Issue #2173 - Fix exporting array and object binding patterns
Examples:
  export const [name1, name2] = [1, 2];
  export var {...name} = get;

Based-on: m-c 1446811, m-c 1462286
2023-04-03 15:33:21 +02:00
Moonchild 060e3eb0c8 Revert "Issue #1691 - Part 1: Provide a way of associating a private value with a script"
This reverts commit 15914ec578.
2020-11-28 10:18:10 +00:00
Moonchild 15914ec578 Issue #1691 - Part 1: Provide a way of associating a private value with a script
or module.

This is a prerequisite for dynamic import
2020-11-27 15:47:49 +00:00
Moonchild 0c3bd2b10a Issue #1656 - Part 7: Nuke vim config lines in JS 2020-09-24 07:23:04 +00:00
Gaming4JC 609815070b Issue #618 - Lazily initialise module binding maps - Debug follow up
The added debug assertion does not work due to missing API.
They were added in BZ 1337491, 1395366, and others, but were primarily used for multi-threading.
This uses our existing non-multithreaded syntax instead, resolving a `no member named` build error.
2020-08-03 14:37:41 -04:00
Moonchild e94f9dcced Issue #618 - Lazily initialise module binding maps
Make it so they are not allocated on a background thread in a different zone to
the final module.

Ref: BZ 1372258
2020-07-08 14:53:31 +00:00
Moonchild 6e72707e0b Issue #618 - Use a single slot for the module's environment object.
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.
2020-07-08 14:12:57 +00:00
Moonchild 43e0632cd4 Issue #618 - Align error handling for module scripts with the spec (again)
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
2020-07-08 12:58:30 +00:00
Moonchild e378530bca Issue #618 - Fix typo and remove old function declarations. 2020-07-07 12:27:02 +00:00
Moonchild 2dff89b658 Issue #618 - Report source position information (line/column)
Report source position information for module export resolution failures.

Ref: BZ 1362098
2020-07-04 23:12:13 +00:00
Moonchild 61a471ef17 Issue #618 - Align module instantiation/errors with the updated spec.
Store and re-throw module instantiation and evaluation errors.
Ref: BZ 1374239, 1394492
2020-07-03 13:56:49 +00:00
wolfbeast dd57b9273c Revert #1137 - Remove unboxed arrays
- accounting for removal of watch()/unwatch()
- updated for intermediate code changes.
2020-02-23 14:41:40 +01:00
wolfbeast 974a481d12 Merge branch 'master' into js-modules
# Conflicts:
#	modules/libpref/init/all.js
2019-11-10 11:39:27 +01:00
Gaming4JC 31c0c2f9cc 1320408 - Part 19: Remove JSContext* parameter from ModuleObject::fixEnvironmentsAfterCompartmentMerge. 2019-07-18 22:38:27 -04:00
Gaming4JC 3a5176f4b2 1320408 - Part 14: Change some GlobalObject methods to static method. 2019-07-18 22:38:25 -04:00
wolfbeast c2b5f396eb Remove UnboxedArray code part 1 2019-05-23 02:48:13 +00:00
janekptacijarabaci 8af513a207 Bug 1341411 - Support circular module dependencies through export* per ES2017 2018-04-14 09:00:53 +02:00
janekptacijarabaci c60cefb1b0 Bug 1339986 - Handle export* when checking for duplicate export 2018-04-14 08:59:22 +02:00
janekptacijarabaci 3bd16c9080 Bug 1341256 - Fix module namespace object get handler 2018-04-14 08:57:05 +02:00
janekptacijarabaci 05505d2e83 Bug 1340268 - [[HasProperty]] on module namespace object should work even when binding is uninitialized 2018-04-14 08:56:17 +02:00
janekptacijarabaci 6452e3c978 Bug 1326453 - Part 4: Return @@toStringTag in [[OwnPropertyKeys]] trap for module namespace objects 2018-04-14 08:52:37 +02:00
janekptacijarabaci e2719e1dbf Bug 1326453 - Part 3: Don't throw a TypeError when SetPrototypeOf for module namespace objects is called with null 2018-04-14 08:51:05 +02:00
janekptacijarabaci a7f7a22319 Bug 1326453 - Part 2: Change @@toStringTag for module namespace objects to non-configurable 2018-04-14 08:50:17 +02:00
janekptacijarabaci b2ec36808a Bug 1326453 - Part 1: Remove @@iterator method from module namespace objects per ES2017 2018-04-14 08:49:15 +02:00
janekptacijarabaci 87e4f43be0 Bug 1320993 - Fix exporting default class expression 2018-04-14 08:40:37 +02:00
trav90 0433d6e7d1 Fix incorrect assertions in js/src/builtin/
Prevents GCC 7 build warning spam.
2018-04-06 13:29:27 -05:00
janekptacijarabaci 5ef44cf648 Part 1: Implement ES6 function name property semantics
Issue #78
2018-03-19 15:47:10 +01:00
Matt A. Tobin 5f8de423f1 Add m-esr52 at 52.6.0 2018-02-02 04:16:08 -05:00