js: Add avoidTDZ option

Fixes #7865
This commit is contained in:
Bjørn Erik Pedersen
2020-11-03 09:05:09 +01:00
parent 85e4dd7370
commit 3b2fe3cd33
4 changed files with 24 additions and 1 deletions

View File

@@ -70,6 +70,16 @@ type Options struct {
// What to use instead of React.Fragment.
JSXFragment string
// There is/was a bug in WebKit with severe performance issue with the tracking
// of TDZ checks in JavaScriptCore.
//
// Enabling this flag removes the TDZ and `const` assignment checks and
// may improve performance of larger JS codebases until the WebKit fix
// is in widespread use.
//
// See https://bugs.webkit.org/show_bug.cgi?id=199866
AvoidTDZ bool
mediaType media.Type
outDir string
contents string
@@ -339,6 +349,8 @@ func toBuildOptions(opts Options) (buildOptions api.BuildOptions, err error) {
JSXFactory: opts.JSXFactory,
JSXFragment: opts.JSXFragment,
AvoidTDZ: opts.AvoidTDZ,
Tsconfig: opts.tsConfig,
Stdin: &api.StdinOptions{

View File

@@ -54,7 +54,12 @@ func TestToBuildOptions(t *testing.T) {
})
opts, err = toBuildOptions(Options{
Target: "es2018", Format: "cjs", Minify: true, mediaType: media.JavascriptType})
Target: "es2018",
Format: "cjs",
Minify: true,
mediaType: media.JavascriptType,
AvoidTDZ: true,
})
c.Assert(err, qt.IsNil)
c.Assert(opts, qt.DeepEquals, api.BuildOptions{
Bundle: true,
@@ -63,6 +68,7 @@ func TestToBuildOptions(t *testing.T) {
MinifyIdentifiers: true,
MinifySyntax: true,
MinifyWhitespace: true,
AvoidTDZ: true,
Stdin: &api.StdinOptions{
Loader: api.LoaderJS,
},