Skip to content

Commit df1d3fb

Browse files
mheveryjasonaden
authored andcommitted
perf(ivy): minor cleanup; prevent sparse arrays (angular#30495)
PR Close angular#30495
1 parent e946594 commit df1d3fb

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

packages/core/src/render3/instructions/listener.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import {assertDataInRange} from '../../util/assert';
1111
import {isObservable} from '../../util/lang';
12+
import {EMPTY_OBJ} from '../empty';
1213
import {PropertyAliasValue, TNode, TNodeFlags, TNodeType} from '../interfaces/node';
1314
import {GlobalTargetResolver, RElement, Renderer3, isProceduralRenderer} from '../interfaces/renderer';
1415
import {CLEANUP, FLAGS, LView, LViewFlags, RENDERER, TVIEW} from '../interfaces/view';
@@ -115,7 +116,7 @@ function listenerInternal(
115116
// add native event listener - applicable to elements only
116117
if (tNode.type === TNodeType.Element) {
117118
const native = getNativeByTNode(tNode, lView) as RElement;
118-
const resolved = eventTargetResolver ? eventTargetResolver(native) : {} as any;
119+
const resolved = eventTargetResolver ? eventTargetResolver(native) : EMPTY_OBJ as any;
119120
const target = resolved.target || native;
120121
const renderer = loadRendererFn ? loadRendererFn(tNode, lView) : lView[RENDERER];
121122
const lCleanup = getCleanup(lView);

packages/core/src/render3/instructions/shared.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,10 @@ function setInputsFromAttrs<T>(
13221322
function generateInitialInputs(
13231323
directiveIndex: number, inputs: {[key: string]: string}, tNode: TNode): InitialInputData {
13241324
const initialInputData: InitialInputData = tNode.initialInputs || (tNode.initialInputs = []);
1325-
initialInputData[directiveIndex] = null;
1325+
// Ensure that we don't create sparse arrays
1326+
for (let i = initialInputData.length; i <= directiveIndex; i++) {
1327+
initialInputData.push(null);
1328+
}
13261329

13271330
const attrs = tNode.attrs !;
13281331
let i = 0;

packages/core/src/render3/query.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -330,10 +330,9 @@ function add(
330330

331331
function addMatch(query: LQuery<any>, matchingValue: any, insertBeforeViewMatches: boolean): void {
332332
// Views created in constructors may have their container values created too early. In this case,
333-
// ensure template node results are spliced before container results. Otherwise, results inside
333+
// ensure template node results are unshifted before container results. Otherwise, results inside
334334
// embedded views will appear before results on parent template nodes when flattened.
335-
insertBeforeViewMatches ? query.values.splice(-1, 0, matchingValue) :
336-
query.values.push(matchingValue);
335+
insertBeforeViewMatches ? query.values.unshift(matchingValue) : query.values.push(matchingValue);
337336
query.list.setDirty();
338337
}
339338

0 commit comments

Comments
 (0)