Hacker News new | ask | show | jobs
by pmjordan 6241 days ago
I don't do flash, but I was under the impression that there's some kind of compilation going on and ActionScript isn't just interpreted. How on earth does a modern compiler not optimise

  a / 64
to

  a >> 6
? I could understand it in a dynamically typed language, where a, and therefore the result, could be non-integer, but ActionScript seems to have static type declarations for variables.
1 comments

This isn't even "modern" in compiler terms, it's a simple peephole optimization. (grep through the IR, check for "X / 2^n", replace by "X >> n") To get it right when you have

    int a;
    int b = 64;
    a / b
requires dataflow analysis so you can do constant propagation, copy propagation, and dead code elimination. This is more work to get right, but that's not a very good excuse for not at least doing the peephole optimization.