perf(ivy): avoid generating extra parameters for host property bindings (#31550)
Currently we reuse the same instruction both for regular property bindings and property bindings on the `host`. The only difference between the two is that when it's on the host we shouldn't support inputs. We have an optional parameter called `nativeOnly` which is used to differentiate the two, however since `nativeOnly` is preceeded by another optional parameter (`sanitizer`), we have to generate two extra parameters for each host property bindings every time (e.g. `property('someProp', 'someValue', null, true)`). These changes add a new instruction called `hostProperty` which avoids the need for the two parameters by removing `nativeOnly` which is always set and it allows us to omit `sanitizer` when it isn't being used. These changes also remove the `nativeOnly` parameter from the `updateSyntheticHostBinding` instruction, because it's only generated for host elements which means that we can assume that its value will always be `true`. PR Close #31550
This commit is contained in:
@ -441,12 +441,10 @@ describe('compiler compliance', () => {
|
||||
$r3$.ɵɵpureFunction2(5, $_c1$, ctx.getExpandedState(),
|
||||
$r3$.ɵɵpureFunction2(2, $_c0$, ctx.collapsedHeight, ctx.expandedHeight)
|
||||
)
|
||||
, null, true
|
||||
)("@expansionWidth",
|
||||
$r3$.ɵɵpureFunction2(11, $_c1$, ctx.getExpandedState(),
|
||||
$r3$.ɵɵpureFunction2(8, $_c2$, ctx.collapsedWidth, ctx.expandedWidth)
|
||||
)
|
||||
, null, true
|
||||
);
|
||||
}
|
||||
},
|
||||
|
@ -642,7 +642,7 @@ describe('compiler compliance: bindings', () => {
|
||||
$r3$.ɵɵallocHostVars(1);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("id", ctx.dirId, null, true);
|
||||
$r3$.ɵɵhostProperty("id", ctx.dirId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -689,7 +689,7 @@ describe('compiler compliance: bindings', () => {
|
||||
$r3$.ɵɵallocHostVars(3);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("id", $r3$.ɵɵpureFunction1(1, $ff$, ctx.id), null, true);
|
||||
$r3$.ɵɵhostProperty("id", $r3$.ɵɵpureFunction1(1, $ff$, ctx.id));
|
||||
}
|
||||
},
|
||||
consts: 0,
|
||||
@ -888,7 +888,7 @@ describe('compiler compliance: bindings', () => {
|
||||
hostBindings: function MyDirective_HostBindings(rf, ctx, elIndex) {
|
||||
…
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("title", ctx.myTitle, null, true)("tabindex", 1, null, true)("id", ctx.myId, null, true);
|
||||
$r3$.ɵɵhostProperty("title", ctx.myTitle)("tabindex", 1)("id", ctx.myId);
|
||||
}
|
||||
}
|
||||
`;
|
||||
@ -924,7 +924,7 @@ describe('compiler compliance: bindings', () => {
|
||||
hostBindings: function MyDirective_HostBindings(rf, ctx, elIndex) {
|
||||
…
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("tabindex", 1, null, true)("title", ctx.myTitle, null, true)("id", ctx.myId, null, true);
|
||||
$r3$.ɵɵhostProperty("tabindex", 1)("title", ctx.myTitle)("id", ctx.myId);
|
||||
}
|
||||
}
|
||||
`;
|
||||
@ -956,7 +956,7 @@ describe('compiler compliance: bindings', () => {
|
||||
hostBindings: function MyDirective_HostBindings(rf, ctx, elIndex) {
|
||||
…
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("title", "my title", null, true)("id", "my-id", null, true);
|
||||
$r3$.ɵɵhostProperty("title", "my title")("id", "my-id");
|
||||
$r3$.ɵɵattribute("tabindex", 1);
|
||||
}
|
||||
}
|
||||
@ -992,7 +992,7 @@ describe('compiler compliance: bindings', () => {
|
||||
hostBindings: function MyDirective_HostBindings(rf, ctx, elIndex) {
|
||||
…
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵupdateSyntheticHostBinding("@expand", ctx.expandedState, null, true)("@fadeOut", true, null, true)("@shrink", ctx.isSmall, null, true);
|
||||
$r3$.ɵɵupdateSyntheticHostBinding("@expand", ctx.expandedState)("@fadeOut", true)("@shrink", ctx.isSmall);
|
||||
}
|
||||
}
|
||||
`;
|
||||
@ -1095,7 +1095,7 @@ describe('compiler compliance: bindings', () => {
|
||||
hostBindings: function MyDirective_HostBindings(rf, ctx, elIndex) {
|
||||
…
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("tabindex", 1, null, true);
|
||||
$r3$.ɵɵhostProperty("tabindex", 1);
|
||||
$r3$.ɵɵattribute("title", "my title")("id", "my-id");
|
||||
}
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ describe('compiler compliance: styling', () => {
|
||||
$r3$.ɵɵcomponentHostSyntheticListener("@myAnim.start", function MyAnimDir_animation_myAnim_start_HostBindingHandler($event) { return ctx.onStart(); });
|
||||
$r3$.ɵɵcomponentHostSyntheticListener("@myAnim.done", function MyAnimDir_animation_myAnim_done_HostBindingHandler($event) { return ctx.onDone(); });
|
||||
} if (rf & 2) {
|
||||
$r3$.ɵɵupdateSyntheticHostBinding("@myAnim", ctx.myAnimState, null, true);
|
||||
$r3$.ɵɵupdateSyntheticHostBinding("@myAnim", ctx.myAnimState);
|
||||
}
|
||||
}
|
||||
…
|
||||
@ -1621,7 +1621,7 @@ describe('compiler compliance: styling', () => {
|
||||
$r3$.ɵɵstyling(null, null, $r3$.ɵɵdefaultStyleSanitizer);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("id", ctx.id, null, true)("title", ctx.title, null, true);
|
||||
$r3$.ɵɵhostProperty("id", ctx.id)("title", ctx.title);
|
||||
$r3$.ɵɵstyleMap(ctx.myStyle);
|
||||
$r3$.ɵɵclassMap(ctx.myClass);
|
||||
$r3$.ɵɵstylingApply();
|
||||
@ -1667,7 +1667,7 @@ describe('compiler compliance: styling', () => {
|
||||
$r3$.ɵɵstyling($_c0$, $_c1$);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵproperty("id", ctx.id, null, true)("title", ctx.title, null, true);
|
||||
$r3$.ɵɵhostProperty("id", ctx.id)("title", ctx.title);
|
||||
$r3$.ɵɵstyleProp(0, ctx.myWidth);
|
||||
$r3$.ɵɵclassProp(0, ctx.myFooClass);
|
||||
$r3$.ɵɵstylingApply();
|
||||
|
@ -1832,7 +1832,7 @@ runInEachFileSystem(os => {
|
||||
i0.ɵɵstyling(_c0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
i0.ɵɵproperty("prop", ctx.bar, null, true);
|
||||
i0.ɵɵhostProperty("prop", ctx.bar);
|
||||
i0.ɵɵattribute("hello", ctx.foo);
|
||||
i0.ɵɵclassProp(0, ctx.someClass);
|
||||
i0.ɵɵstylingApply();
|
||||
@ -3323,7 +3323,7 @@ runInEachFileSystem(os => {
|
||||
i0.ɵɵallocHostVars(6);
|
||||
}
|
||||
if (rf & 2) {
|
||||
i0.ɵɵproperty("href", ctx.propHref, i0.ɵɵsanitizeUrlOrResourceUrl, true)("src", ctx.propSrc, i0.ɵɵsanitizeUrlOrResourceUrl, true)("action", ctx.propAction, i0.ɵɵsanitizeUrl, true)("profile", ctx.propProfile, i0.ɵɵsanitizeResourceUrl, true)("innerHTML", ctx.propInnerHTML, i0.ɵɵsanitizeHtml, true)("title", ctx.propSafeTitle, null, true);
|
||||
i0.ɵɵhostProperty("href", ctx.propHref, i0.ɵɵsanitizeUrlOrResourceUrl)("src", ctx.propSrc, i0.ɵɵsanitizeUrlOrResourceUrl)("action", ctx.propAction, i0.ɵɵsanitizeUrl)("profile", ctx.propProfile, i0.ɵɵsanitizeResourceUrl)("innerHTML", ctx.propInnerHTML, i0.ɵɵsanitizeHtml)("title", ctx.propSafeTitle);
|
||||
}
|
||||
}
|
||||
`;
|
||||
@ -3358,7 +3358,7 @@ runInEachFileSystem(os => {
|
||||
i0.ɵɵallocHostVars(6);
|
||||
}
|
||||
if (rf & 2) {
|
||||
i0.ɵɵproperty("src", ctx.srcProp, null, true)("href", ctx.hrefProp, null, true)("title", ctx.titleProp, null, true);
|
||||
i0.ɵɵhostProperty("src", ctx.srcProp)("href", ctx.hrefProp)("title", ctx.titleProp);
|
||||
i0.ɵɵattribute("src", ctx.srcAttr)("href", ctx.hrefAttr)("title", ctx.titleAttr);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user