Skip to content

Commit

Permalink
Reorder switch-cases in publishUpdates
Browse files Browse the repository at this point in the history
JS is unlikely to have jump tables so we should try to bail out early for update types that happens more often(such as update, dispose)
  • Loading branch information
hamsbrar committed Aug 3, 2022
1 parent 0b71787 commit 1322ba6
Showing 1 changed file with 32 additions and 32 deletions.
64 changes: 32 additions & 32 deletions packages/rad/lib/src/core/renderer/renderer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -345,13 +345,35 @@ class Renderer with ServicesResolver {
}) {
for (final updateObject in updates) {
switch (updateObject.widgetUpdateType) {
case WidgetUpdateType.dispose:
updateObject as WidgetUpdateObjectActionDispose;
case WidgetUpdateType.addAllWithoutClean:
updateObject as WidgetUpdateObjectActionAddAllWithoutClean;

disposeWidget(
render(
mountAtIndex: null,
widgets: updateObject.widgets,
parentRenderElement: parentRenderElement,
flagCleanParentContents: false,
jobQueue: jobQueue,
);

break;

case WidgetUpdateType.update:
processWidgetUpdateObjectActionUpdate(
jobQueue: jobQueue,
updateType: updateType,
flagAddIfNotFound: flagAddIfNotFound,
updateObject: updateObject as WidgetUpdateObjectActionUpdate,
);

break;

case WidgetUpdateType.cleanParent:
updateObject as WidgetUpdateObjectActionCleanParent;

cleanRenderElement(
renderElement: parentRenderElement,
jobQueue: jobQueue,
flagPreserveTarget: false,
renderElement: updateObject.existingElement,
);

break;
Expand All @@ -371,16 +393,6 @@ class Renderer with ServicesResolver {

break;

case WidgetUpdateType.cleanParent:
updateObject as WidgetUpdateObjectActionCleanParent;

cleanRenderElement(
renderElement: parentRenderElement,
jobQueue: jobQueue,
);

break;

case WidgetUpdateType.add:
updateObject as WidgetUpdateObjectActionAdd;

Expand All @@ -403,25 +415,13 @@ class Renderer with ServicesResolver {

break;

case WidgetUpdateType.addAllWithoutClean:
updateObject as WidgetUpdateObjectActionAddAllWithoutClean;

render(
mountAtIndex: null,
widgets: updateObject.widgets,
parentRenderElement: parentRenderElement,
flagCleanParentContents: false,
jobQueue: jobQueue,
);

break;
case WidgetUpdateType.dispose:
updateObject as WidgetUpdateObjectActionDispose;

case WidgetUpdateType.update:
processWidgetUpdateObjectActionUpdate(
disposeWidget(
jobQueue: jobQueue,
updateType: updateType,
flagAddIfNotFound: flagAddIfNotFound,
updateObject: updateObject as WidgetUpdateObjectActionUpdate,
flagPreserveTarget: false,
renderElement: updateObject.existingElement,
);

break;
Expand Down

0 comments on commit 1322ba6

Please sign in to comment.