2017-11-18 15:26:33 -05:00
{
2018-01-05 19:15:14 -05:00
"cli-hello-world" : {
"master" : {
"uncompressed" : {
2019-10-15 09:42:31 -04:00
"runtime-es2015" : 1485 ,
fix(core): ngOnDestroy on multi providers called with incorrect context (#35840)
Currently destroy hooks are stored in memory as `[1, hook, 5, hook]` where
the numbers represent the index at which to find the context and `hook` is
the function to be invoked. This breaks down for `multi` providers,
because the value at the index will be an array of providers, resulting in
the hook being invoked with an array of all the multi provider values,
rather than the provider that was destroyed. In ViewEngine `ngOnDestroy`
wasn't being called for `multi` providers at all.
These changes fix the issue by changing the structure of the destroy hooks to `[1, hook, 5, [0, hook, 3, hook]]` where the indexes inside the inner array point to the provider inside of the multi provider array. Note that this is slightly different from the original design which called for the structure to be `[1, hook, 5, [hook, hook]`, because in the process of implementing it, I realized that we wouldn't get passing the correct context if only some of the `multi` providers have `ngOnDestroy` and others don't.
I've run the newly-added `view_destroy_hooks` benchmark against these changes and compared it to master. The difference seems to be insignificant (between 1% and 2% slower).
Fixes #35231.
PR Close #35840
2020-03-03 15:05:26 -05:00
"main-es2015" : 142073 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 36657
2018-01-05 19:15:14 -05:00
}
}
} ,
2019-01-28 10:04:38 -05:00
"cli-hello-world-ivy-minimal" : {
"master" : {
"uncompressed" : {
2019-10-16 08:37:18 -04:00
"runtime-es2015" : 1485 ,
2020-02-05 00:41:49 -05:00
"main-es2015" : 16514 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 36657
2019-01-28 10:04:38 -05:00
}
}
} ,
2019-01-28 09:54:34 -05:00
"cli-hello-world-ivy-compat" : {
2018-12-21 13:00:16 -05:00
"master" : {
"uncompressed" : {
2019-10-15 10:56:47 -04:00
"runtime-es2015" : 1485 ,
fix(core): ngOnDestroy on multi providers called with incorrect context (#35840)
Currently destroy hooks are stored in memory as `[1, hook, 5, hook]` where
the numbers represent the index at which to find the context and `hook` is
the function to be invoked. This breaks down for `multi` providers,
because the value at the index will be an array of providers, resulting in
the hook being invoked with an array of all the multi provider values,
rather than the provider that was destroyed. In ViewEngine `ngOnDestroy`
wasn't being called for `multi` providers at all.
These changes fix the issue by changing the structure of the destroy hooks to `[1, hook, 5, [0, hook, 3, hook]]` where the indexes inside the inner array point to the provider inside of the multi provider array. Note that this is slightly different from the original design which called for the structure to be `[1, hook, 5, [hook, hook]`, because in the process of implementing it, I realized that we wouldn't get passing the correct context if only some of the `multi` providers have `ngOnDestroy` and others don't.
I've run the newly-added `view_destroy_hooks` benchmark against these changes and compared it to master. The difference seems to be insignificant (between 1% and 2% slower).
Fixes #35231.
PR Close #35840
2020-03-03 15:05:26 -05:00
"main-es2015" : 148196 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 36657
2018-12-21 13:00:16 -05:00
}
}
} ,
2019-08-12 15:52:58 -04:00
"cli-hello-world-ivy-i18n" : {
"master" : {
"uncompressed" : {
2019-10-02 07:28:23 -04:00
"runtime-es2015" : 1485 ,
2020-04-20 14:49:08 -04:00
"main-es2015" : 137897 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 37334
2019-08-12 15:52:58 -04:00
}
}
} ,
2019-10-02 08:09:42 -04:00
"cli-hello-world-lazy" : {
"master" : {
"uncompressed" : {
"runtime-es2015" : 2289 ,
2020-03-24 13:20:28 -04:00
"main-es2015" : 247727 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 36657 ,
2019-10-21 13:03:27 -04:00
"5-es2015" : 751
2019-10-02 08:09:42 -04:00
}
}
} ,
2019-10-15 10:15:19 -04:00
"cli-hello-world-lazy-rollup" : {
"master" : {
"uncompressed" : {
"runtime-es2015" : 2289 ,
2020-04-20 14:49:08 -04:00
"main-es2015" : 227258 ,
2020-02-21 17:16:34 -05:00
"polyfills-es2015" : 36657 ,
2019-10-21 13:03:27 -04:00
"5-es2015" : 779
2019-10-15 10:15:19 -04:00
}
}
} ,
2018-01-05 19:15:14 -05:00
"hello_world__closure" : {
"master" : {
" u n c o m p r e s s e d " : {
2018-04-04 13:56:02 -04:00
"bundle" : "TODO(i): temporarily increase the payload size limit from 105779 - this is due to a closure issue related to ESM reexports that still needs to be investigated" ,
2019-08-15 09:14:25 -04:00
"bundle" : "TODO(i): we should define ngDevMode to false in Closure, but --define only works in the global scope." ,
2020-02-21 19:20:16 -05:00
"bundle" : 170618
2018-01-05 19:15:14 -05:00
}
}
}
2020-03-06 19:33:09 -05:00
}