From ba055daed8ce18ab0b3d5feddf8d3974652593a3 Mon Sep 17 00:00:00 2001 From: Yoshi Cheng-Hao Huang Date: Mon, 18 Mar 2024 14:04:14 +0000 Subject: [PATCH] Bug 1873610 - Part 1: Add ModuleObject::filename(). r=jonco Differential Revision: https://phabricator.services.mozilla.com/D204862 --- js/src/builtin/ModuleObject.cpp | 11 +++++++++++ js/src/builtin/ModuleObject.h | 1 + 2 files changed, 12 insertions(+) diff --git a/js/src/builtin/ModuleObject.cpp b/js/src/builtin/ModuleObject.cpp index b9db9bf02d9d..0365f744a629 100644 --- a/js/src/builtin/ModuleObject.cpp +++ b/js/src/builtin/ModuleObject.cpp @@ -1109,6 +1109,17 @@ JSScript* ModuleObject::script() const { return ptr; } +const char* ModuleObject::filename() const { + // The ScriptSlot will be cleared once the module is evaluated, so we try to + // get the filename from cyclicModuleFields(). + + // TODO: Bug 1885483: Provide filename for JSON modules + if (!hasCyclicModuleFields()) { + return "(JSON module)"; + } + return cyclicModuleFields()->scriptSourceObject->source()->filename(); +} + static inline void AssertValidModuleStatus(ModuleStatus status) { MOZ_ASSERT(status >= ModuleStatus::Unlinked && status <= ModuleStatus::Evaluated_Error); diff --git a/js/src/builtin/ModuleObject.h b/js/src/builtin/ModuleObject.h index d39d65b18c5c..cb74d67c40f3 100644 --- a/js/src/builtin/ModuleObject.h +++ b/js/src/builtin/ModuleObject.h @@ -360,6 +360,7 @@ class ModuleObject : public NativeObject { JSScript* maybeScript() const; JSScript* script() const; + const char* filename() const; ModuleEnvironmentObject& initialEnvironment() const; ModuleEnvironmentObject* environment() const; ModuleNamespaceObject* namespace_();