public class JsDuplicateCaseFolder extends Object
switch (x) { case 0: y = 17; break; case 1: if (z == 0) { y = 18; break; } else { y = 19 } // fallthrough else case 2: return 22; case 3: if (z == 0) { y = 18; break; } else { y = 19 } // fallthrough else case 4: y = 17; break; case 5: y = 17; break; case 6: return 22; }This will be transformed into:
switch (x) { case 0: y = 17; break; case 1: if (z == 0) { y = 18; break; } else { y = 19 } case 6: case 2: return 22; case 3: if (z == 0) { y = 18; break; } else { y = 19 } case 5: case 4: y = 17; break; }Cases (2, 6) and (4, 5) have been coalesced. Note that case 0 has not been combined with cases 4 and 5 since case 4 cannot be moved due to the potential fallthrough from case 3, and we currently only coalesce a given cases with a preceding case and so cannot move case 0 downward. Although this pattern is unlikely to occur frequently in hand-written code, it can account for a significant amount of space in generated code.
Constructor and Description |
---|
JsDuplicateCaseFolder() |
public static boolean exec(JsProgram program)
Copyright © 2018. All rights reserved.