diff --git a/runtime/ecma_class_linker_extension.cpp b/runtime/ecma_class_linker_extension.cpp index 90f48961227fe982d48948a3006d1df6841cb3e7..1865987919f5cb311770df7d2c6b279abd690306 100644 --- a/runtime/ecma_class_linker_extension.cpp +++ b/runtime/ecma_class_linker_extension.cpp @@ -61,12 +61,13 @@ void EcmaClassLinkerExtension::InitClasses(EcmaVM *vm) Runtime::GetCurrent()->GetClassLinker()->AddClassRoot(ClassRoot::OBJECT, objClass); } -ClassLinkerContext *EcmaClassLinkerExtension::CreateApplicationClassLinkerContext(const PandaVector &path) +ClassLinkerContext *EcmaClassLinkerExtension::CreateApplicationClassLinkerContext(const PandaVector &path, + std::string_view archiveFilename) { PandaVector appFiles; appFiles.reserve(path.size()); for (auto &p : path) { - auto pf = panda_file::OpenPandaFileOrZip(p, panda_file::File::READ_WRITE); + auto pf = panda_file::OpenPandaFileOrZip(p, archiveFilename, panda_file::File::READ_WRITE); if (pf == nullptr) { return nullptr; } diff --git a/runtime/ecma_class_linker_extension.h b/runtime/ecma_class_linker_extension.h index c9f6eab9b2b93bb164c1af9fdf45182ea58915a4..b7e590b93b2f21e86fccb479133f059ee0b2ec48 100644 --- a/runtime/ecma_class_linker_extension.h +++ b/runtime/ecma_class_linker_extension.h @@ -42,7 +42,8 @@ public: void InitClasses(EcmaVM *vm); - ClassLinkerContext *CreateApplicationClassLinkerContext(const PandaVector &path) override; + ClassLinkerContext *CreateApplicationClassLinkerContext(const PandaVector &path, + std::string_view archiveFilename) override; bool CanThrowException([[maybe_unused]] const Method *method) const override { diff --git a/runtime/ecma_vm.cpp b/runtime/ecma_vm.cpp index f2a5098ffedccd43ce0532d78ee8f0255e981420..8646795f723eba121663c674905b25b7ee47c1e4 100644 --- a/runtime/ecma_vm.cpp +++ b/runtime/ecma_vm.cpp @@ -451,7 +451,7 @@ bool EcmaVM::ExecuteFromPf(std::string_view filename, std::string_view entryPoin { std::unique_ptr pf; if (frameworkPandaFile_ == nullptr || !IsFrameworkPandaFile(filename)) { - pf = panda_file::OpenPandaFileOrZip(filename, panda_file::File::READ_WRITE); + pf = panda_file::OpenPandaFileOrZip(filename, options_.GetArchiveFilename(), panda_file::File::READ_WRITE); if (pf == nullptr) { return false; }