From 2c61d70fcb9d83f1d38158a3694e0e4935c59479 Mon Sep 17 00:00:00 2001 From: Kris Selden Date: Sat, 21 Apr 2018 17:27:20 -0700 Subject: [PATCH 1/3] we don't need to build a composite key, the layout and component are stable and can be used as the key --- packages/ember-glimmer/lib/resolver.ts | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/packages/ember-glimmer/lib/resolver.ts b/packages/ember-glimmer/lib/resolver.ts index dbf5827836c..165b30f7b1a 100644 --- a/packages/ember-glimmer/lib/resolver.ts +++ b/packages/ember-glimmer/lib/resolver.ts @@ -9,10 +9,9 @@ import { } from '@glimmer/interfaces'; import { LazyCompiler, Macros, PartialDefinition } from '@glimmer/opcode-compiler'; import { ComponentManager, getDynamicVar, Helper, ModifierManager } from '@glimmer/runtime'; -import { FACTORY_FOR, privatize as P } from 'container'; +import { privatize as P } from 'container'; import { ENV } from 'ember-environment'; import { LookupOptions, Owner, setOwner } from 'ember-owner'; -import { guidFor } from 'ember-utils'; import { lookupComponent, lookupPartial, OwnedTemplateMeta } from 'ember-views'; import CompileTimeLookup from './compile-time-lookup'; import { CurlyComponentDefinition } from './component-managers/curly'; @@ -56,15 +55,6 @@ function makeOptions(moduleName: string, namespace?: string): LookupOptions { }; } -// returns the qualified / expanded name -// which accounts for local lookup... -function getNormalizedName(obj: any) { - let factoryManager = FACTORY_FOR.get(obj); - if (factoryManager) { - return factoryManager.normalizedName; - } -} - const BUILTINS_HELPERS = { if: inlineIf, action, @@ -110,7 +100,7 @@ export default class RuntimeResolver implements IRuntimeResolver> = new WeakMap(); - private componentDefinitionCache: Map = new Map(); + private componentDefinitionCache: Map = new Map(); public templateCacheHits = 0; public templateCacheMisses = 0; @@ -316,17 +306,14 @@ export default class RuntimeResolver implements IRuntimeResolver Date: Sun, 22 Apr 2018 14:35:17 -0700 Subject: [PATCH 2/3] Fix cache --- packages/ember-glimmer/lib/resolver.ts | 16 ++++--- packages/ember-views/index.d.ts | 4 +- .../ember-views/lib/utils/lookup-component.js | 42 +++++++------------ 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/packages/ember-glimmer/lib/resolver.ts b/packages/ember-glimmer/lib/resolver.ts index 165b30f7b1a..3d14d9266bb 100644 --- a/packages/ember-glimmer/lib/resolver.ts +++ b/packages/ember-glimmer/lib/resolver.ts @@ -99,7 +99,7 @@ export default class RuntimeResolver implements IRuntimeResolver> = new WeakMap(); + private templateCache: Map> = new Map(); private componentDefinitionCache: Map = new Map(); public templateCacheHits = 0; @@ -306,14 +306,20 @@ export default class RuntimeResolver implements IRuntimeResolver; - component: Factory; + layout: Template | undefined; + component: Factory | undefined; }; export function lookupPartial(templateName: string, owner: Owner): any; diff --git a/packages/ember-views/lib/utils/lookup-component.js b/packages/ember-views/lib/utils/lookup-component.js index 67d5042ad44..e530999ea24 100644 --- a/packages/ember-views/lib/utils/lookup-component.js +++ b/packages/ember-views/lib/utils/lookup-component.js @@ -1,5 +1,3 @@ -import { privatize as P } from 'container'; -import { ENV } from 'ember-environment'; import { EMBER_MODULE_UNIFICATION } from '@ember/canary-features'; function lookupModuleUnificationComponentPair(componentLookup, owner, name, options) { @@ -9,32 +7,26 @@ function lookupModuleUnificationComponentPair(componentLookup, owner, name, opti let globalComponent = componentLookup.componentFor(name, owner); let globalLayout = componentLookup.layoutFor(name, owner); - let localAndUniqueComponent = - !!localComponent && (!globalComponent || localComponent.class !== globalComponent.class); - let localAndUniqueLayout = - !!localLayout && - (!globalLayout || localLayout.referrer.moduleName !== globalLayout.referrer.moduleName); - - if (localAndUniqueComponent && localAndUniqueLayout) { - return { layout: localLayout, component: localComponent }; - } - - if (localAndUniqueComponent && !localAndUniqueLayout) { - return { layout: null, component: localComponent }; + // TODO: we shouldn't have to recheck fallback, we should have a lookup that doesn't fallback + if (localComponent !== undefined) { + if (globalComponent !== undefined && globalComponent.class === localComponent.class) { + localComponent = undefined; + } } - - let defaultComponentFactory = null; - - if (!ENV._TEMPLATE_ONLY_GLIMMER_COMPONENTS) { - defaultComponentFactory = owner.factoryFor(P`component:-default`); + if (localLayout !== undefined) { + if ( + globalLayout !== undefined && + localLayout.referrer.moduleName !== globalLayout.referrer.moduleName + ) { + localLayout = undefined; + } } - if (!localAndUniqueComponent && localAndUniqueLayout) { - return { layout: localLayout, component: defaultComponentFactory }; + if (localLayout !== undefined || localComponent !== undefined) { + return { layout: localLayout, component: localComponent }; } - let component = globalComponent || (globalLayout && defaultComponentFactory); - return { layout: globalLayout, component }; + return { layout: globalLayout, component: globalComponent }; } function lookupComponentPair(componentLookup, owner, name, options) { @@ -47,10 +39,6 @@ function lookupComponentPair(componentLookup, owner, name, options) { let result = { layout, component }; - if (!ENV._TEMPLATE_ONLY_GLIMMER_COMPONENTS && layout && !component) { - result.component = owner.factoryFor(P`component:-default`); - } - return result; } From b0ad54e8ea56184d2b29d97fa96eba0d82f72beb Mon Sep 17 00:00:00 2001 From: Kris Selden Date: Sun, 22 Apr 2018 15:45:50 -0700 Subject: [PATCH 3/3] fix, weakmap is pointless since we don't unload compiled templates. --- packages/ember-glimmer/lib/resolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ember-glimmer/lib/resolver.ts b/packages/ember-glimmer/lib/resolver.ts index 3d14d9266bb..c69931cafe9 100644 --- a/packages/ember-glimmer/lib/resolver.ts +++ b/packages/ember-glimmer/lib/resolver.ts @@ -189,7 +189,7 @@ export default class RuntimeResolver implements IRuntimeResolver