aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 00:54:03 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 00:54:03 -0700
commite624dd6d4dec1c717d2edfa49558c2a9fc0ef8fe (patch)
tree25579e57a8583fbff007221523c0d46642a94e2d
parented2f24e4096b247e50138b134a464ec0269646cd (diff)
downloadbun-e624dd6d4dec1c717d2edfa49558c2a9fc0ef8fe.tar.gz
bun-e624dd6d4dec1c717d2edfa49558c2a9fc0ef8fe.tar.zst
bun-e624dd6d4dec1c717d2edfa49558c2a9fc0ef8fe.zip
Deoptimize CJS more
-rw-r--r--src/js_parser.zig14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig
index 2ee274e92..496e7116e 100644
--- a/src/js_parser.zig
+++ b/src/js_parser.zig
@@ -3265,11 +3265,16 @@ pub const Parser = struct {
// Analyze cross-part dependencies for tree shaking and code splitting
var exports_kind = js_ast.ExportsKind.none;
- const uses_exports_ref = p.symbols.items[p.exports_ref.innerIndex()].use_count_estimate > 0;
+ const exports_ref_usage_count = p.symbols.items[p.exports_ref.innerIndex()].use_count_estimate;
+ const uses_exports_ref = exports_ref_usage_count > 0;
const uses_module_ref = p.symbols.items[p.module_ref.innerIndex()].use_count_estimate > 0;
var wrapper_expr: ?Expr = null;
+ if (uses_exports_ref and p.commonjs_named_exports.count() > 0) {
+ p.deoptimizeCommonJSNamedExports();
+ }
+
if (p.commonjs_named_exports_deoptimized and p.commonjs_named_exports.count() > 0) {
exports_kind = .cjs;
} else if (p.esm_export_keyword.len > 0 or p.top_level_await_keyword.len > 0) {
@@ -15779,13 +15784,6 @@ fn NewParser_(
target.data.e_array.items.ptr[0].canBeInlinedFromPropertyAccess())
{
return target.data.e_array.items.ptr[0];
- } else if (FeatureFlags.unwrap_commonjs_to_esm and
- // If you're accessing the exports object in a way that is not statically analyzable
- // We must deoptimize
- target.data == .e_identifier and
- target.data.e_identifier.ref.eql(p.exports_ref))
- {
- p.deoptimizeCommonJSNamedExports();
}
// Create an error for assigning to an import namespace when bundling. Even
// though this is a run-time error, we make it a compile-time error when