Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues #816 / #802 - SpiderMonkey Tuneup #1192

Merged
merged 118 commits into from Jul 20, 2019
Merged

Issues #816 / #802 - SpiderMonkey Tuneup #1192

merged 118 commits into from Jul 20, 2019

Conversation

@g4jc
Copy link
Contributor

@g4jc g4jc commented Jul 19, 2019

This is a large patch that rewrites the Parser and implements #816 (ES2019 Stringification) and #802 (Rest/Spread for Template Literals) in the Spider Monkey JavaScript engine.

g4jc added 30 commits Jun 8, 2019
…scapes.
… match "await SOMETHING" outside async function.
… out of Parser::functionStmt into Parser::consequentOrAlternative.
…children of if/else.
… Function constructor.
…ctionBox.
…'caller' on any of the new function types.
…s identical between syntax parsing and full parsing.
…urrent offset.
…fset.
…racedUnicode and make its signature fallible.
…integral number of chars to skip.
…ing EOF isn't yet hit and that newlines aren't skipped, if appropriate.
… it fails only when an underlying Vector::append fails, and that vector handles OOM reporting itself.
…liant.
… a parameter name.
…teral Restriction" ECMAScript proposal
…ay shapes.
Specifically, three changes:
1) valueOf should be non-enumerable.
2) valueOf should be === to Object.prototype.valueOf.
3) There should be no toJSON.
…esolvedLength to static method.
…ndFunctionArgument.
g4jc and others added 20 commits Jul 14, 2019
…ce error in object literal.
…racket error in array literal.
…literal parsing.
… longer needed.
…ores return value.
…ay literals.
…rties.
…ead properties.
…properties.
…ties are a thing.
…h are indices from frontend.
… in async function context.
This was a small mistake when converting from the `hasOwn()` function format (swapped parameters). Fixing this properly makes rest parameters exclude the parameters that are defined (which is the whole point of `...rest`
Fix order of OwnProperty check for rest parameters.
@g4jc
Copy link
Contributor Author

@g4jc g4jc commented Jul 19, 2019

Audit and reviews welcome. This is a large patch that fundamentally alters the javascript engine so we will need some aggressive testing on all applications and platforms.

While these are backports, there are several key differences:

  • We do not implement uneeded multi-threading. SpiderMonkey remains Single-Threaded. (Exclusivecontext)
  • We do not implement DOM Promise Changes, using existing UXP code instead. (promise->foo)
  • We do not implement CharT changes (<CharT>)
  • We do not implement IonMonkey changes for hasOwn, using OwnProperty check from existing codebase instead.

The logic behind these patches and their dependency tree was logged here:
https://ethercalc.org/vye88tn5c4en

If anyone needs assistance setting up a debug build I have other patches available which were not included in this push.

@mattatobin
Copy link
Member

@mattatobin mattatobin commented Jul 20, 2019

Could you please report how binoc-central or your own Hyperbola applications responds to this specifically mailnews?

@wolfbeast
Copy link
Member

@wolfbeast wolfbeast commented Jul 20, 2019

As additional background to this thread I have followed the patch progress, various re-bases and reworks of this code as WIP, and have kept a close eye on code in progress through private communication. Obviously, this needs investigation and extensive testing, but I would rather merge this in sooner rather than later to prevent any issues with code changes surrounding this, breaking the merge.

I suggest:
@adeshkp , @wicknix @mattatobin and myself make builds of this branch (in whatever UXP applications we want to focus on), check for obvious building/stability issues and report here if anything to report within the next 2 days. If good, bump the platform version, merge, toss it to the sharks on the unstable channel, and go from there.

@mattatobin
Copy link
Member

@mattatobin mattatobin commented Jul 20, 2019

General Javascript functionality and stability testing on Windows has gone very well for BinOC applications thus far.

@adeshkp or @wicknix could you provide me with a Macintosh build as soon as possible for the same testing?

@mattatobin
Copy link
Member

@mattatobin mattatobin commented Jul 20, 2019

The comm code paths and macintosh seem fully operational and stable, as does Windows. I am impressed and ecstatic. I think this is good to go to trunk and be shipped out on unstable!

Good work @g4jc!


@wolfbeast Platform bump and clobber just to be safe.

@wicknix
Copy link
Contributor

@wicknix wicknix commented Jul 20, 2019

Guess i'm 10 minutes late to the party. Just built uxp-816 and added the menu bar name space commit to this build. No issues to report. Can grab from here to test if need be.
[LINK REMOVED - Thanks]

@wolfbeast
Copy link
Member

@wolfbeast wolfbeast commented Jul 20, 2019

Awesome. Considering this good to throw to the sharks!

@wolfbeast wolfbeast merged commit 779ef30 into MoonchildProductions:master Jul 20, 2019
@adeshkp
Copy link
Contributor

@adeshkp adeshkp commented Jul 21, 2019

Very cool job pulled off by @g4jc
Great! 👏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants