( compartmentPrivateFields, moduleAliases, moduleRecord)
| 9043 | } |
| 9044 | |
| 9045 | const instantiate= ( |
| 9046 | compartmentPrivateFields, |
| 9047 | moduleAliases, |
| 9048 | moduleRecord)=> |
| 9049 | { |
| 9050 | const { compartment, moduleSpecifier, resolvedImports, staticModuleRecord}= |
| 9051 | moduleRecord; |
| 9052 | const { instances}= weakmapGet(compartmentPrivateFields, compartment); |
| 9053 | |
| 9054 | // Memoize. |
| 9055 | if( mapHas(instances, moduleSpecifier)) { |
| 9056 | return mapGet(instances, moduleSpecifier); |
| 9057 | } |
| 9058 | |
| 9059 | validateStaticModuleRecord(staticModuleRecord, moduleSpecifier); |
| 9060 | |
| 9061 | const importedInstances= new Map(); |
| 9062 | let moduleInstance; |
| 9063 | if( isPrecompiled(staticModuleRecord)) { |
| 9064 | validatePrecompiledStaticModuleRecord(staticModuleRecord, moduleSpecifier); |
| 9065 | moduleInstance= makeModuleInstance( |
| 9066 | compartmentPrivateFields, |
| 9067 | moduleAliases, |
| 9068 | moduleRecord, |
| 9069 | importedInstances); |
| 9070 | |
| 9071 | }else if( isThirdParty(staticModuleRecord)) { |
| 9072 | validateThirdPartyStaticModuleRecord(staticModuleRecord, moduleSpecifier); |
| 9073 | moduleInstance= makeThirdPartyModuleInstance( |
| 9074 | compartmentPrivateFields, |
| 9075 | staticModuleRecord, |
| 9076 | compartment, |
| 9077 | moduleAliases, |
| 9078 | moduleSpecifier, |
| 9079 | resolvedImports); |
| 9080 | |
| 9081 | }else { |
| 9082 | throw TypeError( |
| 9083 | `importHook must return a static module record, got ${q( |
| 9084 | staticModuleRecord) |
| 9085 | }`); |
| 9086 | |
| 9087 | } |
| 9088 | |
| 9089 | // Memoize. |
| 9090 | mapSet(instances, moduleSpecifier, moduleInstance); |
| 9091 | |
| 9092 | // Link dependency modules. |
| 9093 | for( const [importSpecifier, resolvedSpecifier]of entries(resolvedImports)) { |
| 9094 | const importedInstance= link( |
| 9095 | compartmentPrivateFields, |
| 9096 | moduleAliases, |
| 9097 | compartment, |
| 9098 | resolvedSpecifier); |
| 9099 | |
| 9100 | mapSet(importedInstances, importSpecifier, importedInstance); |
| 9101 | } |
| 9102 |
no test coverage detected